RandR transforms don't work for HiDPI "make content larger" use case -
they're designed for expanding virtual screen space, not zooming.
- Add dpi.rs module using xrdb to set Xft.dpi
- Remove RandR transform scaling code from randr/manager.rs
- Integrate DPI scaling in app.rs apply_layout() and revert_to_pre_change()
- Update watchdog to reset DPI via xrdb instead of xrandr --scale
- Capture and restore current DPI scale during configuration changes
Note: DPI changes require apps to restart to take effect. This is a
fundamental X11 limitation (X11 has one global DPI).
- Don't apply profile positions when monitor set doesn't match current
- Add sanity check for clearly invalid positions (negative or >10000)
- Watchdog now always includes --scale NxN to reset transforms
- Fixes issue where stale multi-monitor profile caused wrong positions
- Add randr_set_crtc_transform call with scale matrix
- Scale > 1.0 makes content appear larger (lower effective resolution)
- Use bilinear filter for smooth scaling
- Reset to identity transform when scale is 1.0
- Include scale in watchdog xrandr revert commands
- Add watchdog module that spawns separate bash process to revert
- Watchdog survives main process crash by using xrandr commands
- Add file logging to ~/.cache/gardisplay/gardisplay.log
- Cancel watchdog when user confirms or manually reverts
- Add ensure_screen_size() to resize virtual screen before CRTC changes
- Calculate effective dimensions after rotation (90/270 swap width/height)
- Prepare screen for all monitors before applying any configurations
- Shrink screen to fit after applying configurations
- Add prepare_screen_for_configs() for revert operation as well
- Add refresh_randr_outputs() to dynamically update mode information
- Add debug logging for timeout and RandR operations