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.
- Komentarze (8)
- Dodaj komentarz
-
Gość szmergiell *.159.32.162.static.crowley.pl
11.08.2010
No super... A ja szukałem, szukałem i znaleźć nie mogłem takiego rozwiązania. Pod Windowsem miałem WinSplit, pod XFCE korzystałem z wbudowanych skrótów, które miały dużo ograniczeń.
Jeszcze tylko muszę przetestować jak to będzie działało... i hurra :) W sumie, jak dotychczas, kiedy korzystałem z pythonowych programów, to częściej nie działały, niż działały. Może ten będzie pierwszy, ewentualnie będzie impulsem do zgłębienia Pythona na tyle, żeby problemów z samym uruchamianiem nie było. -
scottie.33
11.08.2010
No proszę! U Kościaka cicho było przez prawie miesiąc, ale jak wystrzelił notkę, to konkretnie!! :)
-
kosciak1
11.08.2010
@szmegiell - jeśli PyWO będzie sprawiało jakieś problemy to pisz i postaram się rozwiązać.
A Python trudny nie jest. Jeśli już programujesz to załapanie podstaw to kwestia dwóch weekendów. -
Gość szmergiell *.159.32.162.static.crowley.pl
11.08.2010
W razie problemów, to na pewno będę pisał.
Może i można załapać programowanie w dwa weekendy... pod warunkiem, że człowiek się tak zorganizuje, żeby je mieć wolne ;)
Skoro już piszę: czy na pewno program nazywa się Pythow? : -
kosciak1
11.08.2010
@szmergiel - dzięki! Poprawione. Tak to już jest jak się po nocy przygotowuje notkę i potem nie czyta uważnie przed samą publikacją...
-
zen0biusz
16.08.2010
Dotychczas używałem stilera ( github.com/soulfx/stiler ) + openbox, ale to narzędzie wygląda na bardziej rozbudowane. Zaraz przetestujemy
-
Gość Mekk *.acn.waw.pl
04.09.2010
Myślałeś może o dorobieniu funkcji "rozłóż w gridzie wszystkie aktywne okna na bieżącym desktopie"?
-
kosciak1
04.09.2010
@Mekk - na razie tylko myślałem. Zastanawiam, jak do tego podejść by rzeczywiście było to użyteczne i w miarę proste w obsłudze.