.xsession exec가 $HOME 또는 매개변수를 인식하지 못합니까?

.xsession exec가 $HOME 또는 매개변수를 인식하지 못합니까?

기본 시나리오는 내 도트 파일을 여러 컴퓨터에서 공유하고 내 세션 정의도 동기화되기를 원하는 것입니다.

저는 DPI가 상당히 다른 다양한 노트북과 모니터를 사용하기 때문에 각 세션에 필요한 DPI를 수동으로 지정할 수 있기를 원합니다.

몇 번의 추악한 해킹 후에 저는 .xsession이 래퍼 스크립트를 직접 호출하는 대신 래퍼 스크립트를 실행 하고 원하는 DPI를 해당 래퍼 스크립트에 전달하도록 s/y/ier/g결정했습니다 . 이와 같이:xmonad-startgnome-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

관련 정보