Monthly Archives: May 2011

awesome: Laptop Batteriestatus anzeigen

Hier ein weiterer Tipp für awesome: der Laptop Batteriestatus soll angezeigt werden. Zuerst kopiert man das von mir gestern programmierte Tool cbatt nach /home/name/cbatt.sh, dann trägt man folgendes in der rc.lua ein:

mybattmon = widget({ type = "textbox", name = "mybattmon", align = "right" })
function battery_status ()
        local fd=io.popen("/home/name/cbatt.sh", "r")
        local line=fd:read()
        return line
end
 
mybattmon.text = " " .. battery_status() .. " "
my_battmon_timer=timer({timeout=30})
my_battmon_timer:add_signal("timeout", function()
    mybattmon.text = " " .. battery_status() .. " "
end)
my_battmon_timer:start()

Unter mywibox[s].widgets = { … } fügt man dann noch an der gewünschten Stelle mybattmon hinzu, und fertig ist die Chose. Der Timeout legt fest, wie oft das Script aufgerufen wird; jede Sekunde wäre m.A. arg übertrieben und verkürzt die Akkulaufzeit sicherlich.

Wer wie im Vorpost mehrere Rechner hat, und die Batterieanzeige z.B. nur auf dem Laptop anzeigen will, nutzt folgenden Schnippsel um das Ganze zu erweitern:

    -- hostname auslesen
    a=io.popen("uname -n");
    io.input(a)
    if io.read() == "laptop" then
    	batt=1
    end
 
    -- Add widgets to the wibox - order matters
    mywibox[s].widgets = {
        {
            mylauncher,
            mytaglist[s],
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],
        mytextclock,
	batt == 1 and mybattmon,		-- Batterie nur beim richtigen Host hinzufügen
        s == 1 and mysystray or nil,
        mytasklist[s],
        layout = awful.widget.layout.horizontal.rightleft
    }

awesome: individuelle Hintergrundbilder pro Host

Wer sein ~ in einem Versionskontrollsystem wie z.B. git pflegt, trackt damit seine gesamten Daten, um z.B. auf verschiedenen Rechnern immer gleiche Datenbestände incl. Versionierung zu haben. Das Problem dabei ist, dass der Windowmanager (hier: awesome) für die verschiedenen Geräte ggfs. auch andere Einstellungen braucht, z.B. für das Hintergrundbild. Über den uname des Systems kann man einfach unterscheiden, wo das Script grade aktuell ausgeführt wird und erspart sich das Pflegen von 2 Konfigurationen. Hierzu erstellt man z.B. unter Gentoo die ~/.config/awesome/theme.lua wie folgt:

theme_path = "/usr/share/awesome/themes/default/theme.lua"
theme = dofile(theme_path)
a=io.popen("uname -n");
io.input(a)
 
if io.read() == "laptop" then
theme.wallpaper_cmd = { "awsetbg /home/user/real_1280x800.jpg" }
else
theme.wallpaper_cmd = { "awsetbg /home/user/real_1920x1280.jpg" }
end
 
return theme

Voila – es wird immer das korrekt dimensionierte Wallpaper geladen.

Linuxtag

Linux Tag LogoMittwoch ist es soweit: der Linuxtag beginnt! Das Programm kann sich meiner Meinung nach wie immer sehen lassen, persönlich finde ich Donnerstag und Freitag am Interessantesten und werde dann auch mit einem Kollegen vor Ort sein.

Hoffentlich ist zwischen den ganzen Vorträgen auch genügend Zeit dafür, etwas am Gentoo-Stand vorbeizuschauen…

Linux Kernel Regression mit git finden

Falls man nach einem Kernel Upgrade plötzlich Probleme bekommt und googlen nicht mehr hilft, muss man ggfs. selbst herausfinden, warum nun etwas nicht mehr funktioniert. Herzlichen Glückwunsch: eine typische Kernel Regression. Zuerst laden wir einmal die neuste Kernelversion aus dem git Repository von kernel.org ins passende Verzeichnis:

cd /usr/src
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6

Zeit für einen Kaffee! Nachdem wir die etwa 600MB runtergeladen haben, sagen wir git nun, dass wir einen Fehler “bisect”-en wollen. Hierbei wird eine Binäre Suche durchgeführt, denn mehrere hundert bis tausend Kernel-Commits wollen effizient ausgetestet werden. Dafür sagt man dem Kernel, welche Version noch gut war und welche schlecht:

git bisect start
git bisect good v2.6.36
git bisect bad v2.6.37

Continue reading