기본 시나리오는 내 도트 파일을 여러 컴퓨터에서 공유하고 내 세션 정의도 동기화되기를 원하는 것입니다.
저는 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
두 설치 모두에서 모든 것이 잘 작동했지만 세 번째 설치에서는 인수가 전달되지 않은 기본 세션을 제외하고는 어떤 세션도 실행할 수 없었습니다. 방금 .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
데비안에서 다음을 변경하세요/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