zsh를 사용하여 x를 시작하는 방법은 무엇입니까?

zsh를 사용하여 x를 시작하는 방법은 무엇입니까?

처음 로그인할 때 x를 자동으로 시작 하고 싶습니다 zsh.

추가한 후

if systemctl -q is-active graphical.target && [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
  exec startx
fi 

파일로 ~/.zprofile. 하지만 xinit가 i3를 시작할 때까지 두 번 로그인해야 합니다.

그런데 저는 Arch를 사용합니다

.xinitrc모습

#!/bin/sh
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
        [ -x "$f" ] && . "$f"
    done
    unset f
fi

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
# exec xterm -geometry 80x66+0+0 -name login
xrandr --output DP-3 --same-as LVDS-1 
exec i3

답변1

답변이 늦었지만 동일한 문제를 우연히 발견했으며 OP와 동일한 것으로 의심되는 사용 사례에 대한 빠른 솔루션을 제공하고 싶었습니다. 명확히 하자면 이는 "텍스트 모드"를 사용하여 로그인한 후 즉시 Xorg를 시작하기 위한 것입니다. 따라서 gdm이나 lightdm과 같은 디스플레이 관리자는 없습니다.

당신이 해야 할 일은 끝에 다음 줄을 추가하는 것 뿐입니다 .zshrc.

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

기본적으로 Xorg가 아직 시작되지 않았고 tty1에 있는 경우 Xorg를 실행하는 것뿐입니다(성가신 출력 없이...). 후자는 Xorg가 시작 시 실패하고 일부 구성 파일을 변경해야 하는 경우에 사용됩니다(제 생각에는 매우 유용합니다...).

도움이 되었기를 바랍니다.

참고: Bash에서도 동일한 코드를 사용할 수 있습니다.

답변2

Q의 정신을 유지하기 위해 약간 다른 말로 표현하겠습니다.

쉘 명령을 통해 X를 시작하는 방법은 무엇입니까? 시스템 시작 시 이 작업을 어떻게 수행할 수 있습니까?

나는 귀하의 systemctl과 대부분의 .xinitrc를 무시했습니다.

가장 기본적인 사용자 명령은 입니다 xinit. 정확히 무엇을 하는지 말하기는 어렵습니다. 특별한 의미와 구문을 가지고 있습니다. 질문에 대답하십시오:

xinit fvwmx 서버가 시작되었습니다.

기본적 으로 xinit fvwm -- X :0다음을 의미합니다.

창 관리자를 사용하여 디스플레이 "0"에서 X SERVER "X"를 초기화합니다.fvwm

강력하기 때문에 매우 복잡해야 합니다. X 서버와 창 관리자는 TTY를 소위 DISPLAY로 변환합니다.

only를 선택하면 xinit특별한 xclock 전용 환경이 제공됩니다. (물론 "숨겨진" 기본값은 없습니다. man xinit를 참조하세요. 또한 man startx도 비교해보세요!).

물론 xorg.conf구성이 필요합니다! (GPU 카드, x용 입력 장치)

물론 (최소한) 구성된 창 관리자가 필요합니다! (fvwm, twm,...)

X를 통해 자동으로 시작하려면 배포판에 대한 계획과 협상이 xinit필요합니다 . systemd범위를 벗어나지만 현재로서는 그렇습니다.

"첫 번째 로그인 시 x 시작"은 (더) 정확해야 합니다. 계속 x실행 한다는 의미라면 tty1적어도 그 의미는 이해할 수 있습니다. 특정 쉘(예를 들어)과의 연결이 많이 보이지 않습니다 zsh.

관련 정보