Como posso tornar a personalização do xrandr permanente?

65

Eu costumava editar o script de inicialização do GDM (/ etc / gdm / Init / Default) para alterar permanentemente minha resolução de exibição.

Como posso fazer isso com o LigthDM no Ubuntu Oneiric?

Edocastillo
fonte
adicione ao .xprofile na sua pasta pessoal. Veja askubuntu.com/questions/63863/... para um guia básico para definir a resolução e adicionando .xprofile
duffydack

Respostas:

21

Eu acho que você pode adicionar os modos de exibição para /etc/X11/xorg.conf.

Se você não tiver um xorg.conf, poderá usar o seguinte como base. É necessário substituir as entradas com os nomes Modeline, Drivere Modescom as entradas corretas para o seu sistema. Dependendo do seu hardware, você pode precisar de entradas adicionais, por exemplo, se o seu sistema tiver mais de um chip gráfico.

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

Se você não souber o nome do driver de vídeo que seu sistema está usando, poderá receber o nome da seguinte forma (se você tiver um chip gráfico intel, o nome do driver será apenas "intel"):

lshw -class display | grep "driver"

Os modelos podem ser gerados com cvt:

cvt <h-resolution> <v-resolution> [refresh]
Nimmermehr
fonte
Eu tentei isso e não inicializou por algum motivo. Usei a modelagem gerada a partir do cvtcomando e o driver da outra (e tentei vesatambém), mas ele simplesmente ficou sem mensagens de erro. A solução de Jon Roberts funcionou perfeitamente para mim e é independente de coisas como o driver da placa de vídeo que você mencionou aqui que pode facilmente dar errado para iniciantes, portanto, estou votando na resposta dele.
Mike
11
Isso não parece ajudar em coisas como --rotate.
Jherico
2
Esta resposta está desatualizada. Veja resposta de John Roberts
con-f-use
+1 Perfeito! Usando o GDM com o Gnome 3.16, o GDm reconheceu os monitores de 1080p. Obrigado!
Eduncan911
No meu computador, lshwsaída i915, no entanto, o driver correto é intel.
user202729 17/09
63

Modifique /etc/lightdm/lightdm.confpara adicionar as seguintes opções:

display-setup-script> chama seu mycustomloginvideo.sh antes que a tela de login apareça

session-setup-script> chama seu mycustomdesktopvideo.sh antes que a sessão da área de trabalho do usuário seja iniciada

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

Você pode ter a ferramenta gui "arandr" para gerar o script sh acima, escolhendo parâmetros da configuração X da sua sessão atual.

Verifique se o seu shell script é executável:

chmod a+x /usr/share/mycustom*video.sh

e você pode testar se ele funciona (ou seja, se você não possui erros de digitação ou configuração no seu comando xrandr) apenas executando-o em um terminal:

/usr/share/mycustomdesktopvideo.sh

Se o script de login não funcionar por qualquer motivo, sua máquina poderá não concluir o processo de inicialização na tela de login. Se o script da área de trabalho falhar, você poderá não obter uma área de trabalho após efetuar login. Se estiver configurando um monitor externo, esses scripts falharão quando você o desconectar, e a sessão X não será iniciada.

Jon Roberts
fonte
Para o Mint 13 XFCE usando mdm, edite / etc / mdm / Init / Default. Chame seu script antes da "saída 0"
StackUnder
O Evnn funciona no Fedora ... só precisava do display-setup-scriptscript, pois o Xfce já o tinha definido pelas configurações de exibição, então session-setup-scriptacabou de me dar um fora na tela de login.
Wilf
10

Alguém postou outra solução alternativa, embora eu deva dizer que não funcionou para mim. Provavelmente poderia funcionar para você. No meu caso, ele quebra a unidade e só posso mover o cursor do mouse. O painel superior do indicador de aplicativo parece vazio, mas depois de desconectar meu LCD, eu pude excluir as linhas adicionadas e tudo voltou ao normal.

edite o arquivo /usr/sbin/lightdm-session

Aqui está como a primeira parte desse arquivo se parece agora:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode CRT1 1368x768_60.00
xrandr --output CRT1 --mode 1368x768_60.00

# Load resources

Observe que as configurações do Xrandr devem ser alteradas para corresponder às suas.

Meconio
fonte
Esta solução funcionou muito bem para o lubuntu 17.x em uma máquina antiga. Isso afeta apenas a sessão, portanto a tela de login greeter não é exibida com a resolução desejada.
laconbass
6

Estou tentando resolver um problema semelhante há um tempo e encontrei uma solução que funciona para mim, então espero que ajude ...

Eu tenho um antigo aspirador AOA110 que eu quebrei a tela muitas vezes e depois de comprar um laptop novo, decidi tentar transformá-lo em um HTPC, mas a tela externa que eu tenho não é reconhecida pelo X, então eu tive que 'ajustá-lo' várias vezes para que ele funcione na resolução correta.

Aqui está o que eu fiz:

Depois de usar este http://ubuntuforums.org/showthread.php?t=1112186 tutorial até a etapa 5, consegui encontrar uma resolução aceitável e funcional no xrandr, mas isso não estava funcionando na tela de login do LightDM.

Não siga as etapas para torná-lo persistente no exemplo acima, mas pode ser que seja a maneira correta de fazê-lo na 11.10. Eu encontrei este post no https://wiki.archlinux.org/index.php/Xorg do ArchWiki, que eu adaptei às minhas necessidades.

Primeiro crie um arquivo aqui: /etc/X11/xorg.conf.d/10-monitor.conf

Em seguida, adicione os detalhes X apropriados para sua exibição, aqui é a aparência da minha:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

Os bits importantes a serem adicionados estão no apropriado, Section "Monitor"incluindo o apropriado Modelineque você encontrou ao usar gtf 1440 900 60.00e, em seguida, no correspondente, Section "Screen"incluindo o correto Modes.

Você notará que o que eu estava tentando fazer não era apenas definir a conexão VGA1 para uma resolução adequada, mas também instruí-lo a não usar minha saída LVDS1. Obviamente, você precisará ajustar o seu adequadamente para corresponder ao número certo de saídas e às seções Dispositivo, Tela e Vídeo corretas para sua configuração.

Desculpem a postagem épica, estou mexendo nos arquivos xorg.conf há algum tempo com a tela Hannspree que estou usando e as configurações antigas do xorg.conf que usei antes da versão 11.10 não funcionam mais corretamente. única solução que eu achei que funciona.

Boa sorte!

infração de fé
fonte
O uso xrandr -qdeve fornecer as informações corretas sobre qual monitor está sendo usado e os possíveis modos.
Fé #reflexo #
Um arquivo de configuração básico pode ser gerado executando Xorg :1 -configure, o que cria um novo servidor X e gera um arquivo de configuração - ele pode ser copiado de /root/xorg.conf.newpara /etc/X11/xorg.conf. Eu encontrei uma maneira melhor foi a resposta acima
Wilf
5

Eu tive um problema semelhante com o meu laptop, como acima, e queria adicionar algo à conversa. Se você não se importa com a resolução de login (eu não), mas deseja que a área de trabalho real seja a resolução correta, você pode adicionar as informações do monitor ao LightDM, mas não ativar a resolução completa até fazer o login.

Acabei de adicionar o seguinte script para o meu monitor em um arquivo: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

então eu chamo /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

Depois de fazer o login, posso configurar o meu monitor em Displays e ele funciona, mesmo depois de me registrar novamente (costumava me causar um grande erro feio).

Karl
fonte
Isso funcionou como desejado, mas tive que reiniciar não re-login ...
CrandellWS
4

Como um aprimoramento para a resposta de Jon Roberts, deixe-me especificar que o arandr não inclui em sua geração de script sh todos os parâmetros que funcionam na sessão atual. Monitor primário (caso esteja usando uma configuração de monitor duplo), a taxa de atualização e as configurações de gama para cada monitor não estão incluídas, por exemplo. Meu script de sessão é assim:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

Eu adicionei manualmente as opções --rate e --primary na primeira linha e, em seguida, adicionei manualmente uma segunda linha com a correção gama, porque aparentemente as configurações de gama xrandr são perdidas sempre que você muda o monitor para primário .

Não sei se esse comportamento específico com as configurações gama ao tornar um monitor primário é intencional ou é um bug.

Além disso, o script do shell da sessão não é chamado pelo lightdm, mas como um aplicativo de inicialização, porque parece que o lightdm chama o script antes que as coisas estejam prontas para o xrandr e que coisas estranhas aconteçam.

Hermes
fonte
4

Eu tive o problema de querer uma exibição estendida na minha nova caixa LXDE (não um clone duplo), encontrei o comando correto, mas não consegui torná-lo permanente.

xrandr --output VGA-0 --right-of DVI-0

Os métodos acima pareciam muito difíceis / não eram a maneira correta de fazer isso.

Acabei encontrando isso: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

Isso funcionou, mas eu usei o gedit:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

Em seguida, adicione a linha no final com um símbolo @ no início:

@xrandr --output VGA-0 --right-of DVI-0

Espero que ajude e obrigado a sudo-juice.

PS Observe o duplo -no comando xrandr --(não apareceu muito claramente na minha tela).

abisdad
fonte
2

Crie um novo documento e nomeie-o, por exemplo, /home/yourusername/yourscriptname.sh digite

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

e salve-o em sua pasta pessoal (isso define a resolução para 1600x900)

Abra Aplicativos de inicialização (ou execute gnome-session-properties) e clique em "ADICIONAR". Dê um nome e digite na linha de comando:

bash /home/yourusername/yourscriptname.sh

Salve-o e agora o script será executado agora a cada login, portanto, você precisará fazer logout primeiro para que ele entre em vigor. Executar o comando (por exemplo bash /home/yourusername/yourscriptname.sh) em um terminal também seria uma boa idéia para verificar se o script funciona.

Nikhil
fonte
Isso foi editado (em vez de excluído) pelo OP desta resposta, pois foi postado aqui em vez de aqui - restaurei a formatação original, pois isso pode ser útil, pois deve restaurar a configuração do xrandr no login - o conteúdo do script bash deve provavelmente será substituído pelos comandos xrandr usados ​​para obter a configuração correta.
Wilf
No meu monitor de monitor duplo, o EDID do meu HDMI-0 está sendo lido, mas o EDID do meu DVI-0 não está sendo lido. Apontar para um script de configuração armazenado em /usr/binnão funcionou, mas a adição desse script aos meus aplicativos de inicialização gnome-session-propertiesfoi bem-sucedida!
noobninja
1

Com base nas respostas acima, eu fiz alguns testes e encontrei um método útil que funciona para mim; então, criei um script simples para automatizá-lo com minhas instalações automáticas. Mas isso funcionará para outros casos.

Crie um scriptinstallxrandrfixed.sh Adicione estas linhas:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

ele criará os scripts e os arquivos para exibição e sessão do lightdm. não se esqueça de dar permissão para executar

chmod + x scriptinstallxrandrfixed.sh

E executar

./scriptinstallxrandrfixed.sh (você deve ser colocado no mesmo diretório em que possui o arquivo.)

se não estiver no mesmo diretório: /path/to/script/scriptinstallxrandrfixed.sh

Modifique-o de acordo com as suas necessidades. Atenciosamente. Pablo.

pablodav
fonte