Labwc 多屏快捷键定位
Labwc 多屏快捷键定位
快捷键通过 iamcheyan.clipboard toggleAtCursor 调用面板。在 Labwc 下,
菜单保持屏幕右上方的固定位置,只选择鼠标当前所在的显示器。
同名 IpcHandler 只由一个实例接收,不能让每台显示器的 widget 各自决定
开关状态。菜单使用 Exclusive 键盘焦点时,ToplevelManager.activeToplevel
也不能可靠地代表鼠标刚移入的显示器。因此快捷键触发时,面板会短暂显示
每屏一个透明的 layer probe;鼠标进入哪个 probe,就选中哪个输出,然后立即
撤掉 probe。这样不需要读取全局鼠标坐标,也不需要修改 Labwc 或增加系统包。
- 未打开:在选中的显示器打开。
- 已在另一显示器打开:先在选中的显示器显示同一个面板,再关闭旧位置。
- 已在同一显示器打开:关闭。
- 无指针事件:500ms 后回退到活动窗口的
screens或顶栏所在屏幕。
实现位置:
ClipboardPanel.qml的screenProbe:每屏透明 layer 和MouseArea;toggleAtScreen()/acceptScreen():选择输出并控制面板生命周期;bar/widget.qml:把快捷键 IPC 转给当前面板,而不是让每个 widget 独立切换。
诊断实际面板状态:
quickshell -p / ipc call iamcheyan.clipboard placement
quickshell list --all
2026-09-22 在 HDMI-A-1(1x)与 HDMI-A-2(2x)实测:一号屏打开后,移动到
二号屏并按一次 Ctrl+Alt+V,面板直接显示在二号屏;反向切换同样工作,
同屏再次触发会关闭。通过 placement IPC 返回的输出名称和截图确认,
不是只检查 QML 属性。测试使用临时 nix run nixpkgs#wlrctl 移动指针,
再用 wtype 发送实际快捷键;运行功能本身不依赖这些测试工具。
重载后应确认实例 ID/启动时间确实改变。若 quickshell-mode dev 仅报告重启
但实例没变,使用 quickshell kill --id <实际实例ID>,待旧实例退出后确认
是否由监督进程重启;没有监督进程时再启动指定源码路径,避免叠加实例。