我花了一些时间来正确设置多个显示器,当我登录时运行正常,但在登录屏幕或对于其他用户来说却不正确。
如何为所有用户和登录屏幕全局设置显示设置?
答案1
根据你设置系统的方式,它可能就像复制文件一样monitors.xml
简单来自正确设置的用户致所有用户:
要为一个用户测试这一点:
cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/
然后注销TestUser如果已经登录,重新登录并查看是否一切正确。
所有用户的命令:
cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done
登录屏幕的命令:
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/
命令对于所有未来用户¹:
sudo mkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
注¹:您未来将创建的所有用户
答案2
设置屏幕配置对于每个登录的用户(这不会改变登录屏幕上的配置),您可以.desktop
在/etc/xdg/autostart
怎么做
通过运行 找出您想要旋转的屏幕的名称
xrandr
。它将输出多行,其中包括以下几行:VGA-0 connected
这为您提供了有关所连接屏幕的名称的信息。
- 在下面的示例中,选择要旋转的那个
VGA-0
使用以下方式创建启动器(例如)
gedit
:sudo -i gedit /etc/xdg/autostart/set_screens.desktop
将以下文本粘贴到文件中:
[Desktop Entry] Name=set_screens Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left" Type=Application
替换该行:
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
字符串:
VGA-0
通过您的(旋转的)屏幕的名称。
重要笔记
在行中
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
我添加了一个
sleep 10
。这是因为有时,xrandr
如果命令运行得太早,在桌面“完成”加载之前,它们会中断。您可能需要增加中断,或者您可以尝试将其省略。在命令中,屏幕在登录后 10 秒后旋转任何用户。命令:
xrandr --output VGA-0 --rotate left
向左旋转屏幕,无需多言,如果您想要其他类型的旋转,您可以选择
left
、right
、normal
、inverted
(另请参阅这里)。
解释
您可以在启动时(实际登录时)运行命令,方法是将.desktop
文件(启动器)放在 中~/.config/autostart
。这将仅为单个用户运行启动器。如果您执行相同操作,但将启动器放在 中/etc/xdg/autostart
,则命令会在任何时候运行任何用户登录,除非特定用户在 Dash > 启动应用程序中为其禁用启动器
此外,您可以简单地复制本地~/.config/monitors.xml
文件到,/var/lib/lightdm/monitors.xml
以使设置在登录屏幕上正常工作。
我认为,将这个和上面的解决方案(中的启动器)结合起来/etc/xdg
是最简单的解决方案,可以准确实现您想要的登录屏幕和(任何)用户。此外,/etc/xdg
如果您需要进行其他设置,启动器的解决方案(非常)容易撤消或更改,而无需在(每个)用户级别编辑许多文件,因为用户设置和登录屏幕都是在两个简单文件中同时为所有用户管理的。
答案3
只是想为遇到类似问题的人添加一条评论。每次登录时,我都只能使用旧显示器的分辨率 (1280x1024),但登录屏幕和访客用户登录使用正确的默认分辨率 1680x1050。
在过去的四个月里,我读了很多帖子,寻找答案,阅读xorg.conf、monitors.xml、lightdm和兰德和其他建议 - 但一些配置更改很复杂,并且有完全破坏显示的风险,所以我最终使用 GUI 在每次登录时手动更改显示器设置。
今天我在我的 .config 文件夹中对旧分辨率进行了 grep。
grep -HrnIF '1280' .config | less
第一个结果是 ~/.config/autostart/xrandr.desktop 文件包含以下内容,
Exec=xrandr -s 1280x1024 -r 75
所以我把文件移出了那里。然后,我登录并获得了默认的 1680x1050 分辨率。
我花了几个小时搜索,但找不到足够接近的答案,因此在此发布,以防对某人有用。
答案4
您可能希望在 中添加一些内容/etc/lightdm/lightdm.conf
。这里我们创建一个使用xrandr
命令设置显示器的脚本。您可以使用一些图形 RandR 工具为您创建命令,例如arandr
。在我的例子中,脚本如下所示:
#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off
您可以将此脚本放在/usr/share
您想要的任何位置。您的脚本可能看起来不那么复杂,因为这是针对复杂的双显示器设置。然后附加类似以下内容:
session-setup-script=/usr/share/mycustomxrandr.sh
和:
display-setup-script=/usr/share/mycustomxrandr.sh
确保该文件是可执行的,因此:
chmod a+x mycustomxrandr.sh
将session-setup-script
显示设置为后您通过 LightDM 登录,display-setup-script
并将改变登录屏幕的显示。