Archive

Posts Tagged ‘Linux’

Fernbedienung für Linuxrechner

March 8th, 2010 2 comments

Bild von amazon.de

Ich benutze meinen Rechner auch zum Ansehen von Filmen, da ich keinen Fernseher besitze. Was mich lange Zeit störte, war das ständige Aufstehen, um die Lautstärke zu ändern, zu pausieren oder sonstwelche Eingaben zu tätigen. Kabellose Maus oder Tastatur besitze ich nicht und lehne ich auch aus Prinzip ab. Nun gibt es auch für PCs zahlreiche Fernbedienungen in unterschiedlichen Preisklassen zu kaufen, die alle mit Eignung für Windows Media werben. Auf der anderen Seite gibt es lirc, das Fernbedienungen unter Linux zum Laufen bekommt, aber anscheinend mehr aus einer Richtung kommt, wie sich Leute ihre Empfänger selbst zusammenlöten.

Da ich ungern basteln wollte, habe ich mir die Hama MCE Remote Control für etwa 23€ gekauft. Sie bietet mehr als ausreichend viele Knöpfe und bringt einen per USB anschließbaren Infrarotempfänger mit. Sofort nach dem Einstecken wird das Gerät zumindest als Maus bzw. Tastatur erkannt, Funktionstasten bleiben aber zunächst tot. Also habe ich lirc installiert. In der Konfiguration, die man übrigens per

sudo dpkg-reconfigure lirc

jederzeit nachholen kann, habe ich folgende Auswahl getroffen:

Remote Control: Windows Media Center Transceivers/Remotes (all)
Transmitter: Microsoft Windows Media Center v2 (usb) : Direct TV Receiver

Damit funktionieren nun zumindest die üblichen Tasten wunderbar. Man kann mit einer eigenen Konfigurationsdatei sicher jede Taste zum Laufen bekommen und ganz tolle Funktionen zuweisen, aber dazu hatte ich bisher keine Muße. Da die Fernbedienung eine sehr gut nutzbare Mausemulation hat, kann man im Zweifel den Rechner ganz normal steuern, solange man keine Tastatureingabe braucht. Die Verarbeitung der Fernbedienung und des Empfängers erscheint mir gut zu sein, beides macht einen hinreichend soliden Eindruck. Stärke des Senders bzw. Empfindlichkeit des Empfängers sind großartig: Egal, wo ich in meinem Zimmer hinziele, das Signal kommt an. Und so kann ich endlich vom Sofa aus Untertitel einschalten.

Screenshots mit Fluxbox

March 6th, 2010 No comments

Versucht man unter Fluxbox einen Screenshot zu machen und drückt wie gewohnt auf die Taste Print, passiert genau nichts. Ich habe das folgende Skript geschrieben, das Abhilfe schafft:

#!/bin/bash

name="screen_`date +"%d-%m-%Y-%H:%M"`.png";

# Take the screenshot
scrot -q 85 ~/$name;

# Load it into a viewer/editor
display -geometry 1100x700 ~/$name &

Für display, das zu ImageMagick gehört, habe ich mich nicht entschieden, weil es so eine Augenweide wäre, sondern weil es ein schlankes Programm mit einer Fülle an Funktionen ist. Ein Linksklick auf das Bild lässt ein Menüfenster erscheinen. So ist es direkt möglich, den gerade gemachten Screenshot zurechtzuschneiden, zu skalieren und rotieren und in einem der üblichen Formate abzuspeichern. Grundsätzlich kann hier natürlich jedes beliebige Bildanzeige- oder -verarbeitungsprogramm benutzt werden.

Durch die Namenswahl des Originalbildes ist sichergestellt, dass Screenshots nicht überschrieben werden, so sie nicht allzu schnell aufeinander folgen. Sollte das gewählte Minutenraster nicht ausreichen, kann man durchaus Sekunden oder noch kleinere Einheiten hinzunehmen. Die Hilfe von date hilft diesbezüglich weiter.

Um das Skript unter Fluxbox noch an die richtige Taste zu binden, die folgende Zeile mit passendem Pfad in ~/.fluxbox/keys einfügen:

None Print :execCommand ~/bin/screenshot

Tastaturbelegung wechseln mit Fluxbox

March 4th, 2010 2 comments

Wer eine Fremdsprache lernt oder einfach lieber mit amerikanischer Tastenbelegung programmiert, muss regelmäßig sein Tastaturlayout verstellen. Während GNOME ein entsprechendes Applet für das Panel mitbringt, sieht es bei Fluxbox erstmal mau aus. Ich habe mir ein Skript geschrieben, das durch mehrere Tastaturlayouts rotiert und visuelles Feedback dafür liefert. Ist keines der angegebenen Layouts gesetzt, wird das erste gewählt.

#!/bin/bash
layouts=(
 "de"    "German"    "de.png"
 "se"    "Swedish"    "se.png"
);
errimg="error.png";

current=`
 setxkbmap -print |
 grep xkb_symbols |
 awk '{print $4}' |
 awk -F"+" '{print $2}'`;
next=0;

for (( i = 0 ; i < (${#layouts[@]}/3) ; i++ )) do
  if [ $current = ${layouts[$i*3]} ]; then
    next=($i+1)%${#layouts[@]/3};
  fi
done

return=`setxkbmap ${layouts[3*$next]} 2>&1`;

if [ ${#return} -gt 0 ]; then
  notify-send -i ${errimg}\
                      "Failed Setting Layout ${layouts[3*$next]}"\
                      "$return";
else
  notify-send -i ${layouts[3*$next + 2]}\
                     "Switched Keyboard Layout"\
                     "${layouts[3*$next + 1]}";
fi

Um weitere Layouts hinzuzufügen, müssen in das Array layouts je drei Strings eingefügt werden; der erste bezeichnet das Layout, der zweite ist der Ausgabestring und der dritte ist der Pfad zum entsprechenden Icon. Will man etwa auf das Bild verzichten, unbedingt einen leeren String angeben, da sonst die Indexberechnung schief läuft. Eine Auswahl an Layoutbezeichnern kann zum Beispiel hier gefunden werden.

Zu schwedischem Layout und zurück

Als Quelle muss ich diesen Post erwähnen. Eine kommentierte Fassung gibt es hier. Natürlich müssen die Pfade zu Bildern angepasst und die genannten Pakete installiert werden. Das Skript sollte grundsätzlich mit allen Window Managern funktionieren. Um es (unter Fluxbox) ohne Terminal oder fbrun ausführen zu können, kann man es natürlich mittels an ein Tastaturkürzel binden, in dem man in  ~/.fluxbox/keys etwa diese Zeile einfügt:

Mod1 F3 :execCommand ~/bin/switchkbl

Nachtrag: Die nötigen Pakete unter Ubuntu sind: setxkbmap, awk, libnotify-bin

[PLR] Spezialanwendungen

February 28th, 2010 3 comments

conky in Aktion

Außer den üblichen Stücken Software habe ich noch etwas speziellere Dinge installiert. Zum einen conky, um stets gewisse Systemparameter im Auge halten zu können, und unison sowie synergy, um der besonderen Mehrrechnersituation am Schreibtisch gerecht zu werden.

conky

conky ist ein Programm, das dem Anwender Output von zahlreichen Sensoren und Prozessen visuell aufbereitet anbietet. Es ist hochgradig an die jeweiligen Bedürfnisse anpassbar und wird über eine Textdatei eingestellt. conky sucht zuerst nach ~/.conkyrc. Positionierung, Auswahl der anzuzeigenden Daten und Darstellung mit Fonts und Farben lassen sich mit einer mehr oder weniger eingängigen Syntax konfigurieren. Eine komplette Übersicht über die möglichen Parameter und Variablen gibt es hier, eine Reihe von Beispielen inklusive der zugehörigen Konfigurationsdateien hier. Mein eigenes Setup basiert auf einem der dort angegebenen Beispiele. Erwähnenswert finde ich, dass man Teile optional einbinden kann: nur, wenn eine Partition eingebunden ist, zeige ihren freien Platz an, und nur, wenn mpd auch läuft, frage den aktuellen laufenden Titel ab. Dies ist einerseits nützlich, andererseits auch angebracht, da sonst unter Umständen Fehler erzeugt werden. conky ist unter diesen Namen in den Repositories von Ubuntu verfügbar und läuft bei Bedarf als Daemon.

synergy

Für leistungshungrige Anwendungen und Spiele unter Windows habe ich weiterhin meinen alten Desktoprechner unterm Schreibtisch stehen. Da er nur selten läuft und Schreibtischplatz obligatorisch knapp ist, wollte ich möglichst wenig Peripherie doppeln. Über einen Freund hatte ich schon vor Jahren von synergy gehört, das in Software Eingabegeräte in einer Sterntopologie multiplext. Man erklärt einen Rechner zum Server; an diesen ist die Hardware angeschlossen, in meinem Fall Tastatur, Maus und Fernbedienung. Sound- und Videogeräte kann synergy noch nicht verteilen. Der Server muss das komplette Setup kennen. So legt man fest, welcher Client auf welcher Seite des Servers liegt. Clients identifizieren sich über einen Namen, der folgerichtig eindeutig für einen Stern sein muss. Ist ein Client verbunden, schiebt man die Maus über die entsprechende Bildschirmkante und landet auf dem Schirm des Clients. Zurück gelangt man natürlich genauso. Übrigens wird die Zwischenablage der verbundenen Rechner gekoppelt. Es ist also möglich, auf Rechner A etwas zu kopieren und auf Rechner B einzufügen. Ich fand das schon öfter sehr praktisch. In meinem Fall benutzen natürlich beide Rechner den gleichen Monitor, den ich also stets umschalten muss, wenn ich zwischen den Rechnern wechsle. Erwähnenswert ist noch, dass synergy für Linux, Mac OS und Windows zur Verfügung steht und gemischte Setups explizit unterstützt. Die in den Repositories von Ubuntu verfügbare Version wird anscheinend nicht länger vom Originalautor weiterentwickelt; ich habe mit ihr bisher keinerlei Probleme gehabt. Für Leute, bei denen sich Bugs manifestieren oder die neugieriger als ich sind, gibt es einen Ableger, der aktiv verbessert wird.

Auf dem Server habe ich folgende Konfigurationsdatei erstellt:

# ~/.synergyconf
section: screens
  Bob:
  Charly:
end

section: links
  Bob:
        up      =       Charly
  Charly:
        down    =       Bob
end

section: options
  switchDelay = 500
end

Charly ist also oberhalb von Bob zu finden. Die einsame Option in Zeile 14 sorgt dafür, dass mir etwas Zeit am Bildschirmrand bleibt, bevor der Rechner gewechselt wird. Es gibt eine ganze Fülle an weiteren Optionen, die ich allesamt nicht vermisse. Nun meldet sich der Serverrechner selbst auch als Client an, sodass auf ich folgende zwei Befehle nach dem Login ausführe:

synergys --daemon -c ~/.synergyconf
synergyc --daemon -n Charly localhost

Zu beachten ist, dass der Server einen Moment zum Starten braucht, der Client also nicht sofort gestartet werden sollte, da sein Anmeldeversuch sonst ins Leere läuft. Ich habe das Problem umgangen, in dem ich zwischen den beiden Aufrufen weitere Programme starte.

Da der Desktoprechner Ubuntu und Windows booten kann, habe ich unter beiden Systemen synergy installieren müssen. Unter Windows war das sehr unkompliziert; in der übersichtlichen Konfigurationsoberfläche kann man direkt einstellen, dass das Programm als Dienst laufen und beim Boot gestartet werden soll, also insbesondere in der Loginmaske. Unter Ubuntu war das wesentlich komplizierter, zumindest wenn man wie ich unsauber arbeitet und kein Skript in init.d anlegt. Erschwerend kommt hinzu, dass der Loginschirm von root ausgeführt wird, die Session selbst natürlich vom User. Ich habe eine Lösung gefunden, die ich nicht als schön empfinde, aber die funktioniert. Hierfür folgende Zeilen in die genannten Dateien einfügen:

# /etc/gdm/Init/Default
killall synergyc
sleep 1
synergyc --daemon -n Bob 192.0.0.1
# /etc/gdm/PostLogin/Default
killall synergyc

Nun muss natürlich nach dem Login der Client neu gestartet werden, etwa über den entsprechenden Konfigurationsdialog von Ubuntu. Zu beachten ist noch, dass die Instanz von synergyc, die im Loginschirm läuft, root gehört. Ich hatte hier Probleme mit dem Tastaturlayout, da root bei mir amerikanisches Layout hatte, sonst alle Rechner und Nutzer natürlich deutsches. Auch kann man im Loginschirm von gdm das Layout setzen. Nachdem ich überall deutsches Tastaturlayout eingestellt hatte, lief alles rund.

unison

unison dient zur Synchonisation von Daten zwischen zwei Verzeichnissen auf einem oder verschiedenen Rechnern. Es arbeitet dabei symmetrisch, Änderungen beider Seiten werden also gleichberechtigt übertragen, wobei Konflikte bearbeitet werden. Ein ausführliches Handbuch gibt es beim Schöpfer, das man durchaus einmal querlesen sollte. Dadurch, dass kein Rechner als ausgezeichneter Server dient, kann man unison sehr flexibel einsetzen; ich habe mich trotzdem für eine Sterntopologie entschieden, um weniger Potential für Konflikte und veraltete Kopien zu haben. Das Tool legt eine Datenbank der zu synchronisierenden Daten an, um die einzelnen Abgleiche schnell ausführen zu können. Das erstmalige Erstellen dieser Datenbank kann für große Datenmengen schon mal einige Stunden dauern, dafür liegen die Abgleichzeiten später deutlich unter einer Minute, Übertragungszeiten nicht mitgerechnet. Ich übertrage mit SSH, was vergleichsweise langsam, dafür aber sicher ist. Im lokalen Netzwerk kann man direkt Sockets ansprechen, was die Übertragungsgeschwindkeit deutlich erhöhen sollte. Dafür kann dann stets nur ein Clientprozess bedient werden. Eine Konfigurationsdatei sieht etwa so aus:

# ~/.unison/daten
mountpoint = .
batch = true

root = /media/data/Daten
root = ssh://raphael@192.0.0.1//media/data/Daten

Besonders wichtig ist die Option mountpoint; durch sie wird geprüft, ob die angegebenen Verzeichnisse überhaupt existieren. Dies verhindert, dass eine nicht eingebundene Partition als Löschung interpretiert und die verfügbare Kopie komplett gelöscht wird.  Die Option batch unterbindet Zwischenfragen bei Änderungen und synchronisiert, ohne nachzufragen. Auch hier gibt es viel mehr Optionen, die komplizierte Szenarien abbildbar machen. Ausgeführt wird eine Synchronisierung dann durch Eingabe von

unison daten

Update: Habe das Layout von conky etwas gefälliger und ordentlicher gestaltet.

[PLR] Betriebssystem – Konfiguration

February 26th, 2010 No comments

Nach der Basisinstallation wollte Fluxbox eingerichtet werden. Hier bedarf es einiger Eingewöhnungszeit, nach der die konsequente Einfachheit schnelle Anpassungen über eine Hand voll Konfigurationsdateien zulässt. Ich habe mich von dieser und dieser Seite und vermutlich einigen mehr, die ich nicht notiert habe, unterstützen lassen. Alle nötigen Dateien liegen im Homeverzeichnis des Nutzers und dort im Ordner .fluxbox. Die wichtigsten sind keys, menu und startup. In keys findet sich eine komplette Auflistung der Keybindings von Fluxbox, die man beliebig erweitern kann. Die Syntax ist etwas pingelig, sodass ich Recherche oder die Verwendung des Programms fluxkeys empfehle. Ich habe ein paar Zeilen hinzugefügt; die verwendeten Skripte liefere ich in späteren Beiträgen.

# Ausschnitt aus ~/.fluxbox/keys
Mod1 F1 :execCommand xfce4-terminal
Mod1 F2 :Exec fbrun
Mod1 F3 :execCommand ~/bin/switchkbl
Control Mod1 Left :prevWorkspace
Control Mod1 Right :nextWorkspace
None Print :execCommand ~/bin/screenshot
Mod4 c :execCommand mpc toggle
Mod4 x :execCommand mpc prev
Mod4 v :execCommand mpc next

Ein mögliches Menü

In der Datei menu ist das Hauptmenü definiert, das man erhält, wenn man einen Rechtsklick auf freie Fläche tätigt. Im Prinzip ist jede beliebige Struktur möglich. Einige Standardmenüs und so nette Dinge wie Wallpaper Chooser sind mit eigenen Tags fest vorgesehen. Man kann aber beliebige Kommandos ausführen lassen. Eine komplette Liste der möglichen Elemente gibt es hier. Meine Version ist rechts zu sehen; insbesondere ist vielleicht erwähnenswert, wie man über das Menü den Rechner herunterfahren kann, denn das darf eigentlich nur root. Hier hilft gksu, das den Nutzer graphisch nach dem Sudopasswort fragt. Für Details verweise ich auf meine menu.

startup ist ein Shellscript, das nach dem Login ausgeführt wird. In dieser Datei starte ich alle Daemons, die ich so brauche, was man vermutlich besser mit Skripten in init.d abwickelte; meine Änderungen belaufen sich auf Folgendes:

# Ausschnitt aus ~/.fluxbox/startup
PATH=~/bin:"${PATH}"
numlockx on
synergys --daemon -c ~/.synergyconf
deluged
conky -d
mpd
mpdscribble
deluge -u web &
synergyc --daemon -n Charly localhost

Damit Fluxbox Wallpaper ordentlich setzen kann, braucht es ein geeignetes Hilfsprogramm. Aus einer Reihe möglicher solcher habe ich mich für feh entschieden. Benutzt man nun das spezielle Wallpapermenü, setzt Fluxbox den gewählten Wallpaper immer wieder beim Login.

Um dem Moloch Firefox ein bisschen unter die trägen Arme zu greifen, bin ich einem Tip gefolgt, der eigentlich zur Schonung von SSDs gedacht ist. Das Verzeichnis /tmp wird in den RAM gelegt und Firefox so konfiguriert, dass er seinen Cache dort ablegt. Ich halte das auch und besonders für Systeme mit Festplatten für eine gute Idee.

Mod1 F3 :execCommand ~/bin/switchkbl

[PLR] Betriebssystem – Installation

February 24th, 2010 No comments

Ich wollte auf meinen neuen Minirechner aus offensichtlichen Gründen gerne ein möglichst schlankes System mit schlanker Software installieren. Da ich unter allen Linuxdistributionen quasi nur Ubuntu kenne, kam kaum eine andere infrage. Ubuntu ist nun alles andere als ein Leichtgewicht, insbesondere wird standardmäßig GNOME und allerlei mehr oder weniger Nützliches installiert. Zum Glück fand ich diese Seite, die dem geneigten Leser nahelegt, ein minimales Image von Ubuntu zu installieren. Dieses hat gerade einmal 12MB und lädt während der Installation alles Nötige herunter. Das Image bekommt man auf einer wenig beworbenen Seite von Canonical selbst.

Dieses Image kommt nur mit dem blanken Kern von Ubuntu daher, also insbesondere ohne X und alles, was einen solchen bräuchte. Welchen Display- und Windowmanager man wählt, ist dem Geschmack freigestellt. Ich habe mich für XDM und Fluxbox entschieden. Die erste Runde Installationen, um überhaupt mal was Buntes zu sehen, ging also so:

sudo aptitude update
sudo aptitude install xorg xdm fluxbox menu fluxconf xfce-terminal
sudo reboot

Für weitere grundlegende Anwendungsfälle habe ich versucht, möglich wenige und kleine Pakete zu installieren, mit einer Ausnahme: Ich mag den Luxus von Firefox und nutze ihn deshalb auch auf dem Minisystem. Das ist für die Performanz nur eine beschränkt gute Idee und ich würde jedem weniger Bequemen empfehlen, einen kleineren Browser zu installieren. Auch sonst werden Puristen an der ein oder anderen Stelle entsetzt aufschreien; insofern ist die Auswahl vermutlich ein Kompromiss aus Schlankheit und Bequemlichkeit. Letztendlich haben den Weg auf die Maschine die folgenden Pakete gefunden, ohne alle Abhängigkeiten aufzulisten:

  • Dateiverwaltung: thunar, thunar-archive-plugin, thunar-media-tags-plugin, thunar-thumbnailers
  • Basisanwendungen: evince, geany, gpicview, openssh-server, xarchiver
  • Medien: mpd, mpc, mpdscribble, sonata, vlc (mit einer Reihe von Bibliotheken)
  • Internet: deluge-webui, firefox, pidgin
  • Sound: pulseaudio, paman, paprefs, pavumeter

Mit dieser Auswahl sollte schon ein leidlich nutzbares System installiert sein. Zu diesem Zeitpunkt war die Installation unter 1,5GB oder etwa 800 Pakete groß, bootete in 14s von BIOS- zu Loginschirm und in 4s von Login zu Desktop und verbrauchte nach dem Boot 50MB RAM. Natürlich ist im Laufe der letzten Monate Einiges hinzugekommen, insbesondere sun-java6-jdk. Um zu vermeiden, dass sich mit der Zeit verwaiste Pakete ansammeln, kann ich das Programm deborphan empfehlen, das nicht mehr benötigte Bibliotheken anzeigt.

Übrigens läuft, soweit ich das bisher beurteilen kann, alle Hardware ohne weiteres Zutun, insbesondere auch Webcam und USB-Mikrophon (beide Logitech).

Gedit LaTeX Plugin

May 5th, 2009 4 comments

Wer auf puristisches Editieren von LaTeX-Dokumenten steht und trotzdem gerne diskrete Unterstützung hätte, sollte sich mal das Gedit LaTeX Plugin ansehen. Minimalinvasiv wird ein Dokumentbrowser, eine Symboltabelle und Syntaxvervollständigung sowie einige Makros zusätzlich zum ohnehin schon vorhandenen Syntaxhighlighting angeboten. Das Ganze ist trotz Betastatus schon recht benutzbar, finde ich.

Ein Überblick über einige Features des Gedit LaTeX Plugins

Ein Überblick über einige Features des Gedit LaTeX Plugins

Ubuntu Brainstorm

May 4th, 2009 2 comments

Neulich bin ich auf Ubuntu Brainstorm gestoßen. Die Plattform ermöglicht es jedem Nutzer, seine Wünsche und Ideen für sowohl die Distribution als Ganzes als auch einzelne Programme schnell und einfach gesammelt zu publizieren. Es wird immer zunächst ein Problem definiert, um dann Lösungen dazu anzubieten. Andere Nutzer können diese Lösungen dann bewerten und auch eigene Vorschläge einbringen. Mit knappen 15000 Ideen und fast 100000 Kommentaren ist doch schon ein reichhaltiger Stoß an Material zusammengekommen.

Ich halte dieses System als Ergänzung zu Bugtrackern für eine sehr gute Möglichkeit, sich auch als Nichtentwickler in den Entwicklungsprozess von Ubuntu einzubringen. Außerdem dürften viele Ideen, die man hier in einer klar definierten Form statt, wie üblich, in losen Foren- oder Blogeinträgen vorfindet, wertvolles Feedback, aber auch kreativen Input für die tatsächlichen Entwickler darstellen – gerade weil sich auch (und vor allem?) solche Leute einbringen, die eben nicht coden.