Nicht der Rede wert (2)

Vor ein paar Stunden hat mich jemand, der mein Programm Wpcmd zum Bloggen verwendet, mit sinngemäß der folgenden Anfrage angemailt: »Das ist ein tolles Programm, und vor allem dein Beispielskript nutze ich gern. Aber ich mag es einfach nicht, dafür ein Terminal aufzumachen und dann diese ganzen Meldungen zu sehen. Ich hätte lieber etwas zum Klicken und möchte die ganzen Meldungen nur sehen, wenn irgendein Fehler passiert ist.«

Nun, dir (und jedem anderen Menschen mit diesem Wunsch) soll geholfen sein! Mit folgendem, sehr einfachen Shellskript:

#!/bin/sh
export PATH=/bin:/usr/bin:/usr/local/bin

# Hier den Pfad zu BlogDir eintragen!
BlogDirCommand=~/bin/BlogDir

# Ab hier kann alles so bleiben
tmpfile=/tmp/gblogdir.$$
trap "rm -f $tmpfile; exit" 1 2 15

$BlogDirCommand 2>&1 | 
tee $tmpfile | 
zenity --progress \
    --auto-close \
    --no-cancel \
    --pulsate \
    --title="Bloggen..." \
    --text="Die Texte werden gebloggt"

if grep -q "^Failed to publish file" $tmpfile
then
    zenity --text-info \
	--title="Es sind Fehler aufgetreten, schau in den Output!" \
	--width=540 \
	--height=400 \
	--filename=$tmpfile
fi

rm -f $tmpfile

Keine Lust aufs Clipboard? Okay, dann lad es dir einfach runter!

Sicherlich, eine Auszeichnung mit dem Titel »Held des Codings« bekomme ich für dieses Kürzstprogramm nicht; ich habe es in einer Viertelstunde zusammengepfuscht (die meiste Zeit habe ich dabei mit man zenity verbracht). Du musst dir nur die Variable BlogDirCommand anpassen, da ich mir sicher bin, dass deine persönlich angepasste Version von BlogDir nicht im allgemeinen Pfad liegt – setz die Variable einfach auf den Pfad zu deiner persönlich angepassten Version.

Wenn du damit fertig bist, hast du ein Skript, das keine Ausgabe mehr erzeugt. Während des Bloggens gibt es einen Progressbar, der zeigt, dass das Programm arbeitet. Nur wenn ein Fehler aufgetreten ist, bekommst du noch Meldungen zu sehen, und zwar in Form eines graphischen Dialogs. Du musst allerdings zenity installiert haben, aber das gehört zur GNOME-Umgebung dazu und ist deshalb sehr häufig schon installiert.

Alles, was dann noch zu tun bleibt, ist eine bequeme Startmöglichkeit zu schaffen. Wie du das machst, hängt von deinem Desktopsystem ab. In einer Xfce-Leiste (sorry, aber der Xfce ist nun mal mein bevorzugter Desktop) wählst du im Kontextmenü der Leiste »Neue Elemente hinzufügen ▷ Starter« und setzt als auszuführenden Befehl das Skript – und schon kannst du mit einem einzigen Klick auf einen Button bloggen (dem du natürlich ein beliebiges Bild als Icon geben kannst). Für andere Desktops schau einfach kurz in die Dokumentation, denn ich weiß auch nicht alles.

Es ist wirklich nicht der Rede wert. Aber ich verblogge es trotzdem mal, damit niemand das Rad doppelt erfinden muss.

PS: Deine Anmerkung, dass Shellskripte auf dich »irgendwie steinzeitlich« wirken, habe ich übersehen… 😉

Veröffentlicht unter Technisches | Verschlagwortet mit , , | Schreib einen Kommentar

Nicht der Rede wert

Als mich vor ein paar Tagen jemand fragte, ob es möglich wäre, die Ausgabe des Programmes fortune auch in einem Fenster in der grafischen Oberfläche dazustellen, konnte er nicht wissen, dass ich mich gerade mit zenity beschäftigt hatte.

Zehn Minuten später mailte ich ihm das folgende Shellskript zu, das im Gegensatz zu meinen sonstigen Schnellgestrokel sogar mit einem bisschen Fehlerbehandlung daherkommt:

#!/bin/sh

# "fortunes" is usally in /usr/games
export PATH=/bin:/usr/bin:/usr/games

if test -z "`which zenity`"
then
    echo 1>&2 zenity isn\'t installed
    exit 1
fi
if test -z "`which fortune`"
then
    echo 1>&2 fortune isn\'t installed
    exit 1
fi

zenity \
    --info \
    --no-wrap \
    --title="Fortune" \
    --text="`fortune | sed 's/-- *\(.*\)$/\n<i>\1<\/i>/'`" &

Wirklich nicht der Rede wert. 😎

So ein Skript lässt sich übrigens sehr leicht jedesmal über die Mechanismen des Desktopsystemes ausführen, wenn man sich anmeldet. Wie das geht, steht in der Dokumentation des verwendeten Desktops. Bei meinem Liebling Xfce geht das über die Einstellungen im Punkt »Sitzung und Startverhalten« im Reiter »Automatisch gestartete Anwendungen«.

Veröffentlicht unter Allgemeines | Verschlagwortet mit | Schreib einen Kommentar

»Die Singende Maschine« veröffentlicht

Anhören / downloaden — oder einfach ignorieren… 😉

Veröffentlicht unter Musik | Verschlagwortet mit , | Schreib einen Kommentar

Wpcmd 0.5 veröffentlicht

Eine kurze allgemeine Einführung in wpcmd gibt es auf der allgemeinen Download-Seite.

Dass ich anderthalb Jahre lang keine neue Version von wpcmd veröffentlicht habe, liegt nicht etwa daran, dass ich das Projekt aufgegeben hätte. Nein, in diesen siebzehn Monaten seit der letzten Veröffentlichung habe ich wpcmd fast jeden Tag benutzt und war mit dem bestehenden Funktionsumfang sehr zufrieden.

Das heißt aber nicht, dass ich nicht den einen oder anderen ärgerlichen Fehler aus dem Code entfernt hätte. Es waren zum Glück nicht viele und keine schweren Fehler, sonst hätte ich schon längst eine neue Version veröffentlicht.

Nachdem sich das Programm so lange bewährt hat, mag ich es nicht mehr eine Beta-Version nennen. Ich habe den Code überarbeitet, meine kleinen angesammelten Bugfixes darin übernommen und die eine oder andere Sackgasse aus der frühen Entwicklungsphase entfernt. Aus Nutzersicht sind die Änderungen eher marginal, es kann sein, dass für viele jetzige Nutzer neben der anderen Versionsnummer kein Unterschied bemerkbar ist.

Die wichtigsten Änderungen seien hier kurz zusammengefasst:

  • Eine geringfügige Verbesserung des bisherigen Upload-Codes. Bislang war dieser mit dem Fehler verbunden, dass der lokale Dateiname im gesamten Text des Postings ersetzt wurde. Wenn dieser Dateiname im Text vorkam, wurde er durch den Pfad der hochgeladenen Datei ersetzt. Nun werden nur noch Dateinamen ersetzt, die ein einfachen oder doppelten Anführungszeichen stehen, wie dies etwa in einem HTML-Tag der Fall ist. Das ist immer noch nicht vollkommen, aber besser.
  • Auch eine URL mit mailto: ist jetzt als Ziel eines Links möglich. In früheren Versionen hat mein Parser diese Protokollangabe nicht erkannt und nach einer gleichnamigen Datei für den Upload gesucht. Dank an P., der mir diesen Fehler mitgeteilt hat.
  • Überfällige Aufräumarbeiten im Quelltext. Dabei wurde unter anderem die Totgeburt der ersten Alpha-Version, diese beinahe völlig unbenutzte und undokumentierte Plugin-Schnittstelle, vollständig entfernt. Wer wpcmd erweitern will, um das Programm an seine sehr speziellen Wünsche anzupassen, hat schließlich den Quelltext in einer Skriptsprache, der hoffentlich einigermaßen verständlich ist.
  • Endlich kann wpcmd Logdateien schreiben. Für automatisierte Prozesse – und dafür nutze ich wpcmd und dafür habe ich es einst geschrieben – keine ganz unwichtige Funktion, um im Fehlerfalle nachzuvollziehen, was schief gegangen ist. Das war die erste Erweiterung, die ich gegenüber der letzten Veröffentlichung vorgenommen habe.
  • Es ist eine Option hinzugekommen, um die Programmausgaben von Wpcmd in eine Datei umzulenken. Das ist ein Workaround für jene Probleme mit Python 2.x, die mit 3.x nicht mehr auftreten sollten. Wenn die Ausgabe in der Shell mit > in eine Datei umgeleitet wird, schmeißt Python eine Exception, wenn die Ausgabe einige Nicht-ASCII-Zeichen enthält. Das ist für automatisierte Jobs in einem Shellskript ein grauenhaftes Verhalten, und deshalb diese zunächst sinnlos wirkende Option.
  • Ach ja: Es ist nicht mehr »beta«. Es ist ein robustes Stück Software, dass mir in einigen völlig verschiedenen Anwendungsfällen beinahe 10.000 Postings auf WordPress-Blogs befördert hat, ohne dass es dabei zu nennenswerten Fehlern gekommen ist. Es macht einfache Dinge einfach, und es macht komplizierte Dinge möglich. So sollte Software meiner Meinung nach immer sein.
  • Das mitgelieferte Beispiel-Shellskript zum Bloggen eines gesamten Verzeichnisinhaltes ist an die neuen Features von wpcmd angepasst und zeigt, wie diese Features in einer Shellprogrammierung eingesetzt werden können. Es weicht übrigens nur unwesentlich vom Shellskript ab, mit dem ich fast jeden Tag blogge. Ich mag nämlich das WordPress-Dashboard immer noch nicht… 😉

Wichtige Einschränkung: Wpcmd läuft nicht ohne Anpassungen mit Python 3.0 oder 3.2. Da momentan die großen Linux-Distributoren weiterhin auf 2.7 setzen, habe ich auf eine Anpassung verzichtet. Wer wpcmd unter Python 3 benutzen will und selbst Hand anlegen muss, wird erfreut feststellen, dass schon eine größere Vorarbeit geleistet wurde…

Wpcmd 0.5 kann hier frei heruntergeladen werden. Das Programm ist unter GPLv2 lizenziert.

Veröffentlicht unter Technisches | Verschlagwortet mit , , | Schreib einen Kommentar

Xubuntu: Oneiric Ocelot wird Precise Pengolin

Problemloser Update

»Genaues Gürteltier« – was haben die denn geraucht?! 😉

Eines muss ich Canonical aber neidlos lassen: Der Update auf eine neue Version der… ähm… leicht und ohne spezielle Vorkenntnisse einsetzbaren Linux-Distribution Ubuntu verläuft erfreulich problemlos. Die Aktualisierungsverwaltung unter Ubuntu 11.10 meldet, dass die neue Ubuntu-Version 12.04 verfügbar ist, der Anwender klickt auf die Schaltfläche neben der Meldung, und der Vorgang läuft automatisch ab. Sicher, den größten Teil davon hat Canonical nicht selbst programmiert, sondern aus der Paketverwaltung von Debian GNU/Linux übernommen, die sowieso die Beste ihrer Art ist – aber selbst beim (seltenen) Update einer Debian-Distribution traten zumindest bei mir hinterher immer wieder einmal Probleme auf, die an meinen Basteltrieb appellierten.

Aber das Gürteltier – in meinem Fall allerdings in der Geschmacksrichtung Xubuntu, weil ich die jüngsten GUI-Beglückungsideen in Form von Gnome 3 und Unity gar nicht mag – lief nach dem Update einfach. Die einzige Anpassung, die ich hinterher machen musste, war die Wiederherstellung meiner vorher angegebenen Paketquellen (das kann man zum Beispiel aus synaptic heraus machen, man kann aber auch direkt die Dateien im Verzeichnis /etc/apt/sources.list.d bearbeiten). Das Installationsprogramm für Precise hatte hier natürlich einen definierten Zustand hergestellt, damit auch sicher die richtigen Pakete heruntergeladen werden. Zur Erleichterung des Vorganges werden die Paketquellen nur auskommentiert. Ein »typischer« Ubuntu-Anwender wird allerdings – im Gegensatz zu mir – kaum eine zusätzliche Paketquelle eintragen. Die kleine Vorkehrung im Installationsprogramm für die neue Version der Distribution entlastet auf jeden Fall die Supportforen von schwierig identifizierbaren Fehlerquellen und ist daher verständlich, zumal man auch durch einen Dialog darauf hingewiesen wird.

Nicht immer geht alles automatisch

Der Download der neuen Pakete und der anschließende Upgrade ziehen sich natürlich etwas hin. Wer glaubt, dass man währenddessen etwas anderes machen könne und alles von allein laufe, hat sich eventuell getäuscht, da nach dem Download (genauer: beim preconfigure) und während der abschließenden Konfiguration der Pakete die eine oder andere Dialogbox zu behandeln ist, wenn man selbst Hand an die Konfigurationsdateien einiger Pakete gelegt hat. Genau wie bei Debian, dessen Mechanismen Ubuntu ja zugrunde liegen, wird niemals eine vom Nutzer veränderte Konfigurationsdatei automatisch durch die Defaults der Paketverwalter überschrieben. Auch dies ist eine Sache, die einem »Nur-Anwender« tendenziell nicht begegnen wird.

Der gute erste Eindruck

Nach dem gesamten Vorgang, der zumindest mir nicht so viel Vertrauen einflößt, als dass ich nicht vorher die wichtigsten Dateien auf einem anderen Datenträger sichern würde, bootet der neue 3.2er-Kernel ohne Auffälligkeiten und nach der gewohnten Anmeldung steht der Xfce-Desktop zur Verfügung, der meiner Meinung nach im Moment der beste und brauchbarste Linux-Desktop ist. Ich bin einfach zu alt für sinnlosen Spielkram geworden, und ich weiß auch Besseres mit meinem Leben anzufangen, als alle paar Monate neue Metaphern für die Bedienung eines Computers zu lernen und neue Reflexe zu entwickeln. Gut, dass man als Linuxer viel Auswahl hat! 😉

Obwohl ich beim Update zu meinem Entsetzen las, dass auch ein Python 3.2 installiert wird, wird weiterhin Python 2.7 als Standard verwendet, so dass ich um die Anpassung etlicher meiner jeden Tag benutzten Skripte noch einmal herumkam. Da die großen Distributoren immer noch nicht auf Python 3 umsteigen, werde ich auch mein Wpcmd noch nicht an das neue Python anpassen.

Kleine Kinderkrankheiten

Natürlich hat Precise Pengolin trotz des alles in allem erfreulichen Gesamteindrucks ein paar »Kinderkrankheiten«, die vermutlich in den nächsten Tagen mit Updates behoben werden. Eigentlich gibt es nur eine derartige Krankheit, die einem »Nur-Anwender« auffallen kann, und das sind die Abstürze des Programmes zenity. Das ist ein Kommandozeilenprogramm, das in vielen Skripten für die Darstellung von grafischen Dialogen verwendet wird. Früher hat man dafür das mittlerweile etwas angestaubte xdialog benutzt. Es sollte an sich keine besondere Herausforderung für die Paketpacker bei Canonical sein, diese »very simple software« so zu compilieren, dass sie auch läuft. Ich habe mal den Test gemacht, den Quelltext verschafft und compiliert…

Eine mit Zenity erzeugte Fehlermeldung

…und keine Probleme ausmachen können. Der Text der abgebildeten Meldung enthüpfte natürlich meinem etwas schrägen Sinn für Humor. :mrgreen:

Die Kinderkrankheiten des lustigen Gürteltierchens zeigen sich vor allem in Paketen, die nicht zu einer Standardinstallation gehören. Wer etwa beim Programmieren auf alle jüngeren IDE-Beglückungsideen dankend verzichtet und aus Gewohnheit GNU Emacs verwendet und ihn wie gewohnt aus einem Terminal startet, sieht…

Screenshot eines Terminal-Fensters unter Ubuntu Precise mit massenhaften Emacs-Warnungen

…bei jedem einzelnen Tastendruck eine Warnung. Das ist mein bisheriger Rekord an Fehlermeldungen mit Ubuntu. [Dank an P. für den Hinweis darauf. Jetzt aber schnell C-X C-C.]

Was der Ubuntu-Anwender nicht sehen soll

Immerhin scheint Canonical eine Entscheidung getroffen zu haben, dass die Nutzung gewisser Software nicht mehr erwünscht ist – und diese kleinen Nachlässigkeiten bei inzwischen uralter Software passen gut in diesen Eindruck. Das Software-Center – immerhin der von Canonical so sehr vorgesehene Weg, Software zu installieren, dass synaptic bei einer Standardinstallation gar nicht mehr mitinstalliert wird¹ – bietet inzwischen keine Programme mehr für die Kommandozeile an. In früheren Versionen wurden diese nach einem expliziten Klick auf den Link »Technische Dateien anzeigen« zur Installation angeboten, heute werden sie vor der Nutzergemeinde vollständig verborgen. Nicht, dass noch jemand merkt, was man mit einem Linux so alles anfangen kann, wenn man erst einmal damit anfängt, automatisierbare Arbeiten vom Computer erledigen zu lassen…

Ich bin jedenfalls gespannt darauf, was Canonical in zukünftigen Versionen noch alles vor seinen Anwendern verstecken wird.

Abschließendes

Für Menschen, die einfach nicht wünschen, dass ein Desktop alle Ressourcen des Computers an sich reißt; für Menschen, die keine Lust haben, mit jeder flüchtigen Mode ein paar neue Reflexe bei der Bedienung eines Computers zu lernen, nur weil gerade alles an die als »chic« empfundenen Bedienmetaphern der smart phones und pads angepasst wird; für Menschen, die einige Aufgaben mit einem Computer erledigen wollen, ohne dass sie dabei von Effektheischerei und unausgegorenen Konzepten abgelenkt und abgehalten werden – für alle diese Menschen ist Xubuntu durchaus erwägenswert. Vor allem, wenn sie nur wenig Lust dazu verspüren, vieles von der Funktionsweise ihres Betriebssystems verstehen zu lernen; wenn sie sich wünschen, dass alles direkt nach der Installation in gewünschter Weise läuft und auch ein bisschen »peppig« aussieht, ohne damit zu nerven. Der Xfce ist wesentlich konfiguierbarer als der Unity-Desktop und verwendet vielen Menschen inzwischen (nach anderthalb Jahrzehnten Microsoft Windows als dominierendem Desktop-Betriebssystem) sehr vertraute Bedienkonzepte wie ein Startmenü für installierte Anwendungen, eine Fensterliste für laufende Anwendungen, konfigurierbare Leisten für Widgets und bequeme Schnellstarts der installierten Anwendungen, Menüs, die unter der Titelleiste eines Fensters zu finden sind und einen Desktop, der einfach nur einen Verzeichnisinhalt darstellt und deshalb auch dazu taugt, aktuell in Arbeit befindliche Dateien darauf abzulegen, um bequemen Zugriff darauf zu haben.

Diese Zurückhaltung in der zurzeit meist fragwürdigen »Modernisierung« der Benutzerschnittstelle verbindet sich allerdings mit einer Kollektion aktueller und guter Freier Software. Für »Nur-Anwender« durchaus eine ideal aussehende Kombination. Weil die Dinge, die viel zu schön aussehen, um wahr zu sein, einfach nicht wahr sind, hier noch eine kleine Warnung: Leider ist es mit Ubuntus Ansatz der Benutzerführung oft nicht gerade trivial, auftretende Probleme selbst zu beheben. Und leider hat Ubuntu besonders häufig Probleme mit unüblicher oder etwas älterer Hardware. Eine von einem Speicherstick gebootete Live-Distribution kann vor der Installation eventuelle Probleme aufzeigen.

Wer allerdings auf Linux umsteigt und den Anspruch hat, etwas über dieses System zu lernen (und sich mit diesem sehr leistungsfähigen System seine Aufgaben am Computer zu erleichtern), ist generell mit Ubuntu eher schlecht bedient. Zu vieles im »Unterbau« ist unschön und schwer verständlich. Ich empfehle Menschen mit solchem Anspruch Debian GNU/Linux. Wer Ubuntu schon ein bisschen tiefer kennengelernt hat, wird sich mit Debian schnell wohlfühlen, denn Ubuntu ist eine aufgeppte (und dies Wort sei mir hier gestattet: den Geschmacksnerv überreizende, gleichermaßen versalzene wie überzuckerte) Debian-Distribution.

Das Gute an Linux ist, dass es Auswahl gibt.

¹Wer keine Angst davor hat, einmal zu sehen, was wirklich in seiner Distribution steckt, tippe in einem Terminal sudo apt-get install synaptic und rufe nach der Installation »Synaptic-Paketverwaltung« im Menü »System« auf. Da ist natürlich auch eine Menge veraltetes Zeug dabei, und vieles, was nur für spezielle Zwecke taugt. Aber wenn es genau das ist, was man gerade braucht, freut man sich trotzdem drüber. Ohne solche Pakete wie sox und ffmpeg könnte ich jedenfalls nicht leben…

Veröffentlicht unter Allgemeines | Verschlagwortet mit , , | Schreib einen Kommentar