更新

更新

在切换到 Wayland 之前,我会使用以下命令最小化所有 GNOME Shell 窗口:

wmctrl -k on

...但是 和wmctrl都是xdotool仅限 X11 的应用程序。我可以使用什么 CLI 命令来最小化 GNOME Shell / Wayland 会话中的所有窗口?

参考:

答案1

更新

可悲的是,这出于安全原因,不再适用于 Gnome 41

在 Looking Glass 中运行global.context.unsafe_mode = true会重新启用该功能,但只是暂时的。

原答案

如在我的另一个答案是关于wmctrl,我们可以通过gdbusGnome 中使用 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 的解决方法。请记住,该过程在其他发行版上可能略有不同。

它并不那么完美正如我想象的那样,但它有效。

易多工具

在这个方法中,我将使用易多工具。从自述文件.md

ydotool 的工作方式与 xdotool 不同。 xdotool直接将X事件发送到X服务器,而ydotool使用Linux内核的uinput框架来模拟输入设备。

  1. 安装它根据您的分布 -尿素尿率,乌班图,德班, ETC...
  2. 您可能需要正确地设置访问权限并允许/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"
  1. 你需要启动/usr/bin/ydotoold套接字侦听器。出于测试目的,手动启动,但您可能想要自动启动登录时

  2. GNOME 3 允许您设置键盘快捷键来“隐藏所有正常窗口”。前往gnome-control-center,键盘快捷键, 导航,隐藏所有正常窗口。例如,将此快捷方式设置为Super+ D

  3. 现在,如果一切按预期工作,您应该能够使用以下命令最小化所有 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 和wmctrl1.07 在 Arch Linux 上进行测试。

相关内容