起動後に仮想コンソールへの自動ログインが機能しています。ここで、startx
と入力する代わりに、Xサーバーを自動的に起動させます。これは以前は機能していましたが、systemdに切り替えた後、Xは起動しませんでした。 wikiページ によると、私は~/.bash_profile
を編集しました:
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
しかし、Xは起動しません(startx
を手動で実行すると)。
ウィキはまた次のように述べています:
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
ファイルがなく、以前は必要ありませんでした。大切ですか?
XDG_VTNRが何を意味するのかわかりませんが、このスクリプトは機能します。次の行を_~/.bashrc
_に追加します
(私はtty3でauto-Xを行います)
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty3 ]]; then exec startx; fi
「機能しない」も定義します。startx
を手動で起動すると機能しますか?そうでない場合は、最初に〜/ .xinitrcを調べてください。
.bash_profile
では、(getty -a
で/etc/inittab
を使用して自動ログインした後)tty
を使用しているttyを確認できます(実際にXを使用している場合は、 /dev/pts/1
-p
チェックは以下のとおりです)。次に、この情報を格納する変数を設定します。後で、それを使用してxinit
でXを起動します。
~/.xinitrc
と~/.Xresources
も設定する必要があります。 ~/.xinitrc
の良いスタートはxrdb ~/.Xresources
です-これについては、manページを確認してください。いくつかの例 here を見つけることができます。
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