wmctrl

Z thewoodcraft.org

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 okna
  • 1688 – x souřadnice levého horního rohu okna
  • 103 – y souřadnice levého horního rohu okna
  • 1102 – šířka okna
  • 732 – výška okna

Aktuální geometrie okna je tedy 1102x732+1688+103

PoznámkaPokud nás zajímá pouze aktuální geometrie okna, můžeme použít také slop, který umožňuje vybrat okno pomocí myši – není tedy nutné zjiťovat jeho identifikátor.

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.