Merge floating-windows into experimental

Floating windows join the keyboard and the hand cutouts. Floating panels
don't get cutouts yet: their panel and popups show crops of the client
buffer (texture bounds), which the side-by-side cutout buffer doesn't
match. KWin gets both the spare outputs and our input method, and the
pointer helper's frametop. prefix already covers the float panels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
DeeJanuzandClaude Opus 5.5 committed 2026-09-30 13:53:28 -06:00
commit 4493b789fd
14 files changed
+2020 -93

No files matched your search

+6 -1
View File
@@ -688,13 +688,18 @@ def nested_env():
def outputs(env):
"""KWin's outputs, in screen order (WL-0, WL-1, ...)."""
"""KWin's outputs for the screens, in screen order (WL-0, WL-1, ...)."""
try:
data = json.loads(subprocess.run(["kscreen-doctor", "-j"], capture_output=True, text=True, env=env,
timeout=10).stdout)
except (OSError, ValueError, subprocess.TimeoutExpired):
return []
outs = [o for o in data.get("outputs", []) if o.get("connected")]
if backend() == "screens":
# Outputs after the screens are spares for floating windows (ft-floatd places them).
count = screen_count()
outs = [o for o in outs if not re.fullmatch(r"WL-(\d+)", o.get("name", "")) or
int(o["name"][3:]) < count]
return sorted(outs, key=lambda o: [int(t) if t.isdigit() else t for t in re.split(r"(\d+)", o.get("name", ""))])