我已经从 i3 切换到 Wayland,除了我之前写的一个脚本之外,一切正常。该脚本使用 i3-msg 通过其类名或 id(来自 i3-msg 树)来关注窗口。 Sway 具有swaymsg -t get_tree
与 i3 中执行相同操作的命令。使用该命令,我可以使用该命令从命令行提取id
、app_id
、window
或任何其他数据pid
swaymsg -t get_tree | jq -c -r '..|try select(.focused == true) | [.id]' | tr -d "[]"
(根据属性,.id
当然会被正确的查询替换)。
当我尝试使用容器信息来关注特定窗口时
swaymsg for_window -r [id=10] focus
尽管我已经检查过 id 是否正确,但什么也没发生。由于该-r
选项,swaymsg
甚至输出(该标志对没有发生任何事情的事实没有影响):
[
{
"success": true
}
]
所以似乎没有任何错误。我尝试了多个参数,从我读过的其他来源来看,这app_id
似乎是通过 与窗口或容器交互时进入 Wayland 的方法swaymsg
,但没有任何反应。我还尝试使用不同的程序(例如终端或浏览器)执行该命令,没有任何变化。在它的手册中swaymsg
还说要在命令周围加上引号,但这也没有帮助。由于我没有收到任何错误,我很困惑如何调试。