将显示设置应用于所有用户帐户?
我花了一些时间让我的设置正确用于多个显示器,这在我登录时工作正常,但在登录屏幕或其他用户不正确。
如何为所有用户和登录屏幕全局设置显示设置?
根据您设置系统的方式,可能就像将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 mdkdir -p /etc/skel/.config sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
注意¹:您将来要创建的所有用户
要在登录时为每个用户设置屏幕配置(这不会更改登录屏幕上的配置),您可以在/etc/xdg/autostart
创建.desktop
文件
怎么做
-
通过运行
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
命令在桌面“完成”加载之前运行得太早就会中断。 可能你需要增加rest时间,或者你可以尝试将其删除。 在命令中,屏幕在任何用户登录后10秒后旋转。 -
命令:
xrandr --output VGA-0 --rotate left
向左旋转屏幕,无需说如果您想要其他类型的旋转,您可以选择
left
,right
,normal
,inverted
(另请参见此处) 。
说明
您可以通过在~/.config/autostart
放置.desktop
文件(启动器)来启动命令(实际登录)。 这只会为单个用户运行启动器。 如果您执行相同操作,但将启动器放在/etc/xdg/autostart
,则只要有任何用户登录,该命令就会运行,除非特定用户在Dash> Startup Applications中为他或她禁用启动器
此外 ,您只需将本地~/.config/monitors.xml
文件复制到/var/lib/lightdm/monitors.xml
即可在登录屏幕上进行设置。
Imo的组合,上面的解决方案( /etc/xdg
的启动器)是最简单的解决方案,可以实现您对登录屏幕和(任何)用户的所需。 此外, /etc/xdg
中的启动器解决方案(非常)容易反转或更改,以防您需要进行其他设置,而无需编辑(每个)用户级别上的许多文件,因为用户的设置和登录在两个简单文件中同时为所有用户管理屏幕。
只是想为发现这个与类似问题挣扎的人添加评论。 每次登录时我都遇到旧显示器(1280×1024)的分辨率,但登录屏幕和访客用户登录使用正确的默认值1680×1050。
我在过去的四个月中阅读了很多post,寻找答案,阅读xorg.conf,monitors.xml,lightdm和xrandr以及其他建议 – 但是一些配置更改很复杂并且存在破坏显示的风险完全,所以我最终使用gui每次登录手动更改监视器设置。
今天我在.config文件夹中为旧分辨率做了一个grep。
grep -HrnIF '1280' .config | less
第一个结果是包含这个的〜/ .config / autostart / xrandr.desktop文件,
Exec=xrandr -s 1280x1024 -r 75
所以我只是把文件移出了那里。 和宾果游戏,我登录并获得默认的1680×1050分辨率。
它花了我几个小时的搜索,我找不到足够接近的答案,所以发布在这里,以防它对某人有用。
您可能希望在/etc/lightdm/lightdm.conf
添加一些/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
将更改登录屏幕的显示。
在我的系统(Ubuntu 16.04)上用于登录屏幕,只是以root身份(使用sudo
)不起作用。 您可能还需要确保monitors.xml的所有者/组是lightdm:lightdm
。
sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml