{{Header}} {{title|title= wlr-resize-watcher }} {{#seo: |description=Dynamic screen resolution helper for virtual machines. Disabled by default in {{project_name_workstation_short}} for improved privacy. How to enable dynamic screen resolution inside {{project_name_workstation_short}}. }} {{intro| wlr-resize-watcher can automatically adjust the Wayland compositor's screen resolution when the virtual graphics device reports a different native resolution (for example, after changing the VM window size in VirtualBox or KVM). For privacy reasons, dynamic resolution is disabled by default in {{project_name_workstation_short}}. }} = Introduction = wlr-resize-watcher watches for changes to the native display resolution of virtual displays and can updates the screen resolution to match. Dynamic screen resolution adjustment is disabled by default inside {{project_name_workstation_short}} to enhance anonymity and reduce fingerprinting risk. Unusual or frequently changing resolutions can be used as a fingerprinting signal if the VM is compromised or if an application can learn the current resolution. [[Tor Browser]] attempts to mitigate some screen-size fingerprinting with letterboxing, but it does not fully remove resolution-based fingerprinting. See also [[Screen#Tor_Browser_Window_Size|Tor Browser Window Size]] and [[Tor_Browser#Why_do_I_have_White_Bars_around_my_Tor_Browser_Content?|Why do I have White Bars around my Tor Browser Content?]]. If you prefer usability over the privacy trade-off, you can enable dynamic resolution. = Enabling Dynamic Screen Resolution Adjustment = {{IconSet|h1|1}} {{sysmaint_notice}} {{IconSet|h1|2}} Configure dynamic resolution. {{IconSet|h2|A}} Using {{kicksecure_wiki |wikipage=System Maintenance Panel |text=System Maintenance Panel }} If you want to enable it, open the System Maintenance Panel and click Dynamic Resolution, which will start configure-dynamic-resolution with administrative ("[[root|root]]") rights. {{IconSet|h2|B}} From the command line. {{CodeSelect|code= sudo configure-dynamic-resolution }} {{IconSet|h1|3}} Enable dynamic resolution. When shown the configuration menu, type 1 and press Enter to select Enable or disable dynamic resolution. Then type true and press Enter to enable dynamic resolution. {{IconSet|h1|4}} Exit the configuration editor. Type 5 and press Enter to select Exit configuration editor. {{IconSet|h1|5}} Trigger a resize event such as by maximzing the virtualizer (such as VirtualBox or virt-manager) VM window. {{IconSet|h1|6}} Done. = Disabling Dynamic Screen Resolution Adjustment = If you want to disable it again, run the same configuration tool and select the option to disable dynamic resolution. {{CodeSelect|code= sudo configure-dynamic-resolution }} Alternatively, set enable_dynamic_resolution=false in your user configuration file (see below). = Configuration File Changes = {{CodeSelect|inline=true|code=wlr-resize-watcher}} can also be configured without {{CodeSelect|inline=true|code=configure-dynamic-resolution}}: {{IconSet|h1|1}} {{sysmaint_notice}} {{IconSet|h1|2}} Have a look at file /etc/wlr-resize-watcher.d/30_default.conf. Note: Read the file only. Do not attempt to make any changes. {{Open File|filename= /etc/wlr-resize-watcher.d/30_default.conf }} {{IconSet|h1|3}} Create file /etc/wlr-resize-watcher.d/50_user.conf and add settings to override. {{Open with root rights|filename= /etc/wlr-resize-watcher.d/50_user.conf }} {{IconSet|h1|4}} Edit the file. Notes: * Do not use sudo! This is because this is a systemd user and not a systemd system service. * Do not execute as root. * Execute using a non-root user account, most likely account user or sysmaint. {{CodeSelect|code= systemctl --user start wlr-resize-watcher.service }} {{IconSet|h1|5}} Save. {{IconSet|h1|6}} Done. = Configuration File Options = {{CodeSelect|inline=true|code=wlr-resize-watcher}} uses a drop-in configuration folder. Do not edit distribution defaults. Instead, place custom settings in the user override file. {| class="wikitable" |+ Configuration Overview |- ! Option ! Description ! Potential Values ! Default |- ! {{CodeSelect|inline=true|code=enable_dynamic_resolution}} | Enables or disables automatic resizing to the native resolution. | {{CodeSelect|inline=true|code=true}} or false | false in {{project_name_workstation_short}} (overrides the upstream default {{CodeSelect|inline=true|code=true}}) |- ! {{CodeSelect|inline=true|code=warn_on_dynamic_resolution_refuse}} | Shows a one-time warning when a resolution change is detected but dynamic resolution is disabled. | {{CodeSelect|inline=true|code=true}} or false | {{CodeSelect|inline=true|code=true}} |- ! {{CodeSelect|inline=true|code=standard_default_resolution}} | Default resolution used on most hypervisors when automatic resizing is not used. | A resolution string in the form {{CodeSelect|inline=true|code=WIDTHxHEIGHT}} (for example: {{CodeSelect|inline=true|code=1920x1080}}, {{CodeSelect|inline=true|code=1600x900}}, {{CodeSelect|inline=true|code=1366x768}}) | {{CodeSelect|inline=true|code=1920x1080}} |- ! {{CodeSelect|inline=true|code=small_default_resolution}} | Default resolution used on hypervisors known to default to low VRAM (currently affects Xen). | A resolution string in the form {{CodeSelect|inline=true|code=WIDTHxHEIGHT}} (for example: {{CodeSelect|inline=true|code=1024x768}}, {{CodeSelect|inline=true|code=1280x720}}) | {{CodeSelect|inline=true|code=1024x768}} |- ! {{CodeSelect|inline=true|code=normal_wait_proc_list}} | Process names to wait for before attempting the first resize in a normal user session. | A list of process names as seen in {{CodeSelect|inline=true|code=ps axo comm}} output. Example: {{CodeSelect|inline=true|code=["pcmanfm-qt"]}} | {{CodeSelect|inline=true|code=["pcmanfm-qt"]}} |- ! {{CodeSelect|inline=true|code=sysmaint_wait_proc_list}} | Same as {{CodeSelect|inline=true|code=normal_wait_proc_list}}, but for the sysmaint session. | A list of process names as seen in {{CodeSelect|inline=true|code=ps axo comm}} output. Example: {{CodeSelect|inline=true|code=[]}} | {{CodeSelect|inline=true|code=[]}} |- ! {{CodeSelect|inline=true|code=wait_proc_timeout}} | Maximum time (in seconds) to wait for required processes. | Integer number of seconds (for example: {{CodeSelect|inline=true|code=0}}, {{CodeSelect|inline=true|code=5}}, {{CodeSelect|inline=true|code=10}}, {{CodeSelect|inline=true|code=30}}) | {{CodeSelect|inline=true|code=10}} |- |} = Additional Information = * Main configuration file: The main configuration file is located at /etc/wlr-resize-watcher.d/30_default.conf. ([https://github.com/Kicksecure/vm-config-dist/blob/master/etc/wlr-resize-watcher.d/30_default.conf 30_default.conf source code]) * Autostart: The autostart entry is located at /etc/xdg/autostart/wlr-resize-watcher.desktop. ([https://github.com/Kicksecure/vm-config-dist/blob/master/etc/xdg/autostart/wlr-resize-watcher.desktop wlr-resize-watcher.desktop source code]) * Package source: {{CodeSelect|inline=true|code=wlr-resize-watcher}} is part of [https://github.com/Kicksecure/vm-config-dist Kicksecure vm-config-dist]. * Configuration folder: Configuration drop-ins are stored in /etc/wlr-resize-watcher.d. * User override file: Place local overrides in /etc/wlr-resize-watcher.d/50_user.conf. * Configuration tool output: {{CodeSelect|inline=true|code=configure-dynamic-resolution}} writes its configuration to /etc/wlr-resize-watcher.d/45_configure-dynamic-resolution.conf. ([https://github.com/Kicksecure/vm-config-dist/blob/master/usr/sbin/configure-dynamic-resolution configure-dynamic-resolution source code]) * Fallback default resolution: If dynamic resolution is disabled or unsupported, wlr-resize-watcher can set displays to a comfortable default resolution using standard_default_resolution (for most users) or small_default_resolution (for Xen). * one-time-popup status file location: When file ~/.wlr-resize-watcher_one-time-popup exists, no one-time-popup will be shown. However, a passive popup will still be shown unless disabled in configuration. (See setting warn_on_dynamic_resolution_refuse.) = Troubleshooting = * If no resizing happens after enabling dynamic resolution, try logging out and logging in again (or reboot). * If you are using an unsupported virtualizer, dynamic resolution may not work. In that case, the default resolution settings may still apply. * If you keep seeing a warning that resizing is not happening, check that enable_dynamic_resolution is set to true and that warn_on_dynamic_resolution_refuse is enabled only if you want the warning. = Debugging = Run as non-root user, for example under account user. {{IconSet|h1|1}} Check service status. {{CodeSelect|code= systemctl --no-pager --user status wlr-resize-watcher.service }} {{IconSet|h1|2}} Review service logs for the current boot. {{CodeSelect|code= journalctl --boot --no-pager --user -u wlr-resize-watcher.service }} {{reflist|close=1}} [[Category:Documentation]] {{Footer}}