文脈上、私のファイル/ディレクトリ構造と内容はほとんどLuke Smithのドットファイル(おにぎり)。また、コードブロックの「...」行はコードではなく、ファイルから省略された行を表します。
私のもの~/.zprofile
:
#!/bin/zsh
...
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"
これは私のエイリアスファイル~/.zshrc
ソース(~/.config/shell/aliasrc
)にあります。
#!/bin/bash
...
esx() { exec startx "$XINITRC" "$@" -- -keeptty >~/xorg.log 2>&1; }
sx() { startx "$XINITRC" "$@" -- -keeptty >~/xorg.log 2>&1; }
(関数コマンドの「--」部分は、次の目的で使用されます。)記録)
次のようになります~/.config/x11/xinitrc
。
#!/bin/sh
sysresources="/etc/X11/xinit/.Xresources"
userXprofile="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" # empty file atm
[ -f "$sysresources" ] && xrdb -merge "$sysresources"
xrdb -merge ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$!
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
if [ -f "$userXprofile" ]; then
. "$userXprofile"
else
. "$HOME/.xprofile"
fi
[ -n "$xrdbpid" ] && wait "$xrdbpid"
case $1 in
awesome|awesomeWM) exec awesome;;
xfce|xfce4) exec startxfce4;;
openbox) exec openbox;;
esac
デフォルトでは、目標は特定のセッションで使用するウィンドウマネージャまたはデスクトップ環境の名前を実行または使用することですesx
。sx
うまくいきesx
ますが、sx
$XINITRC値を~/.config/x11/xinitrc
私が選択したWM / DEの代わりに$ 1に渡します。sx
最初のパラメータを除いて「修正」を試みました。
sx() { startx "$XINITRC" "${@:2}" -- -keeptty >~/xorg.log 2>&1; }
しかし、xinitrcはまだ$ 1を$ XINITRCとして持っています。一時修正で~/.config/x11/xinitrc
「$ XINITRC」の場合は、最初の位置パラメータを削除します。
[ "$1" = "$XINITRC" ] && shift
case $1 in
...
sx
しかし、私はこの解決策が嫌いで、なぜそれがめちゃくちゃなのか知りたいのです。なぜこれが起こるのか知っている人がいますか?