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.