다른 X- 세션에서 열린 창에 키 입력을 보내는 명령 줄 방법


11

메인 컴퓨터에서 Ubuntu 데스크탑이 열려 있고 로그온되어 있습니다. 그런 다음 새 X 세션을 만드는 X2go를 사용하여 원격 컴퓨터에서이 컴퓨터에 로그인하고 있습니다. 원래 세션에서 libreoffice 파일을 열었습니다 . 이 파일을 저장하고 닫고 싶지만 원격 컴퓨터에서! (두 세션 모두 동일한 사용자가 로그인했습니다. 필요한 경우 sudo 할 수 있습니다)

사용하려고 xdotool search했지만 창을 찾지 못했습니다. 이 두 번째 세션에서 내가 원하는 것을 할 수있는 방법이 있습니까? 나는 프로세스를 ps -A 볼 수 있으며 열린 파일을 볼 수도 있습니다 lsof! 어떻게 저장하고 닫을 수 있습니까?


2
당신은 할 수 단지 프로세스를 종료 -이 간단한 것이 심각한 저장되지 않은 변경 사항이없는 경우. 그렇게하면 다음에 문서를 열 때 여전히 문서를 복구해야합니다.
Wayne Werner

사실 @wayne, 아마 자동 복구 될 것입니다 ... 제안에 감사드립니다. 그래도 그 기회를 원한다면 확실하지 않습니다! 키 누르기 (또는 다른 직접 메시지)를 보낼 방법이 없습니까? 너무 간단하게 들립니다.
Sanjay Manohar

나는 방법이 있다고 확신합니다-나는 그것들을 알지 못합니다. 복잡한 VNC 클라이언트 설치 및 설정 DISPLAY=:0(또는 다른 계정이있는 모든 디스플레이)을 수행 한 다음 서버를 시작하여 클라이언트에서 가져 오는 복잡한 작업 이 있습니다. 그러나 그것은 과도 할 수 있습니다. LibreOffice에 메시지 프로토콜이있을 수 있습니다. Vim (LaTex 포함)에서 Google 문서 나 일반 텍스트 파일을 사용하기 때문에 잘 알고 있지 않습니다.
Wayne Werner

VNC를 사용하여 다른 위치에서 기본 창에 액세스
Olivier Dulac

1
xdotool은 현재 세션 $ DISPLAY 값에서 실행됩니다. 머신이나 vncserver를 ssh 한 다음 xdotool을 실행할 수 있습니다. 예를 들어, 포트 5901에서 vncserver를 실행하면 규칙에 따라 : 1 화면이 사용됩니다. 따라서 실행 DISPLAY:1한 다음 모든 X 프로그램 (테스트 용 xeyes)을 시작하면 VNC에서 실행됩니다. 원격 vnc 서버에도 동일하게 적용됩니다. 시스템에 SSH를 연결 한 다음 사용하기 전에 DISPLAY : 1 내보내기를 실행하십시오.
m3nda

답변:


9

기본 구성을 가정하면 "original"의 xdpyinfo는 ": 0.0"의 표시를 표시합니다.

xdpyinfo | grep name

"x2go"의 DISPLAY 환경 변수가 ": 1.0"인 경우 그렇게해야합니다.

"x2go"의 터미널에서 window-id를 찾으십시오.

DISPLAY=:0.0 xwininfo -root -tree | grep Writer

액세스 제어가 작동하지 않도록 설정되었을 수도 있지만 동일한 호스트에서 동일한 사용자 ID (예 : ~ / .Xauthority에 대한 액세스) 인 경우 액세스 제어가 필요하다고 생각합니다. 액세스 권한이 없으면 "xauth list"출력을 확인하십시오.

작동하면 좋아하는 도구를 사용하여 제어하십시오. 만약 xdotool이 필요하지 않은 툴을 필요로한다면 windowid를 10 진수로 출력하기 위해 위의 xwininfo에 "-int"를 추가하십시오 :

export DISPLAY=:0.0
xdotool windowactivate 0x15a18918
xdotool windowfocus 0x15a18918
xdotool key "ctrl+s"
xdotool key "ctrl+q"

또는 "ctrl + s"/ "ctrl + q"대신에 더 좋은 운이있을 수 있습니다

xdotool key "meta+f" "s"
xdotool key "meta+f" "c"
xdotool key "meta+f" "x"

"meta +"대신 "alt +"가 필요할 수 있습니다. 비표준 메타 / alt / super 매핑이 있습니다. 메타는 저에게 효과적이며 Xnest를 사용하여 테스트했습니다. 변경되지 않은 영어 메뉴 레이아웃과 가속기를 가정합니다.

당신의 방식으로 팝업이있을 수 있습니다.이 경우 시도해 볼 가치가 있습니다.

xdotool key "Escape"

몇 번 누른 다음 저장 후 닫기를 다시 시도하십시오. xdotool은 정확한 "키"이름에 대해 까다 롭습니다.

x2go에서 libreoffice를 시작하고 DISPLAY를 수정하지 않으면이 모든 것을 시도 할 수 있습니다. 포커스 변경으로 인해 엉망이되지 않도록 명령을 쉘 스크립트 파일에 저장해야합니다.

lsof가 작동하면 더 이상 파일을 열지 않아야합니다. :-)


xdotool key "Escape"이름 에 대한 힌트를 주셔서 감사 하지만 긴 이름을 시도하지 않았습니다 : D
m3nda

1

몇 가지 가능한 요구 사항이있는 것 같습니다. 분명히 호스트는 xhosts 파일 (응답으로 표시됨)에 있어야하며 적절한 DISPLAY 값을 내 보냅니다. 이 게시물은 xdotool이 원격 x11 창을 찾을 수 있도록 원하는 방식으로 수행하는 데 도움이 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.