명령 행에서 창의 위치 (데스크탑)를 찾으려면 어떻게합니까?


19

키보드 단축키를 통해 창을 관리하는 데 도움이되는 작은 스크립트를 작성하려고합니다.

원하는 작업을 수행하려면 "활성"(초점) 창의 현재 위치와 크기를 찾을 수 있어야합니다. 위치로, 나는 바탕 화면에있는 창의 X, Y 좌표를 의미하고, 크기로 창의 높이와 너비를 의미합니다.

이 정보를 가져올 수있는 명령 줄 유틸리티가 있습니까?

답변:


22

이 명령을 사용하여 현재 활성 창의 모든 정보를 얻을 수 있습니다.

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

또는

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

필요한 좌표에 대한 출력을 구문 분석하십시오. 다음은 창과 상호 작용할 때 유용한 명령입니다.

  • xwininfo 는 상대 및 절대 기하학을 제공합니다.
  • xprop 은 창이 활성화되어 있지만 지오메트리가 아닌 경우를 포함하여 많은 정보를 알려줍니다.
  • xdpyinfo 는 활성 창의 id도 제공하지만 추가 정보는 없습니다.
  • wmctrl 은 창에 대한 정보 목록을 제공하며 수정을 위해 활성 창을 선택할 수는 있지만 정보는 선택할 수 없습니다.

예를 들어 활성 창의 제목을 "새 이름"으로 변경하려면 다음을 수행하십시오.

wmctrl -r :ACTIVE: -N "New Name"

또는 활성 창의 위치를 ​​변경하려면

wmctrl -r :ACTIVE: -e 0,20,20,200,400

wmctrl창의 지오메트리와 같이 간단한 것을 변경해야하는지 고려하십시오 . 더 복잡한 다른 작업을 수행하려는 경우에만 위에서 언급 한 다른 스크립트를 사용하십시오.


1
두 번째 명령을 실행할 때 다른 결과가 나타납니다. 첫 번째는 예상대로 작동합니다.
TM.

1
나는 아치를 사용하지만 나중에 누군가를 도울 수 있습니다. 첫 번째는 나를 위해 작동하지 않았고 두 번째는 WM으로 인해 올바른 크기를 제공하지 않았습니다. 그러나 두 사람의 조합이 효과가있었습니다. xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
Sev

감사! 그러나 나는 처음 두 의견에 동의합니다. 두 번째 명령 xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)은 터미널의 자식 창 (이름 없음)을 보여줍니다. 난 그냥 할 때 xdpyinfo | grep focus내가 얻을 focus: window 0x435b877, revert to Parent, 그리고 0x435b877는 (나를 위해 작동하지 않습니다) 첫 번째 명령에 의해 반환 된 윈도우의 ID입니다. 이것은 Trusty 14.04.1에 있습니다. LTS
nealmcb

8

"xdotool"을 사용하면 키보드 또는 마우스 이벤트를 사용하여 창과 쉽게 상호 작용할 수 있습니다.

CtrlC활성 창 으로 시퀀스를 전송하는 예 :

xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.

실제로 창 위치가 필요한 경우 :

eval $(xdotool getmouselocation --shell); echo $X $Y

추가 작업 / 옵션은 매뉴얼 페이지를 확인 하십시오 .


흥미롭지 만, 나는 단지 얻는다 Error: Invalid key sequence 'ctrl-c'.
l0b0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.