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.
- Que faire après l'annulation "rm -rf / usr /" sur Arch?
- Où sont toutes les possibilités de stocker un file journal
- Comment puis-je savoir quelle version d'OpenGL ma machine supporte sur Arch Linux?
- Comment activer rsync dans libcurl?
- erreur de assembly: système de files cifs non pris en charge par le système
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?
~/.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