창 관리자(또는 X11)는 작업 표시줄을 어떻게 처리합니까?

창 관리자(또는 X11)는 작업 표시줄을 어떻게 처리합니까?

저는 openbox와 plank를 사용하고 있습니다. 앱을 열고 최대화할 때마다 창이 자동으로 보드 영역과의 충돌을 방지합니다.

내 질문은 창을 "작업 표시줄"로 지정할 수 있습니까? 예를 들어, 화면 너비의 25%를 차지하도록 메모장을 설정하고 열려 있는 다른 항목(다른 메모장 인스턴스 포함)이 나머지 75%까지 자동으로 최대화되도록 설정할 수 있습니까?

답변1

작업 표시줄 클라이언트는 일반적으로_NET_WM_STRUT재산누군가에게 말하다유럽 ​​WMH일부 화면 실제 상태가 자신에게만 속할 것으로 예상하는 호환 가능한 창 관리자입니다.

_NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32

이 속성은 모든 시작 값이 0이고 모든 종료 값이 논리 화면의 높이 또는 너비인 _NET_WM_STRUT_PARTIAL 속성과 동일합니다.

_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y, right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x, bottom_end_x, CARDINAL[12]/32

이 속성에는 화면의 각 테두리에 예약된 영역의 너비를 지정하는 4개의 베이스와 4개의 기둥 각각의 시작과 끝을 지정하는 추가 8개의 베이스가 포함되어 있습니다.

그러면 주어진 창에 대해 300픽셀의 너비가 예약됩니다.교각), 달리기

xprop -f _NET_WM_STRUT 32c -set _NET_WM_STRUT '300, 0, 0, 0'

그런 다음 창을 클릭하세요. 이제 최대화되어 있어도 일반 창은 남은 공간으로 제한되어야 합니다.

물론아니요도킹된 창을 예약된 공간에 자동으로 배치합니다. 그러나 Xdotool을 사용하여 프로세스를 자동화할 수 있습니다.

xlogo  #Dock window example
xprop -id "$(xdotool search xlogo)" -f _NET_WM_STRUT 32c -set _NET_WM_STRUT '300, 0, 0, 0'
xdotool search xlogo windowmove 0 0 windowsize 300 100%

Icewm은 이 작업을 깔끔하게 추상화하는 창 관리자입니다.man icewm-winoptions. 당신에게 필요한 것은

==> ~/.icewm/winoptions <==
xlogo.layer: Dock
xlogo.geometry: 300x700+0+0

이렇게 하면 각각의 새로운 Xlogo 창이 도킹 지점이 되어 생성 시 올바르게 배치됩니다.

답변2

창 관리자(WM)는 응용 프로그램과 X 서버 간의 특정 상호 작용을 가로챌 수 있습니다.

이러한 작업 중 하나는 크기 조정입니다(최대화는 크기 조정입니다). 따라서 애플리케이션은 "이 창의 크기가 마음에 듭니다"라고 말하고 WM은 요청 처리를 시작하고 "좋아, 이것이 당신이 얻은 크기와 위치입니다"라고 말할 것입니다.

따라서 원칙적으로 WM은 화면의 25%를 특정 창에 할당하고 화면의 75%를 다른 모든 창에 할당할 수 있습니다.

그러나 이와 같이 구성할 수 있는 WM이 있는지는 모르겠습니다. 따라서 자신만의 WM을 작성하거나 기존 WM을 수정해야 할 수도 있습니다.

나는 소위 타일링 WM이 있다는 것을 알고 있지만 일반적으로 모든 창을 타일링하므로 아마도 원하는 것이 아닐 것입니다.

OTOH, 저는 openbox와 plank에 익숙하지 않아서 그럴 수도 있겠네요...

관련 정보