Server down!
Oops....gestern Abend war der Server hier down, scheint nun aber schon wieder ein paar Stunden zu laufen. Dank init.d und monit lief auch gleich alles wieder so wie es soll :) (bis auf mein irssi, das soll aber so).
Im Forum von netcup stand gestern, dass wohl der ganze Node down war, ich werd aber jetzt auch nochmal nachgucken, ob ich mehr Infos krieg.
3dsupply verschenkt T-Shirts
Durch bebl hab ich gerade erfahren, dass 3dSupply mal wieder eine coole Aktion startet, wo dann auch noch T-Shirts verschenkt werden.
Dabei kann man sich diesmal das T-Shirt sogar selbst aussuchen, ich habe mich spontan für "Have you tried turning it off and on again?" (ein Zitat aus "The IT Crowd") entschieden, welches man hier findet:

Wer selbst ein Blog besitzt, kann natürlich auch mitmachen und ein tolles T-Shirt absahnen ;)
Links 1
Zig Links im Blog? Für mich sind sie gleichzeitig eine Möglichkeit für mich, diese Links irgendwo zu speichern. Zum anderen kann ich aber so interessante im Netz gefundene Sachen verlinken.
Die nun hier präsentierten Links sind teilweise nicht ganz neu, aber nichts desto trotz interessant.
OpenSSL 1.0 und Ruby 1.8.7
Am 29. März wurde OpenSSL in Version 1.0 veröffentlicht.
Arch Linux hat die aktuelle Version nun seit 3 Tagen in den offiziellen Repos. Damit einhergehend mussten zahlreiche gegen OpenSSL gelinkte Pakete neu gebaut werden.
Das ganze lief auch problemlos ab, alle Pakete wurden auch bei mir erfolgreich aktualisiert.
Nur bei den selbstkompilierten Paketen hatte ich dann natürlich Probleme. Das Problem mit Mutt erledigte sich schnell, im AUR findet sich schon ein Patch dazu.
Da bei Arch Linux inzwischen Ruby 1.9.1 als offizielle Version in den Repos ist, habe ich mir Ruby 1.8.7 selbst kompiliert. Das wollte aber auf Anhieb nicht neu kompilieren, es trat ein ähnlicher Fehler auf, wie schon bei Mutt. Aber genau das hab ich jetzt auch erfolgreich weggepatcht.
Nun läuft hier wieder Ruby 1.8.7-p249, gelinkt gegen OpenSSL 1.0
Und damit auch andere was davon haben, hier das PKGBUILD und der Patch:
Edit: irgendwas hab ich kaputt gemacht.
Ich glaub, dass könnt ich auch nochmal ins AUR stellen.
i3-ipc
Endlich komm ich mal dazu über mein neuestes Projekt zu bloggen.
Seit längerem gibt es das IPC-Interface bei i3, mit dem Commit 3db4890 unterstützt das i3 IPC-Interface nun auch Events.
Seit dem das IPC-Interface eingebaut ist, gibt es auch i3-msg, ein kleines Clientprogramm, was Kommandos an den Fenstermanager sendet.
Da die Interprozesskommunikation aber über ein einfaches UNIX Domain Socket funktioniert, ist es ein leichtes Clients dafür zu schreiben.
Und genau das habe ich nun mit i3-ipc gemacht.
Zum einen ist da das simple CLI-Skript. Das funktioniert ähnlich wie i3-msg und sendet ein Kommando oder fragt nach den Workspaces.
$ i3-ipc "exec xterm"
{"success"=>true}
# xterm opens
$ i3-ipc -t1 -p
[{"num"=>1,
"name"=>"1",
"visible"=>false,
"focused"=>false,
"rect"=>{"x"=>0, "y"=>0, "width"=>1280, "height"=>800},
"output"=>"LVDS1"},
...
Das zu installieren ist ebenfalls einfach:
curl -s http://github.com/badboy/i3-ipc/raw/master/i3-ipc > i3-ipc &&
chmod 755 i3-ipc &&
mv i3-ipc /usr/local/bin/i3-ipc
Wenn Arch Linux nutzt (so wie ich), ist es sinnvoll, dass Skript mit Pacman zu installieren. Dafür gibt es das AUR-Paket:
curl -s http://aur.archlinux.org/packages/i3-ipc/i3-ipc/PKGBUILD > PKGBUILD &&
makepkg -i
Aber damit nicht genug, man will ja auch die Events nutzen. Mittels der Events wird die direkt in i3 implementierte Workspace-Bar am unteren Rand des Bildschirms wohl bald optional.
Um i3-ipc zu diesem Zwecke zu nutzen, braucht man das Gem:
gem install i3-ipc
oder man klont halt das Repository:
git clone git://github.com/badboy/i3-ipc.git
Dann kann man damit arbeiten. Das Grundgerüst sieht dabei dann so aus:
I3::IPC.subscribe [:workspace] do |em, type, data|
# ...
end
Um nun zum Beispiel auf einen Wechsel der Workspaces zu reagieren, nutzt man folgenden Code
I3::IPC.subscribe [:workspace] do |em, type, data|
case type
when I3::IPC::MESSAGE_REPLY_GET_WORKSPACES
data.each do |e|
if e["focused"]
puts "focused: %s" % e["name"]
else
puts "unfocused: %s" % e["name"]
end
end
when I3::IPC::EVENT_WORKSPACE
em.send_data I3::IPC.format(I3::IPC::MESSAGE_TYPE_GET_WORKSPACES)
end
end
Das vollständige Beispiel findet sich im examples-Ordner und wird folgendermaßen ausgeführt:
ruby dzen2-workspace.rb | dzen2 -ta l -dock
TADA! schon habt ihr eine Liste am unteren Rand:
Nett, oder? ;)