使用 CLI 最大化已知 PID 的应用程序

使用 CLI 最大化已知 PID 的应用程序

当应用程序窗口最小化时,我需要仅使用命令行来最大化其窗口。

那么在知道进程 ID 的情况下如何做到这一点?

执行wmctrl命令时出现以下错误:

X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  20 (X_GetProperty)
  Resource id in failed request:  0x6718
  Serial number of failed request:  11
  Current serial number in output stream:  11

答案1

这应该有效:

xdotool windowactivate `xdotool search --pid YOUR_PID_HERE | tail -1`

xdootool 在通过 pid 查找时会报告相当多的窗口 id,因此我“跟踪”输出以仅从输出中获取最后一个窗口 id。对我来说,它与 Firefox 和 gnome-calculator 配合得很好。如果 xdotool 只为您的 pid 报告一个窗口 id,那么尾管当然是不必要的。

答案2

您可以使用wmctrl手册页)从命令行操作窗口。

  1. sudo apt-get install wmctrl使用或任何您觉得合适的其他包管理器来安装程序。
  2. 获取属于您的 PID 的窗口 ID。wmctrl -lp将列出所有现有窗口,并在输出的第一列中列出它们的窗口 ID,在第二列中列出 PID。
  3. wmctrl -iR <window ID>使用或升起窗口wmctrl -ia <window ID>,具体取决于您是要切换到其桌面还是将其移动到当前桌面。

答案3

这应该可以做到:

awk '$3 == 17213 {print $1}' <(wmctrl -lp) | xargs -i% sh -c "xwit -id % -pop -raise; wmctrl -i -r % -b add,maximized_vert,maximized_horz"

您需要更改awk语句中的 ID,但这将最大化并激活窗口。您还需要安装xwit( sudo apt-get install xwit) 以使非最小化功能正常工作。


这之所以如此复杂,是因为没有一个工具可以满足你所有的需求,而那些功能稍强的工具也存在终端问题:

  • xdotool无法通过 PID 查找(尽管这是广告宣传的功能)
  • wmctrl不知道如何最小化和最大化事物
  • xwit不能改变窗口提示,但它可以取消最小化

理想情况下,您应该能够仅使用xdotool或来执行此wmctrl操作,但它们的 PID 查找分别不起作用或不存在。

相关内容