Window Maker

Window Maker. Manager okien. Coś, co wtopiło się w krajobraz mojego środowiska graficznego, a jednocześnie coś, czego ciężko jest mi się pozbyć. W niniejszym artykule postaram się opisać czym jest Window Maker, co go wyróżnia, jakie są jego wady i zalety i dlaczego pomimo prób z innymi menedżerami okien ciągle ląduję z powrotem z nim na ekranie.

Krótka charakterystyka

Window Maker jest menedżerem okien dla systemów uniksowych (w tym Linuksa). Aż i tylko. W odróżnieniu od środowisk desktopowych jakimi są Gnome, KDE, XFCE czy LXDE, nie zapewnia desktopu (czyli klikalnego pulpitu) ani silnej integracji środowiska z oprogramowaniem [1]. Ponadto, wmaker (jak zwykło się go w skrócie nazywać) wzorowany jest mocno na środowisku graficznym NeXTSTEPa, przez co zyskał on specyficzny wygląd i najprawdopodobniej zachowanie.

Pomimo tego, że większość dystrybucji posiada w swoich repozytoriach wmakera, jego domyślna konfiguracja nie zachęca specjalnie do przesiadki z kolorowego i dopieszczonego Gnome'a czy Unity.

Domyślny wygląd WMakera w Ubuntu 11.10

Domyślny wygląd WMakera w Ubuntu 11.10

Window Maker stał się moim środowiskiem graficznym od początków mojego używania Linuksa. W tamtych czasach był on prężnie rozwijającym się projektem skupiającym sporo entuzjastów. Na tle konkurencyjnych projektów (FVWM, AfterStep, TWM, IceWM) miał nietypowy wygląd, a jednocześnie kusił prostotą i schludnością. Nie był aż tak konfigurowalny pod względem wizualnym jak chociażby Enlightenment (który stał się domyślnym menedżerem okien w Gnome1), ani nie oferował żadnych fajerwerków, ale miał za to klikalny konfigurator, który nowym użytkownikom pozwalał na szybkie i łatwe dostosowanie środowiska graficznego do swoich potrzeb.

Przez kilka ładnych lat wmaker był rozwijany (głównie przez Alfreda Kojimę i Dana Pascu) aż do wersji 0.92.0 wydanej w roku 2005. Od tego czasu nie było widać żadnej aktywności – a przynajmniej oficjalnie – na stronie projektu jedyne informacje jakie sie pojawiały dotyczyły samej strony czy też zmiany systemu kontroli wersji dla źródeł. Zdawać by się mogło, że projekt umarł – na szczęście nie jest to prawdą – na liście dyskusyjnej deweloperów panuje umiarkowany ruch, głównie za sprawą programistów, którzy stworzyli gałąź Window Makera, zawierającą ogromną ilość wszelkiego rodzaju poprawek, łatek oraz nowych funkcjonalności. CRM w nazwie gałęzi oznacza inicjały obecnego właściciela repozytorium, którym jest Carlos R. Mafara. Społeczność skupiona przy nowej gałęzi sprawiła, że w tym roku pod koniec sierpnia, zmienił się wygląd strony głównej projektu, na której można zobaczyć, że gałąź crm stała się gałęzią główną projektu.

Warto nadmienić, że spora część łatek znalazła się w oficjalnym ebuildzie Window Makera w repozytorium Gentoo, z kolei ebuildy gałęzi CRM można znaleźć w którymś z repozytoriów obsługiwanych przez laymana (np. w zugaina).

Konfiguracja

Korzystając z programu WPrefs można dostosować różne aspekty zachowania się menedżera pod swoje potrzeby. Nie będę szczegółowo opisywał każdej opcji, ponieważ jest przynajmniej kilka niezłych artykułów traktujących o podstawach konfiguracji i użytkowania tego menedżera.

To, na co chciałem zwrócić uwagę, to możliwość konfiguracji ręcznej. Pliki konfiguracyjne (jak to zwykle w systemach uniksowych bywa) są czysto tekstowe. Konfiguracja użytkownika znajduje się w jego katalogu domowym, w katalogu GNUstep. Podstawowa konfiguracja znajduje się w pliku ~/GNUstep/Defaults/WindowMaker. Powinno się tam znajdować szereg opcji umieszczonej na zasadzie klucz = wartość. Część z tych opcji w ogóle nie jest dostępna z poziomu aplikacji WPrefs, przez co niektórzy uważają, że nie da się wyłączyć docku i appicon. Otóż nic prostszego, wystarczy w pliku ~/GNUstep/Defaults/WindowMaker zmienić bądź dodać linie (jeśli nie ma):

{
    ...
    DisableDock = YES;
    DisableClip = YES;
    ...
}

by usunąć dock i clip. By pozbyć się miniwindows (zwykle rezydujących u dołu ekranu) należy zastąpić zawartość pliku ~/GNUstep/Defaults/WMWindowAttributes poniższą:

"*" = {NoAppIcon=Yes;};

Czynności te należy zrobić przed wystartowaniem Window Makera. Po co ktoś chciałby pozbyć się miniwindows, docka i clipa? Choćby dlatego, że na małych ekranach zajmują one mnóstwo miejsca (każdy kafel to 64x64 piksele), i/lub zastąpić je jakimś panelem, który zastąpi funkcjonalność zminimalizowanych aplikacji i dockappów.

Przykładowy zrzut ekranu z Window Makerem bez dockappów i panelem tint2

Przykładowy zrzut ekranu z Window Makerem bez dockappów i panelem tint2

No dobrze. Ale co z tego? Co ma Window Maker, czego nie ma konkurencja? Ano właśnie.

Dockapps

Dockapp to mała aplikacja, mieszcząca się w okienku 64 na 64 pikseli (zwanym też kaflem), spełniająca nierzadko całkiem sporo funkcji – od monitorowania systemu, poprzez różnorakie kontrolki (obsługa miksera, kontrola daemona mpd, przełączanie CPU throttlingu itd), zupełnie odjechane, na małych aplikacjach i nawet grach (wmquake!) skończywszy. Tworzone zarówno przez profesjonalistów ale też i nierzadko przez entuzjastów amatorów wyróżniają się kompletnie nieprzemyślanym, brzydkim jak noc, interfejsem, bądź całkiem znośnym. Zwykle każda z aplikacji, oprócz dostarczania jakiejś (lub żadnej :) funkcjonalności, pozwala zdefiniować akcje dla przycisków myszy, np. uruchomienie konfiguracji, uruchomienie zewnętrznego programu, przełączenie się w inny tryb itd). Na zrzucie poniżej znajdują się przykładowe dockappy, które używam na co dzień:

Dockapps

Dockapps

  1. wmCalClock – duży, czytelny zegar z datą.
  2. bubblemon – dockapp wzbudzający zainteresowanie wśród moich znajomych widzących po raz pierwszy mój desktop (pytania typu „do czego jest ta kaczka?” :). Jest to monitor systemowy, pokazujący ilość zajętej pamięci operacyjnej (poziom wody – im wyższy, tym mniej pamięci), obciążenie procesora (na dole okienka jest zajętość w procentach, oraz ilość bąbelków – im więcej, tym bardziej obciążony system jest). Oprócz tego, posiada on jeszcze dwa dodatkowe tryby – trend dla obciążenia systemu, oraz wykres zużycia pamięci.
  3. wmnd – monitor ruchu sieciowego. Można go skonfigurować do nasłuchu na różnych interfejsach sieciowych, nie tylko eth0.
  4. wmsysmon – monitor systemowy pokazujący obciążenie CPU, użycie pamięci RAM, użycie swap, uptime, przerwania oraz aktywność IO ramu i swapu.
  5. wmtop – Pokazuje trzy aktualnie najbardziej zasobożerne procesy.
  6. yawmppp – programik do nawiązywania połączenia z siecią przez modem. Ma własny graficzny konfigurator. Szczerze mówiąc nie pamiętam kiedy musiałem z niego korzystać – na pewno nie w ostatnich pięciu latach :)
  7. wmsmixer – kontrolka do ustawiania głośności. Fork wmmixera. Obsługuje urządzenia ALSA.
  8. wmweather – ściąga i pokazuje dane pogodowe z ustawionej w konfiguracji stacji pogodowej METAR.
  9. wmtempmnv – mój fork wmsensormon, z którego usunąłem informacje o prędkościach wentylatorów (mam chłodzenie pasywne) a dodałem monitorowanie temperatury GPU (via NVCtrlLib z pakietu nvidia-settings).
  10. peksystray – tzw. tacka systemowa, czyli miejsce, gdzie lądują wszystkie ikonki komunikatorów (i nie tylko).

Dodatkowo, jak widać na zrzucie, kafel spinacza (clip) umieściłem w prawym górnym rogu, a bezpośrednio pod nim dock z dockappami. Nie bez przyczyny – spinacz posiada dwa przyciski - jeden w swoim prawym górnym rogu, a drugi w lewym dolnym, służące do zmiany aktualnego workspace'a (ekranu). Używając myszy można bez specjalnego wysiłku przesunąć kursor myszy w prawy górny róg ekranu (do oporu :) i kliknąć celem zmiany aktualnego workspace'a. Jest to dużo wygodniejsze niż szukanie i celowanie w przyciski spinacza, gdy jest on umieszczony domyślnie po lewej stronie ekranu. Nie widziałem podobnej funkcjonalności w (prawie) żadnym innym menedżerze okien (poza jednym, znanym mi, wzorowanym na Amiga Workbench – amiwm).

Każdy dockapp jest umieszczony w docku w konkretnym miejscu. WMaker gwarantuje, że po restarcie otrzymam identyczną kolejność. Nie jest to takie oczywiste, ponieważ Openbox nie ma możliwości utrzymania odpowiedniej kolejności w swoim docku (trzeba to zasymulować poprzez odpowiednio skonstruowane wywołania i komendę sleep w autostart), albo po każdym uruchomieniu przesuwać je ręcznie.

Menu i skróty klawiszy

Główne menu aplikacji można wywołać przy pomocy myszy (domyślnie prawy przycisk myszy na pulpicie) albo poprzez skrót klawiszy (domyślnie F12). Oprócz menu aplikacji można wyróżnić menu okien (środkowy przycisk myszy na pulpicie, bądź F11), oraz menu kontekstowe (prawy przycisk na belce okna lub miniwindow, prawy przycisk myszy na spinaczu, docku oraz nieaktywnych appiconach). Po wywołaniu menu z klawiatury można się po nim poruszać przy pomocy kursorów, bądź przy pomocy pierwszych liter elementów listy. By wejść do zagnieżdżonego elementu wystarczy strzałka w bok i ponownie można korzystać z pierwszych liter. W odróżnieniu od Openboxa, jeśli element zaczynający się na konkretną literę występuje pojedynczo, nie jest on automatycznie wykonywany, dopiero wciśnięcie klawisza enter uruchomi wybrany element.

Menu aplikacji można dostosować pod siebie. Oprócz typowych rzeczy, jakie spotkać można w innych menedżerach okien (dodanie nazwy aplikacji + jej komendę oraz skrót klawiszowy), można dodać podmenu zawierające generowane elementy, bądź stanowić listę Można go dostosować poprzez wspomnianego już WPrefs, i jest to jedyne miejsce, gdzie, poza dockappami, można w ogóle zdefiniować własne skróty klawiszowe. Jest to jedna z wad Window Makera, aczkolwiek niezbyt uciążliwa, ponieważ menu z niezbyt często wybieranymi via menu pozycjami, można umieścić w zagnieżdżonym menu.

Funkcjonalność

Poniżej zamieszczam dwa zrzuty z Wmakera oraz Openboksa.

Window Maker alt-tab

Window Maker alt-tab

Openbox alt-tab

Openbox alt-tab

Na pierwszy rzut oka widać przewagę Window Makera nad Openboksem jeśli chodzi o swobodę w definiowaniu (a nawet zmianie domyślnych) ikon dla poszczególnych programów. Jest to jedna z rzeczy, która nie została wprowadzona do Openboksa od 2008 roku i niestety nie widać perspektyw na szybką implementację tej funkcjonalności.

Drugą, prawdopodobnie jeszcze bardziej irytującą rzeczą zepsutą w Openboksie jest samo zachowanie dialogu wywoływanego alt-tabem. Otóż, na dialogu tym, nie ma możliwości innej nawigacji niż wciskanie alt-tab, lub shift-alt-tab. Zakładając że mam piętnaście okien, i chciałbym dostać się do siódmego, muszę wykonać co najmniej siedem wciśnięć alt-tab lub shift-alt-tab. W Wmakerze sprawa dostania się do siódmego okna w kolejce rozwiązana jest zdecydowanie lepiej – jeśli wciśnie się alt-tab, puści tab jednocześnie trzymając klawisz alt, można po wciąż otwartym dialogu poruszać się przy pomocy klawiszy kursorów jak i myszy! Jest to dla mnie killer feature, który znakomicie ułatwia interakcję z otwartymi programami.

Wady

Czasami objawia przy aplikacjach QT (np. przy VirtualBoksie, choć być może jest to przypadek specyficzny dla VirtualBoksa), gdzie pozycja okna jest błędnie wyliczana co skutkuje jego częściowym położeniem poza obszar widoczny ekranu.

Druga z wad dotyczy aplikacji terminalowych (to znaczy takich, które są terminalami, bądź korzystają w jakimś zakresie z widgetów będących terminalem). Przy zmaksymalizowanym oknie, zmiana wielkości takiego widgetu może spowodować zmianę okna w którym jest osadzone. Wynikiem takiego działania jest „wychodzenie” okna poza możliwy zakres. Dzieje się tak nie tylko dla zmaksymalizowanych okien, ale również okien oznaczonych hintem fullscreen (przesłaniającym cały obszar ekranu i będący na wierzchu innych okien). Jest to szczególnie drażniące w Gvimie. Obejściem dla tego problemu w Gvimie jest całkowita rezygnacja z elementów graficznych interfejsu (graficzne taby i scrollbary) na rzecz czysto tekstowego interfejsu.

Eye Candy

Window Maker nie jest zbyt piękny w domyślnej konfiguracji, nie ma też zbyt dużych możliwości w zmianie swojego wyglądu. Można zmienić tło (nawet dla każdego worskpace'a oddzielnie), zmienić kolor lub podłożyć bitmapę pod dekoracje okien, menu i kafle. I to w zasadzie wszystko. Nie jest to, jak widać szczególnie wdzięczny software do przerabiania pod swoje gusta artystyczne.

Nie mniej jednak ludzie podejmują wyzwanie i całkiem sporo dość ciekawych tematów można znaleźć na lonelymachines.org, oraz box-look.org.

Ikony to zupełnie niezależna rzecz. Każda ikona może być podmieniona. Wybrany motyw ikon zależy oczywiście od upodobań użytkownika.

Na koniec

WMakera wybrałem z kilku powodów:

Wszystkie te cechy plus mini aplikacje (dockapps) sprawiają, że ciężko mi przesiąść się na coś innego, co da mi podobną konfigurację i funkcjonalność, bez zbędnego zamulania sprzętu.

Jedna ciekawa rzecz na koniec: Wydawać by się mogło, że historia zatoczyła koło. Window Maker wzorem NeXTSTEP posiada wertykalny dock z boku ekranu (można go umieścić z prawej lub z lewej strony), Unity z Ubuntu i Gnome3 również posiada coś w ten deseń – choć może bardziej implementacją przypomina dock z Openbox (automatyczne chowanie), jednakże nie zmienia to faktu, że gruby dock z dużymi ikonami wrócił.

I jeszcze jedno. Nie chciałbym, żeby artykuł ten komukolwiek zasugerował, że nie lubię Openboksa, a jestem über WMaker. Nie jest to prawdą, bardzo cenię sobie Openboksa (używam go na notebooku), właściwie to parę lat temu prawie przesiadłem się na niego. Jednakże poziom frustracji związanej zwłaszcza z bezimiennymi ikonami i denerwującym brakiem możliwości swobodnego poruszania się po dialogu pod alt-tab spowodował mój powrót do WMakera.

[1]Istnieje co prawda projekt GNUStep, który ma za zadanie stworzenie wolnej wersji ekosystemu NeXTSTEP, jednakże filozofia działania tego środowiska jest obca w stosunku do popularnej definicji pulpitów, do których przyzwyczaiły nas systemy oparte na dosłownej wizualizacji biurka znanej z Maców i jego późniejszych naśladowców - Amiga Workbench, Atari TOS, Miscrosoft Windows, IRIX, wreszcie KDE czy Gnome.

, Etykiety: linux