무슨 일이 일어나고 있는지 wmctrl은 장식 내부의 창의 지오메트리를 반환하지만 (제목 표시 줄과 테두리는 포함하지 않음) 이동을 위해 더 큰 창 위치를 사용하고 있습니다.
(일부 명령 출력 라인 제거 : xdotool
설치되지 않았을 수 있음)
$ wmctrl -lG
0x04000040 0 702 23 900 950 KMatrix dave@KMatrix: test – Konsole
$ xdotool getwindowgeometry 0x04000040
Window 67108928
Position: 702,23 (screen: 0)
Geometry: 900x950
다음 명령은 관심있는 창을 프롬프트하고 모든 장식을 포함하고 사용중인 창 테마에 따라 다른 상위 창을 리턴합니다.
$ xdotool selectwindow
25166060
$ xdotool getwindowgeometry 0x18000ec
Window 25166060
Position: 700,0 (screen: 0)
Geometry: 904x977
보시다시피, 다른 창입니다. X 위치는 왼쪽에서 2px (702-2)로 시작하고 오른쪽 테두리도 2px이므로 총 너비가 4px (900 + 2 + 2) 더 큽니다. Y가 더 높습니다 (상단 경계가있는 경우 상단 제목 표시 줄 위). 높이와 하단 테두리로 인해 높이가 더 큽니다.
wmctrl은 부모 창을 자식 창의 원하는 [X, Y] 위치로 이동합니다. 아래 "전후"에 표시된 것처럼 너비와 높이가 자녀에게 올바르게 적용됩니다.
$ wmctrl -lG
0x04000040 0 702 23 900 950 KMatrix dave@KMatrix: test – Konsole
$ xdotool getwindowgeometry 0x18000ec # (PARENT)
Window 25166060
Position: 700,0 (screen: 0)
Geometry: 904x977
$ xdotool getwindowgeometry 0x04000040 # (CHILD)
Window 67108928
Position: 702,23 (screen: 0)
Geometry: 900x950
$ wmctrl -ir 0x04000040 -e 0,702,23,900,950 # <----- "MOVE/RESIZE" *****
$ wmctrl -lG
0x04000040 0 704 46 900 950 KMatrix dave@KMatrix: test – Konsole
$ xdotool getwindowgeometry 0x18000ec # (PARENT)
Window 25166060
Position: 702,23 (screen: 0) <----- Desired [X,Y] applied to parent
Geometry: 904x977
$ xdotool getwindowgeometry 0x04000040 # (CHILD)
Window 67108928
Position: 704,46 (screen: 0)
Geometry: 900x950 <----- Desired [W,H] applied to child
편집 : 추가 정보.
데스크탑 지오메트리, 뷰포트 및 작업 영역
$ wmctrl -d # (KDE)
0 * DG: 1680x1050 VP: 0,0 WA: 0,0 1680x1015 Desktop 1
$ xdotool -v
xdotool version 3.20140217.1
https://github.com/jordansissel/xdotool
다시 : 댓글 @ 스니커 팁
$ xprop | grep FRAME
_KDE_NET_WM_FRAME_STRUT(CARDINAL) = 2, 2, 23, 4
_NET_FRAME_EXTENTS(CARDINAL) = 2, 2, 23, 4