从命令行调用 GNOME 活动概览

从命令行调用 GNOME 活动概览

有没有办法从 Linux 命令行调用 GNOME 的活动视图?这是键Super从 GNOME 调用的。一旦显示,我就可以像往常一样使用鼠标与其交互。

我正在使用 Ubuntu 18.04 LTS。

我问这个问题的原因是:我正在查看需要Super通过 TeamViewer 会话“发送”密钥的桌面。TeamViewer 有一种发送Ctrl+ Alt+的方法Delete,但这当然是针对 Windows 遥控器的,而这里是纯粹的 Ubuntu 到 Ubuntu。即使不涉及 TeamViewer,而我使用 VNC,我也会遇到同样的问题。

答案1

对于 GNOME 版本 40 及以下(即 Ubuntu 21.04 及以下)来说,可使 shell 切换到概览的命令是:

dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.show();'

使用Main.overview.hide();关闭概览,或Main.overview.toggle();在概览和普通视图之间切换(感谢 gatr 和 Marcelo Avila)。

答案2

可能存在一种适当的命令行方式来与各种 GNOME Shell 组件进行交互(我想是使用 DBus),但一种快速而粗糙的方法是模拟按键:

xdotool key super

答案3

从 GNOME 41 开始,您需要一个扩展。

从 GNOME 41 开始,dbus 方法 Eval() 现在受 MetaContext:unsafe-mode 属性的限制(请参阅此犯罪)。此扩展提供了不受限制的 Eval() dbus 方法,用于在合成器中运行任意代码。

来源

所以解决方案是:

  1. 安装eval-gjs 扩展:

  2. 使用--object-path /dev/ramottamado/EvalGjs--method dev.ramottamado.EvalGjs.Eval,例如:

     gdbus call \
       --session \
       --dest org.gnome.Shell \
       --object-path /dev/ramottamado/EvalGjs \
       --method dev.ramottamado.EvalGjs.Eval "Main.overview.show();" 
    

答案4

安全的答案是不依赖于Eval()GNOME > 41 的方法是:

dbus-send --session --dest=org.gnome.Shell --type=method_call /org/gnome/Shell org.freedesktop.DBus.Properties.Set string:org.gnome.Shell string:OverviewActive variant:boolean:true

要退出活动概览,请将上述命令中的替换variant:boolean:true 为。variant:boolean:false

https://github.com/hardpixel/dash-to-plank/issues/12#issuecomment-934820153以供参考。

相关内容