使用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
( 手册页 )从命令行操作窗口。
- 使用
sudo apt-get install wmctrl
或您认为sudo apt-get install wmctrl
任何其他软件包管理器sudo apt-get install wmctrl
程序。 - 获取属于您的PID的窗口ID。
wmctrl -lp
将列出所有现有窗口,其窗口ID位于第一列,PID位于输出的第二列。 - 使用
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,但这将最大化并激活窗口。 您还需要安装xwit
( sudo apt-get install xwit
)以使非最小化工作。
这是如此复杂的原因是因为没有一个工具能够满足你所需要的一切,而且那些能力稍差的工具会产生终端问题:
-
xdotool
无法通过PID查找(尽管这是一个广告function) -
wmctrl
不知道如何最小化和最大化事物 -
xwit
不能更改窗口提示,但它可以取消最小化
理想情况下,这应该只能用xdotool
或wmctrl
来完成,但它们的PID查找分别不起作用或存在。