OK, czas na część pierwszą. Najpierw: skombinowanie źródeł. Polecam jak najnowsze, serię 2.5.x, dobrze jeśli z CVS :) http://www.fvwm.org/
Kompilacja jak kto lubi, ale warto mieć Xft w X-ach i libpng, bo pozwalają trochę upiększyć ten WM. No i libstroke, ze względu na większe możliwości skonfigurowania myszy. I perla, ze względu na integrację fvwm/perl (choć to nie jest konieczne, jeśli nie zamierza się pisać/używać modułów w perlu)
Jeśli ma się mysz która ma więcej niż 3 klawisze + rolka, to w libs/default.h trzeba odpowiednio zmienić linijkę:
#define NUMBER_OF_MOUSE_BUTTONS 5
na jakąś wyższą wartość. Tzn. nie jest to konieczne, ale fvwm przestanie sypać ostrzeżeniami przy przypisywaniu funkcji do wyższych klawiszy myszy.
No dobra, załóżmy że ten fvwm jest już skompilowany i zainstalowany. Co dalej? Trzeba mu stworzyć jakąś konfigurację. Można go po prostu uruchomić i wybrać jakąś "Setup form" z domyślnego menu, odpowiedzieć na kilka pytań i się cieszyć :) ale ja zalecam napisanie sobie wszystkiego od podstaw. Jest to, co prawda, kłopotliwe, ale daje sporo wiedzy/umiejętności/obycia które się później nie raz przyda.
Od czego zacząć... opis modułów czy robienie theme... Może najpierw opiszę szybko dostępne moduły (kto zna AfterStep poczuje się jak w domu):
- FvwmAnimate
- dodaje efekty "animacji" akcjom (od)ikonifikowania okien. Istnieje 6 różnych efektów, wyglądają trochę jak te z WindowMakera.
- FvwmAudio/FvwmEvent
- Kiedyś istniał tylko FvwmAudio, potem pojawił się potężniejszy FvwmEvent. Obecnie FvwmAudio to tylko symlink do FvwmEvent. Ten moduł pozwala podczepić jakąś funkcję pod "event" WM. "Events" to klasyczne zdarzenia: zmiana pulpitu/biurka, zamknięcie okna, pojawienie się gdzieś jakiegoś określonego okna, start fvwm, zmiana focusu lub wprowadzenie kursora do okna (te dwa ostatnie nie są równoważne). Najbardziej oczywiste co można tym zrobić, to odtwarzać dźwięki "zdarzeń". Ale tak naprawdę zastosowanie FvwmEvent zależy tylko od fantazji użytkownika. Jeśli przy kompilacji fvwm wykrył bibliotekę rplay, to FvwmEvent potrafi odtwarzać dźwięki "wewnętrznie" właśnie przez rplay - odpada potrzeba uruchamiania "play" czy "esdplay".
- FvwmAuto
- AutoRaise, w wydaniu fvwm. Moduł rozpoznaje zdarzenia wejścia kursora do okna, w połączeniu z przeniesieniem fokusu lub bez, i po zadanym czasie wykonuje jakąś akcję na rzeczonym oknie. Domyślnie robi "raise". Potrafi też przeprowadzić przy okazji operację na oknie, z którego został przeniesiony kursor myszy.
- FvwmBacker
- Prosty moduł który zmienia tapetę po zmianie biurka. IMO bezużyteczny :)
- FvwmBanner
- Wyświetla banner (dowolny obrazek) w "root window" przez kilka sekund i kończy pracę. Ot, zabawka. IMO nieprzydatna.
- FvwmButtons
- Tworzy "panel" z przyciskami, kliknięcie na przycisku wywołuje jakąś funkcję. Niezbyt przydatne w WM który ma silne mechanizmy menu... Jego główna zaleta - potrafi "połknąć" inne okna, więc może działać jako "pudełko" na dockapps. Jako nowość w wersji 2.5.x potrafi mieć pod jednym przyciskiem i akcję, i "połknięcie" - mam przycisk "wmnet", klikam go, i na jego miejscu pojawia się okienko wmnet. Fvwm 2.4 tego chyba nie umie...
- FvwmCascade/FvwmTile/FvwmRearrange
- To w zasadzie jeden moduł. Wywołanie tego modułu układa okna w trybie "tile" lub "cascade", oczywiście jak zwykle konfigurowalne. Nie używam, to nie opiszę dokładniej.
- FvwmCommand
- To osobny program, współpracuje z modułem FvwmCommandS. Dzięki niemu można podawać fvwm wiersze poleceń do wykonania. Miłe, ale do pracy interaktywnej lepsze jest...
- FvwmConsole
- ...to właśnie. Po wywołaniu pojawia się okienko przypominające xterm, w którym można podawać polecenia fvwm. Jeśli mamy libreadline, to dostępna jest historia, przeszukiwanie itp. (nie, tab completion nie ma).
- FvwmCpp
- Moduł preprocesora. Dzięki niemu konfiguracje fvwm można pisać w czymś, co będzie "w locie" przetworzone przez Cpp (C preprocessor). Przydatne jeśli ma się bardzo złożone, zautomatyzowane konfigi. Można wtedy je uprościć używając makr itp.
- FvwmM4
- To samo, co poprzednik, tyle że zamiast Cpp używa M4. Jak kto woli, ja nie używam żadnego z nich.
- FvwmDebug
- Moduł który wywala dużo informacji diagnostycznych na stderr. Przydatne tylko hakerom fvwm albo ludziom piszącym moduły.
- FvwmGtkDebug
- To samo, tyle że wyjście idzie do interaktywnej aplikacji Gtk.
- FvwmDragWell
- "Studnia" XDND (X Drag'n'Drop). Do pracującego modułu wysyła się specjalne sekwencje sterujące, a wtedy z jego okienka można przeciągnąć "obiekt" XDND który tym danym odpowiada i wrzucić do jakiejś aplikacji. Nie wiem komu to potrzebne było, no ale jest.
- FvwmForm
- Moduł tworzący proste formularze - graficzne okienka z tekstem, przyciskami, wejściem tekstowym itp. 5 gatunków widgetów, z wyglądu przypominających tcl/tk. Można dzięki temu stworzć np. okienko potwierdzenia zamknięcia okna czy coś równie głupiutkiego.
- FvwmIconBox
- Otwiera okienko w którym mogą lądować ikonki ikonifikowanych okien. Najbliżej chyba mu do IconBox w Enlightenment, choć nie jest oczywiście tak ładne. Można mieć kilka sztuk uruchomionych, każda może wyłapywać co innego/inaczej wyglądać.
- FvwmIconMan
- Lista okienek. Określa się liczbę kolumn/wierszy, kierunek w którym to ma rosnąć, wyświetlane informacje, kojarzy "akcje" jakimi coś się wywołuje, cośtam, cośtam. Ze względu na dużą dowolność trudno to ładnie opisać. Ja długo używałem tego jako listy zminimalizowanych okien, minimalizowałem okno to pojawiała się nowa pozycja. Uformowałem to w ładny, pionowy słupek pociągnięty fioletowo-czarnym gradientem. To było zaraz po mojej przesiadce z Sawfisha i byłem wtedy przyzwyczajony do "stuningowanej" listy okien Merlina. Ale już mi przeszło ;)
- FvwmIdent
- Wyświetla małe okienko identyfikacyjne z informacjami o jakimś oknie. Title, Class, Id, Hints, etc.
- FvwmPager
- Pager. Domyślnie wygląda trochę jak bbpager, ale można włączyć używanie ikonek zamiast "okienek". Ogólnie - może być bardzo przydatny i ładny, tylko trzeba się przyłożyć do konfiguracji. I mieć POMYSŁ, bo to jest w fvwm najważniejsze.
- FvwmPerl
- Za manualem:
This module is intended to extend fvwm commands with the perl scripting power. It enables to embed perl expressions in the fvwmrc files and construct fvwm commands.
Nie używałem jeszcze. Pojawił się w gałęzi 2.5.x, OIDP. - FvwmProxy
- Małe proxy-okienka pomagające zorientować się w bałaganie na biurku. Ciężko opisać, najłatwiej po prostu obejrzeć.
- FvwmSave
- Znowu, za manualem:
> When called, this module will attempt to save your current desktop layout into a file called new.xinitrc. Ideally, this file will look just like .xinitrc, but in reality, you will have to edit it to get a usable configuration, so be sure to keep a backup of your old .xinitrc.
> Your applications must supply certain hints to the X window system. Emacs, for example, does not, so FvwmSave can't get any information from it.
Also, FvwmSave assumes that certain command line options are globally accepted by applications, which may not be the case.
Mi niepotrzebne... - FvwmSaveDesk
- To samo, co powyżej, tyle że konfiguracja jest przetwarzana na język konfiguracji fvwm.
- FvwmScript
- Coś jak FvwmForm, tyle że bardziej przypakowane.
- FvwmScroll
- Ciekawostka, na żądanie dodaje "scrollbars" do dowolnego okienka. Pewnie można znaleźć dla tego zastosowanie, ale mi się nie chce.
- FvwmTalk
- Tak naprawdę to nie jest moduł, ale wrapper używający FvwmForm i FvwmCommand do podawania poleceń fvwm. Zdetronizowane przez FvwmConsole.
- FvwmTaskBar
- No, taskbar. Z "menu Start", przyciskami etc.
- FvwmTheme
- Moduł który obsługiwał "Colorsets". "Colorset" to taka Fvwm-owska abstrakcja tekstury. Colorset to połączenie koloru tła, koloru pierwszoplanowego, koloru cienia, etc, albo jakiś gradient, albo piksmapa. Napisałem "obsługiwał", bo w gałęzi 2.5.x jego funkcjonalność jest już włączona w główny program. I dodatkowo został rozszerzony o obsługiwanie piksmap. Można mieć zdefiniowane dowolnie wiele "colorsets", to jedynie zżera pamięć. Odwołuje się do nich po numerkach. Potem określa się np., że FvwmPager jako tło aktywnego pulpitu ma używać colorsetu nr. 17, a sam Pager ma już głęboko w Legionie czy ten colorset to kolor buraczkowy, 300-kolorowy gradient, czy też może jakaś rozciągnięta piksmapa. Chociaż sam moduł jest już nieaktualny, to jego manual ciągle zawiera nieco informacji które nie wywędrowały jeszcze do głównego manuala.
- FvwmWharf
- AfterStepowy "dock" sportowany do Fvwm. Przyciski do uruchamiania programów, połykanie okien, i "foldery", czyli wysuwane listwy z dodatkowymi ikonami/przyciskami.
- FvwmWinList
- Lista okien. E, znowu? Nudyyy...
- FvwmWindowLister
- Lista okien. Deja vu? Młody moduł, pisany w perlu. Dobry materiał jeśli chce się sobie coś własnego, bardzo ekstrawaganckiego wystrugać.
Każdy użyty moduł powoduje wzrost zajętości ramu, co trzeba uwzględniać jeśli nie ma się go zbyt wiele. To tak samo jak z bb i bbtools, albo WindowMaker i dockapps. Jeśli się przedobrzy, to z malutkiego WM wyjdzie kobyła większa od sawfisha.
Ech, tutaj miały pójść instrukcje dotyczące budowania dekoracji okna. To pierwszy krok jaki trzeba wykonać, by ten WM przestał odstraszać. Miałem w planach pokazać, jak zbudować 2 style - Mozilla-modern, którego samemu używam, i Crux, bo wykorzysta się tutaj 2 szkoły budowania dekoracji paska tytułowego. Ale to następnym razem, bo opisywanie modułów się zbytnio rozrosło.