前言
有些时候我们希望能精确地调整窗口的大小,例如视频录制、截图等场景。使用目标分辨率或符合标准分辨率的比例作为窗口尺寸,避免被拉伸变形。本文将介绍如何在各个系统中精确调整 GUI 窗口大小。
这是一篇新手向教程。过程十分简单!
Linux
在 X11 环境中,可以配合使用 xwininfo 和 xdotool 达成目的。首先打开我们需要调整窗口的应用程序,然后在命令行执行 xwininfo,此程序会等待你选择窗口。选择我们的目标窗口后,会得到以下输出信息:
xwininfo: Please select the window about which you
would like information by clicking the
mouse in that window.
xwininfo: Window id: 0x900001f "xwininfo"
Absolute upper-left X: 174
Absolute upper-left Y: 653
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 2114
Height: 1155
Depth: 32
Visual: 0xad
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x9000020 (not installed)
Bit Gravity State: ForgetGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +174+653 -1552+653 -1552-352 +174-352
-geometry 2114x1155+174+608
这是我打开《星露谷物语》这个游戏,并选择它的窗口后得到的输出。我们主要关注的是 Window id 的值,即此处的 0x900001f。有了窗口 ID 以后,执行以下 xdotool 命令:
xdotool windowsize 0x900001f 1920 1080
这样就将我的星露谷游戏窗口调整成 1920x1080 的尺寸了。如果我想录制游戏视频,那么 OBS 等工具的输出分辨率直接使用 1080P 即可。它是完全对应分辨率的,不需要缩放的参与,更没有黑边。
在 NixOS 中,它们的包名分别是 xorg.xwininfo 和 xdotool。在 Debian(系列)发行版中,请安装 x11-utils 和 xdotool 两个包。
将这套流程自动化,脚本如下:
#!/usr/bin/env bash
# 定义目标分辨率
WIDTH=1920
HEIGHT=1080
echo "请点击目标窗口以选择它..."
# 使用 xwininfo 获取窗口信息
WINDOW_INFO=$(xwininfo)
# 提取窗口 ID
WINDOW_ID=$(echo "$WINDOW_INFO" | grep "Window id:" | awk '{print $4}')
if [ -z "$WINDOW_ID" ]; then
echo "未能获取窗口 ID,请重试。"
exit 1
fi
echo "目标窗口 ID: $WINDOW_ID"
echo "正在调整窗口大小到 ${WIDTH}x${HEIGHT}..."
# 使用 xdotool 调整窗口大小
xdotool windowsize "$WINDOW_ID" "$WIDTH" "$HEIGHT"
if [ $? -eq 0 ]; then
echo "窗口大小已成功调整。"
else
echo "调整窗口大小时出错,请检查是否正确安装 xdotool。"
fi
保存以上脚本,自行修改分辨率,即可在任何需要的时候快捷调整窗口大小。
本文还在更新中…… 已完成 30%
最新发布