<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about nvidia)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/nvidia.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.html"&gt;
&lt;img alt="GNU General Public License v3.0"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/gplv3-127x51.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Thu, 02 Oct 2025 13:30:46 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>AoE2DE FPS limit affects benchmark rating</title><link>https://bgstack15.ddns.net/blog/posts/2025/10/02/aoe2de-fps-limit-affects-benchmark-rating/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;For the past number of months, my Age of Empires 2: Definitive Edition game would start lagging in larger ranked team games.&lt;/p&gt;
&lt;p&gt;I re-ran the benchmark test, and I ranked 971.2, which is too low for ranked team games (1000)! So that greatly concerned me, as this is the only game with serious requirements that I run. So I spent time investigating all the graphics settings, and rebooting and running only steam and AoE2DE.&lt;/p&gt;
&lt;p&gt;The moment I reached out to a friend who plays way more games than me, my next change solved the problem. I had set my fps limit down to 15, in the hopes of increasing game performance. Come to find out, it limits network performance when you lower the fps, and it also lowers the benchmark performance.&lt;/p&gt;
&lt;p&gt;So that test I had run, with 65 fps, ranked nice and high (1138.2) and then I am eligible to play ranked team games again!&lt;/p&gt;
&lt;p&gt;Here is a chart, for the curious. (This is the first time I am using the charting features in my ssg, &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/www.getnikola.com"&gt;nikola&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;&lt;?xml version='1.0' encoding='utf-8'?&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81" class="pygal-chart" viewbox="0 0 800 600"&gt;&lt;!--Generated with pygal 3.0.0 (lxml) ©Kozea 2012-2016 on 2025-09-20--&gt;&lt;!--http://pygal.org--&gt;&lt;!--http://github.com/Kozea/pygal--&gt;&lt;defs&gt;&lt;style type="text/css"&gt;#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .title{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:16px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .legends .legend text{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:14px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis text{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:10px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis text.major{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:10px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .text-overlay text.value{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:16px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .text-overlay text.label{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:10px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:14px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 text.no_data{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:64px}
#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81{background-color:#f0f0f0}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 path,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 rect,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 circle{-webkit-transition:250ms ease-in;-moz-transition:250ms ease-in;transition:250ms ease-in}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .graph &amp;gt; .background{fill:#f0f0f0}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .plot &amp;gt; .background{fill:#f8f8f8}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .graph{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 text.no_data{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .title{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .legends .legend text{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .legends .legend:hover text{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .line{stroke:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .guide.line{stroke:rgba(0,0,0,0.6)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .major.line{stroke:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis text.major{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y .guides:hover .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .line-graph .axis.x .guides:hover .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .guides:hover text{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .reactive{fill-opacity:.5;stroke-opacity:.8;stroke-width:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .ci{stroke:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .reactive.active,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .active .reactive{fill-opacity:.9;stroke-opacity:.9;stroke-width:4}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .ci .reactive.active{stroke-width:1.5}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .series text{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip rect{fill:#f8f8f8;stroke:rgba(0,0,0,0.9);-webkit-transition:opacity 250ms ease-in;-moz-transition:opacity 250ms ease-in;transition:opacity 250ms ease-in}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .label{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .label{fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,0.6)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,0.9)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip .value{font-size:1.5em}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .bound{font-size:.5em}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .max-value{font-size:.75em;fill:rgba(0,0,0,0.6)}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .map-element{fill:#f8f8f8;stroke:rgba(0,0,0,0.6) !important}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .color-0,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .color-0 a:visited{stroke:#00b2f0;fill:#00b2f0}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .color-1,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .color-1 a:visited{stroke:#43d9be;fill:#43d9be}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .text-overlay .color-0 text{fill:black}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .text-overlay .color-1 text{fill:black}
#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 text.no_data{text-anchor:middle}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .guide.line{fill:none}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .centered{text-anchor:middle}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .title{text-anchor:middle}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .legends .legend text{fill-opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.x text{text-anchor:middle}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y text{text-anchor:end}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y text[transform].backwards{text-anchor:start}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y2 text{text-anchor:start}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y2 text[transform].backwards{text-anchor:end}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .guide.line{stroke-dasharray:4,4;stroke:black}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .major.guide.line{stroke-dasharray:6,6;stroke:black}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .horizontal .axis.y .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .horizontal .axis.y2 .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .vertical .axis.x .guide.line{opacity:0}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .horizontal .axis.always_show .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y .guides:hover .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.y2 .guides:hover .guide.line,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis.x .guides:hover .guide.line{opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .axis .guides:hover text{opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .nofill{fill:none}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .subtle-fill{fill-opacity:.2}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .dot{stroke-width:1px;fill-opacity:1;stroke-opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .dot.active{stroke-width:5px}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .dot.negative{fill:transparent}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 text,#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 tspan{stroke:none !important}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .series text.active{opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .tooltip text{fill-opacity:1}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .showable{visibility:hidden}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .showable.shown{visibility:visible}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-c01dc40f-f3d6-43c1-8aeb-96c815e3bd81 .bg-lines{stroke:#f0f0f0;stroke-width:2px}&lt;/style&gt;&lt;script type="text/javascript"&gt;window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['c01dc40f-f3d6-43c1-8aeb-96c815e3bd81'] = {"allow_interruptions": false, "box_mode": "extremes", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css"], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["//kozea.github.io/pygal.js/2.0.x/pygal-tooltips.min.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 16, "min_scale": 4, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": null, "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "#f0f0f0", "ci_colors": [], "colors": ["#00b2f0", "#43d9be", "#0662ab", "#00668a", "#98eadb", "#97d959", "#033861", "#ffd541", "#7dcf30", "#3ecdff", "#daaa00"], "dot_opacity": "1", "font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "foreground": "rgba(0, 0, 0, 0.9)", "foreground_strong": "rgba(0, 0, 0, 0.9)", "foreground_subtle": "rgba(0, 0, 0, 0.6)", "guide_stroke_color": "black", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "legend_font_size": 14, "major_guide_stroke_color": "black", "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "no_data_font_size": 64, "opacity": ".5", "opacity_hover": ".9", "plot_background": "#f8f8f8", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "stroke_width": "1", "stroke_width_hover": "4", "title_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "tooltip_font_size": 14, "transition": "250ms ease-in", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Liberation Mono\", Menlo, Courier, monospace", "value_label_font_size": 10}, "title": "Benchmark rating per fps", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": null, "truncate_legend": null, "width": 800, "x_label_rotation": 0, "x_labels": null, "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "max fps", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Benchmark rating", "zero": 0, "legends": ["fps", "min for ranked team games"]}&lt;/script&gt;&lt;script type="text/javascript" xlink:href="https://kozea.github.io/pygal.js/2.0.x/pygal-tooltips.min.js"&gt;&lt;/script&gt;&lt;/defs&gt;&lt;title&gt;Benchmark rating per fps&lt;/title&gt;&lt;g class="graph xy-graph vertical"&gt;&lt;rect x="0" y="0" width="800" height="600" class="background"&gt;&lt;/rect&gt;&lt;g transform="translate(80, 46)" class="plot"&gt;&lt;rect x="0" y="0" width="700.0" height="488" class="background"&gt;&lt;/rect&gt;&lt;g class="axis y always_show"&gt;&lt;path d="M0.000000 488.000000 h700.000000" class="line"&gt;&lt;/path&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 453.889452 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="457.3894518654998" class=""&gt;980&lt;/text&gt;&lt;title&gt;980&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 397.694150 h700.000000" class="major guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="401.19415016121604" class="major"&gt;1000&lt;/text&gt;&lt;title&gt;1000&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 341.498848 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="344.99884845693225" class=""&gt;1020&lt;/text&gt;&lt;title&gt;1020&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 285.303547 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="288.8035467526486" class=""&gt;1040&lt;/text&gt;&lt;title&gt;1040&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 229.108245 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="232.60824504836478" class=""&gt;1060&lt;/text&gt;&lt;title&gt;1060&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 172.912943 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="176.41294334408104" class=""&gt;1080&lt;/text&gt;&lt;title&gt;1080&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 116.717642 h700.000000" class="major guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="120.21764163979725" class="major"&gt;1100&lt;/text&gt;&lt;title&gt;1100&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M0.000000 60.522340 h700.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="-5" y="64.02233993551351" class=""&gt;1120&lt;/text&gt;&lt;title&gt;1120&lt;/title&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="axis x"&gt;&lt;path d="M0.000000 0.000000 v488.000000" class="line"&gt;&lt;/path&gt;&lt;g class="guides"&gt;&lt;path d="M80.769231 0.000000 v488.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="80.76923076923077" y="503.0" class=""&gt;20&lt;/text&gt;&lt;title&gt;20&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M215.384615 0.000000 v488.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="215.3846153846154" y="503.0" class=""&gt;30&lt;/text&gt;&lt;title&gt;30&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M350.000000 0.000000 v488.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="350.0" y="503.0" class=""&gt;40&lt;/text&gt;&lt;title&gt;40&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M484.615385 0.000000 v488.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="484.61538461538464" y="503.0" class=""&gt;50&lt;/text&gt;&lt;title&gt;50&lt;/title&gt;&lt;/g&gt;&lt;g class="guides"&gt;&lt;path d="M619.230769 0.000000 v488.000000" class="guide line"&gt;&lt;/path&gt;&lt;text x="619.2307692307693" y="503.0" class=""&gt;60&lt;/text&gt;&lt;title&gt;60&lt;/title&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="series serie-0 color-0"&gt;&lt;path d="M13.461538 478.615385 L80.769231 292.608936 215.384615 52.654998 350.000000 30.738830 484.615385 9.384615 686.538462 9.384615" class="line reactive nofill"&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class="series serie-1 color-1"&gt;&lt;path d="M13.461538 397.694150 L80.769231 397.694150 215.384615 397.694150 350.000000 397.694150 484.615385 397.694150 686.538462 397.694150" class="line reactive nofill"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="titles"&gt;&lt;text x="400.0" y="26" class="title plot_title"&gt;Benchmark rating per fps&lt;/text&gt;&lt;text x="430.0" y="580" class="title"&gt;max fps&lt;/text&gt;&lt;text x="0" y="316.0" class="title" transform="rotate(-90 0.000000 290.000000)"&gt;Benchmark rating&lt;/text&gt;&lt;/g&gt;&lt;g transform="translate(80, 46)" class="plot overlay"&gt;&lt;g class="series serie-0 color-0"&gt;&lt;g class="dots"&gt;&lt;circle cx="13.461538461538462" cy="478.6153846153845" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;15: 971.2&lt;/desc&gt;&lt;desc class="x top"&gt;13.461538461538462&lt;/desc&gt;&lt;desc class="y top"&gt;478.6153846153845&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="80.76923076923077" cy="292.6089359742051" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;20: 1037.4&lt;/desc&gt;&lt;desc class="x top"&gt;80.76923076923077&lt;/desc&gt;&lt;desc class="y top"&gt;292.6089359742051&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="215.3846153846154" cy="52.65499769691388" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;30: 1122.8&lt;/desc&gt;&lt;desc class="x "&gt;215.3846153846154&lt;/desc&gt;&lt;desc class="y "&gt;52.65499769691388&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="350.0" cy="30.738830032243357" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;40: 1130.6&lt;/desc&gt;&lt;desc class="x "&gt;350.0&lt;/desc&gt;&lt;desc class="y "&gt;30.738830032243357&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="484.61538461538464" cy="9.384615384615188" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;50: 1138.2&lt;/desc&gt;&lt;desc class="x left"&gt;484.61538461538464&lt;/desc&gt;&lt;desc class="y left"&gt;9.384615384615188&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="686.5384615384615" cy="9.384615384615188" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;65: 1138.2&lt;/desc&gt;&lt;desc class="x left"&gt;686.5384615384615&lt;/desc&gt;&lt;desc class="y left"&gt;9.384615384615188&lt;/desc&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="series serie-1 color-1"&gt;&lt;g class="dots"&gt;&lt;circle cx="13.461538461538462" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;15: 1000&lt;/desc&gt;&lt;desc class="x top"&gt;13.461538461538462&lt;/desc&gt;&lt;desc class="y top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="80.76923076923077" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;20: 1000&lt;/desc&gt;&lt;desc class="x top"&gt;80.76923076923077&lt;/desc&gt;&lt;desc class="y top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="215.3846153846154" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;30: 1000&lt;/desc&gt;&lt;desc class="x top"&gt;215.3846153846154&lt;/desc&gt;&lt;desc class="y top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="350.0" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;40: 1000&lt;/desc&gt;&lt;desc class="x top"&gt;350.0&lt;/desc&gt;&lt;desc class="y top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="484.61538461538464" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;50: 1000&lt;/desc&gt;&lt;desc class="x left top"&gt;484.61538461538464&lt;/desc&gt;&lt;desc class="y left top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;g class="dots"&gt;&lt;circle cx="686.5384615384615" cy="397.69415016121604" r="2.5" class="dot reactive tooltip-trigger"&gt;&lt;/circle&gt;&lt;desc class="value"&gt;65: 1000&lt;/desc&gt;&lt;desc class="x left top"&gt;686.5384615384615&lt;/desc&gt;&lt;desc class="y left top"&gt;397.69415016121604&lt;/desc&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g transform="translate(80, 46)" class="plot text-overlay"&gt;&lt;g class="series serie-0 color-0"&gt;&lt;/g&gt;&lt;g class="series serie-1 color-1"&gt;&lt;/g&gt;&lt;/g&gt;&lt;g transform="translate(80, 46)" class="plot tooltip-overlay"&gt;&lt;g transform="translate(0 0)" style="opacity: 0" class="tooltip"&gt;&lt;rect rx="0" ry="0" width="0" height="0" class="tooltip-box"&gt;&lt;/rect&gt;&lt;g class="text"&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/p&gt;
&lt;p&gt;The system I tested has these characteristics.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS: Devuan GNU+Linux Ceres&lt;/li&gt;
&lt;li&gt;RAM: 64 GB&lt;/li&gt;
&lt;li&gt;Graphics card: GeForce GTX 1050 Ti&lt;/li&gt;
&lt;/ul&gt;</description><category>aoc</category><category>aoe2de</category><category>chart</category><category>game</category><category>linux</category><category>narrative</category><category>nvidia</category><guid>https://bgstack15.ddns.net/blog/posts/2025/10/02/aoe2de-fps-limit-affects-benchmark-rating/</guid><pubDate>Thu, 02 Oct 2025 13:24:00 GMT</pubDate></item><item><title>Found! Oneliner for nvidia display settings</title><link>https://bgstack15.ddns.net/blog/posts/2023/12/09/found-oneliner-for-nvidia-display-settings/</link><dc:creator>bgstack15</dc:creator><description>&lt;h2&gt;tl;dr&lt;/h2&gt;
&lt;p&gt;I finally found a oneliner method for controlling which monitors are actively used for my NVIDIA graphics card after using it for years. Xrandr doesn't cut it when using nvidia.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;assign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"CurrentMetaMode=DPY-4: nvidia-auto-select @1920x1080 +1920+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-1: nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}"&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Of course the exact settings depend on your setup. You need all the contents after the colons, &lt;code&gt;::&lt;/code&gt;, from this command:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CurrentMetaMode&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;Attribute&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;CurrentMetaMode&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pcb&lt;/span&gt;&lt;span class="mo"&gt;-00&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;switchable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;nv&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;control&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DPY&lt;/span&gt;&lt;span class="mi"&gt;-4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;@1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ViewPortIn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ViewPortOut&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DPY&lt;/span&gt;&lt;span class="mi"&gt;-1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;nvidia&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;@1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ViewPortIn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ViewPortOut&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="n"&gt;x1080&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;That's it. I've pondered this ease of use for years, and had actually started an xdotool wrapper but one final Internet search led to this great discovery.&lt;/p&gt;
&lt;h2&gt;File listings&lt;/h2&gt;
&lt;p&gt;I of course wrote a script that takes a limited input, "both" or "right" to use those monitors.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/files/2023/12/listings/switch-monitors.sh.html"&gt;files/2023/12/listings/switch-monitors.sh&lt;/a&gt;  &lt;a href="https://bgstack15.ddns.net/blog/files/2023/12/listings/switch-monitors.sh"&gt;(Source)&lt;/a&gt;&lt;/p&gt;&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt; 1&lt;/span&gt;
&lt;span class="normal"&gt; 2&lt;/span&gt;
&lt;span class="normal"&gt; 3&lt;/span&gt;
&lt;span class="normal"&gt; 4&lt;/span&gt;
&lt;span class="normal"&gt; 5&lt;/span&gt;
&lt;span class="normal"&gt; 6&lt;/span&gt;
&lt;span class="normal"&gt; 7&lt;/span&gt;
&lt;span class="normal"&gt; 8&lt;/span&gt;
&lt;span class="normal"&gt; 9&lt;/span&gt;
&lt;span class="normal"&gt;10&lt;/span&gt;
&lt;span class="normal"&gt;11&lt;/span&gt;
&lt;span class="normal"&gt;12&lt;/span&gt;
&lt;span class="normal"&gt;13&lt;/span&gt;
&lt;span class="normal"&gt;14&lt;/span&gt;
&lt;span class="normal"&gt;15&lt;/span&gt;
&lt;span class="normal"&gt;16&lt;/span&gt;
&lt;span class="normal"&gt;17&lt;/span&gt;
&lt;span class="normal"&gt;18&lt;/span&gt;
&lt;span class="normal"&gt;19&lt;/span&gt;
&lt;span class="normal"&gt;20&lt;/span&gt;
&lt;span class="normal"&gt;21&lt;/span&gt;
&lt;span class="normal"&gt;22&lt;/span&gt;
&lt;span class="normal"&gt;23&lt;/span&gt;
&lt;span class="normal"&gt;24&lt;/span&gt;
&lt;span class="normal"&gt;25&lt;/span&gt;
&lt;span class="normal"&gt;26&lt;/span&gt;
&lt;span class="normal"&gt;27&lt;/span&gt;
&lt;span class="normal"&gt;28&lt;/span&gt;
&lt;span class="normal"&gt;29&lt;/span&gt;
&lt;span class="normal"&gt;30&lt;/span&gt;
&lt;span class="normal"&gt;31&lt;/span&gt;
&lt;span class="normal"&gt;32&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="c1"&gt;# File: switch-monitors.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Location: /usr/local/bin&lt;/span&gt;
&lt;span class="c1"&gt;# Author: bgstack15&lt;/span&gt;
&lt;span class="c1"&gt;# SPDX-License-Identifier: GPL-3.0&lt;/span&gt;
&lt;span class="c1"&gt;# Startdate: 2023-12-05-3 16:15&lt;/span&gt;
&lt;span class="c1"&gt;# Title: Switch monitor config for NVIDIA graphics card&lt;/span&gt;
&lt;span class="c1"&gt;# Purpose: easily switch between 1 monitor and 2 monitors on pcb-009.&lt;/span&gt;
&lt;span class="c1"&gt;# History: attempt 2. The first was attemping to read nvidia-settings -q dpys and parsing enabled/connected, but I didn't know how to use the derived values&lt;/span&gt;
&lt;span class="c1"&gt;# Usage: Called by tray icon&lt;/span&gt;
&lt;span class="c1"&gt;# Reference:&lt;/span&gt;
&lt;span class="c1"&gt;#    https://wiki.archlinux.org/title/NVIDIA#Using_nvidia-settings&lt;/span&gt;
&lt;span class="c1"&gt;# Improve:&lt;/span&gt;
&lt;span class="c1"&gt;# Documentation:&lt;/span&gt;
&lt;span class="c1"&gt;#    Configure `nvidia-settings` as desired. Print metamode value with following command.&lt;/span&gt;
&lt;span class="c1"&gt;#    nvidia-settings -q CurrentMetaMode&lt;/span&gt;
&lt;span class="c1"&gt;#    Use everything after the `::`&lt;/span&gt;

&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DESIRED&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; -n &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;DESIRED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;desired&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;DESIRED&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; tr &lt;span class="s1"&gt;'A-Z'&lt;/span&gt; &lt;span class="s1"&gt;'a-z'&lt;/span&gt; &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;desired&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
   &lt;span class="s2"&gt;"both"&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"left+right"&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"left,right"&lt;/span&gt;,&lt;span class="s2"&gt;"double"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Using both monitors."&lt;/span&gt;
      nvidia-settings --assign &lt;span class="s2"&gt;"CurrentMetaMode=DPY-4: nvidia-auto-select @1920x1080 +1920+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}, DPY-1: nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}"&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
   &lt;span class="s2"&gt;"one"&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"right"&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"single"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
      nvidia-settings --assign &lt;span class="s2"&gt;"CurrentMetaMode=DPY-4: nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}"&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
   *&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Unknown option: &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;desired&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;. Aborted."&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And then I wrote a tray icon so it's easy to get to these.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/files/2023/12/listings/switch-monitors-trayicon.sh.html"&gt;files/2023/12/listings/switch-monitors-trayicon.sh&lt;/a&gt;  &lt;a href="https://bgstack15.ddns.net/blog/files/2023/12/listings/switch-monitors-trayicon.sh"&gt;(Source)&lt;/a&gt;&lt;/p&gt;&lt;div class="highlight"&gt;&lt;table class="highlighttable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt; 1&lt;/span&gt;
&lt;span class="normal"&gt; 2&lt;/span&gt;
&lt;span class="normal"&gt; 3&lt;/span&gt;
&lt;span class="normal"&gt; 4&lt;/span&gt;
&lt;span class="normal"&gt; 5&lt;/span&gt;
&lt;span class="normal"&gt; 6&lt;/span&gt;
&lt;span class="normal"&gt; 7&lt;/span&gt;
&lt;span class="normal"&gt; 8&lt;/span&gt;
&lt;span class="normal"&gt; 9&lt;/span&gt;
&lt;span class="normal"&gt;10&lt;/span&gt;
&lt;span class="normal"&gt;11&lt;/span&gt;
&lt;span class="normal"&gt;12&lt;/span&gt;
&lt;span class="normal"&gt;13&lt;/span&gt;
&lt;span class="normal"&gt;14&lt;/span&gt;
&lt;span class="normal"&gt;15&lt;/span&gt;
&lt;span class="normal"&gt;16&lt;/span&gt;
&lt;span class="normal"&gt;17&lt;/span&gt;
&lt;span class="normal"&gt;18&lt;/span&gt;
&lt;span class="normal"&gt;19&lt;/span&gt;
&lt;span class="normal"&gt;20&lt;/span&gt;
&lt;span class="normal"&gt;21&lt;/span&gt;
&lt;span class="normal"&gt;22&lt;/span&gt;
&lt;span class="normal"&gt;23&lt;/span&gt;
&lt;span class="normal"&gt;24&lt;/span&gt;
&lt;span class="normal"&gt;25&lt;/span&gt;
&lt;span class="normal"&gt;26&lt;/span&gt;
&lt;span class="normal"&gt;27&lt;/span&gt;
&lt;span class="normal"&gt;28&lt;/span&gt;
&lt;span class="normal"&gt;29&lt;/span&gt;
&lt;span class="normal"&gt;30&lt;/span&gt;
&lt;span class="normal"&gt;31&lt;/span&gt;
&lt;span class="normal"&gt;32&lt;/span&gt;
&lt;span class="normal"&gt;33&lt;/span&gt;
&lt;span class="normal"&gt;34&lt;/span&gt;
&lt;span class="normal"&gt;35&lt;/span&gt;
&lt;span class="normal"&gt;36&lt;/span&gt;
&lt;span class="normal"&gt;37&lt;/span&gt;
&lt;span class="normal"&gt;38&lt;/span&gt;
&lt;span class="normal"&gt;39&lt;/span&gt;
&lt;span class="normal"&gt;40&lt;/span&gt;
&lt;span class="normal"&gt;41&lt;/span&gt;
&lt;span class="normal"&gt;42&lt;/span&gt;
&lt;span class="normal"&gt;43&lt;/span&gt;
&lt;span class="normal"&gt;44&lt;/span&gt;
&lt;span class="normal"&gt;45&lt;/span&gt;
&lt;span class="normal"&gt;46&lt;/span&gt;
&lt;span class="normal"&gt;47&lt;/span&gt;
&lt;span class="normal"&gt;48&lt;/span&gt;
&lt;span class="normal"&gt;49&lt;/span&gt;
&lt;span class="normal"&gt;50&lt;/span&gt;
&lt;span class="normal"&gt;51&lt;/span&gt;
&lt;span class="normal"&gt;52&lt;/span&gt;
&lt;span class="normal"&gt;53&lt;/span&gt;
&lt;span class="normal"&gt;54&lt;/span&gt;
&lt;span class="normal"&gt;55&lt;/span&gt;
&lt;span class="normal"&gt;56&lt;/span&gt;
&lt;span class="normal"&gt;57&lt;/span&gt;
&lt;span class="normal"&gt;58&lt;/span&gt;
&lt;span class="normal"&gt;59&lt;/span&gt;
&lt;span class="normal"&gt;60&lt;/span&gt;
&lt;span class="normal"&gt;61&lt;/span&gt;
&lt;span class="normal"&gt;62&lt;/span&gt;
&lt;span class="normal"&gt;63&lt;/span&gt;
&lt;span class="normal"&gt;64&lt;/span&gt;
&lt;span class="normal"&gt;65&lt;/span&gt;
&lt;span class="normal"&gt;66&lt;/span&gt;
&lt;span class="normal"&gt;67&lt;/span&gt;
&lt;span class="normal"&gt;68&lt;/span&gt;
&lt;span class="normal"&gt;69&lt;/span&gt;
&lt;span class="normal"&gt;70&lt;/span&gt;
&lt;span class="normal"&gt;71&lt;/span&gt;
&lt;span class="normal"&gt;72&lt;/span&gt;
&lt;span class="normal"&gt;73&lt;/span&gt;
&lt;span class="normal"&gt;74&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/usr/bin/env sh&lt;/span&gt;
&lt;span class="c1"&gt;# File: switch-monitors-trayicon.sh&lt;/span&gt;
&lt;span class="c1"&gt;# Location: /usr/local/bin&lt;/span&gt;
&lt;span class="c1"&gt;# Author: bgstack15&lt;/span&gt;
&lt;span class="c1"&gt;# SPDX-License-Identifier: GPL-3.0&lt;/span&gt;
&lt;span class="c1"&gt;# Startdate: 2023-12-05-3 16:29&lt;/span&gt;
&lt;span class="c1"&gt;# Title: Trayicon for switching monitor config&lt;/span&gt;
&lt;span class="c1"&gt;# Purpose: Provide easy drop-down for pcb-009 for monitor control&lt;/span&gt;
&lt;span class="c1"&gt;# History:&lt;/span&gt;
&lt;span class="c1"&gt;# Usage:&lt;/span&gt;
&lt;span class="c1"&gt;# Reference:&lt;/span&gt;
&lt;span class="c1"&gt;#    Heavily ripped keyboard-leds-trayicons&lt;/span&gt;
&lt;span class="c1"&gt;# Improve:&lt;/span&gt;
&lt;span class="c1"&gt;#    There is no loop, so manually touching the kill file does not stop the process like it should.&lt;/span&gt;
&lt;span class="c1"&gt;# Dependencies:&lt;/span&gt;
&lt;span class="c1"&gt;#    raw: mktrayicon, awk, switch-monitors.sh&lt;/span&gt;
&lt;span class="c1"&gt;#    devuan: mktrayicon, mawk | gawk, x11-xserver-utils&lt;/span&gt;

&lt;span class="c1"&gt;# CONFIG FILES&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SWITCH_MONITORS_CONF&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;SWITCH_MONITORS_CONF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/.config/switch-monitors.conf"&lt;/span&gt;

&lt;span class="c1"&gt;# FUNCTIONS&lt;/span&gt;

get_conf&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="c1"&gt;# Ripped from framework.sh&lt;/span&gt;
   &lt;span class="c1"&gt;# call: get_conf "${conffile}"&lt;/span&gt;
   &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;_infile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;_tmpfile1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; mktemp &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   sed -e &lt;span class="s1"&gt;'s/^\s*//;s/\s*$//;/^[#$]/d;s/\s*[^\]#.*$//;'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_infile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep -viE &lt;span class="s2"&gt;"^&lt;/span&gt;$&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; _line &lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;_left&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_line&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; cut -d&lt;span class="s1"&gt;'='&lt;/span&gt; -f1 &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"_thisval=\"\${&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_left&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;}\""&lt;/span&gt;
      &lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_thisval&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_line&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_tmpfile1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="k"&gt;done&lt;/span&gt;
   &lt;span class="nb"&gt;test&lt;/span&gt; -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_tmpfile1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; . &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_tmpfile1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
   /bin/rm -rf &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;_tmpfile1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

clean_switch_monitors_trayicon&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt; -e &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"q"&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&amp;gt;/dev/null &lt;span class="m"&gt;2&lt;/span&gt;&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;
   sleep &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_KILLFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# LOAD CONFIGS&lt;/span&gt;
&lt;span class="c1"&gt;# order is important! The last one called gets precedence.&lt;/span&gt;
&lt;span class="c1"&gt;# instead of simply dot-sourcing the conf file, pass it to get_conf which only applies new values, so this process's environment is preserved&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; thisconf &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_CONF&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_USER_CONF&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_GLOBAL_CONF&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;do&lt;/span&gt;
   &lt;span class="nb"&gt;test&lt;/span&gt; -r &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;thisconf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; get_conf &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;thisconf&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c1"&gt;# DEFAULTS in case configs did not have these values&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_ICON&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;SMT_ICON&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;display
&lt;span class="nb"&gt;test&lt;/span&gt; -z &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_KILLFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;SMT_KILLFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/tmp/kill-all-switch-monitors-trayicons"&lt;/span&gt;

&lt;span class="c1"&gt;# INITIALIZATION&lt;/span&gt;

&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/var/run/user/&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt; id -u &lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;$&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.switch_monitors.icon"&lt;/span&gt;

mkfifo &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
mktrayicon &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"i &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_ICON&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"t pcb-009 easy display settings"&lt;/span&gt;
   &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"m right,switch-monitors.sh right|both,switch-monitors.sh both|-----|quit,echo 'q' &amp;gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; ; touch "&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_KILLFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &amp;gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;switch_monitors_icon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

rm -f &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SMT_KILLFILE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;trap&lt;/span&gt; &lt;span class="s1"&gt;'trap "" 2 ; touch "${SMT_KILLFILE}" '&lt;/span&gt;  &lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="c1"&gt;# CTRL-C&lt;/span&gt;
&lt;span class="nb"&gt;wait&lt;/span&gt; %1

&lt;span class="c1"&gt;# safety shutoff&lt;/span&gt;
clean_switch_monitors_trayicon
&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/2023/12/switch-monitors-trayicon.png"&gt;&lt;img alt="" src="https://bgstack15.ddns.net/blog/2023/12/switch-monitors-trayicon.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/wiki.archlinux.org/title/NVIDIA#Using_nvidia-settings"&gt;NVIDIA - ArchWiki#Using_nvidia-settings&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>display</category><category>monitors</category><category>nvidia</category><category>oneliner</category><category>trayicon</category><guid>https://bgstack15.ddns.net/blog/posts/2023/12/09/found-oneliner-for-nvidia-display-settings/</guid><pubDate>Sat, 09 Dec 2023 13:53:30 GMT</pubDate></item><item><title>Linux: Fluxbox on Nvidia driver: Fonts are huge</title><link>https://bgstack15.ddns.net/blog/posts/2022/09/06/fluxbox-on-nvidia-driver-fonts-are-huge/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I installed Devuan GNU+Linux on a desktop computer with a Nvidia graphics card. Once I used the &lt;code&gt;nvidia-driver&lt;/code&gt; dpkg and rebooted, everything worked correctly. Fluxbox had a problem where its size 8 fonts were gigantic! Investigating revealed that the Nvidia settings utility shows a DPI of 304x305. An Internet search for &lt;a href="https://duckduckgo.com/?q=nvidia+fluxbox+large+font"&gt;nvidia fluxbox large font&lt;/a&gt; showed a very useful solution from the &lt;a href="https://forums.freebsd.org/threads/fluxbox-fonts-are-huge.22849/"&gt;FreeBSD forum&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Inside the generated &lt;code&gt;xorg.conf&lt;/code&gt; (which I placed in &lt;strong&gt;/etc/X11/xorg.conf.d/hostname.conf&lt;/strong&gt;), add to the "Monitor" section:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;Option         "UseEditDpi" "false"
Option         "DPI" "96 x 96"
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Also, I learned that &lt;code&gt;lspci -v&lt;/code&gt; will show you what kernel module is in use for a given PCI device. Here is my graphics card with the proprietary Nvidia driver.&lt;/p&gt;
&lt;p&gt;01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) (prog-if 00 [VGA controller])
    Subsystem: Gigabyte Technology Co., Ltd GP107 [GeForce GTX 1050 Ti]
    Flags: bus master, fast devsel, latency 0, IRQ 30, IOMMU group 1
    Memory at f6000000 (32-bit, non-prefetchable) [size=16M]
    Memory at e0000000 (64-bit, prefetchable) [size=256M]
    Memory at f0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at e000 [size=128]
    Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
    Capabilities: &lt;access denied&gt;
    Kernel driver in use: nvidia
    Kernel modules: nvidia&lt;/access&gt;&lt;/p&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Internet searches&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://duckduckgo.com/?q=nvidia+fluxbox+large+font&amp;amp;t=ffab"&gt;nvidia fluxbox large font&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://forums.freebsd.org/threads/fluxbox-fonts-are-huge.22849/"&gt;https://forums.freebsd.org/threads/fluxbox-fonts-are-huge.22849/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h6&gt;update 2024-04-13&lt;/h6&gt;
&lt;p&gt;While you might be tempted to place a file, &lt;code&gt;/etc/X11/Xresources/dpi&lt;/code&gt; with contents:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;! bgstack15 2023-07-16-1 17:29
Xft.dpi: 96
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Which tends to help most of the time, it doesn't fix the "hardware" dpi that this post helps with. See also &lt;a href="https://old.reddit.com/r/archlinux/comments/gsq0ix/nvidia_drivers_ruins_my_resolution_and_dpi/"&gt;https://old.reddit.com/r/archlinux/comments/gsq0ix/nvidia_drivers_ruins_my_resolution_and_dpi/&lt;/a&gt; which indicates to place this in a file, e.g., &lt;code&gt;/etc/X11/xorg.conf.d/hostname.conf&lt;/code&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;Section "OutputClass"
    Identifier "nvidia dpi settings"
    MatchDriver "nvidia-drm"
    Option "UseEdidDpi" "False"
    Option "DPI" "96 x 96"
EndSection
&lt;/pre&gt;&lt;/div&gt;</description><category>driver</category><category>fluxbox</category><category>graphics</category><category>nvidia</category><guid>https://bgstack15.ddns.net/blog/posts/2022/09/06/fluxbox-on-nvidia-driver-fonts-are-huge/</guid><pubDate>Tue, 06 Sep 2022 12:34:19 GMT</pubDate></item></channel></rss>