summaryrefslogtreecommitdiff
path: root/gui-wm/wayfire/tests/all-floating-on-top.md
blob: 78853444e936a5e6237e2007790398f17ce9df0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Automatic floating-window stacking

Enable `wm-actions/keep_floating_above=true`. This covers existing and newly
mapped floating application windows, untile/unmaximize, fullscreen exit, and
minimize/restore. Automatic flags are removed when tiled, maximized or fullscreen.
Manual Super+T choices last until the floating state changes; explicit manual
on-top choices are preserved. Disable the older `simple-tile/float_on_top` and
remove generic floating window-rules when using this policy to avoid competing
owners of the same flag. Application-specific rules can remain.

`all-floating-on-top.py` runs a private headless Wayfire with three stitched
monitors and a fourth separate output. It never uses the active desktop sockets.
Run it as a regular user with `WCM_TEST_STAGE` pointing at a directory containing:

- `plugins/libwm-actions.so`: candidate library.
- `metadata/wm-actions.xml`: candidate metadata.
- `old-wm-actions.so`: pre-upgrade library, for resident-library reload coverage.
- `scope-client`: the Wayland fixture built from `all-floating-client.c` with
  generated xdg-shell and wlr-layer-shell client headers/protocol sources named
  `xdg-shell-client.h`, `wlr-layer-shell-client.h`, `xdg-shell.c`, `wlr-layer-shell.c`.

The runner uses installed Wayfire unless `WCM_TEST_COMPOSITOR` is set. It needs
`stipc`, `ipc-rules`, `output-control`, `simple-tile`, `grid`, `grim`, and Pillow.
Pixel checks verify floating windows remain above maximized/tiled windows even
when those underlying windows gain focus. State checks cover startup, live plugin
replacement, new windows, keyboard and IPC retiling, maximize/fullscreen,
minimize/restore, manual override, and configuration reload.