Tag Archives: unison

[PLR] Spezialanwendungen

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.