Sporo wysiłku mięśni przy używaniu graficznego desktopu idzie na machanie myszą przy przesuwaniu okien i zmienianiu ich rozmiaru. Okno edytora przesunąć na prawo i do góry, rozciągnąć do samego dołu i tak by zajmowało pół ekranu. Terminal w lewy dolny róg. Przeglądarka w lewy górny. Klient poczty na prawą połówkę drugiego wirtualnego desktopu. Itd... Ciągnij, puszczaj, ciągnij, puszczaj.
Kilka narzędzi - o których pod koniec - obiecuje radykalne rozwiązanie tego problemu, jednak kosztem drastycznej zmiany przyzwyczajeń. Jeszcze nie jestem gotowy. Dlatego ucieszyła mnie odkryta niedawno sztuczka bardzo ułatwiająca rozrzucanie okien przy normalnej pracy w Gnome.
Compiz Grid
Sztuczką jest wtyczka grid do Compiza. Po krótkiej konfiguracji pozwala skrótami klawiszowymi rzucać okna w ustalone miejsca ekranu.
Jak to działa
Ot, mam zwykły zabałaganiony ekran z chaotycznie położonym terminalem.
Wciskam Win-KP7 (tj. trzymając wciśnięty klawisz Windows wciskam siódemkę z klawiatury numerycznej) i terminal ładnie układa się w lewej dolnej ćwiartce ekranu.
Przeskakuję Alt-Tabem do Emacsa i wciskam Win-KP6. Edytor ładnie wyrównuje się zajmując całą prawą stronę ekranu.
Kolejne wciśnięcia tego samego skrótu dają też wersję szerszą
i węższą
I tyle. Łącznie mam skróty pozwalające rzucić bieżące okno na górną, dolną, lewą lub prawą połówkę albo do dowolnej ćwiartki (a przy powtórnym wciskaniu także robiące nieco węższą i nieco szerszą wersję). Do kompletu jest też skrót rozciągający okno na cały ekran. Przypisuję je sobie do odpowiednio położonych klawiszy klawiatury numerycznej więc nie wymaga to żadnego wysiłku przy zapamiętywaniu.
Instalacja i konfiguracja
Z oczywistych przyczyn wymagany jest Compiz. Na Ubuntu oznacza to uaktywnienie efektów wizualnych (System/Preferencje/Wygląd, zakładka Efekty wizualne, trzeba wybrać cokolwiek innego niż Brak, program pobierze i zainstaluje niezbędne pakiety).
Następnie uruchamiamy konfigurator Compiza: System/Preferencje/Menedżer ustawień CompizConfig. Jeżeli go nie ma, instalujemy:
$ sudo apt-get install compizconfig-settings-manager
Jest tam sporo ciekawych opcji które można sobie włączać (min. trochę wizualnego bajeru w sekcjach Efekty i Pulpit) i ... wyłączać (od kiedy niechcący wciskając jakąś kombinację klawiszy przestawiłem sobie ekran w tryb negatywu a później jakąś inną przyczepiłem do myszy swoiste szkło powiększające pamiętam o usuwaniu wszystkich funkcji z sekcji Dostępność). W tej chwili interesuje mnie zakładka Zarządzanie oknami, w której trzeba włączyć wtyczkę Grid:
Screenshoty robiłem na komputerze na którym mam ustawioną angielską wersję językową, po polsku program wygląda podobnie choć elementy są w innej kolejności.
I już powinno działać. Test: klikamy Ctrl-Alt-KP4 (4 z klawiatury numerycznej). Okno ustawień powinno wypełnić lewe pół ekranu (albo trochę więcej, ma ograniczenie dolne szerokości).
Na jednym z komputerów mi to nie zadziałało. O przyczynach i rozwiązaniu w następnym rozdziale.
Kombinacje takie jak Ctrl-Alt-KP4 są mało poręczne. Wolę Win-KP4. Dlatego skróty sobie zmieniłem. Trzeba je też oczywiście zmienić jeśli klawiatura (np. laptopowa) w ogóle nie ma klawiatury numerycznej (tu poręczne wydają mi się Win-strzałki i CtrlAlt-strzałki, jedne do rozrzucania po połówkach, drugie po rogach).
Aby zmienić skróty, po prostu klikamy słowo Grid. Pojawia się ekranik z wykazem aktualnych skrótów. Klikając dowolny z nich dostajemy okienko pozwalające zmienić skrót (Grab key combination vel Przechwyć kombinację klawiszy i wciskamy co trzeba). Klawisz Windows jest tu określany jako Super.
Po ustawieniu wszystkich klawiszy zabawa jest zakończona, można od razu pobawić się w rzucanie okna ustawień w różne strony (nie trzeba niczego restartować ani przeładowywać).
Problemy
Na jednym z komputerów nie działały mi skróty klawiszowe powiązane z klawiaturą numeryczną. Najpierw myślałem, że nie działa plugin, później podejrzewałem wysłużoną klawiaturę. A winne okazało się jedno z ustawień klawiatury (System/Preferencje/Klawiatura i zakładka Klawisze myszy), gdzie miałem włączony tryb emulacji myszy klawiaturą:
Po wyłączeniu tego ustawienia skróty zaczęły działać.
Mam też jeden problem użytkowy: zdarza mi się następujący scenariusz:
- odsyłam jakieś okno (wciskając któryś ze skrótów),
- po obejrzeniu efektu stwierdzam, że wolę je gdzie indziej i wciskam inny skrót,
- odesłane zostaje ... inne okno, które po przerzuceniu poprzedniego uzyskało focus.
Jest to ewidentnie związane z moim trybem obsługi myszy - od lat pracuję w trybie przekazywania focusu do okna nad którym znajduje się mysz. Przy pracy w domyślnym trybie click to focus problemu nie będzie ale ... chyba wolę się pogodzić z tą niedogodnością.
Devil's Pie
Wspomnę jeszcze o zupełnie innym programiku wspomagającym zarządzanie rozmiarem i położeniem okien.
W tej chwili go nie używam, z powodów o których na końcu. Ale całkiem możliwe, że kiedyś do niego wrócę.
Devil's Pie wykrywa okna o ustalonych nazwach (można też stosować parę innych cech) i automatycznie zmienia ich rozmiar czy też relokuje je. Jest to np. sposób na to, by Evolution zawsze po uruchomieniu miało rozmiar 640x600 i mieściło się w lewym górnym rogu ekranu a Emacs miał 640x900 i leżał z prawej strony.
Instalacja - pakiet devilspie
:
$ sudo apt-get install devilspie
Program nie ma GUI, konfigurowany jest przez edycję plików
konfiguracyjnych. Wczytuje wszystkie pliki o rozszerzeniu
.ds
z katalogu ~/.devilspie
. Zazwyczaj umieszcza się
tam osobny pliczek dla każdej kontrolowanej aplikacji.
Przykładowo, jeśli stworzę ~/.devilspie/keepass.ds
o treści:
(begin
(if
(contains (application_name) "KeePassX")
(begin
(above)
(geometry "640x480+0-10")
)
)
)
devilspie
zadba by okienko keepassx
-a miało rozmiar 640x480 i było
umieszczone w lewym dolnym rogu ekranu (o tym skąd liczone jest
położenie decydują znaki + i -, np. zapis 640x480-0+10
rzuciłby okno
do prawego górnego rogu) i miało ustawioną właściwość zawsze na
wierzchu.
Jeszcze inny przykład - kiedyś eksperymentowałem z następującym
~/.devilspie/firefox.ds
(jeszcze w starej wersji firefoksa, cytuję
jako przykład powiązania w jednym pliku reguł dotyczących różnych
okien):
(begin
(if
(is (application_name) "Firefox")
(begin
(geometry "960x750+0")
)
)
(if
(matches (window_name) "Bookmark")
(begin
(center)
(above)
)
)
(if
(matches (window_name) "Session Manager - Restore")
(begin
(center)
(above)
(geometry "400x200")
)
)
)
Możliwości - zarówno wybierania okien, jak ustalania co z nimi robić -
jest sporo. Omawia je man devilspie
.
Min. można wysyłać okienka na ustalony wirtualny desktop,
obdarzać je focusem, maksymalizować czy nawet nadawać im
przezroczystość.
Przy normalnym używaniu devilspie
działa stale (najwygodniej wrzucić
je do System/Preferencje/Programy startowe), monitoruje
uruchamiające się programy i modyfikuje ich ustawienia zaraz po tym,
gdy się pojawią ich okna (później dając im już spokój, można zmienić
rozmiar takiego okienka i devilspie
nie będzie już go ruszać).
W trakcie pisania reguł wygodniejsze jest odpalanie devilspie
z
palca, w terminalu. W chwili uruchomienia analizuje ono listę
wszystkich uruchomionych programów i aplikuje do nich swoje reguły.
Zatem odpalam interesujące mnie aplikacje, piszę/poprawiam konfigurację
w ~/.devilspie
, następnie zabijam (Ctrl-C) działające devilspie
i uruchamiam je na nowo - a wszystkie okna powinny zostać poprzesuwane
w skonfigurowane miejsca.
Na czas pisania reguł warto też stworzyć plik ~/.devilspie/debug.ds
o treści:
(debug)
Efektem będzie wypisywanie na standardowym wyjściu (czyli w terminalu
w którym działa sobie devilspie
) nazw okien i aplikacji, co ułatwia
pisanie reguł dopasowujących.
No a gdy reguły są już gotowe, wrzucamy devilspie
do autostartu
i zapominamy o nim (do czasu, gdy trzeba coś poprawić).
Informacja o braku GUI nie jest do końca prawdziwa, istnieje program gDevilSpie. Niestety wymaga samodzielnej kompilacji.
Nie testowałem go jeszcze.
Jest to wszystko fajne a pisanie reguł nie jest przesadnie trudne.
Niemniej jednak, ostatnio devilspie
nie używam. Powód? Dwa:
-
nie udało mi się satysfakcjonująco rozwiązać sprawy drugiego okna (np. o ile pierwsze uruchamiane okno firefoksa chciałbym widzieć na lewej połówce ekranu, o tyle drugie już niekoniecznie, a nie udało mi się ich rozróżnić),
-
okazało się, że jednak pracuję dość niejednorodnie, zależnie od tego, co akurat robię, wolę mieć programy w różnych miejscach (np. przy pracy nad HTML chcę dużego okna przeglądarki ale przy programowaniu w Pythonie i używaniu przeglądarki do podglądu dokumentacji wolę małe okno w rogu) i chyba częściej zdarzało mi się poprawiać po
devilspie
niż cieszyć dobrze ustawionym oknem.
Do tego nazwy, hierarchie okien itp dość często się (przy upgrade) zmieniają. A i ja sam nieraz zmieniam aplikacje.
Kafelkowe menedżery okien
Ostatnim elementem bajki są kafelkowe menedżery okien. Czyli programy, które same rozmieszczają okna i budują ich układy. xmonad, awesome, dwm i kilka innych.
Myśl o wypróbowaniu któregoś z nich obracam w głowie od dość dawna, na razie się nie zdecydowałem (zmiana przyzwyczajeń byłaby jednak bardzo radykalna) ale kto wie...