DWM

Kategorie: X - správci oken

Dwm je dynamický správce oken pro X. Rozložení zobrazení oken je rovněž dynamické a zobrazuje se v závislosti na aplikacích a úlohách. Je malý, lehký a má minimalistický kód. Nastavení programu se provádí jeho kompilací, tedy je pevné.

Rozložení oken

DWM ovládá okna v režimech:

  • dlaždice []
  • plovoucí ><>
  • monokl [M]

V dlaždicovém rozložení jsou okna dělena do hlavní a stohovatelné oblasti. Hlavní oblast obsahuje okna vyžadující nejvíce pozornosti a stohovatelná část obsahuje všechna ostatní okna. V plovoucím rozložení se mohou okna pohybovat volně a mít libovolnou velikost. V rozložení monoklu jsou okna zvětšena na velikost obrazovky. Dialogová okna jsou vždy plovoucí bez ohledu na aktivní rozložení.

Okna jsou seskupována pomocí tagů. Každé okno může být označeno s jedním nebo více tagy. Výběrem nějakého tagu se zobrazí všechna okna s těmito tagy.

Každá obrazovka obsahuje malý panel, který ukazuje všechny dostupné tagy, rozložení, název aktuálního okna a text zobrazený ze jména okna. Plovoucí okno je zobrazeno prázdným čtverečkem a maximalizované plovoucí okno prezentuje vyplněný čtvereček před názvem okna. Vybrané tagy jsou barevně odlišené. Tagy zaměřených oken jsou označeny vyplněným čtverečkem v horním levém rohu, zatímco tagy aplikované do jednoho nebo více oken jsou označeny prázdným čtverečkem.

Nastavení

Nastavení dwm se provádí pouze při vlastní kompilaci programu a tedy jen jednou při instalaci. Hlavní nastavení je v souboru config.h a výchozí nastavení v souboru config.def.h.

config.def.h
config.h

Moje nastavení

Dwm používám na zařízení Raspberry, kde se mi neosvědčilo Awesome z důvodu nekompatibility i nároků. Můj konfigurační soubor používám pro verzi 6.1. Konfigurační soubor config.h vložíme do adresáře s rozbaleným zdrojovým kódem a doupravíme dle svého gusta, pak můžeme program zkompilovat.

Konfigurace spolupracuje s:

  • amixer
  • Cmus
  • Dmenu
  • Firefox
  • PCManFM
  • xsetroot
  • Xterm

Vzhled

Lišta

Výchozí barvy jsou modrá a tmavě šedá, pozadí mám rád črné. Pro monitoring systému používám Conky. Pro nastavení barev používáme HTML notaci.

/* appearance */
static const unsigned int borderpx  = 2;        /* border pixel of windows */
static const unsigned int snap      = 80;       /* snap pixel */
static const int showbar            = 1;        /* 0 means no bar */
static const int topbar             = 1;        /* 0 means bottom bar */
static const char *fonts[]          = { "monospace:size=10" };
static const char dmenufont[]       = "monospace:size=10";
static const unsigned int systraypinning = 0;   /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
static const unsigned int systrayspacing = 2;   /* systray spacing */
static const int systraypinningfailfirst = 1;   /* 1: if pinning fails, display systray on the first monitor, 0: display systray on the last monitor*/
static const char col_gray1[]       = "#222222";
static const char col_gray2[]       = "#444444";
static const char col_gray3[]       = "#bbbbbb";
static const char col_gray4[]       = "#eeeeee";
static const char col_cyan[]        = "#0077ff";
static const char *colors[][3]      = {
	/*               fg         bg         border   */
	[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
};

Zkratky podle mého gusta

Jako hlavní klávesu modkey pro zkratky jsem nastavil windowsácké tlačítko, které se značí Mod4Mask, vyskytuje se asi na všech klávesnicích.


  • modkey + r spouštěč Dmenu
  • modkey + return emulátor terminálu Xterm
  • modkey F1 správce souborů PCManFM
  • modkey + F2 prohlížeč webu Firefox
  • modkey + F3 hudební přehávač Cmus v terminálu Xterm
  • modkey + Escape seznam aplikací v PCManFM
  • modkey + semicolon (;) všechny tagy
  • modkey + b schovaný panel
  • modkey + space přepnutí režimu zobrazení
  • modkey + 1-9 přepnutí na tag

Čas

Při kliknutí levým tlačítkem na čas v pravém horním rohu se otevře terminál a při pokliku pravým tlačítkem se spustí správce souborů.

Čas na liště

Text, který se zobrazí na liště, ovládáme pomocí nástroje xsetroot. Do souboru .xinitrc musíme napsat následující řádky:

while true; do
	xsetroot -name "$(date "+%Y-%m-%d %H:%M" )"
	sleep 60
done &amp;

Aplikace patchů

Patche jsou úpravy a vylepšení, které je možné zahrnout při instalaci/kompilaci.

Používám patch useless_gap pro mezery mezi klienty, okna jsou tak úhledněji rozdělena a výsledek je hezčí.

Patchování Gitem

Git je verzovací nástroj, mimojiné dovede aplikovat i patche. V mém případě patch na dwm budeme aplikovat takhle:

  1. Musí být nainstalovaný GIT
  2. Musíme být přímo v adresáři se zdrojovým kódem dwm
  3. Zadáme:git apply cesta/pro/patch.diff
  4. Patch je aplikovaný, můžeme kompilovat.

Nástroj patch

Jestliže chci aplikovat více patchů, volím nástroj patch, který zvládne zavést i více patchů.

patch < /cesta/k/patchi