KosciaKowy blog Komputery, oprogramowanie, internet i okolice

kosciak1, 11.08.2010

PyWO - orzeźwiający Python Window Organizer

Dawno już tak długiej przerwy na blogu nie było... Już nawet miałem w głowie kilka pomysłów na wpisy o narzędziach ułatwiających zarządzanie oknami - Quicktile oraz wtyczkach Compiza: Grid, Put i Maximumize. Niestety stała się rzecz straszna. Zaczęły irytować mnie ich różne drobne błędy. Co gorsze, zdałem sobie sprawę, że żadna z tych aplikacji nie działa tak, jakbym chciał. Chyba już wiecie jak to się skończyło...

Python Window Organizer

W wolnym czasie, którego jak na złość za wiele nie było, zamiast pisać notki na bloga zgłębiałem tajniki EWMH, ICCM i Python X Library. Efektem tej pracy jest Python Window Organizer, w skrócie PyWO, prawdopodobnie najlepsze narzędzie wspomagające zarządzanie oknami.

Możliwości

Głównym założeniem jest umożliwienie łatwej zmiany położenia i rozmiaru okien okien z użyciem skrótów klawiaturowych (domyślnie sterowanie odbywa się z użyciem klawiatury numerycznej). Do dyspozycji mamy:

Float - przemieszczanie okien

[Plik PyWO_float.gif]
Pobierz

Możemy przesuwać okno w dowolnym kierunku, przyklejając je do krawędzi sąsiadujących okien.

Expand i Shrink - zmianę rozmiaru okna

[Plik PyWO_expand_shrink.gif]
Pobierz

Możemy powiększać lub pomniejszać rozmiar okna w dowolnym kierunku, by maksymalnie wykorzystać dostępne miejsce.

Put - rzucanie oknem

[Plik PyWO_put.gif]
Pobierz

Możemy rzucić okno (bez zmiany rozmiaru) w jedną z wcześniej zdefiniowanych pozycji na ekranie.

Grid - siatka

[Plik PyWO_grid.gif]
Pobierz

Rzucamy oknem w wybraną pozycję na ekranie jednocześnie zmieniając rozmiar okna, w efekcie uzyskując siatkę, równomiernie rozłożonych okien. Można wybrać siatkę 2x2, 3x2 (domyślna), 3x3 lub łatwo zdefiniować własne ułożenie okien. Starałem się by ta funkcja działała bardziej przewidywalnie niż odpowiedniki w Compiz Grid i Quicktile - zawsze najpierw wybierany jest największy możliwy rozmiar.

Wymagania

Potrzebny nam będzie Python w wersji 2.5 lub wyższej (nie testowałem z 3.0) i zainstalowana biblioteka Xlib (w Ubuntu wystarczy zainstalować pakiet python-xlib). No i oczywiście menadżer okien poprawnie implementujący EWMH. Z pobieżnych testów wynika, że Python Window Organizer powinien działać z większością popularnych menadżerów okien. Testowałem w Compizie, Metacity, KDE (KWin), XFCE (Xfwin), Openbox, Enlightment (e16) oraz FVWM i wydaje się działać jak należy.

Jak na razie pod Blackbox, Fluxbox, IceWM, WindowMaker, AfterStep i pekwm pojawiają się dziwne błędy wynikające z niepełnego wsparcia dla EWMH przez te menadżery okien. Jest szansa, że część z tych problemów uda się obejść, jednak niczego obiecać na razie nie mogę.

Instalacja i użytkowanie

Wystarczy pobrać archiwum ze strony projektu PyWO, rozpakować i wykonać:

./pywo.py

Ot i cała filozofia. Skonfigurować do swoich potrzeb (zmiana klawiszy, siatki) można tworząc plik ~/.pyworc - opis jego składni i dostępnych opcji znajdziecie przeglądając dołączony plik pyworc, zawierający domyślne ustawienia.

Błędy, problemy i propozycje

Nie ukrywam, że jeszcze zostało trochę do poprawienie, zoptymalizowania. Jeszcze nie wszystko jest dostatecznie przetestowane. Nie wiem jak PyWO zachowuje się przy więcej niż jednym monitorze, wiem o problemach z oknami ustawionymi by pojawiały się na wszystkich pulpitach.

Jeśli zauważycie dziwne zachowanie prosiłbym, oprócz opisu niepożądanego zachowania, o przesłanie również pliku /tmp/PyWO.log, gdzie zapisywane są informacje o działaniu programu.

Chętnie też wysłucham waszych propozycji zmian. Dopóki zapał nie opadł jest spora szansa na ich realizację. Na pewno powinienem wkrótce dopisać funkcję Undo.


Polecane wpisy