Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Managery okien, cz. 4] dwm i kumple

Czym byłaby seria wpisów o managerach okien bez dwma i jego pochodnych? Pisałem już kiedyś o awesome, ale takich managerów jest więcej (wbrew przesadnie onetowemu tytułowi tamtego wpisu...). Omówię je raczej powierzchownie, nie miałem czasu by je wszystkie dogłębnie przetestować. Skupię się na najbardziej widocznych różnicach.

Cechy wspólne

Wszystkie managery wywodzące się z dwm są dość charakterystyczne:
- okna są rozmieszczane w pełni automatycznie. Jest kilka układów, które można zmieniać, można zamieniać okna miejscami i można w pewnym stopniu zmieniać ich proporcje. To tyle, reszta dzieje się sama,
- raczej nie mają graficznych konfiguratorów - przeważnie używa się plików konfiguracyjnych pisanych w poważnych językach programowania. Daje to bardzo duże możliwości konfiguracyjne,
- nacisk jest położony na obsługę klawiaturą.

Bez wnikania w szczegóły, dwmoidy różnią się między sobą głównie językiem w jakim się je konfiguruje i często paskiem informacyjnym.

dwm

Konfiguracja dwm to zwykły C. Język dość powszechnie znany, przez co myślę, że wiele osób szybko się w niej odnajdzie. Niespodzianek większych nie ma. W jednej tablicy są zapisane klawisze, w drugiej - elementy paska z informacjami, w jeszcze innej - lista tagów. Podejrzewam, że nawet bez wcześniejszej znajomości C, dałoby się zmienić podstawowe rzeczy.

Po modyfikacji tego pliku trzeba przekompilować dwm, co niestety nie jest w żaden sposób uproszczone, jak np. w xmonadzie. Przeżyć można, ale nie jest to najwygodniejsze rozwiązanie. Pewnie dałoby się coś naskrobać w konfigu, żeby to uprościć, ale jakoś mi nie zależało, skoro i tak jedynie testowałem dwm na potrzeby tego wpisu.

Podsumowując, dwm spełnia swoje zadanie jako manager okien i to chyba tyle, ale za to pod względem lekkości nie ma sobie równych.

xmonad

Główną atrakcją xmonada jest język w jakim go napisano - Haskell. Dość ciekawy wybór. Haskella znam w stopniu, powiedzmy, pół-podstawowym, ale mniej więcej rozumiałem co się tam dzieje. Jeśli ktoś nigdy nie widział na oczy Haskella, może mieć na początku problemy, bo to zupełnie inna filozofia niż ta stosowana w popularnych językach typu C, Java, Perl czy Python. Zastosowanie Haskella ma jeszcze jedną wadę - trzeba zainstalować GHC, kompilator Haskella. Ponad pół gigabajta dla minimalistycznego managera okien to dość dużo. Mimo wszystko, można się spodziewać, że ktoś, kto się decyduje na xmonad, ma już zainstalowany GHC.

By przekompilować plik konfiguracyjny wystarczy wcisnąć odpowiednią kombinację klawiszy i chwilę poczekać. Jeśli były jakieś błędy, xmonad uruchomi się z domyślnym konfigiem, dzięki czemu raczej nie "zbrickujemy" sobie managera okien. Podobne rozwiązanie jak w opisywanym przeze mnie ostatnio i3.

xmobar, który jest wykorzystywany jako pasek zadań, wydaje się mieć spore możliwości, ale nie miałem czasu by się z nim bardziej pobawić.
Tego akurat nie sprawdzałem, ale podobno dokumentacja xmonada jest dłuższa niż jego kod. Całkiem imponujące, niezależnie od tego czy to kod jest krótki, czy dokumentacja długa. ;)

xmonad sprawia wrażenie bardzo potężnego, ale trudnego w opanowaniu. Głównie za sprawą Haskella, ale to raczej kwestia znajomości języka.

UPDATE 24.05.2012: No i przeczucie mnie nie zawiodło. Bardzo skrzywdziłem XMonada powyższym opisem. Jak znajdę wolną chwilę (czytaj: po sesji, czyli koło lipca), to naskrobię erratę aka piątą część cyklu o managerach okien. Note to self: nie pisać o rzeczach, które znam słabo.

awesome

Językiem wykorzystywanym w awesome jest Lua. Przed poznaniem awesome nic nigdy nie pisałem w Lua. Mimo to, byłem w stanie zmienić to i owo, a z czasem nauczyłem się podstaw tego języka jedynie eksperymentując z awesome.

Z drugiej strony, domyślny konfig jest mocno chaotyczny i nie zawsze łatwo się szuka fragmentów odpowiedzialnych za dane rzeczy.
Jeśli chodzi o pasek, jest kilka niezależnych wtyczek do tworzenia widgetów na nim. Ja używałem Vicious i nie narzekałem. Proste w obsłudze i robiło to co kazałem. Czego chcieć więcej?

Przeładowanie konfiguracji jest błyskawiczne - Lua to język interpretowany. Niestety nie ma żadnych ostrzeżeń o błędach. Jeśli coś popsujemy, to dalsza część konfigu się nie wczytuje. Jeśli skrót odpowiedzialny za restart się już załadował to pół biedy, gorzej gdy błąd jest na początku pliku i de facto pracujemy na gołych Xach.

Z tej trójki awesome to najcięższy manager, ale oczywiście nie może się równać z KDE czy GNOME.

scrotwm

scrotwm nie zapadł mi szczególnie w pamięć. Konfiguracja była zwykłą listą opcji, jak w i3. Cech szczególnych nie zauważyłem. Melduję, że testowałem, nic poza tym.

Co dalej?

Zachęcam do komentowania i wytykania mi przeoczeń, chętnie dopiszę to i owo, zwłaszcza, że temat zaledwie musnąłem. Chętnie posłucham co mają do powiedzenia bardziej doświadczeni użytkownicy. Zróbmy z tego taki eksperymentalny wpis zbiorowy. 

linux oprogramowanie

Komentarze

0 nowych
4lpha   9 #1 13.09.2011 20:09

Bardzo lubię Twoje wpisy.

Będę musiał w końcu się zmusić do przetestowania tych środowisk, ale tak mi ciężko ruszyć dupy z GNOME, KDE, LXDE i XFCE ;)
Na razie migruję pomiędzy tymi czterema.

4lpha   9 #2 13.09.2011 20:10

A konfiguracja dwm mnie przeraża. Uczę się dopiero C++, więc z konfiguracją bym sobie raczej nie poradził :/

webnull   9 #3 13.09.2011 20:26

No to co, piszemy menadżera okien w Pythonie? :D

4lpha   9 #4 13.09.2011 20:57

@webnull | 13.09.2011 20:26
Taki kozak, to napisz WM w Malbolge lub Brainfuck :D

Masz na tyle umiejętności, by napisać swój WM?

4lpha   9 #5 13.09.2011 21:10

BTW. Z ręką na sercu mówię, że jutro biorę się za ceplusplusa. Trzeba w końcu coś napisać.

webnull   9 #6 13.09.2011 22:17
webnull   9 #7 13.09.2011 22:18

Ale PS. To był żart ;-)

etam   9 #8 13.09.2011 23:14

tinywm: http://incise.org/tinywm.html
Absolutnie najlżejszy WM. Ma dwie analogiczne wersje: w C i w Pythonie. Żadnej konfiguracji, żadnych zbędnych zbędności, absolutne minimum.

4lpha   9 #9 13.09.2011 23:16

@webnull
Ty i XeonBloomfield bardzo motywujecie mnie do działania (nauka programowania, itp. ). Mam prawie kompleksy. Też chcę być pr0 haxor ;)
Dzięki!

4lpha   9 #10 13.09.2011 23:25

@etam
A twm? Brzydactwo jakich mało. I raczej lekkie.

Vifon   5 #11 14.09.2011 02:11

Łorany! I jak ja mam się połapać w tylu komentarzach na godzinę? ;)
Po kolei, notacja slice'ów Perla, jakby kto pytał.

@sunbeam96[0,1]
Tak jak pisałem - skonfiguruje to raczej każdy myślący człowiek. Podmienić A na B w miejscu C czy napisać D na bazie E to nie problem. Póki nie szalejesz, powinno być dobrze.

@webnull[0]
Na Twoim miejscu bym się brał za wmii, które wydaje mi się, że Cię zainteresowało we wpisie o nim. Całkiem miłe API pythonowe, więc w sam raz dla Ciebie. Jak napiszesz własny parser eventów, to prawie jak własny manager okien, poziom kontroli podobny. Ja próbowałem w Perlu i nawet prawieczasemdziałał, ale czegoś nie mogłem rozgryźć i jednak się uczę Pythona modyfikując config dołączony do wmii (mam deja vu - awesome i Lua).

@sunbeam96[3,4]
Jak chcesz, to wypróbuj reklamowany tu przeze mnie kiedyś vfnmake. Sporo ułatwia na początku.
coughdarmowibetatesterzycough ;)

@etam
Niecałe 60 linijek kodu?! Wygląda co najmniej interesująco. Może nie do używania, ale jako ciekawostka na pewno.

  #12 14.09.2011 09:22

O TinyWM pisał swego czasu mati75 http://dug.net.pl/tekst/133/tinywm___najlzejszy_menadzer_okien_na_swiecie/

Twm do "lekkich managerów" wcale nie należał, dlatego powstał fvwm. Obecnie to już inna historia.

Jeśli opisujesz dynamiczne managery to w następnym wpisie warto wspomnieć o ich "substytutach" czyli nakładkach na zwykłe menagery, które umożliwiają dynamiczne zarządzanie oknami np. PyTyle, stiler czy też Python Window Organizer (PyWO).

Warto także wspomnieć o WMFS- Window Manager From Scratch. Dynamicznie rozwijanym managerze z grupy "... i kumple" ;)

mati75   6 #13 14.09.2011 21:03

@Vifon
Masz w planach opisz jakiś jeszcze menadżerów z tej grupy, bo mam w planach opis kilku rodzynków mało znanych, żebyśmy nie opisywali tego samego.

@etam
Po prawie roku używania powiem Ci, że ma wady ten bardzo skrajny minimalizm.

Vifon   5 #14 15.09.2011 01:12

@mati75
Z przykrością oznajmiam, że skończyły mi się na razie pomysły (z tych managerów, które mnie zainteresowały, bo tak to przeglądałem ich spooooooro więcej), więc pisz śmiało. ;)

  #15 13.10.2011 11:40

Ja używam xmonada. Właściwie to jedyny WM, który mi się nie nudzi. Jest po prostu tak wygodny, że przesiadając się na chwilę na coś innego nie idzie się nie irytować. Podobna zależność jest z vimem :) Jakby ktoś miał problemy z xmonadem i xmobarem na wielu monitorach to zapraszam tutaj: http://karolsamborski.blogspot.com/2011/10/xmonad-i-xmobar-na-wielu-monitorach.html