{{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}}