Durch die Controller-Bastelei bin ich ja im Moment der C-Hacker. Perl und Python laufen auf den Dingern ja leider nicht… :-)

Da habe ich mir GNU indent installiert, um meine eigenen und fremde Quelltexte etwas anzuhübschen. Schön konfigurierbar, per Konfigurationsdatei kann ich dem Ding beibringen die Klammern so zu setzen wie es mir beliebt (und manch anderen in den Wahnsinn treibt). Das ist eine Art Weltanschauung, aber für mich gehören öffnende Klammern nicht in eine neue Zeile.

So habe ich alles einstellen können, bis auf die öffnenden geschweiften Klammern bei der Definition von Funktionen. Es scheint ein (schon länger bekannter) Bug zu sein, daß das in der Doku fehlt: mit --braces-on-func-def-line bzw. -brf steht die Funktion aber doch zur Verfügung. Muß man halt nur finden…

Wer hätte gedacht, daß einem ausgerechnet der altbackene Packer tar ein Grinsen abringen kann? GNU-tar kann das zumindest, wie ich Gestern festgestellt habe als meine im Halbschlaf eingetippte tar-Brücke nicht funktioniert hat:

% ssh root@odin "tar cf /" | tar xv
Password:
tar: Anlegen eines leeren Archivs wird feige verweigert.
,tar --help' zeigt weitere Informationen.

Und nicht nur die deutschsprachige Version ist albern:

% ssh root@odin "unset LANG; tar cf /" | tar xv
Password:
tar: Cowardly refusing to create an empty archive
Try `tar --help' for more information.

Playstation-USB-AdapterMeine bessere Hälfte hat mir vor einer Weile eröffnet, eine begeisterte Jump-And-Run-Spielerin zu sein. Stilecht geht das natürlich nur mit einem Gamepad, also habe ich eines besorgt.

Erst ein Logitech Wingman Precision, den gab es im örtlichen Elektro-Kramladen für knapp acht Euro. Leider ist das ‚Precision‘ im Namen extrem irreführend: sogar ich als Laie fand die Steuerung absolut nervig. Beim Druck auf links oder rechts ging die Spielfigur viel zu oft auch in die Knie, da sie auch einen Druck nach unten registriert hat. :-(

Abhilfe schafft ein Adapter aus dem Auktionshaus: das abgebildete Teil hat ‚per sofort-kaufen‘ zweieinhalb Euro (plus Versand) gekostet und ermöglicht den Anschluß eines oder zweier sowieso vorhandenen Playstation-Gamepads an USB.

Jetzt zum Grund für das Posting: sowohl das Logitech- als auch das Playstation-Teil wollen natürlich mit dem Kernel sprechen. Das ist ohne Probleme einzurichten, nur muß man wissen wo das geht. Nachdem ich jetzt zum wiederholten Mal danach gesucht habe, hier mal eben eine kurze Notiz an mich selbst:

Device Drivers -> Input device support -> Joystick interface (as module)
Device Drivers -> USB support -> USB Human Interface Device (full HID) support (as module)
Device Drivers -> USB support -> USB Human Interface Device (full HID) support -> HID input layer support (cannot be compiled as module)

Das und alles weitere zum Thema findet man im Gentoo-Wiki. Der Eintrag spricht zwar von einem Logitech-Gamepad, das Vorgehen paßt aber auch zu meinem Adapter. Was das genau für ein Teil ist kann ich leider nicht sagen. Der Schriftzug könnte ‚Dinogame‘ lauten, aber genauso gut auch ‚Sinogame‘ oder ‚Sin8game’… Der Hersteller scheint Sinogame zu heissen, wie etwas Google zu Tage brachte. Oder besser: geheissen zu haben. Zumindest sinogame.com scheint es nicht mehr zu geben.

Bis jetzt nutze ich gThumb, wenn ich mich in einem Verzeichnis voller Bilder zurechtfinden will, bzw. display aus dem ImageMagick-Paket wenn ich nur ein einzelnes Bild anzeigen will. Informationen über Bilder — Format und Größe — liefert identify, ebenfalls aus ImageMagick.
Seit gerade eben sieht es aber so aus, als ob das der Vergangenheit angehört: feh ist ein kleiner (das Arch-Installationspaket umfaßt nur 245kB) und schneller Betrachter mit vielen Features.
Ein paar Beispiele:

  • feh . — Zeigt eine Slideshow aller Bilder im aktuellen Verzeichnis an, mit Klick kommt man zum nächsten Bild, ‚q‘ schließt das Fenster, auf Rechtsklick gibt es ein Menü.
  • feh -I . — Erstellt einen Index aller Bilder im aktuellen Verzeichnis, jeweils mit Angabe des Namens, der Auflösung und der Dateigröße.
  • feh -t . — Erstellt einen ‚klickbaren‘ Index, mit dem die einzelnen Bilder direkt in groß geöffnet werden können.
  • feh -l . — Listet alle Bilder im aktuellen Verzeichnis in Textform auf, jeweils mit Format und Größen.
  • feh -R 10 http://www.berlin.de/.img/webcam/webcam.jpeg — Stellt alle zehn Sekunden ein aktualisiertes Bild der Webcam dar. Geholt wird mit wget.

Dies und vieles mehr verrät die Hilfe (feh -h).

Einer der letzten Gründe, warum ich bis vor ein paar Jahren noch ein Windows zu Hause hatte war das Spiel Worms. Seit eine Playstation eingezogen ist hat sich das erledigt, aber es sieht aus als ob Wormux auch ein adäquater Ersatz gewesen wäre. Bei Gelegenheit mal ausprobieren…

notepad.exeDie Diskussion ist zwar schon zwei Monate alt, mir ist das Thema aber neu: Man kann den Windows-Standard-Editor notepad.exe durcheinanderbringen, indem man die Kühnheit besitzt einen Text zu schreiben, zu speichern und wieder zu öffnen:

  • Textdokument anlegen
  • den folgenden Text (ohne Anführungszeichen) eingeben: „this app can break“
  • die Datei speichern
  • die Datei wieder öffnen
  • siehe Screenshot :-D

Ursache für dieses merkwürdige Verhalten ist wahrscheinlich ein Fehler in der Erkennung des verwendeten Zeichensatzes. Notepad versucht beim Öffnen, den Text mit chinesischen Schriftzeichen wiederzugeben. Man könnte ein Osterei vermuten. Dagegen spricht aber, daß der chinesische Text anscheinend keinen Sinn ergibt, außerdem kann man auch mit anderen Zeichenketten — z. B. „xxxx xxx xxx xxxxx“ — diesen Fehler provozieren.

Ich konnte das nicht glauben, aber sowohl auf einem Windows 2000 als auch auf XP ‚funktioniert‘ dieser Fehler. Mal sehen was Vista bringt… ;-)

Irgendwie bin ich gerade dabei, an screen zu verzweifeln. Nichts wichtiges, aber etwas in das ich mich seit Gestern verbissen habe. Da ich weiß, daß es hier einige Leser gibt die das Tool zu schätzen wissen, mal die Frage in die Runde: Ist das alles?

Was bisher geschah: Ich benutze fvwm2 als Windowmanager, mit einem mächtig abgespeckten Crystal-Theme. Gestern habe ich meinen zerschossenen Bootloader mit Hilfe einer GRML-CD repariert, da ist mir der nett vorkonfigurierte Screen aufgefallen. Der stellt in seiner Statuszeile auch Informationen wie die aktuelle Taktfrequenz dar. Auf dem unteren Teil meines Bildschirmes habe ich noch eine Art Taskleiste, die ich aber bei nüchternem Nachdenken nie brauche. Lediglich die Statusmeldungen am Rand — Uhrzeit, Akkustatus, Taktfrequenz und Temperatur — würden mir fehlen. Also will ich die jetzt in meinen Screen packen, damit mein Desktop endlich aufgeräumt (AKA absolut leer) ist.

Beliebige Informationen kann man mit sogenannten Backtick-Kommandos in Screen darstellen. Gut zu wissen, war mir auch neu. Ein Blick auf GRML zeigt, daß da für diesen Zweck Skripte aufgerufen werden, die irgendwo im System liegen. Technisch kein Problem, aber ich hätte keine sinnvolle Idee, wo ich die lassen sollte. Also habe ich versucht, direkt in der Screen-Konfiguration ‚Einzeiler‘ unterzubringen.

Schäbbig, aber geht: Das funktioniert so lange, wie da tatsächlich nur ein einzelnes Kommando aufgerufen wird. Sobald substituiert wird (uname bzw. $(uname)) klappt das nicht mehr. Erstmal habe ich mir beholfen, indem ich eine neue Shell starte und der die Kommandos als Parameter mitgebe:

backtick 1 0 60 sh -c 'sed -ne "s/.* on-line/^/p" /proc/acpi/ac_adapter/AC/state; expr $(sed -ne "s/remaining capacity: *\([0-9]*\) mWh/\1/p" /proc/acpi/battery/BAT0/state) \* 100 / $(sed -ne "s/last full capacity: *\([0-9]*\) mWh/\1/p" /proc/acpi/battery/BAT0/info)'
backtick 2 0 60 sh -c 'expr $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) / 1000'
backtick 3 0 60 sed -ne "s/temperature: *\\([0-9]*\\) C/\\1°C/p" /proc/acpi/thermal_zone/THM0/temperature

Fiese Zeilenumbrüche, aber ich bin sicher daß man damit klarkommt wenn man an .screenrc bastelt. ;-)

Mein Problem mit dieser Lösung ist, daß für jede Aktualisierung der CPU- und der Takt-Infos eine extra Shell geöffnet wird. Das muß bei Aktionen die auf Dauer durchaus häufiger als alle 60 Sekunden laufen nicht sein. Oder?

Schöne Lösung? Ich habe einiges an Quotes ausprobiert, auf die Art habe ich den dritten Eintrag mit ein paar eingestreuten Backslashes zum Laufen gebracht. Zu den ersten beiden habe ich keine Idee mehr, und ich bin irgendwie nicht schlau genug um die Screen-Sourcen weit genug zu verstehen um zu erkennen ob es eine Lösung gibt. Hat jemand von Euch mehr Erfolg?

Wobei, zugegeben: so richtig schön wird das eh nicht. Ich vermute, daß es auf Dauer am Ressourcenschonendsten wäre, die Sammlung der Daten in ein eigenes Programm (meine Wahl wären Perl oder Python) auszulagern. Das könnte dann parallel zum Screen mitlaufen, wenn man die Parameter für ‚Backtick‘ richtig wählt kann Screen nämlich auch Ausgaben eines dauerhaft laufenden Programms anzeigen. Was meint Ihr?

Notiz an mich selbst: Wenn ich wieder mal meinen Bootloader ruiniere, indem ich einen neuen Kernel mit make install zu installieren versuche und dadurch den Grub mit einem kaputten Lilo überschreibe, dann helfen diese beiden Kommandos in einer Grub-Shell, die ich auf den gängigen Live-CDs einfach aufrufen kann:

grub> root (hd0,1)
grub> setup (hd0)

Die Parameter (hd0,1) bzw. (hd0) gelten so für mein Notebook, das muß nicht überall so aussehen.

Bislang habe ich versucht, die Partition zu chrooten und grub-install /dev/hda auszuführen, bei Arch-Linux geht das aber nicht, ich denke da die Device-Nodes nicht auf der Platte liegen.