Programátoři z pekel zde za šat a stravu programují čipová pseuda. Nyní s favicon!

Customizace dwm (2)

Jsou věci, které v dwm prostřednictvím bashového skriptu nenastavíme. A právě v těchto chvílích přichází na řadu editace zdrojového kódu a následná kompilace.

Jakkoliv to zní hrozně, nejedná se o žádné mrtě krutopřísné hustohackerství, autor totiž distribuci ve formě zdrojáku na svém webu vysloveně doporučuje a tak se snažil udělat konfigurační editace co nejpříjemnější. Všechny vlastnosti, které je možno měnit, proto najdeme uvnitř samostatného souboru.
V adresáři se zdrojovými kódy se prakticky není možné zmýlit, obsahuje totiž souborů, jako ústa kurdějemi stíhaného námořníka zubů, konkrétně sedm. Kromě licence, readme, manuálové stránky, souborů pro make jsou zde už jen dva další – dwm.c a config.def.h. Do prvního z těchto dvou souborů se radši nebudeme pouštět a zaměříme se na druhý.

Už letmý pohled naznačí, že konfigurovat se dá opravdu kde co. První blok nazvaný appearance umožňuje měnit vzhled, konkrétně font. barvy aktivního i neaktivního okna, tloušťku jeho orámování a polohu hlavního pruhu včetně možnosti jeho úplného vypnutí. Zkusil jsem si pro začátek změnit barvu aktivního okna a přehodit lištu z horní části obrazovky na spodní okraj obrazovky:

static const char font[]            = "-*-terminus-medium-r-*-*-14-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#444444";
static const char normbgcolor[]     = "#222222";
static const char normfgcolor[]     = "#bbbbbb";
static const char selbordercolor[]  = "#772299";
static const char selbgcolor[]      = "#772299";
static const char selfgcolor[]      = "#eeeeee";
static const unsigned int borderpx  = 1;
static const unsigned int snap      = 2; 
static const Bool showbar           = True;
static const Bool topbar            = False;


Následuje definic tagů a pravidel pro jednotlivé aplikace (zda má startovat jako tiled, monocle nebo floating, atd), pro vzhled dwm je ale zajímavá sekce layout, která po nich následuje, respektive konkrétně tato její část:

static const float mfact      = 0.65; 
static const int nmaster      = 2;


První řádek totiž říká, jak velkou část obrazovky má zabírat main window, přičemž druhý stanovuje, kolik oken má být jako main označeno. Pokud máte monitor s poměrem stran 5:4, můžete klidně mít jako main dvě okna pod sebou a můžou na šířku zabírat 65% obrazovky. Na dnes tak moderních širokých nudlích – ať už jde o netbooky, notebooky či stolní displeje s poměrem 16:9 – naopak bude vhodnější jen jedno okno main a šířka klidně může být půl na půl, pracovat pak pohodlně půjde v obou.

Zbytek konfiguračního souboru obsahuje definice klávesových zkratek, tedy přesněji činností, které se mají při stisknutí těchto zkratek vykonat. Pro vzhled nejsou moc podstatné, pro pohodlné používání celkem ano. Tak či tak jde o poměrně dlouhý kus kódu, navíc dobře čitelný a tak nemá smysl jej sem kopírovat.

A na závěr ukázka toho, jak vypadají výše popsané modifikace konfiguračního souboru na mém PowerMacu G5:

PowerMac_G5dual-2012_08_09.png

Vcelku pohodlne je možné například ve dvou terminálech v hlavních oknech psát a zároveň zkoušet nějaký zdroják a ve dvou vedlejších oknech vést jabberový rozhovor a sledovat jabberový roster, to vše na jedné obrazovce bez přepínání na jiný tag. Nebo je možné si na jednu obrazovku nasázet dva IRC klienty a dvě jabberová okna a na jiné pracovat. Okenní správce dwm je prostě mocný program a to i přes svých 33kB, které po zkompilování má.