Hodně spoléhám na wmctrl při přepínání mezi okny, v podstatě proto, abych se vyhnul častému psaní alt-tab. Vždy jsem používal jeden pracovní prostor, ale nyní chci začít používat více než jeden.
Zajímalo by mě, jestli je možné upravit kontext wmctrl tak, že když napíšu wmctrl -l
, zobrazí se pouze okna z aktuálního pracovního prostoru namísto všech oken ze všech pracovních prostorů.
Za předpokladu, že mám například otevřené okno Firefoxu v pracovním prostoru 1. Mám klávesovou zkratku na ctrl+alt+f
který spustí wmctrl -a firefox
, který se přepne na Firefox. Pokud otevřu nové okno Firefoxu na pracovním prostoru 2 a napíšu ctrl+alt+f
, přepne se do okna v pracovním prostoru 1, což není to, co chci.
Nějaké návrhy/nápady, jak to vyřešit?
UPRAVIT :Používám compiz (Unity)
Přijatá odpověď:
Pokud používáte Compiz (spusťte wmctrl -m
pokud si nejste jisti, wmctrl vidí pouze 1 plochu (2. pole wmctrl -l, tj. 0), ale můžete použít volbu geometrie (-G), abyste věděli, jaké okno je na jaké virtuální ploše. Všechna okna na vaší aktuální ploše budou mít pozici x mezi 0 a šířkou obrazovky. Totéž pro pozici y mezi 0 a výškou obrazovky.
Takže můžete použít něco takového
#!/bin/bash
SCREEN_W=$(xwininfo -root | sed -n 's/^ Width: (.*)$/1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^ Height: (.*)$/1/p')
NAME='Navigator.Firefox'
wmctrl -xlG | awk -v W="$SCREEN_W" -v H="$SCREEN_H" -v NAME="$NAME" '$7==NAME && $3>=0 && $3<W && $4>=0 && $4<H {print $1}' | while read WINS; do wmctrl -ia "$WINS"; done
exit 0
Můžete si napevno zakódovat šířku a výšku obrazovky, chcete-li, a NAME, chcete-li jednolinkové.
Nejsem si jistý, jak chcete zacházet s více okny odpovídajícími NAME. To je všechny zaměří.
Pro metacity lze počet oken na ploše zjistit pomocí wmctrl -l
a grepování 2. pole.