Como posso executar um script iniciado antes da minha tela de login?


17

Eu estava calibrando minha tela de toque e vi que a melhor ferramenta era o xinput_calibrator. Então eu usei. Ele tem duas opções (uma das quais não funcionou), então estou aqui pela segunda. Ele diz que eu deveria executar este comando "em um script que começa com sua sessão X":

xinput set-int-prop "3M 3M USB Touchscreen - EX II" "Evdev Axis Calibration" 32 14410 2146 14574 2115

Então, eu tentei ~/.xinitrc, ~/.xsessione ~/.xsessionrc, todos os quais não existia. Então, eu os criei e o conteúdo exato era esse comando. Os dois primeiros arquivos fizeram meus logins falharem (após o login, volto à tela de login).

Com o último arquivo, a calibração foi funcional, mas somente após o login ...

Eu preciso que esse comando seja executado antes que a caixa de diálogo de login apareça. Pensei em adicionar este comando ao final /etc/X11/xinit/xinitrcsem resultado (nada mudou). Além disso, tentei adicioná-lo ao final de /etc/X11/Xsession.d/40x11-common_xsessionrc(depois de inspecionar alguns dos arquivos), mas o resultado foi exatamente o mesmo que adicioná-lo ~/.xsessionrc.

Como posso executar este comando antes que a tela de login apareça (é antes do gerenciador de janelas iniciar ou antes do início da sessão X)?

(Estou executando o Kubuntu com o gerenciador de janelas padrão, se isso importa)

ATUALIZAÇÃO Como eu estou usando o Kubuntu, meu gerenciador de exibição é o kdm. Como a resposta aceita sugere, editei o arquivo /etc/kde4/kdm/Xsetupe, como mencionado aqui , adicionei o comando antes do comando que está lá por padrão. E funciona como um encanto :)


4
Qual gerenciador de login você está usando? Para o gdm3, você provavelmente pode usar /etc/gdm3/Init/displayor /etc/gdm3/Init/Default- manpages.debian.net/cgi-bin/…
Ulrich Dangel

Ei, coisas boas. Publiquei uma pergunta aqui [ unix.stackexchange.com/questions/172007/…, que foi marcada como uma possível duplicata para estas perguntas e respostas. No entanto, pessoal, não estou convencido de que seja um clone. Pl ver a minha pergunta também e me ajudar :)
Kaiwan

Respostas:


13

Todos os arquivos que você tentou mudar são lidos depois de iniciar sessão Além disso,. ~/.xinitrcE ~/.xsessionsão o conjunto completo de comandos que são executados em uma sessão; ~/.xinitrcé lido se você executar xinitou startxem um prompt do modo de texto e ~/.xsessioné lido se você executar uma "sessão personalizada" (o nome pode variar) em um prompt de login gráfico.

Você precisa configurar seu gerenciador de exibição , o programa que mostra o prompt de login. Para o kdm, o gerenciador de exibição do KDE, adicione seu comando /etc/kde4/kdm/Xsetup(ou /etc/kde3/kdm/Xsetuppara versões mais antigas) (esse é o caminho no Debian, não verifiquei se o Kubuntu usa o mesmo caminho).

Para gdm (o gerenciador de exibição Gnome), adicione seu comando para /etc/gdm/Init/Default. Para o xdm (o gerenciador de exibição tradicional do X), adicione seu comando a /etc/X11/xdm/Xsetup.


Obrigada pelo esclarecimento! Eu tentei o que você sugeriu sem sucesso. Eu localizei o Xsetuparquivo (no mesmo caminho que você mencionou) e adicionei o comando. A calibração não funcionou, mas verifiquei se ela foi executada, adicionando echo "w" > /test.loge verificando /test.logse existia após a reinicialização. É possível que xinputexija "contexto" especial ou algo assim ...?
Jadkik94

Na verdade, desconsidere o último comentário. Redirecionei o xinputcomando para esse arquivo e parece que adicionei um espaço ao nome do dispositivo que fez a calibração não funcionar. Você estava 100% correto :) Obrigado novamente.
jadkik94

5
E só para completar a resposta - para descobrir o que é o seu gerenciador de exibição (para não ser confundido com um ambiente desktop) uso: cat /etc/X11/default-display-manager.
Nux

Que tal xserverrc? E os que estão dentro /etc/X11/xinit/xserverrc?
precisa saber é o seguinte

11
@CMCDragonkai Se houver um gerenciador de exibição, ele startxnão será usado. Os scripts de inicialização do gerenciador de exibição não seriam relevantes aqui, pois são executados antes que o usuário efetue login.
Gilles 'SO- stop be evil'

4

Sugiro que você crie seu próprio arquivo de configuração, um exemplo simples:

/usr/lib/X11/xorg.conf.d/20-calibration.conf

Conteúdo do arquivo:

Section "InputClass"
         Identifier "Calibration"
         MatchProduct "3M 3M USB Touchscreen - EX II"
         Option "Calibration" "14410 2146 14574 2115"
EndSection

Isso deve fazer o truque.


-1

Você pode tentar o /etc/rc.local?

.


4
Eu estava preocupado que o script fosse executado antes mesmo de o X iniciar (como eu o entendi), o que tornaria esse script inútil ... Quando isso é executado?
Jadkik94

3
@ jadkik94 você está certo, isso não funcionará, pois o rc.local não tem acesso à sessão x.
Ulrich Dangel

-1

Quando você possui o OpenSUSE, pode copiar seu script para /etc/init.d e executar o nome do script insserv. O insserv ativa um script: http://man-wiki.net/index.php/8:insserv .


2
Isso provavelmente não vai funcionar como xinputnecessidades provavelmente X que não está disponível / inicializado nos scripts de inicialização
Ulrich Dangel
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.