使用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 

这应该工作:

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

当通过pid查找时,xdootool会报告相当多的窗口id-s,所以我“输出”输出只从输出中获取最后一个窗口id。 对我来说,它适用于Firefox和gnome-calculator。 如果xdotool只为你的pid报告一个窗口id,那么尾管当然是不必要的。

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

  1. 使用sudo apt-get install wmctrl或您认为sudo apt-get install wmctrl任何其他软件包管理器sudo apt-get install wmctrl程序。
  2. 获取属于您的PID的窗口ID。 wmctrl -lp将列出所有现有窗口,其窗口ID位于第一列,PID位于输出的第二列。
  3. 使用wmctrl -iR wmctrl -ia ,具体取决于您是要切换到其桌面还是将其移动到当前桌面。

这应该这样做:

 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,但这将最大化并激活窗口。 您还需要安装xwitsudo apt-get install xwit )以使非最小化工作。


这是如此复杂的原因是因为没有一个工具能够满足你所需要的一切,而且那些能力稍差的工具会产生终端问题:

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

理想情况下,这应该只能用xdotoolwmctrl来完成,但它们的PID查找分别不起作用或存在。