デフォルトのシナリオは、私のドットファイルを複数のコンピュータで共有し、私のセッション定義も同期されることを望むものです。
私はDPIがかなり異なるさまざまなラップトップとモニタを使用しているので、各セッションに必要なDPIを手動で指定できるようにしたいと思います。
数回の醜いハッキングの後、私は.xsessionがラッパースクリプトを直接呼び出すのではなくラッパースクリプトを実行し、必要なDPIをそのラッパースクリプトに渡すことにしましたs/y/ier/g
。このように:xmonad-start
gnome-session
/usr/share/.xsessions/xmonad-standard.xsession
[Desktop Entry]
Name=Xmonad
Exec=/home/itsamemario/.xmonad/xmonad-start
/usr/share/.xsessions/xmonad-hidpi.xsession
[Desktop Entry]
Name=Xmonad HiDPI
Exec=/home/itsamemario/.xmonad/xmonad-start 192
/home/itsamemario/.xmonad/xmonad-start
#!/bin/sh
xrdb -merge "$HOME/.Xresources"
# For setting DPI by passing an argument from display manager
if [ ! -z "$1" ]; then
TMPFILE=$(mktemp)
echo "! Fonts {{{
Xft.dpi: $1
! }}}" > "$TMPFILE"
xrdb -merge "$TMPFILE"
notify-send "Setting DPI to $1"
rm -f "$TMPFILE"
fi
# Other unimportant stuff here
exec /usr/bin/xmonad
両方のインストールですべてがうまく機能しましたが、3番目のインストールでは、引数が渡されなかったデフォルトセッションを除いて、どのセッションも実行できませんでした。 .xsession-errors で次のエラーが発生し、lightdm に返されました。
/etc/lightdm/Xsession: line 76: /home/itsamemario/.xmonad/xmonad-start 192: No such file or directory
$HOME/.xmonad/xmonad-start
デバッグ中に、通常、インストールまたは設定方法に関連する違いを使用できることも確認しました。.xmonad/xmonad-start
/home/itsamemario/
exec
.xsessionsの行がパラメータを正しく渡せず、セッション変数を拡張できないのはなぜですか$HOME
?
(DPI問題に対するより良い解決策があることを知っていますが、私のラッパースクリプトアプローチは他の要件にも適しています。単純化のためにここではDPIに焦点を当てています。)
答え1
から抜粋https://help.gnome.org/admin/system-admin-guide/stable/session-custom.html.en
Debian で以下を変更してください/etc/X11/Xsession.d/20x11-common_process-args
STARTUP_FULL_PATH=$(/usr/bin/which "$1"|| true)
に変更STARTUP_FULL_PATH=$(/usr/bin/which $1 || true)
STARTUP="$1"
に変更STARTUP=$1