wmctrl
Wmctrl je utilita pro příkazovou řádku, přes kterou lze zjiťovat aktuální geometrii oken na ploše linuxového desktopu a podle potřeby ji měnit. V Debianu se dá jednoduše doinstalovat přes apt:
root@stroj~# apt-get install wmctrl
Narazil jsem na ni, když jsem jednou potřeboval kvůli pořízení screenshotu sputit aplikaci v okně o přesně dané velikosti a v rámci tohoto okna pak rozmístit její prvky tak, aby svým rozložením maximálně odpovídaly staršímu screenshotu z minulosti. Při tom jsem zjistil, že se u některých aplikací pod určitou šířku okna nelze dostat nelze a tak je nutné předem zjistit jakou zvolit optimální velikost – tohle všechno se dá realizovat právě přes wmctrl
Jak zjistit identifikátor okna aplikace na ploše?
Asi nejlépe přes číslo jejího spuštěného procesu, použijeme-li parametr -lp. Dejme tomu, že mne zajímá terminálové okno s PID 3837:
user@stroj~# wmctrl -lp | grep 3837
0x03e0000f 0 3837 stroj user@stroj: ~
Identifikátorem tohoto okna je číslo 0x03e0000f. Pokud bychom výstup neprohnali rourou, tak by se vypsal úplný seznam všech otevřených oken.
Jak zjistit velikost okna aplikace na ploše?
Pomocí nalezeného identifikátoru okna a parametru -lG nyní můžeme zjistit aktuální velikost a pozici okna na ploše:
user@stroj:~$ wmctrl -lG | grep 0x03e0000f
0x03e0000f 0 1688 103 1102 732 stroj user@stroj: ~
Za identifikátorem okna následuje:
0– gravita spuštěného okna1688– x souřadnice levého horního rohu okna103– y souřadnice levého horního rohu okna1102– šířka okna732– výška okna
Aktuální geometrie okna je tedy 1102x732+1688+103
Změna geometrie okna
Nyní chci změnit velikost tohoto okna na 100x250 pixelů. Použiji k tomu opět wmctrl, kterému předám jako hodnotu pro nastavení geometrie okna následující řetězec 0,1688,103,100,250 což jsou v podstatě hodnoty geometrie okna, oddělené čárkou.
user@stroj:~$ wmctrl -i -r 0x03e0000f -e 0,1688,103,100,250
Aplikuji stejný postup na okno aplikace, ovšem co to? Velikost okna se sice zmenšila, ale rozhodně ne na rozměr určený parametrem -e. Není tedy nic snazšího, než zjistit aktuální geometrii okna jak popisuji v předchozím odstavci. Voilá! Při minimální velikosti okna aplikace má okno velikosti 817x502 pixelů.
Je tedy třeba zvolit a nastavit takovou velikost okna aplikace, aby mohly být prvky optimálně rozmístěny a velikost okna příliš nepřekročila rozměry původního screenshotu.