부팅 후 가상 콘솔에 자동으로 로그인할 수 있습니다. 이제 를 입력하는 대신 X 서버가 자동으로 시작되기를 원합니다 startx
. 이전에는 작동했지만 systemd로 전환한 후에는 X가 자체적으로 시작되지 않습니다. ~에 따르면위키 페이지, 나는 내 것을 편집했습니다 ~/.bash_profile
:
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
그러나 X는 시작되지 않습니다( startx
수동 실행이 작동함).
Wikipedia는 또한 다음과 같이 말합니다.
X는 로그인 세션을 보존하기 위해 로그인이 발생한 동일한 tty에서 항상 실행되어야 합니다. 이는 기본 /etc/X11/xinit/xserverrc에 의해 처리됩니다.
하지만 이 문제를 어떻게 처리해야 할지 모르겠습니다. 내 거 /etc/X11/xinit/xserverrc
:
#!/bin/sh
if [ -z "$XDG_VTNR" ]; then
exec /usr/bin/X -nolisten tcp "$@"
else
exec /usr/bin/X -nolisten tcp "$@" vt$XDG_VTNR
fi
내가 뭘 잘못했나요?
고쳐 쓰다
~/.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
파일이 없고 ~/.Xresources
이전에는 필요하지도 않았습니다. 그것은 중요한가?
답변1
XDG_VTNR이 무엇을 의미하는지 잘 모르겠지만 이 스크립트는 저에게 효과적이었습니다.~/.bashrc
(tty3에서 auto-X를 하고 있습니다)
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty3 ]]; then exec startx; fi
또한 "작동하지 않음"을 정의하십시오. 수동으로 시작하면 작동합니까 startx
? 그렇지 않은 경우 ~/.xinitrc를 먼저 확인하십시오.
답변2
에서는 ( in 을 사용하여 자동으로 로그인한 후 ) 어느 tty에 있는지 .bash_profile
알아낼 수 있습니다 (실제로 X에 있었다면 다음과 같이 보일 수 있습니다: - 아래에서 확인된 내용 입니다 ). 그런 다음 나중에 이 정보를 저장하기 위해 변수를 설정하고 이를 사용하여 X를 시작합니다.getty -a
/etc/inittab
tty
/dev/pts/1
p
xinit
또한 설정해야 ~/.xinitrc
하며 ~/.Xresources
시작하기 좋은 곳 은 - 이 모든 것에 대한 매뉴얼 페이지를 확인하는 것 ~/.xinitrc
입니다 . xrdb ~/.Xresources
몇 가지 예를 찾을 수 있습니다.여기.
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
편집하다
실수로 위의 zsh 코드를 게시했습니다. bash 구문에서는 다음과 같이 보입니다(이를 유지하는 것은 제가 매일 컴퓨터에서 실행하는 zsh 코드보다 테스트가 훨씬 적습니다). 나머지는 변경되지 않습니다.
CURRENT_VT=`tty`
if [[ ${CURRENT_VT:5:1} = "p" ]]; then
export VT="X";
else
export VT=${CURRENT_VT:${#CURRENT_VT} - 1};
fi