J'ai un script bash qui déplace mes fenêtres de l'écran gauche à l'écran droit dans une configuration à double écran. Actuellement, la façon dont cela fonctionne est de parcourir les identifiants de fenêtre fournis par xdotool search --onlyvisible --maxdepth 2 --class ""
, puis les déplace vers la droite de la largeur de l'écran. Cela fonctionne déjà ... à moins que la fenêtre en question ne soit agrandie ou minimisée.
Donc, ce qui est nécessaire, c'est un moyen de vérifier l'état actuel de la fenêtre. J'ai trouvé ne réponse qui fournit le moyen d'ajouter et de supprimer ces bits, mais où est le moyen de vérifier s'ils sont déjà définis?
S'il n'est pas possible de le faire via xdotool , il devrait être possible de réutiliser l'identifiant de fenêtre fourni par la commande mentionnée ci-dessus.
Vous pouvez obtenir les informations (et bien plus) à partir de la commande:
xprop -id <window_id>
Pour obtenir ce que vous recherchez spécifiquement:
xprop -id 0x04c00010 | grep "_NET_WM_STATE(ATOM)"
La sortie ressemblera à:
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_HIDDEN
sur une fenêtre maximisée (h + v) et minimisée en même temps, ou tout simplement
_NET_WM_STATE(ATOM) =
(ou pas de sortie du tout) si ce n'est pas le cas.
Bien sûr, en utilisant différents langages, vous pouvez utiliser Wnck , comme dans l'extrait python ci-dessous. (Extrait de window-shuffler ). L'extrait génère une liste, affichant le nom de la fenêtre + True
ou False
(minimisé).
#!/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())
La sortie ressemble à:
Wnck.Window - Classes - Wnck 3.0 - Mozilla Firefox , True
Postvak IN - [email protected] - Mozilla Thunderbird , True
Showtime , False
settingsexample.vala - Visual Studio Code , False
*Niet-opgeslagen document 1 - gedit , False
desktop_weather , False
Tilix: Standaard , False
xprop
gérera à la fois les identifiants hexadécimaux (en sortie par exemple wmctrl
) et décimaux (en sortie par exemple xdotool
), par exemple soit utiliser:
xprop -id 111371626
ou
xprop -id 0x06a3656a
Les méthodes ne fonctionneront pas sur Wayland!