TinyWM
Więcej informacji
- Twórca
- Nick Welch
- Rok
- Typ
- Menedżer okien
- Licencja
- Domena publiczna
- Kod źródłowy
- github.com/mackstann/tinywm
Menedżer okien w około pięćdziesięciu liniach C, napisany w 2005 roku, by pokazać, że wszystko, co potrzeba do przesuwania, zmiany rozmiaru i podnoszenia okien w X, mieści się na jednym ekranie.
Nick Welch napisał TinyWM jako przykład dydaktyczny i oddał kod do domeny publicznej. Program otwiera wyświetlacz, zakłada pasywne grabs na Alt+F1 oraz na Alt z lewym i prawym przyciskiem myszy w oknie root i wchodzi w pętlę wokół XNextEvent. Alt+F1 podnosi okno pod wskaźnikiem przez XRaiseWindow; przeciąganie z Alt lewym przyciskiem przesuwa, a prawym zmienia rozmiar, przez XMoveResizeWindow przy każdym MotionNotify. I tyle. Bez reparentingu, bez ramek, bez ICCCM, bez obsługi fokusu: aplikacje dostają fokus, bo X daje go oknu pod wskaźnikiem — o ile w ogóle o niego poproszą.
Wartość tkwi w tym, czego brakuje. Kto czyta ten kod, widzi, że menedżer okien to w gruncie rzeczy zwykły klient, który poprosił serwer o przekierowywanie do siebie pewnych zdarzeń, i że wszystko, co czyni dwm czy Openbox użytecznymi, jest zbudowane na tych trzech grabach. W zestawie jest wersja w Pythonie o tej samej długości, a TinyWM stał się punktem wyjścia długiej linii hobbystycznych menedżerów okien i stałym pierwszym ćwiczeniem w tutorialach Xlib.