![如何将主屏幕上窗口的尺寸设置为外接显示器的尺寸?](https://linux22.com/image/201315/%E5%A6%82%E4%BD%95%E5%B0%86%E4%B8%BB%E5%B1%8F%E5%B9%95%E4%B8%8A%E7%AA%97%E5%8F%A3%E7%9A%84%E5%B0%BA%E5%AF%B8%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%A4%96%E6%8E%A5%E6%98%BE%E7%A4%BA%E5%99%A8%E7%9A%84%E5%B0%BA%E5%AF%B8%EF%BC%9F.png)
使用扩展监视器时,我需要一个脚本:
- 获取外接显示器的尺寸(连接到 HDMI1)
- 设置主显示器上当前窗口的尺寸以匹配。
我知道我可以用来xdotool getwindowfocus
识别当前聚焦的窗口,但不知道如何做其余的事情。
答案1
您可以通过以下方式获取有关连接的显示器的信息xrandr
。它没有方便的查询格式,您需要在不带参数的情况下运行它并解析输出。
您可以使用xdotool
使用窗口执行许多操作,包括查询和更改其属性,例如焦点和大小。您可以使用命令链对窗口进行操作而无需显式获取其窗口 ID,例如xdotool getactivewindow dostuff …
将dostuff
命令应用于具有焦点的窗口。
#!/bin/sh
monitor='HDMI-1'
new_xy=$(xrandr | sed -n "s/^$monitor [^ ]* \([0-9]*\)x\([0-9]*\).*/\1 \2/p")
if [ -n "$new_xy" ]; then
xdotool getwindowfocus $new_xy
fi # else $monitor is not active
请注意,窗口大小包括装饰(标题栏、边框),因此这使得包括装饰的完整窗口实际上不适合显示器。
如果您还想将窗口移动到 HDMI-1,您可以从输出的同一行解析显示器的坐标xrandr
。但是,您可能不想调整窗口大小,而是想要最大化它或使其全屏显示。最大化/全屏和调整到屏幕大小之间的区别在于,窗口管理器会记住窗口的非最大化大小,并有一个命令来恢复它。最大化会将装饰保留在窗口周围,而全屏则不会。最大化和全屏是窗口管理器概念,而不是X服务器概念,xdotool做不到。我立即想不出一种与窗口管理器无关的方法来做到这一点。