콘솔에서 Xev를 시작하려고 하는데 항상 "디스플레이를 열 수 없습니다."라는 메시지가 표시됩니다. 다른 사용자로 콘솔에서 xev를 시작해야 합니다(저는sudo -u '#1000'이것을하기 위해).
나는 xev에 "display" 매개변수가 있다는 것을 알고 있습니다(xev 디스플레이) 그런데 어떻게 사용하는지 모르겠어요.
X11 환경 외부의 콘솔에서 xev를 시작하는 방법은 무엇입니까?
답변1
모든 X11 프로그램은 환경 변수가 나타내는 디스플레이에서 창을 엽니다 DISPLAY
. 그러므로:
sudo -u 1000 env DISPLAY=:0 xev
또는 X 서버가 아닌 다른 사용자로 프로그램을 실행할 수 있으므로,
DISPLAY=:0 xev
:NUMBER
는 로컬로 표시되는 기호입니다. 대부분의 경우 콘솔에서 실행되는 X11 서버가 가장 먼저 시작되고 마지막 숫자는 0입니다. echo "$DISPLAY"
해당 모니터의 터미널에서 실행하여 모니터 번호가 올바른지 확인할 수 있습니다 . ( 후행은 생략 가능) :0.0
과 동일합니다 .:0
.0
XAUTHORITY
X 서버가 아닌 다른 사용자로 프로그램을 실행하는 경우, 동일한 사용자로 프로그램을 실행하더라도 환경 변수를 설정해야 하는 경우가 있습니다 . 이 변수는 비밀번호가 포함된 파일(쿠키) 애플리케이션은 X 서버로 전달되어야 합니다. XAUTHORITY
의 올바른 값을 보려면 echo $XAUTHORITY
이 디스플레이에서 실행하십시오. 설정되지 않은 경우 기본값은 사용자가 표시되는 ~/.Xauthority
홈 디렉토리입니다.~
DISPLAY
프로그래밍 방식으로 합계 값을 찾아야 하는 경우 XAUTHORITY
다음을 참조하세요.원격 X 모니터에서 창 열기("모니터를 열 수 없습니다" 이유)?
적어도 거의 전부. 기술적으로는 다르게 수행할 수 있지만 프로그래머는 적극적으로 그렇게 하지 않도록 노력해야 하며 매개변수는 -display
보편적인 관례와는 거리가 멀습니다.
답변2
다음을 시도해 보세요.
xev --display localhost:0.0
X가 실제로 실행되고 있다고 가정합니다.
답변3
다음 명령은 매우 유용합니다.
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
하지만 xev 시스템에서의 위치와 관련된 DISPLAY 변수를 설정해야 합니다.
노트:DISPALY 변수를 적용하면 위치가 불법이거나 컴퓨터에 대한 로컬 액세스 권한이 없습니다.