将显示设置应用于所有用户帐户?

我花了一些时间让我的设置正确用于多个显示器,这在我登录时工作正常,但在登录屏幕或其他用户不正确。

如何为所有用户和登录屏幕全局设置显示设置?

根据您设置系统的方式,可能就像将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文件

怎么做

  1. 通过运行xrandr找出您想要旋转的屏幕的名称。 它将输出许多行,其中几行如下:

     VGA-0 connected 

    这将为您提供有关已连接屏幕名称的信息。

  2. 在我的VGA-0下面的例子中选择你想要旋转的那个
  3. 用(例如) 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 

    向左旋转屏幕,无需说如果您想要其他类型的旋转,您可以选择leftrightnormalinverted (另请参见此处) 。

说明

您可以通过在~/.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,lightdmxrandr以及其他建议 – 但是一些配置更改很复杂并且存在破坏显示的风险完全,所以我最终使用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