如何将主屏幕上窗口的尺寸设置为外接显示器的尺寸?

如何将主屏幕上窗口的尺寸设置为外接显示器的尺寸?

使用扩展监视器时,我需要一个脚本:

  1. 获取外接显示器的尺寸(连接到 HDMI1)
  2. 设置主显示器上当前窗口的尺寸以匹配。

我知道我可以用来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做不到。我立即想不出一种与窗口管理器无关的方法来做到这一点。

相关内容