Za jídlo, šaty a vzduch otročíme na programech z temných světů

Customizace dwm (1)

Jelikož dwm nemá žádné konfigurační soubory, mohlo by se zdát, že jej není možné přizpůsobit potřebám a vkusu konkrétního uživatele. Opak je ale pravdou. Je možné konfigurovat jej hned dvěma způsoby – pomocí bashového skriptu nebo modifikací zdrojového kódu. Dneska se podíváme na první způsob.

Na dovolené jsem se s dwm seznámil opravdu důkladně a musím říct, že nevidím důvod někdy používat něco jiného. Opravdová závislost se pozná zejména tak, že i když sedím u Maca nebo Windows, stále mačkám klávesové zkratky dwm a divím se, že nic nedělají. Ovšem i v tak minimalistickém prostředí, jakým je dwm člověk zatouží po nějaké té personalizaci.

Prvním bodem je rozhodně wallpaper. V dwm si není tapetu jak nastavit, ovšem na druhou stranu akceptuje nastavení root okna provedené jiným programem, takže je možné použít treba oblíbený feh a zařadit ho do skriptu .xinitrc.

Horní lišta kromě seznamu tagů, ukazatele zvoleného typu rozložení oken a titulku aktuálně používaného programu v pravé části zobrazuje i titulek root okna. Po prvních deseti sekundách vás pravděpodobně omrzí koukat na číslo verze dwm, která je tam jako default a začnete bádat, co by tam mohlo být místo ní. S pomocí příkazu xsetroot do lišty dostanete cokoliv, co jen zvládne vytvořit vaše skriptovací fantazie. Já jsem si tam dal aktuální IP adresu, stav baterie, zatížení systému, datum a čas. Vše je opět vyřešeno v rámci .xinitrc, zobrazovaný text se obnovuje s periodou dvaceti sekund – nejde tedy vysloveně o realtime údaje, ale o dobrý kompromis mezi aktuálností a spotřebovaným výkonem.


#!/bin/bash
feh --bg-center Pictures/wallpaper_freescale.png
while true
do
	LOCALTIME=$(date "+%d.%m.%Y | %H:%M")
	IP=$(for i in `ip r`; do echo $i; done | grep -A 1 src | tail -n1) 
	LOADAVG=$(cat /proc/loadavg)
	LOAD=${LOADAVG:0:14}
	BFULL=$(cat /sys/bus/i2c/devices/1-000b/power_supply/battery/charge_full)
	BNOW=$(cat /sys/bus/i2c/devices/1-000b/power_supply/battery/charge_now)
	BATT=$(eval "echo 'scale=4;$BNOW/$BFULL*100'|bc")
	BATT=$(eval "echo 'scale=0;$BATT/1'|bc")
	xsetroot -name "$IP | $BATT% | $LOAD | $LOCALTIME"
	sleep 20s
done &
exec dwm

Některé části souboru jsem použil z ukázkových .xinitrc, nalezených volně na internetu. Výpočet stavu baterie je specifický pro Efika MX Smartbook, na PC laptopech pravděpodobně nepochodíte. A jak to ve výsledku vypadá?

Efika_MX_Smartbook_Debian-2012_07_27.png

Takhle vypadá aktuálně desktop mojí Efiky. Velmi podobně mám nastaveno dwm i na PowerBooku G3. Ovšem skriptováním nejde udělat vše a na modifikaci zdrojáku se podíváme příště.