Como redefinir as configurações do monitor para o padrão através do terminal?

32

Eu tenho um problema complicado com relação a vários monitores no KDE (Kubuntu). Eu tenho um laptop que, em casa, está conectado a dois monitores - VGA e HDMI. Isso funciona apenas quando a tela do laptop embutida está desativada (pelo menos me disseram isso).

O problema é que agora tirei o laptop e o inicializei sem monitores externos conectados. O sistema lembra que a tela embutida foi desativada e, portanto, a desativa, mesmo sendo o único monitor conectado. Obviamente, isso torna o laptop praticamente inutilizável. Mudando para um terminal através do Ctrl+ Alt+ F#works, posso fazer o login; até o Guest funciona normalmente.

A questão é: como faço para (re) definir as configurações do monitor de uma conta por meio de terminais, pois não posso usar a GUI?

obrigado

Martin Melka
fonte
3
Pergunta relacionada com uma resposta recente re xrandrque pode ser útil.
2
Isso ajudou quando eu pude usar o console no segundo monitor, o xrandr conseguiu definir minhas configurações. No entanto, quando eu posso usar apenas o terminal não gui, o xrandr diz que não pode abrir a tela, por isso é bastante inútil.
Martin Melka
Como você desabilitou a tela do laptop embutida?
noz sobre natty
Não sei se há uma diferença relevante no KDE, mas no ubuntu padrão ele funciona muito bem para mim (com o monitor interno desligado via interface gráfica do usuário, a tampa do laptop fechada e o laptop sentado confortavelmente na estação de acoplamento).
noz sobre natty
1
você quer dizer que preciso definir as configurações sempre que uso o laptop com e sem monitores externos? Se sim, isso é péssimo. De qualquer forma, eu preciso saber como fazer isso através tty
Martin Melka

Respostas:

9

Boa pergunta. Um pouco complicado de responder, mas aqui está uma tentativa.

Resposta básica

Na verdade, existe uma pequena possibilidade de redefinição incluída no X11 . Você pode encontrá-lo em /etc/X11/Xreset. Você pode usar o diretório Xreset ( Xreset.d) para colar um script que é executado automaticamente quando um usuário efetua logout. O arquivo LEIA-ME:

# Scripts in this directory are executed as root when a user log out from
# a display manager using /etc/X11/Xreset.
# The username of the user logging out is provided in the $USER environment
# variable.

Assim, você poderia: a) adicionar um script de redefinição /etc/X11/Xreset.deb) criar um script anexado a um iniciador que configure seus monitores externos duplos. Como tal, você efetuaria logoff e tudo voltaria ao normal, efetuaria logon no laptop, acionaria o iniciador dos monitores e gozaria a vida.

Mais Informações

  1. Você pode querer sudo dpkg-reconfigure -phigh xserver-xorgredefinir o xserver ou (provavelmente melhor olhar para a resposta que Mik sugeriu nos comentários).

  2. Um cara do SuSE escreveu um bom artigo sobre o X.

  3. Em um relatório de bug resolvido, alguém declara:

    os administradores podem soltar scripts no /etc/X11/Xreset.d/ para serem executados após o logout do usuário.

  4. Este é o conteúdo do arquivo:

Você pode encontrá-lo em seu próprio sistema.

#!/bin/sh
#
# /etc/X11/Xreset
#
# global Xreset file -- for use by display managers

# $Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $

set -e

PROGNAME=Xreset
SYSSESSIONDIR=/etc/X11/Xreset.d

if [ ! -d "$SYSSESSIONDIR" ]; then
  # Nothing to do, exiting
  exit 0
fi

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
  set -e
fi 

exit 0

# vim:set ai et sts=2 sw=2 tw=80:
don.joey
fonte
Interessante. O script de redefinição não faz nada. Eu o executei através do tty, reiniciei o computador, mas estava tudo igual. O mesmo com colocá-lo na pasta: | Eu tentei colocar xrandr comandos dentro também, mas sem sucesso
Martin Melka
O script de redefinição executa o que é encontrado no diretório Xreset.d.
don.joey
1
Direita. Não funcionou para mim no começo, porque esqueci de adicionar permissão executável ao script. agora isso trabalha como charme. Obrigado. Uma pequena observação, no entanto. Se eu colocar o laptop no modo de suspensão e desconectar os monitores durante esse processo, não sairei do sistema e a tela não será redefinida. Existe uma maneira de me desconectar através de tty? Eu tentei fazer o login com o mesmo usuário que usa X, mas logoffsó me desconectado do tty, não de X.
Martin Melka
Olá Martin. Estou feliz que você conseguiu! Você tentou algo assim gnome-session-quit? Fonte: askubuntu.com/questions/15795/…
don.joey
17

Sempre que coloco meu laptop Lubuntu no modo de suspensão quando ele é exibido exclusivamente na minha TV e o acordo depois de desconectá-lo, eu termino com uma tela preta porque a resolução errada é atribuída. Então, mesmo problema que você, preciso definir a resolução do terminal virtual TTY1 que posso alcançar com Ctrl-alt-F1, mas o xrandr parece não funcionar. Examinei as páginas dos resultados de pesquisa do Google antes de encontrar a solução, então pensei em compartilhar.

O principal é que o xrandr aparentemente só funciona na tela atualmente focada. Portanto, você deve encadear um comando de suspensão antes do comando xrandr para dar tempo para voltar ao servidor X com Ctlr-alt-F7 para que o comando seja executado lá. Caso contrário, você receberá um erro como xrandr: Configure crtc 0 failed.

  1. Abra o terminal virtual com Ctrl-alt-F1 e faça o login

Para obter os nomes das telas conectadas (e assumindo que o servidor X esteja em execução :0):

  1. $xrandr -d :0

Para modificar as configurações de exibição:

  1. $sleep 5; xrandr --output LVDS1 --auto -d :0

Substitua LVDS1 pela saída que você deseja modificar e --auto por quaisquer parâmetros do xrandr que você deseja usar.

  1. Alterne para o servidor X com Ctrl-alt-F7 antes que o atraso de sono definido no comando acima termine.

Tem que haver uma maneira melhor de fazer isso. Mas funciona.

Fonte original da solução: http://www.lgqyc.com/server-14-04-3-lts-display-orientation/

Confira este comentário para uma possível melhoria na minha solução (não me testei).

Gabriel Morin
fonte
Esta foi a única resposta que funcionou para mim. Por coincidência louca, um tópico de 3 anos teve a única resposta de trabalho enviada 11 horas atrás :). EDIT: oh snap, exatamente 3 anos atrás. Estranho ...
Adam Plocher
Uau. Isso me deixa louco há muito tempo. Sua resposta parece ridícula (dorme? Sério?), Mas funciona, então obrigada!
Tyler
6
Acontece que, há uma maneira um pouco melhor de fazer isso: chvt 7; xrandr --output LVDS1 --auto -d :0. O chvt 7 muda para o VT7 para você, para que você não precise dormir / Ctrl-Alt-F7. Pode ser necessário um sleep 5entre as chamadas chvte xrandr, mas mesmo assim ele salva as teclas manuais.
Tyler
Uma opção seria criar .xsessionrcexecutável em seu diretório pessoal e incluir o comando xrandr --autopara forçar a reconfiguração automática de todas as exibições sempre que você efetuar login.
Mikko Rantalainen
16

O comando xrandr -s 0deve redefinir seus displays no terminal. Mais informações podem ser encontradas no seguinte site ou man xrandrno terminal.

https://linuxacademy.com/blog/linux/solution-resetting-your-screen-resolution-with-xrandr/

Miguel
fonte
Bem-vindo ao Ask Ubuntu! Embora isso responda à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
guntbert
4
Sim, isso funciona. As outras respostas são muito inchadas, complicadas ou não eficientes. Também pode ser de algum valor notar que, se você tiver uma tela preta (e não conseguir ver nada), poderá abrir o terminal com teclas de atalho e digitar às cegas "xrandr -s 0". Isso é o que eu fiz :)
kodeart
Observe que nas configurações de dois monitores, esse comando pode desativar o segundo monitor, em vez de definir os dois monitores com a resolução padrão.
Darien
No meu sistema, o comando desativa os dois monitores externos, mas também redefine a configuração padrão - o que corrige a detecção do VGA DCC que é interrompida de tempos em tempos. Depois disso, só preciso reativar as telas e reposicioná-las usando a ferramenta Displays. Não é o ideal, mas é muito viável e melhor do que minha solução anterior, que era suspender e ativar o computador algumas vezes até que ela redefina a porta VGA.
Guss
4

você já tentou (como sth)

DISPLAY=:0 xrandr --output LVDS1 --auto

de um diferente tty(por exemplo, tty1),

com o qual você pode acessar Ctrl Alt F1e retornar ao (padrão gráfico) tty7 Ctrl Alt F7?

noz sobre natty
fonte
1
Isso está me dando xrandr: Configure crtc 1 failedao tentar - saída HDMI1 - --off. --auto não diz nada, até eu desligá-lo manualmente. Então --auto lança o mesmo erro
Martin Melka 03/03
precisaria investigar mais de perto; sou positivo que iria trabalhar, eventualmente ...
noz sobre natty
2

Uma coisa que eu ainda não mencionado, mas o que pode ser crítico: se você estivesse usando um Thinkpad laptop, a solução seria simples: Fn+ F7. Se você estiver usando um laptop de outro fabricante, provavelmente haverá outra tecla do tipo Fn que alternará entre as saídas da tela / tela (por exemplo, beamer, monitor externo, tela interna; espelho, on / off, e similares) no nível do BIOS (eu assumiria - Editar : consulte Como funcionam as teclas Fn? para obter mais detalhes sobre isso ).

Portanto, não seria necessário redefinir nada no Linux, por assim dizer.

noz sobre natty
fonte
1
Eu tenho um IdeaPad, mas as teclas Fn + não funcionam (o único que faz é sono)
Martin Melka
Meu palpite é: continue com este! Eu não tenho tempo para investigar me completamente atualmente, embora haja uma boa chance de que eu poderia fazer alguma otimização neste campo no meu IBM Thinkpad X41, mas -para o que é worth- maioria das teclas Fn fazer trabalho no meu sistema (tanto no meu laptop, bem como no meu teclado externo "thinkvantage" sk-8855): no ubuntu software center (ou synaptic) à primeira vista superficial, pelo menos essa coisa tp-smapi-dkms 0.41-1 está instalada. Então, você pode tentar instalá-lo, pesquisando nele e / ou alternativas similares que farão com que suas teclas Fn finalmente ganhem vida!
sobre natty
também verificar tpctl.sourceforge.net
noz sobre natty
Difícil de acreditar, mas era isso. O comutador exibe - Fn+ F8no Dell Latitude. Depois de removê-lo da estação de acoplamento, ele às vezes não ligava a tela embutida. (Eu uso apenas a tela VGA externa com a estação de acoplamento.) Tentar mudar a tela parecia um absurdo, mas ligou a tela embutida.
Ferdinand Prantl