-
-
Notifications
You must be signed in to change notification settings - Fork 17
Description
Description
After upgrading from plank-reloaded 0.11.161 to 0.11.164, the dock is positioned completely off-screen and invisible. The dock process runs, but the dock window's Y coordinate is placed far below the actual screen boundary.
Environment
- OS: CachyOS Linux (Arch-based), Cinnamon desktop
- Kernel: 6.19.0-2-cachyos
- plank-reloaded: 0.11.164-1
- GLib: 2.86.3
- GTK+: 3.24.51
- libwnck: 43.3
- GPU: NVIDIA RTX 4090
Monitor Setup (xrandr scaling transforms)
Three monitors using xrandr --scale transforms for fractional scaling:
| Monitor | Physical Resolution | Scale | Logical Size | Position |
|---|---|---|---|---|
| DP-4 (primary) | 3840x2160 @ 144Hz | 1.6x | 6144x3456 | 0,0 |
| DP-2 (rotated right) | 1920x1080 @ 144Hz | 2x | 2160x3840 | 6144,0 |
| DP-0 | 2560x1440 @ 144Hz | 2x | 5120x2880 | 8304,505 |
Total X screen size: 13424 x 3840
Symptoms
The dock window is positioned at y=5724 with height 502, placing it entirely below the screen boundary (total screen height is 3840). The journal shows repeated positioning failures:
[CRITICAL] [DockWindow:290] Retry #3 update_size_and_position() to force requested values!
[CRITICAL] [DockWindow:290] Retry #4 update_size_and_position() to force requested values!
...
[CRITICAL] [DockWindow:290] Retry #11 update_size_and_position() to force requested values!
The _NET_WM_STRUT and _NET_WM_STRUT_PARTIAL are both all zeros.
Root Cause
The struts fix in 0.11.162 (commit e4733a25 — "Fix struts using primary monitor dimensions instead of full screen size") changed positioning to use screen.get_height()/screen.get_width() instead of monitor.get_geometry(). The compute_struts() method multiplies values by the window scale factor (window.get_window().get_scale_factor()).
With xrandr scaling transforms, the X screen dimensions (13424x3840) are already in the scaled coordinate space, but get_scale_factor() returns 2 (GTK detects HiDPI). This double-counts the scaling, producing an off-screen Y position.
Workaround
Setting GDK_SCALE=2 as an environment variable before launching plank makes the dock render at the correct position:
# Without workaround: dock at y=5724 (off-screen)
# With GDK_SCALE=1: dock at y=3589, height=251 (visible but half-size, not HiDPI)
# With GDK_SCALE=2: dock at y=3338, height=502 (correct position and HiDPI size)
Previous Version
plank-reloaded 0.11.161 worked correctly with this same monitor configuration.
Related
Possibly related to #140 (maximized windows overlap dock on multi-monitor), which is caused by the same struts calculation change.