it-swarm.cn

是否保存显示器设置?

有没有保存我的显示器设置的方法?我有一个外接显示器在工作,但是每天早晨我都必须插上电源,将窗户从并排摆放到彼此顶部。我可以保存吗?

20
Oscar Godson

长话短说(即:做 (Nicolas Bernaerts 的建议,但是我为您保留了详细信息):监视器配置实际上保存在~/.config/monitors.xml,但不适用于启动/登录。

解决此问题的步骤是:

使用错误的监视器配置登录。

删除当前的监视器配置:

cd .config
mv monitors.xml{,.bak}

使用Displays应用程序按需要布置显示器(我将一侧显示器逆时针旋转)。 arrange your monitors as you wish

按下应用后,新的monitors.xml 被建造。

现在,下载脚本和启动器并使它们可执行,这些脚本和启动器基于新创建的配置文件来强制进行监视器配置:

$ Sudo wget -O /usr/local/sbin/update-monitor-position https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position
$ Sudo chmod +x /usr/local/sbin/update-monitor-position
$ Sudo wget -O /usr/share/applications/update-monitor-position.desktop https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position.desktop
$ Sudo chmod +x /usr/share/applications/update-monitor-position.desktop

此时,可以通过启动update monitor position应用程序来固定监视器的配置。

如果您希望这是自动的,只需添加一个启动应用程序,并输入以下内容:

  • 名称: Update Monitors Position
  • 指令:update-monitor-position 5
  • 评论:Force monitors position 5 seconds after login

enter image description here

9
Alessandro Cuttin

所有监视器的配置-是否已热插拔-存储在$HOME/.config/monitors.xml(由xrandr插件用于gnome-settings-daemon,这实际上将应用您在Monitors capplet中进行的配置。

由于似乎每个人都无法正常使用,因此显然某个地方存在错误。嗯.

5
RAOF

按照所需方式连接外部显示器的前三个步骤,第四个步骤是保存设置。

  1. 连接外部显示器并检查其支持的分辨率:

    xrandr -q
    
  2. 输入以下命令(这将禁用笔记本电脑的显示器):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. 如果要同时启用笔记本电脑和外部设备:

    xrandr --output LVDS1 --mode yyyyXzzzz --pos 0x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    

    (yyyyXzzzz-您的笔记本电脑分辨率。)

    以上配置将克隆您的屏幕。玩“ --right-of/--left-of“选项(如果需要)。

  4. 如果您在登录时需要此设置,请在/etc/X11/Xsession.d/45custom_xrandr-settings(您可能需要创建一个)。

    xrandr |grep VGA1 | grep " connected " | if [ $? -eq 0 ]; then xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal  #Change the way u need ; fi
    
4
user8361

在办公室,我的笔记本电脑上有3台显示器,家里有2台显示器。两个办公室监视器设置为垂直,而其他监视器则处于垂直方向。

答:monitors.xml在〜/ .config中。

  1. 删除它
  2. 在办公室设置显示器
  3. 将刚创建的“ monitors.xml”重命名为“ monitors-office.xml”。

B.获取Shell脚本“ update-monitor-position”。

  1. 将“ MONITOR_XML”定义“ monitors.xml”更改为“ monitors-office.xml”。

  2. 将其另存为“ update-monitor-position-office”,位于可执行路径(/ usr/local/sbin /)中。

  3. 触摸“我”的权限->可执行文件。

C.获取桌面快捷方式“ update-monitor-position.desktop”

  1. 将“ Exec”定义的“ update-monitor-position”更改为
    “更新显示器位置办公室”。
  2. 将其另存为“ update-monitor-position-office.desktop”
  3. 触摸“我”的权限->可执行文件。

update-monitor-position-office.desktop:

[Desktop Entry]
Type=Application
Exec=update-monitor-position-office
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Office Monitors Position
Name=Office Monitors Position
Comment[en_US]=Force monitors position from monitor-office.xml
Comment=Force monitors position from monitor-office.xml
Icon=display

Shell脚本,update-monitor-position-office

#!/bin/bash
# -------------------------------------------------
#  Get monitors configuration from monitor.xml and apply it for current user session.
#  In case of multiple definitions in monitor.xml only first one is used.
#
#  See http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost
#  for instructions
#
#  Parameters :
#    $1 : waiting time in sec. before forcing configuration (optional)
#
#  Revision history :
#    19/04/2014, V1.0 - Creation by N. Bernaerts
#    10/07/2014, V1.1 - Wait 5 seconds for X to fully initialize
#    01/09/2014, V1.2 - Correct NULL file bug (thanks to Ivan Harmady) and handle rotation
#    07/10/2014, V1.3 - Add monitors size and rate handling (idea from jescalante)
#    08/10/2014, V1.4 - Handle primary display parameter
#    08/12/2014, V1.5 - Waiting time in seconds becomes a parameter
# -------------------------------------------------

# monitor.xml path
MONITOR_XML="$HOME/.config/monitors-office.xml"

# get number of declared monitors
NUM=$(xmllint --xpath 'count(//monitors/configuration['1']/output)' $MONITOR_XML)

# loop thru declared monitors to create the command line parameters
for (( i=1; i<=$NUM; i++)); do
  # get attributes of current monitor (name and x & y positions)
  NAME=$(xmllint --xpath 'string(//monitors/configuration['1']/output['$i']/@name)' $MONITOR_XML 2>/dev/null)
  POS_X=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/x/text()' $MONITOR_XML 2>/dev/null)
  POS_Y=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/y/text()' $MONITOR_XML 2>/dev/null)
  ROTATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rotation/text()' $MONITOR_XML 2>/dev/null)
  WIDTH=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/width/text()' $MONITOR_XML 2>/dev/null)
  HEIGHT=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/height/text()' $MONITOR_XML 2>/dev/null)
  RATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rate/text()' $MONITOR_XML 2>/dev/null)
  PRIMARY=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/primary/text()' $MONITOR_XML 2>/dev/null)

  # if position is defined for current monitor, add its position and orientation to command line parameters
  [ -n "$POS_X" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--output" "$NAME" "--pos" "${POS_X}x${POS_Y}" "--fbmm" "${WIDTH}x${HEIGHT}" "--rate" "$RATE" "--rotate" "$ROTATE")

  # if monitor is defined as primary, adds it to command line parameters
  [ "$PRIMARY" = "yes" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--primary")
done

# if needed, wait for some seconds (for X to finish initialisation)
[ -n "$1" ] && sleep $1

# position all monitors
xrandr "${PARAM_ARR[@]}"
3
jay

Ubuntu 12.04会记住热插拔的显示器设置。但是仅当您重新打开“系统配置”>“显示小程序”时才应用它们。至少对我来说是这种情况,这绝对是一个错误。

1
Jens

杰伊的答案几乎对我有用,但我需要做一些额外的步骤。我会对他的回答发表评论,但我没有声誉。

在文件update-monitor-position-office中:

  1. 我的bash版本(4.3.48)抱怨第28行的“ i ++”后面缺少空格。
  2. 我的xrandr(1.5)版本无法识别第40行的“ --fbmm”选项。我不得不将其更改为“ --mode”。这很难诊断,因为xrandr实际上没有给我一个错误,它只是执行了命令而没有执行任何操作。
1
Chris

我更喜欢从终端运行此脚本,因为我在登录后首先打开了一个脚本。

首次登录时配置错误-监视器放置不正确:

cd ~/.config
mv ~/.config/monitors.xml{,.bak}

现在,使用系统设置来设置显示器以创建新的~/.config/monitors.xml文件并进行正确的设置。

从我的仓库中复制Nicolas Bernaerts的固定脚本: https://raw.githubusercontent.com/alextomko/monitors/master/monitors 并将其放在从终端运行的路径中。

$ ls -l ~/bin
# if you don't have this directory then create it - do not be logged in as root here.

$ mkdir /home/$USER/bin

$ echo $PATH
# should show /home/username/bin if the dir existed or if you had to create.

$ wget -P ~/bin https://raw.githubusercontent.com/alextomko/monitors/master/monitors
$ chmod +x ~/bin/monitors

# Log out, lock, reboot or whatever it takes to make monitor settings lost for you and run the script.
$ monitors
1
Alex Tomko

不,无法在热插拔的显示器上保存配置。如果在启动前插入电源,GNOME应该记住每个设备在每次启动时的配置(即,在工作时连接到显示器,而在家中则连接到显示器)。

0
maco

感谢您将我指向~/.config/monitors.xml文件。

我发现在指定所需布局时创建了一个,还有某种备份monitors.xml~,只是我想更改的特征有所不同。

如果仅删除该备份文件,我发现新创建的备份文件将在下次重新启动计算机时生效。无需下载任何脚本。

我想,如果有一个错误,那就已经修复了。

还猜测,我猜测备份文件以某种方式被恢复,但是随着它的消失,主文件仍然是唯一有效的文件。

这适用于运行Ubu 16.04的安装程序和运行19.10的安装程序。

再次感谢您指出我的文件。

0
SteelTrap