在各个系统中精确调整 GUI 窗口大小

2026-02-14 23:07:53

前言

有些时候我们希望能精确地调整窗口的大小,例如视频录制、截图等场景。使用目标分辨率或符合标准分辨率的比例作为窗口尺寸,避免被拉伸变形。本文将介绍如何在各个系统中精确调整 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%