{"id":158,"date":"2018-09-20T17:29:51","date_gmt":"2018-09-20T09:29:51","guid":{"rendered":"https:\/\/www.jabawok.net\/?p=158"},"modified":"2023-06-09T15:31:24","modified_gmt":"2023-06-09T07:31:24","slug":"forcing-xscreensaver-to-display-one-hack-over-multiple-monitors","status":"publish","type":"post","link":"https:\/\/www.jabawok.net\/?p=158","title":{"rendered":"Forcing xscreensaver to display one hack over multiple monitors."},"content":{"rendered":"<div style=\"width: 720px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-158-1\" width=\"720\" height=\"408\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.jabawok.net\/wp-content\/uploads\/2018\/09\/xscreensaver-single-hack-multi-monitor-720.mp4?_=1\" \/><a href=\"https:\/\/www.jabawok.net\/wp-content\/uploads\/2018\/09\/xscreensaver-single-hack-multi-monitor-720.mp4\">https:\/\/www.jabawok.net\/wp-content\/uploads\/2018\/09\/xscreensaver-single-hack-multi-monitor-720.mp4<\/a><\/video><\/div>\n<p>So xscreensaver&#8217;s author Jamie Zawinski has previously stated he thinks most of the hacks look bad stretched across multiple monitors Around about version 4.12, multi monitor support turned into &#8220;one hack per screen&#8221;. After going through the large list of hacks, I thoroughly disagree. Most of them look really good, and some of them &#8211; like the above depicted &#8220;lattice&#8221; look <em>stunning<\/em> &#8211; especially at buttery smooth 144hz.<\/p>\n<p>The following patch against drivers\/screens.c in xscreensaver v5.40 make this possible in my setup. The resolution is hard-coded &#8211; I hope in the future I can convince Jamie or one of the other maintainers to implement a more elegant solution. In essence we&#8217;re fooling xscreensaver into thinking theres 1 big screen &#8211; 5920 x 1440 (with a few wasted pixels due to the mismatched screen resolutions in my case).<\/p>\n<pre><code>$ diff screens-original.c screens.c\n387a388,389\n&gt;       \/* one hack over multi-monitor patch - blatantly overrule what randr thinks *\/\n&gt;       nscreens = 1;\n450c452,453\n&lt;           for (k = 0; k &lt; res-&gt;noutput; k++, j++)\n---\n&gt;         \/* one hack over multi-monitor patch - ignore randr number of outputs, force 1 *\/\n&gt;         for (k = 0; k &lt; 1; k++, j++)\n469,472c472,476\n&lt;                   m-&gt;x      = crtci-&gt;x;\n&lt;                   m-&gt;y      = crtci-&gt;y;\n&lt;                   m-&gt;width  = crtci-&gt;width;\n&lt;                   m-&gt;height = crtci-&gt;height;\n---\n&gt;                   \/* one hack over multi-monitor patch - hardcoded resolution for this workstation's \"single\" screen *\/\n&gt;                   m-&gt;x      = 0;\n&gt;                   m-&gt;y      = 0;\n&gt;                   m-&gt;width  = 5920;\n&gt;                   m-&gt;height = 1440;\n574,582c578\n&lt;   else if (   randr_monitors[0] &amp;&amp;   !randr_monitors[1] &amp;&amp;  \/* 1 monitor *\/\n&lt;            xinerama_monitors[0] &amp;&amp; xinerama_monitors[1])    \/* &gt;1 monitor *\/\n&lt;     {\n&lt;       *errP = append (*errP,\n&lt;                       \"WARNING: RANDR reports 1 screen but Xinerama\\n\"\n&lt;                       \"\\t\\treports multiple.  Believing Xinerama.\");\n&lt;       free_monitors (randr_monitors);\n&lt;       return xinerama_monitors;\n&lt;     }\n---\n&gt;   \/* one hack over multi-monitor patch - force xscreensaver to use our hardcoded RANDR details, not xinerama *\/\n<\/code><\/pre>\n<p>UPDATE: patch against xscreensaver-6.05<\/p>\n<pre><code>$ diff screens-original.c screens.c\n286c286,287\n&lt; \n---\n&gt; \/* one hack over multi-monitor patch - blatantly overrule what randr thinks *\/\n&gt; nscreens = 1;\n316c317,318\n&lt; for (k = 0; k &lt; res-&gt;noutput; k++, j++)\n---\n&gt; \/* one hack over multi-monitor patch - ignore randr number of outputs, force 1 *\/\n&gt; for (k = 0; k &lt; 1; k++, j++)\n350,353c352,356\n&lt; m-&gt;x = crtci-&gt;x;\n&lt; m-&gt;y = crtci-&gt;y;\n&lt; m-&gt;width = crtci-&gt;width;\n&lt; m-&gt;height = crtci-&gt;height;\n---\n&gt; \/* one hack over multi-monitor patch - hardcoded resolution for this workstation's \"single\" screen *\/\n&gt; m-&gt;x = 0;\n&gt; m-&gt;y = 0;\n&gt; m-&gt;width = 5920;\n&gt; m-&gt;height = 1440;\n482c485,486\n&lt; if (xinerama_count &gt; randr_count)\n---\n&gt; \/* one hack over multi-monitor patch - force xscreensaver to use our hardcoded RANDR details, not xinerama *\/\n&gt; if ( 0 )<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>So xscreensaver&#8217;s author Jamie Zawinski has previously stated he thinks most of the hacks look bad stretched across multiple monitors Around about version 4.12, multi monitor support turned into &#8220;one hack per screen&#8221;. After going through the large list of hacks, I thoroughly disagree. Most of them look really good, and some of them &#8211; &#8230;<\/p>\n<p><a href=\"https:\/\/www.jabawok.net\/?p=158\" class=\"more-link\">Continue reading &lsquo;Forcing xscreensaver to display one hack over multiple monitors.&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-158","post","type-post","status-publish","format-standard","hentry","category-snargawok"],"_links":{"self":[{"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/posts\/158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=158"}],"version-history":[{"count":6,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/posts\/158\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=\/wp\/v2\/posts\/158\/revisions\/226"}],"wp:attachment":[{"href":"https:\/\/www.jabawok.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jabawok.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}