Démarrer X après la connection automatique

J'ai une connection automatique de travail à une console virtuelle après le démarrage. Maintenant, je veux que le server X démarre automatiquement, au lieu de taper startx . Cela a fonctionné avant, mais après le passage à systemd, X ne se lancerait pas lui-même. D'après la page wiki , j'ai édité mon ~/.bash_profile :

 # # ~/.bash_profile # [[ -f ~/.bashrc ]] && . ~/.bashrc [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx 

Mais X ne démarre pas (l'exécution de startx fonctionne manuellement).

Le wiki note également:

X doit toujours être exécuté sur le même tty où la connection s'est produite, pour préserver la session logind. Ceci est géré par le file / etc / X11 / xinit / xserverrc par défaut.

Mais je ne suis pas sûr de savoir comment gérer cela. Mon /etc/X11/xinit/xserverrc :

 #!/bin/sh if [ -z "$XDG_VTNR" ]; then exec /usr/bin/X -nolistn tcp "$@" else exec /usr/bin/X -nolistn tcp "$@" vt$XDG_VTNR fi 

Qu'est-ce que je fais mal?

METTRE À JOUR

~/.xinitrc :

 #!/bin/sh # # ~/.xinitrc # # Executed by startx (run your window manager from here) # Keyboard layout setxkbmap -layout de nodeadkeys # Set the cursor xsetroot -cursor_name left_ptr # Autostart tint2 & #Taskbar /usr/lib/notification-daemon-1.0/notification-daemon & #Notifications numlockx & #activate numlock case "$1" in openbox) exec ck-launch-session openbox-session ;; xmonad) exec ck-launch-session xmonad ;; *) #default exec ck-launch-session xmonad ;; esac 

Je n'ai pas de file ~/.Xresources et je ~/.Xresources avais pas besoin auparavant. Est-ce important?

Je ne suis pas sûr de ce que XDG_VTNR implique, mais ce script fonctionne pour moi, mettez la ligne à ~/.bashrc

(Je fais auto-X sur tty3)

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty3 ]]; then exec startx; fi

Définissez également "ne fonctionne pas", cela fonctionne-t-il si vous lancez startx manuellement? Sinon, examinez d'abord votre ~ / .xinitrc.

Dans .bash_profile , vous pouvez find (après autologin avec getty -a dans /etc/inittab ) quel tty vous êtes avec tty (si vous êtes en fait dans X, il pourrait ressembler à ceci: /dev/pts/1 – c'est ce que le chèque p est à propos ci-dessous). Ensuite, définissez une variable pour stocker cette information; plus tard, utilisez-le pour lancer X avec xinit .

Vous devriez également configurer ~/.xinitrc et ~/.Xresources ; un bon début de ~/.xinitrc est xrdb ~/.Xresources – vérifiez les pages de manuel pour tout cela. Vous pouvez find quelques exemples ici .

 CURRENT_VT=`tty` if [[ ${CURRENT_VT[6]} == "p" ]]; then export VT="X" else export VT=${CURRENT_VT: -1:1} fi # ... [cut] initialize everything else ... # OK, done; let's start applications and X depending on where we are case $VT in (1) emacs ;; (5) wait_for_internet irssi --connect=open.ircnet.net ;; (6) xinit ;; (X) ... do X stuff ... ;; esac 

MODIFIER

Par erreur, j'ai posté le code zsh ci-dessus – dans la syntaxe bash, il ressemblerait un peu à ceci (avec la réserve qu'il est beaucoup less testé que le code zsh, qui fonctionne tous les jours sur mon ordinateur). Le rest est inchangé.

 CURRENT_VT=`tty` if [[ ${CURRENT_VT:5:1} = "p" ]]; then export VT="X"; else export VT=${CURRENT_VT:${#CURRENT_VT} - 1}; fi