{{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. }} {{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 = wlr-resize-watcher can also be configured without configure-dynamic-resolution: {{Open with root rights|filename= /etc/wlr-resize-watcher.d/50_user.conf }} = Configuration File Options = 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 |- ! enable_dynamic_resolution | Enables or disables automatic resizing to the native resolution. | true or false | false in {{project_name_workstation_short}} (overrides the upstream default true) |- ! warn_on_dynamic_resolution_refuse | Shows a one-time warning when a resolution change is detected but dynamic resolution is disabled. | true or false | true |- ! standard_default_resolution | Default resolution used on most hypervisors when automatic resizing is not used. | A resolution string in the form WIDTHxHEIGHT (for example: 1920x1080, 1600x900, 1366x768) | 1920x1080 |- ! small_default_resolution | Default resolution used on hypervisors known to default to low VRAM (currently affects Xen). | A resolution string in the form WIDTHxHEIGHT (for example: 1024x768, 1280x720) | 1024x768 |- ! 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 ps axo comm output. Example: ["pcmanfm-qt"] | ["pcmanfm-qt"] |- ! sysmaint_wait_proc_list | Same as normal_wait_proc_list, but for the sysmaint session. | A list of process names as seen in ps axo comm output. Example: [] | [] |- ! wait_proc_timeout | Maximum time (in seconds) to wait for required processes. | Integer number of seconds (for example: 0, 5, 10, 30) | 10 |- |} = Additional Information = * Autostart: The autostart entry is located at /etc/xdg/autostart/wlr-resize-watcher.desktop. * Package source: 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. * 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 such as under account user. {{CodeSelect|code= systemctl --no-pager --user status wlr-resize-watcher.service }} {{CodeSelect|code= journalctl --boot --no-pager --user -u wlr-resize-watcher.service }} = Footnotes = {{reflist|close=1}} [[Category:Documentation]] {{Footer}}