Iniciando o script para definir a configuração do monitor

4

Bom dia, estou tentando executar um pequeno script na inicialização que escrevi para configurar minha área de trabalho se a saída VGA1 estiver conectada (o que é). Executando o BunsenLabs-Hydrogen (baseado no Debian).

Script:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          resVGA1
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6
# Short-Description: Setup xrandr with VGA1
# Description:       Setup Multi-screen resolution with VGA1 connected
### END INIT INFO

if xrandr | grep "VGA1 connected"; then
    xrandr -s 1366x768                     #As it doesn't default to this with VGA1 connected
    xrandr --auto                          #To populate the second screen
    xrandr --output VGA1 --right-of LVDS1  #Right of VGA1, not duplicate
fi

Tornei o script executável e funciona quando chamado, depois o coloquei em /etc/init.d/ e executei:

update-rc.d resVGA1 defaults

A saída de "ls -l /etc/rc?.d/ resVGA " é:

lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc0.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc1.d/K01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc2.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc3.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc4.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc5.d/S01resVGA1 -> ../init.d/resVGA1
lrwxrwxrwx 1 root root 17 Dec 19 12:33 /etc/rc6.d/K01resVGA1 -> ../init.d/resVGA1 

Então, para mim, isso deve funcionar na inicialização, mas não funciona - verifiquei / var / log / syslog e encontrei os seguintes relatórios:

Dec 19 12:33:46 DankPad resVGA1[553]: Can't open display
Dec 19 12:33:46 DankPad kernel: [    0.244129] ACPI: bus type PNP unregistered
Dec 19 12:33:46 DankPad kernel: [    0.250523] pci 0000:00:1c.0: PCI bridge to [bus 02]
Dec 19 12:33:46 DankPad systemd[1]: Started LSB: Setup xrandr with VGA1.
Dec 19 12:33:46 DankPad kernel: [    0.250541] pci 0000:00:1c.1: PCI bridge to [bus 03]
Dec 19 12:33:46 DankPad kernel: [    0.250548] pci 0000:00:1c.1:   bridge window [mem 0xf2400000-0xf24fffff]
Dec 19 12:33:46 DankPad kernel: [    0.250560] pci 0000:00:1c.3: PCI bridge to [bus 05-0c]

Estou fazendo algo errado ou simplesmente entendendo mal o que estou tentando fazer?

Qualquer ajuda seria apreciada.

    
por BodneyC 19.12.2016 / 14:08

1 resposta

3

Você está conectado aos scripts de inicialização do sistema, que não têm uma sessão X11 disponível para eles. É por isso que você está recebendo o erro "Não é possível abrir a exibição". (Deixarei de lado que você está escrevendo um script init.d em um sistema systemd, em vez de uma unidade systemd. E que seu script init falha em realmente seguir a API, por exemplo, ele não verifica "start" ou "pare").

Em vez disso, você precisa se conectar à inicialização do X11. Você tem cinco opções (pelo menos - continuar pensando em mais enquanto escreve isso):

  1. Em todo o sistema, coloque um script em /etc/X11/Xsession.d/ . Este script é originado na configuração da sessão X, basicamente tudo o que você precisa é o bloco if . Esta seria a minha escolha.

  2. Você deve ser capaz de definir a configuração padrão para o monitor, colocando coisas em /etc/X11/xorg.conf.d/ (que você pode precisar para mkdir primeiro). Embora você precise aprender a sintaxe de configuração do Xorg.

  3. Para um usuário, coloque-o no seu ~/.Xsession .

  4. Para um usuário, coloque-o nos scripts de inicialização do ambiente de área de trabalho (a maioria tem isso). Ou talvez o seu DE possa realmente se lembrar da configuração do monitor e aplicá-lo automaticamente.

  5. Em todo o sistema (ou para um usuário), coloque-o na sessão systemd usuário . Isso envolveria colocar um arquivo de unidade em /etc/system.d/user ou ~/.config/systemd/user/ . Muito flexível, mas requer sistema de aprendizagem.

por 19.12.2016 / 14:33