如何在 Linux 上使用 autorandr 自动更改 X11 显示设置
在设置中添加显示器可能是提高工作效率最有效、最直接的方法之一。例如,当我们需要查阅某种文档并同时全屏处理另一项任务时,多显示器设置可能很有用。 Autorandr 是一个免费的开源实用程序,能够根据连接到我们机器的显示器应用特定的 X11 配置。
在本教程中,我们将学习如何使用 autorandr 实用程序,以及如何在一些最常用的 Linux 发行版上安装它。
在本教程中您将学习:
如何在一些最常用的 Linux 发行版中安装 autorandr
如何创建、删除和手动加载配置文件
如何列出现有的配置文件
如何获取与配置文件相关的 xrandr 设置
autorandr 如何以及在何处保存配置文件配置
安装autorandr
Autornadr 是免费的开源软件。该实用程序主要用 Python 编写,并在 GPLv3 许可证下发布。它可以在主要 Linux 发行版的存储库中找到,因此可以使用各自的包管理器轻松安装。让我们看一些例子。要在 Fedora 上执行安装,我们可以运行:
$ sudo dnf install autorandr
要在 Debian 或 Ubuntu 上安装该软件包,我们可以使用以下命令:
$ sudo apt-get update && sudo apt-get install autorandr
Autorandr 也可以在 Archlinux“社区”存储库中找到。我们可以使用 pacman 包管理器来安装它:
$ sudo pacman -Sy autorandr
由于 autorandr 是用 Python 编写的,因此它也作为 Python 包分发,因此可以使用 Python 包管理器 pip
以独立于分发的方式安装。要仅为我们的用户执行安装(不鼓励以 root 身份运行 pip),我们可以使用以下命令:
$ pip install autorandr --user
以这种方式安装时,autorandr 二进制文件将放置在 ~/.local/bin
目录下,该目录应该已经是用户 PATH 的一部分。
autorandr 的工作原理
Autorandr“指纹”显示连接到系统的信息,并将其与“配置文件”中当前的 X11 服务器设置关联起来,每次匹配指纹时都会自动应用这些设置。让我们看一些使用示例。
目前我正在从我的笔记本电脑上写作,并且没有连接其他显示器。唯一使用的显示器是本机显示器,它设置为以最大分辨率 (1920x1080
) 工作并具有一定的刷新率。
为了让 autorandr 记住这个配置,我需要做的就是将其保存在“配置文件”中并为其指定一个名称。为了完成此任务,我使用 --save
选项调用该实用程序,并传递我想要用于配置文件的名称作为参数:
$ autorandr --save laptop
在没有任何选项或参数的情况下调用该实用程序,我可以看到配置文件已正确保存,并且它是当前正在使用的配置文件:
$ autorandr
laptop (detected) (current)
要将此配置文件设置为默认配置文件,我运行:
$ autorandr --default laptop
当配置文件设置为默认值时,如果没有其他配置匹配,则使用该配置文件。如果不存在默认配置文件,则保留当前配置。
好的。现在,让我们在设置中添加外部显示器。我连接显示器,设置所需的分辨率(在本例中为2560x1080
)并将其放置在本机显示器的右侧,该显示器被标记为主要显示器。此类任务可以使用 xrandr 从命令行执行,或者更方便地使用图形前端。在这个例子中我使用“arandr”:
一旦我对设置感到满意,我就会使其生效,然后使用 autorandr 将其“注册”为新的配置文件。在本例中,我将其保存为“laptop_external_ultrawide”:
$ autorandr --save laptop_external_ultrawide
现在,当我分离外部显示器时,autorandr 将检查与新配置匹配的配置文件。如果存在,则会应用它(在本例中为“laptop”,这也是默认值)。同样,当我重新连接相同外部显示器时,将自动应用“laptop_external_ultrawide”配置文件。
手动加载配置文件
正如我们所看到的,配置文件的加载取决于连接到我们机器的显示器。但是,我们可以手动加载特定的配置文件。在这种情况下,我们想要做的就是简单地将配置文件名称作为参数传递给实用程序:
$ autorandr laptop_external_ultrawide
如果配置文件已在使用中,则不会重新加载它,除非传递了 --force
选项。
获取与活动配置文件关联的设置
有时查看与活动配置文件关联的 xrandr 设置会很有用。要完成这样的操作,我们所要做的就是使用 --config
选项运行 autorandr :
$ autorandr --config
以下是使用“laptop_external_ultrawide”配置文件时命令返回的输出:
output DP-1
off
output HDMI-1
off
output DP-2
off
output eDP-1
crtc 0
mode 1920x1080
pos 0x0
primary
rate 60.01
x-prop-broadcast_rgb Automatic
x-prop-colorspace Default
x-prop-max_bpc 12
x-prop-non_desktop 0
x-prop-scaling_mode Full aspect
output HDMI-2
crtc 1
mode 2560x1080
pos 1920x0
rate 59.98
x-prop-aspect_ratio Automatic
x-prop-audio auto
x-prop-broadcast_rgb Automatic
x-prop-colorspace Default
x-prop-max_bpc 12
x-prop-non_desktop 0
删除配置文件
删除配置文件非常简单,因为有一个专用于该任务的选项:--remove
。要删除“laptop_external_ultrawide”,我们将运行:
$ autorandr --remove laptop_external_ultrawide
Autorandr 配置文件
Autorandr 将配置文件数据保存在 ~/.config/autorandr
目录下。与配置文件相关的配置放置在以配置文件本身命名的子目录中,该子目录包含两个文件:config
和 setup
。以下是与我的计算机上现有配置文件相关的文件结构:
/home/egdoc/.config/autorandr/
├── laptop
│ ├── config
│ └── setup
└── laptop_external_ultrawide
├── config
└── setup
名为“config”的文件包含与配置文件相关的 xrandr 选项;相反,“设置”文件包含显示器的“指纹”。以下是与我的系统上的“laptop_external_ultrawide”配置文件关联的硬件设置相关的指纹:
HDMI-2 00ffffffffffff001e6d1477d8660300081d010380502278eaca95a6554ea1260f5054256b807140818081c0a9c0b300d1c08100d1cfcd4600a0a0381f4030203a001e4e3100001a023a801871382d40582c45001e4e3100001e000000fd00384b1e5a19000a202020202020000000fc004c472048445220574648440a2001ca020337f1230907074c100403011f1359da125d5e5f830100006d030c001000b83c20006001020367d85dc4013c8000e305c000e3060501295900a0a038274030203a001e4e3100001a565e00a0a0a02950302035001e4e3100001a000000ff003930384e544142364a3933360a0000000000000000000000000000000000008a
eDP-1 00ffffffffffff0026cf7d0500000000001a0104951f11780a7690945554902721505400000001010101010101010101010101010101383680a07038204018303c0035ae10000019000000000000000000000000000000000000000000fe00496e666f566973696f6e0a2020000000fe00523134304e574635205231200a0016
顺便说一句,当前硬件配置的指纹可以通过运行带有 --fingerprint
选项的 autorandr 来获取。
结论
Autorandr 是一个用 Python 编写的免费开源实用程序,可用于根据连接到计算机的显示器自动应用特定的 X11 配置。在本文中,我们了解了如何在一些最常用的 Linux 发行版中安装该实用程序;如何创建、删除和手动加载配置文件,以及如何列出现有配置文件。最后,我们了解了如何检查与配置文件关联的配置,以及它们在文件系统中的组织方式。