일시 중단 후 xmodmap을 유지하는 방법

일시 중단 후 xmodmap을 유지하는 방법

xmodmap 파일이 있는데 ~/.Xmodmap잘 작동합니다. 이렇게 우분투 19.10의 부팅 애플리케이션에 넣으면 xmodmap /home/yasser/.Xmodmap첫 번째 부팅에서 작동합니다. 그러나 일시 중지 후에는 파일이 작동하지 않습니다. /usr/lib/pm-utils/sleep.d/999zxmodmap다음 내용으로 스크립트를 작성 하려고 합니다 .

#!/bin/bash

    case $1 in
        pre)
            exit 0
        ;;
        post)
            export DISPLAY=:0
            sleep 10
            xmodmap /home/yasser/.Xmodmap
        ;;
    esac

나는 이것이 다른 곳에서 제안되는 것을 보았지만 이것은 작동하지 않습니다. ~/.Xmodmap도움이 된다면 내 파일은 다음과 같습니다 .

keycode 66 = Mode_switch
keysym j = j J Left
keysym l = l L Right
keysym i = i I Up
keysym k = k K Down
keysym h = h H Home
keysym semicolon = semicolon colon End

귀하의 도움에 미리 감사드립니다.

답변1

다음 export DISPLAY=:0줄을 뒤에 추가해 보세요.

export XAUTHORITY=/home/yasser/.Xauthority

X11 GUI 세션이 시작되면 ~/.Xmodmap사용자가 로그인할 때 자동으로 읽혀집니다.

/usr/lib/pm-utils/sleep.d/999zxmodmap, 일시정지 상태에서 재개한 후 실행하면 루트로 실행된다.

다른 X11 응용 프로그램과 마찬가지로 이 xmodmap명령에도 GUI 세션에 액세스하려면 DISPLAY환경 변수와 두 가지가 필요합니다.X11 세션 쿠키(= 일종의 열쇠). 기본적으로 세션 쿠키는 ~/.Xauthority각 X11 로그인마다 저장되고 다시 생성됩니다. 스크립트가 xmodmap루트로 명령을 실행하면 /root/.Xauthority현재 로그인된 사용자가 있는지 확인할 수 있는 올바른 위치가 아닌...에서 세션 쿠키를 찾습니다 yasser.

다행스럽게도 XAUTHORITY환경 변수를 사용하여 X11 응용 프로그램에 비표준 위치에서 세션 쿠키를 찾도록 지시할 수 있습니다. 루트는 모든 것에 액세스할 수 있으므로 루트로 실행되는 명령은 쿠키 파일을 xmodmap읽을 수 있습니다 .yasser

관련 정보