У меня есть сценарий удара, который перемещает мои окна от левого экрана до правильного экрана в установке двойного экрана. В настоящее время способ, которым это работает, циклически повторяется через идентификаторы окна, которыми дают xdotool search --onlyvisible --maxdepth 2 --class ""
и затем перемещает их направо экраном width. Это уже работает..., если рассматриваемое окно не, максимизирует или минимизированный.
Таким образом, то, что необходимо, является способом проверить текущий статус окна. Я нашел ответ, который обеспечивает способ добавить и удалить те биты, но где путь состоит в том, чтобы проверить, установлены ли они уже?
Если не возможно сделать через xdotool, должно быть возможно снова использовать идентификатор окна, предоставленный упомянутой выше командой.
Можно получить информацию (и намного больше) от команды:
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, как в отрывке Python ниже. (отрывок из окна-shuffler). Отрывок производит список, показывая имя окна + также 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
xprop
будет handel оба шестнадцатеричных числа (как произведено от, например. wmctrl
) и десятичное число (как произведено от, например. xdotool
) идентификатор одинаково, например, любое использование:
xprop -id 111371626
или
xprop -id 0x06a3656a
Методы не будут работать над Уэйлендом!