Salvando as configurações do monitor?

16

Existe uma maneira de salvar as configurações do meu monitor? Eu tenho um monitor externo no trabalho, mas todas as manhãs eu tenho que conectá-lo, reorganizar as janelas de lado a lado para ficar em cima um do outro. Posso apenas salvar isso?

Oscar Godson
fonte

Respostas:

7

Para encurtar a história (isto é: faça o que Nicolas Bernaerts sugere, mas pouparei os detalhes): a configuração dos monitores é realmente salva ~/.config/monitors.xml, mas não é aplicada na inicialização / login.

As etapas para superar isso são:

Efetue login com a configuração incorreta de monitores.

Remova a configuração atual do monitor:

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

Use o aplicativo Displays para organizar os monitores como desejar (tenho um monitor lateral girado no sentido anti-horário). organize seus monitores como desejar

Depois de pressionar Aplicar , um novo monitors.xmlé criado.

Agora, baixe e torne executável o script e o iniciador que forçam a configuração do monitor com base no arquivo de configuração recém-criado:

$ 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

Nesse ponto, a configuração dos monitores pode ser corrigida iniciando o aplicativo de atualização da posição do monitor .

Se você deseja que isso seja automático, basta adicionar um aplicativo de inicialização, com as seguintes entradas:

  • Nome: Update Monitors Position
  • Comando: update-monitor-position 5
  • Comente: Force monitors position 5 seconds after login

insira a descrição da imagem aqui

Alessandro Cuttin
fonte
1
Ótimo, isso ajudou. Obrigado! Existe um relatório de bug para isso?
Ondra Žižka
2
Eu acho que essa é a melhor resposta. Atualizei o script para oferecer suporte a vários perfis: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - basta copiar seu monitors.xml para, por exemplo, monitors-office.xml, se você deseja executar o "update-monitor-position office"
redefina
vanvugt: "Na verdade, vamos usar o erro 1292398, já que é o que a maioria dos usuários está encontrando." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF:
5

A configuração de todos os seus monitores - hot plugados ou não - deve ser armazenada $HOME/.config/monitors.xmlpelo xrandrplug - in paragnome-settings-daemon , que é o que realmente aplica a configuração que você faz no capplet de Monitores.

Como parece que isso não está funcionando corretamente para todos, há claramente um bug em algum lugar. Urgh.

RAOF
fonte
Sim, e como a maco diz, se eu desligar o computador e inicializá-lo novamente, ele se lembra, mas não quando já está ligado.
Oscar Godson
4

Os três primeiros passos para conectar seu monitor externo da maneira que você deseja e o quarto é salvar as configurações.

  1. Conecte seu monitor externo e verifique sua resolução suportada:

    xrandr -q
    
  2. Dê o seguinte comando (Isso desativará o monitor do seu laptop):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Se você deseja ativar o laptop e o externo:

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

    (aaaaXzzzz - a resolução do seu laptop.)

    A configuração acima clonará sua tela. Jogue com a opção " --right-of/ --left-of" se desejar.

  4. Se você precisar dessas configurações durante o login, adicione as verificações /etc/X11/Xsession.d/45custom_xrandr-settings(pode ser necessário criar uma).

    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
    
thonixx
fonte
2

No escritório, tenho 3 monitores no meu laptop e 2 em casa. Dois monitores de escritório estão na vertical, enquanto outros estão na orientação normal.

A. monitors.xml está em ~ / .config.

  1. Delete isso
  2. Definir a exibição na configuração do escritório
  3. Renomeie recém-criado "monitors.xml" para "monitors-office.xml".

B. Obtenha o shell script, "update-monitor-position".

  1. Altere a definição "MONITOR_XML", "monitors.xml" para "monitors-office.xml".

  2. Salve-o como "update-monitor-position-office", no caminho executável (/ usr / local / sbin /).

  3. Toque na permissão -> executável por "Eu".

C. Obtenha o atalho da área de trabalho, "update-monitor-position.desktop"

  1. Altere a definição "Exec", "update-monitor-position" para
    "update-monitor-position-office".
  2. Salve-o como "update-monitor-position-office.desktop"
  3. Toque na permissão -> executável por "Eu".

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

Script de shell, atualização-monitor-posição-escritório

#!/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[@]}"
Jay
fonte
Hey @jey, você respondeu em janeiro de 2018. (enquanto o roteiro de Nicolas tem 4 anos ... ). Posso assumir que isso ainda está funcionando no Ubuntu 16.x / 18.x recente? - E: você tem alguma suposição, se funcionaria também sob o Ubuntu- MATE ? (Eu vejo disse monitors.xml no meu sistema ...)
Frank Nocke
Frank, o meu diz "16.04.5 LTS". Um ponto, depois de "dist-upgrade", tive que passar pelo processo e depois reiniciar. As "Configurações do sistema -> Monitores" funcionam de maneira engraçada no meu sistema. Não estou no modo de tentar 18.x. Obrigado,
jay
1

O Ubuntu 12.04 lembra as configurações do monitor com conexão a quente. Mas eles são aplicados somente quando você reabrir o miniaplicativo Configuração do sistema> Monitores. Este é o caso para mim, pelo menos, e isso é definitivamente um bug.

Jens
fonte
1

A resposta de Jay quase funcionou para mim, mas eu precisava fazer algumas etapas extras. Eu faria isso um comentário sobre a resposta dele, mas não tenho reputação.

No arquivo update-monitor-position-office:

  1. Minha versão do bash (4.3.48) reclamou da falta de espaço após o "i ++" na linha 28.
  2. Minha versão do xrandr (1.5) não reconheceu a opção "--fbmm" na linha 40. Eu tive que mudar isso para "--mode". Isso foi difícil de diagnosticar porque o xrandr realmente não me deu um erro, apenas executou o comando sem fazer nada.
Chris
fonte
1

Prefiro executar esse script a partir de um terminal, pois abro um primeiro após o login.

Primeiro login com a configuração incorreta - os monitores não foram colocados corretamente:

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

Agora defina seus monitores com as configurações do sistema para criar um novo ~/.config/monitors.xmlarquivo com as configurações adequadas.

Copie o script fixo de Nicolas Bernaerts do meu repositório: https://raw.githubusercontent.com/alextomko/monitors/master/monitors e coloque-o em um caminho para executar a partir do terminal.

$ 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
Alex Tomko
fonte
0

Não, não há como salvar configurações em monitores hot-plugged. Se você se conectar antes da inicialização, o GNOME deve se lembrar da configuração de cada inicialização por dispositivo (ou seja, conectar-se ao seu monitor no trabalho versus o de casa).

maco
fonte
Droga, ok. Existe um aplicativo de terceiros que possa fazer isso? Eu sei que o Mac OS X faz isso e o Windows 7 (pelo que tentei com a pouca experiência que tenho com o W7).
Oscar Godson
A configuração do monitor GNOME deve salvar essas informações também para monitores hotplugged. Faz por mim.
RAOF 11/10/10
RAOF: estranho, já que a discussão na lista de discussão ubuntu-devel no início desta semana disse que não.
maco
a configuração é realmente salvo no ~/.config/monitors.xml, mas não é aplicada na inicialização
Alessandro Cuttin