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

60

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

Como posso fazer isso com o LigthDM no Ubuntu Oneiric?

    
por Edocastillo 30.09.2011 / 07:25

9 respostas

20

Acho que você pode adicionar os modos de exibição a /etc/X11/xorg.conf .

Se você não tiver um xorg.conf , poderá usar o seguinte como base. Você precisa substituir as entradas com os nomes Modeline , Driver e Modes pelas 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 sabe o nome do driver de vídeo que seu sistema está usando, então você pode obter o nome da seguinte forma (se você tiver um chip gráfico Intel, o nome do driver é apenas "intel"):

lshw -class display | grep "driver"

As modelines podem ser geradas com cvt :

cvt <h-resolution> <v-resolution> [refresh]
    
por Nimmermehr 01.10.2011 / 10:59
62

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

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

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

[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 "arandr" gui para gerar o script sh acima, escolhendo parâmetros da configuração do X da sua sessão atual.

Certifique-se de que seu script de shell é 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 erros de configuração no comando xrandr) apenas executando-o em um terminal:

/usr/share/mycustomdesktopvideo.sh

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

    
por Jon Roberts 20.10.2011 / 00:17
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, quebra a unidade e só posso mover o cursor do mouse. O painel superior do indicador do aplicativo parece vazio, mas depois de desconectar meu LCD, consegui excluir as linhas adicionadas e tudo voltou ao normal.

edite o arquivo /usr/sbin/lightdm-session

Veja 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 corresponderem às suas.

    
por Meconio 21.11.2011 / 16:45
5

Eu tenho tentado resolver um problema semelhante por um tempo agora e encontrei uma solução que funciona para mim, então espero que ajude ...

Eu tenho um velho aspire um AOA110 que eu quebrei a tela muitas vezes e depois de comprar um novo laptop decidiu que eu iria tentar transformá-lo em um HTPC, mas o monitor externo que eu tenho não é reconhecido por X, então eu teve que 'tweak' várias vezes para fazê-lo funcionar na resolução correta.

Aqui está o que eu fiz:

Depois de usar o tutorial link até a etapa 5, consegui encontrar uma solução aceitável e funcional em 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, como isso pode funcionar, mas acho que essa é a maneira correta de fazer isso em 11.10. Eu encontrei este post no link 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 a sua exibição aqui é como o meu parecia:

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

As partes importantes a serem adicionadas estão sob o Section "Monitor" apropriado e incluem o Modeline apropriado que você encontrou usando gtf 1440 900 60.00 e, em seguida, sob o Section "Screen" correspondente, incluindo o Modes correto.

Você notará que o que eu estava tentando fazer não era apenas configurar a conexão VGA1 para uma resolução adequada, mas também dizer a ela para não usar minha saída LVDS1. Obviamente, você precisará ajustar o seu apropriadamente para corresponder ao número correto de saídas e às seções certas de Dispositivo, Tela e Exibição para sua configuração.

Desculpe pelo post épico, eu tenho modificado arquivos xorg.conf há algum tempo com a tela Hannspree que eu tenho usado e as antigas configurações do xorg.conf que eu usei antes do 11.10 simplesmente não funcionam mais esta é a única solução que encontrei que funciona.

Boa sorte!

    
por faithinfriction 07.12.2011 / 18:02
5

Eu tive um problema parecido com o meu laptop, e queria adicionar algo à conversa. Se você não se preocupa com a resolução de login (não sei), mas quer que a área de trabalho real seja a resolução correta, você pode adicionar as informações do seu monitor ao LightDM, mas não ativar a resolução completa até efetuar 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-o em /etc/lightdm/lightdm.conf

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

Depois que eu faço o login, posso configurar meu monitor no Displays e ele funciona, mesmo depois de eu fazer um novo registro (usado para me dar um grande e feio erro).

    
por Karl 03.05.2012 / 20:07
4

Como um aprimoramento para a resposta de Jon Roberts, deixe-me especificar que arandr não inclui em sua geração de script sh todos os parâmetros trabalhando na sessão atual. Monitor primário (caso você 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 depois adicionei manualmente uma segunda linha com a correção gamma porque aparentemente as configurações .

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

Além disso, o shell script 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.

    
por Hermes 08.05.2012 / 20:52
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 pude torná-lo permanente.

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

Os métodos acima pareciam muito difíceis / não eram o jeito certo de fazê-lo.

Eu finalmente encontrei isto: link

Isso funcionou, mas usei o gedit:

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

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

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

Espero que ajude e agradeça sudo-sumo.

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

    
por abisdad 12.01.2013 / 02:29
2

Crie um novo documento e nomeie-o, por exemplo %código% Digite em

#!/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 os aplicativos de inicialização (ou execute /home/yourusername/yourscriptname.sh ) e clique em "ADD". 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á efetuar o logout primeiro para que ele seja efetivado. Executar o comando (por exemplo, gnome-session-properties ) em um terminal também seria uma boa ideia para verificar se o script funciona.

    
por Nikhil 24.12.2012 / 04:57
1

Com base nas respostas acima, fiz alguns testes e encontrei um método útil que funciona para mim. Depois, criei um script simples para automatizá-lo com minhas instalações automáticas. Mas vai funcionar para qualquer outro caso.

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: https://sobrelinux.info/questions/1154/how-can-i-make-xrandr-customization-permanent"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 lightdm. não se esqueça de dar permissão para executar

% bl0ck_qu0te%

E execute

% bl0ck_qu0te%

Modifique-o para atender às suas necessidades. Atenciosamente. Pablo.

    
por pablodav 03.06.2014 / 22:29