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?


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]

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.


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.


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!


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).


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.


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).


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.