如何在 Linux 脚本中发现屏幕分辨率如何在 Linux 脚本中发现屏幕分辨率如何在 Linux 脚本中发现屏幕分辨率如何在 Linux 脚本中发现屏幕分辨率
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Linux 脚本中发现屏幕分辨率

发表 admin at 2025年2月28日
类别
  • 未分类
标签

更清楚地了解脚本正在使用的显示。

要点

  • 使用 xrandr 命令查询和设置屏幕分辨率,可以使用 awk 解析输出以获取当前分辨率,例如 xrandr | awk -F'[ +]' '/primary/{print $4}'
  • xdpyinfo 命令提供有关屏幕的详细信息,awk 可用于隔离具有当前分辨率的行,并且通过更多操作,您可以将 X 和 Y 分辨率提取为变量。

如果您需要了解 Linux 计算机上当前的屏幕分辨率,有多个命令可供选择。有时将该功能合并到 Bash 脚本中很有用。

为什么要更改屏幕分辨率

有时,在脚本启动应用程序或进行进一步处理之前,您需要知道屏幕分辨率是多少。您可能需要将分辨率作为命令行参数传递给您要启动的应用程序,或者您可能已重置分辨率并且您想要检查分辨率更改是否成功。

降低分辨率是一个技巧,可以让在旧的、功能较弱的硬件上玩一些游戏成为可能。手动来回更改分辨率很快就会变得令人厌烦,因此显而易见的答案是在脚本中执行此操作。

我们要查看的命令已作为标准安装在我们检查的所有发行版上,因此不需要安装任何东西。您可以立即使用这些技术,并且您的脚本应该可以跨不同的发行版移植。

使用 xrandr 命令

xrandr 命令可用于设置和查询屏幕分辨率。默认情况下,不带任何参数,它会生成您的一个或多个屏幕支持的视频模式列表。

xrandr

首选视频模式后跟一个加号“+”,当前视频模式后跟一个星号“*”。

该屏幕只有一种首选视频模式,并且它恰好是当前视频模式。虽然您可以有多种首选模式,但只能有一种当前模式。这意味着如果我们能找到其中带有星号的行,我们就可以确定当前的视频模式设置是什么。

您可能会在网上看到他们所做的事情的示例。他们使用 grep 查找其中包含星号的行,然后使用 sed 或 awk 解析出我们感兴趣的信息。

但还有一个更简单的方法。 xrandr 输出中的信息包含“连接的主”屏幕的详细信息,包括当前视频模式分辨率。我们可以使用 awk 来解析它,而根本不需要使用 grep。

xrandr | awk -F'[ +]' '/primary/{print $4}'

这就是它的工作原理。我们使用 -F(字段分隔符)选项告诉 awk 空格和加号“+”将被视为字段分隔符。我们正在搜索其中包含“primary”一词的行。选择这个词是因为它出现在我们感兴趣的行中,并且不会出现在 xrandr 输出中的其他任何位置。

将该行分成空格和加号“+”的字段,表示当前分辨率位于第四字段。

我们使用 awk print 命令来打印第四个字段。因为我们还在加号处分割字段,所以“+0+0”从分辨率的背面被修剪,成为字段 5 和 6。我们对那些不感兴趣。

相关:如何在 Linux 上使用 awk 命令

使用 xdpyinfo 命令

默认情况下,xdpyinfo 命令显示有关屏幕和可用视频模式的大量信息。它在我们的测试机器上生成了超过 1000 行输出。

xdpyinfo

当前模式比其他可用模式更详细地描述。描述当前模式分辨率的行包含“尺寸”一词。该单词不会出现在输出中的其他任何位置,因此我们可以使用 awk 用它来隔离感兴趣的行。

xdpyinfo | awk '/dimensions/ {print $2}'

这是一个比我们与 xrandr 一起使用的命令更简单的命令,因为我们不需要指定任何字段分隔符。 awk 默认使用空格作为字段分隔符,这就是我们在 xdpyinfo 的输出中必须处理的所有问题。分辨率是输出行中的第二个字段,{print $2} 会将其写入终端窗口。

将其放入脚本中

在脚本中使用这些技术中的任何一种都只需很少的额外工作。我们需要有一个变量来保存我们发现的分辨率,以便我们可以在脚本中判断当前屏幕分辨率不满足其特定需求时是否应该继续处理或退出。

将这些行复制到编辑器,将文件另存为“get_res.sh”,然后关闭编辑器。

#!/bin/bash
current_res=$(xdpyinfo | awk '/dimensions/ {print $2}')
echo $current_res

我们需要使用 chmod 命令使脚本可执行。

chmod +x get_res.sh

这会将 awk 命令的输出分配给名为 current_res 的变量,并将该变量的值回显到终端窗口。让我们运行该脚本。

./get_res.sh

令人鼓舞的是,我们看到了与在终端窗口中手动运行命令时相同的结果。

分离 X 和 Y 分辨率

如果您想分离 X 和 Y 分辨率,我们可以添加几行来做到这一点。将这些行复制到编辑器,将文件另存为 get_x_y.sh,然后关闭编辑器。

#!/bin/bash
current_res=$(xdpyinfo | awk '/dimensions/ {print $2}')
current_x=$(echo $current_res | awk -F'[ x]' '{print $1}')
current_y=$(echo $current_res | awk -F'[ x]' '{print $2}')
echo $current_res
echo $current_x
echo $current_y

我们可以使用 awk 从 current_res 变量中存储的值中提取 X 分辨率,并将结果存储在名为 current_x 的变量中。我们重复该过程来提取 Y 分辨率,并将其分配给名为 current_y 的变量。最后,我们打印所有三个变量。

同样,我们需要使用 chmod 使其可执行。

chmod +x get_x_y.sh

这是我们测试机器上脚本的输出。

./get_x_y.sh

将 X 和 Y 分辨率作为单独的变量可以让您在每个维度上进行比较。也许只有水平分辨率对您来说很重要,只要它满足或超过最小值,您的脚本就可以继续进行。

保持甜蜜和简单

通过隔离垂直和水平分辨率,您可以测试其中之一或两者,以确保您的分辨率敏感脚本可以继续。它还允许您将这些值用作需要使用该信息启动的其他应用程序的命令行参数。

掌握这些价值观并不需要费力。即使对标准 Linux 实用程序(例如 awk)有一点了解,也会使学习它们的时间得到数倍的回报。

©2015-2025 Norria support@norria.com