在切换到 Wayland 之前,我会使用以下命令最小化所有 GNOME Shell 窗口:
wmctrl -k on
...但是 和wmctrl
都是xdotool
仅限 X11 的应用程序。我可以使用什么 CLI 命令来最小化 GNOME Shell / Wayland 会话中的所有窗口?
参考:
- 我可以从命令行最小化窗口吗?(问Ubuntu)
答案1
更新
可悲的是,这出于安全原因,不再适用于 Gnome 41
在 Looking Glass 中运行global.context.unsafe_mode = true
会重新启用该功能,但只是暂时的。
原答案
如在我的另一个答案是关于wmctrl
,我们可以通过gdbus
Gnome 中使用 GJS 来做到这一点:
gdbus call \
--session \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"global.get_window_actors().forEach(w=>w.meta_window.minimize())"
答案2
我将描述一种适用于我的 Playground Manjaro 机器和 GNOME3/Wayland 的解决方法。请记住,该过程在其他发行版上可能略有不同。
它并不那么完美正如我想象的那样,但它有效。
易多工具
ydotool 的工作方式与 xdotool 不同。 xdotool直接将X事件发送到X服务器,而ydotool使用Linux内核的uinput框架来模拟输入设备。
- 安装它根据您的分布 -尿素尿率,乌班图,德班, ETC...
- 您可能需要正确地设置访问权限并允许
/dev/uinput
用户访问该设备。在这种情况下,将用户添加到users
组并创建 udev 规则文件:
将您自己添加到用户组:
usermod -a -G users $USER
创建/etc/udev/rules.d/80-uinput.rules
文件包含以下内容:
KERNEL=="uinput", GROUP="users", MODE="0660", OPTIONS+="static_node=uinput"
你需要启动
/usr/bin/ydotoold
套接字侦听器。出于测试目的,手动启动,但您可能想要自动启动这登录时。GNOME 3 允许您设置键盘快捷键来“隐藏所有正常窗口”。前往
gnome-control-center
,键盘快捷键, 导航,隐藏所有正常窗口。例如,将此快捷方式设置为Super+ D。现在,如果一切按预期工作,您应该能够使用以下命令最小化所有 GNOME/Wayland 窗口:
ydotool key Super+D
类型
另一种方法可能是使用类型。它似乎使用了不同的方法并直接向合成器提供键盘事件。问题是我无法使用 GNOME 的默认合成器来完成这项工作嘀咕。可能和限制有关X韦兰但我对此不确定。我得到的只是错误:
合成器不支持虚拟键盘协议
答案3
TL;DR 你仍然可以这样做
虽然xdotool
使用 X11 API,因此无法在 Wayland 上运行,但wmctrl
可以与桌面环境本身交互。因此,虽然其需要 X11 API 的命令不起作用,但您仍然可以wmctrl
在 Wayland 会话中使用许多命令-k on
(包括)。
使用 GNOME Shell 3.30.2 和wmctrl
1.07 在 Arch Linux 上进行测试。