bash 스크립트에서 창이 최대화 또는 최소화되었는지 확인하는 방법


11

이중 화면 설정에서 창을 왼쪽 화면에서 오른쪽 화면으로 이동시키는 bash 스크립트가 있습니다. 현재 작동 방식은 주어진 창 ID를 순환 xdotool search --onlyvisible --maxdepth 2 --class ""한 다음 화면 너비만큼 오른쪽으로 이동하는 것입니다. 문제의 창이 최대화되거나 최소화되지 않는 한 이미 작동합니다.

따라서 필요한 것은 창의 현재 상태를 확인하는 방법입니다. 해당 비트를 추가하고 제거하는 방법을 제공 하는 답변 을 찾았 지만 비트가 이미 설정되어 있는지 확인하는 방법은 어디입니까?

xdotool을 통해 수행 할 수없는 경우 위에서 언급 한 명령에서 제공 한 창 ID를 재사용 할 수 있어야합니다.


devilspie이런 종류의 창 작업을 정확하게 수행하도록 설계된 것을 볼 수도 있습니다. 다시 코딩 할 필요없이 그냥 구성하십시오
Ciprian Tomoiagă

답변:


11

창 상태에 대한 정보 검색

명령에서 정보 및 기타 정보를 얻을 수 있습니다.

xprop -id <window_id>

구체적으로 찾고있는 것을 얻으려면 :

xprop -id 0x04c00010 | grep "_NET_WM_STATE(ATOM)"

결과는 다음과 같습니다.

_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_HIDDEN

최대화 (h + v)되고 동시에 최소화 된 창에서 또는

_NET_WM_STATE(ATOM) =

그 중 하나도없는 경우 (또는 전혀 출력되지 않음).

더 재미있는

물론 다양한 언어를 사용하면 아래의 파이썬 스 니펫과 같이 Wnck 를 사용할 수 있습니다 . ( 창-셔플의 스 니펫 ). 스 니펫은 창 이름 + True또는 False최소화 된 (최소화 된)을 표시하는 목록을 출력합니다 .

#!/usr/bin/env python3
import gi
gi.require_version('Wnck', '3.0')
from gi.repository import Wnck


def get_winlist(scr=None, selecttype=None):
    """
    get the window list. possible args: screen, select_type, in case it is
    already fetched elsewhere. select type is optional, to fetch only
    specific window types.
    """
    if not scr:
        scr = Wnck.Screen.get_default()
        scr.force_update()
    windows = scr.get_windows()
    if selecttype:
        windows = [w for w in windows if check_windowtype(w, selecttype)]
    return windows

wlist = get_winlist()
for w in wlist:
    print(w.get_name(), ",", w.is_maximized())

출력은 다음과 같습니다.

Wnck.Window - Classes - Wnck 3.0 - Mozilla Firefox , True
Postvak IN - vlijm@planet.nl - Mozilla Thunderbird , True
Showtime , False
settingsexample.vala - Visual Studio Code , False
*Niet-opgeslagen document 1 - gedit , False
desktop_weather , False
Tilix: Standaard , False

NB

  • xprop16 진수 (예 : 출력 wmctrl)와 10 진수 (예 : 출력 xdotool) id를 동등하게 처리합니다.

    xprop -id 111371626
    

    또는

    xprop -id 0x06a3656a
    
  • Wayland에서는 방법이 작동하지 않습니다!


1
훌륭한 제안 +1. 의견으로, 나는 그것을 시도했고 (Linux, X11에서) 약간 다른 결과를 얻었습니다. 창이 숨겨 지거나 최대화 _NET_WM_STATE(ATOM)되지 않은 경우 답변에 표시된대로 빈 값으로 나타나지 않습니다. 대신 출력에 전혀 없습니다.
John1024

@ John1024 아, 감사합니다! 답변에 추가합니다.
Jacob Vlijm

내 시스템에서는 비어있는 경우에도 두 경우 모두 표시됩니다.
v010dya

창 ID를 두 개의 숫자로 제공 할 수 있으므로 16 진수로 변환 할 필요가 없습니다. 누군가를 도울 것입니다.
v010dya

감사합니다! 업데이트 된 답변을 참조하십시오.
Jacob Vlijm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.