Xclip: Copy&Paste mit Rxvt-Unicode, Vim, Elinks und der Konsole

Text kopieren von X nach Konsole ist manchmal keine ganz triviale Aufgabe. Umgekehrt leider auch nicht. Etwas einfacher macht es Xclip.
Im Regelfall lassen sich Texte mit der Maus markieren und mit einem Klick auf die mittlere Maustaste (bei nur zwei Maustasten beide simultan gedrückt halten) an einer anderen Stelle wieder einfügen (Primäre Auswahl). Ebenso funktioniert z.B. in Rxvt-Unicode die Tastenkombination Shift+Einfg. Ich stellte jedoch immer wieder fest, dass Text falsch formatiert in einer Konsolenanwendung gelandet ist.
Xclip ist da der ideale Helfer, wenn man in einer X-Anwendung, z.B. einem Browser, Text markiert und in der Zwischenablage (Clipboard) speichert und ihn dann in ein Konsolenprogramm mit STRG+v oder ALT+v einfügen möchte. Hier sind ein paar Ideen Xclip mit bekannter Software für die Konsole einzusetzen.

Xclip im Terminal und in Skripten

Z.B. Quellcode markieren und in der Datei clipboard ausgeben. Der Parameter -o gibt den Inhalt der primären Zwischenablage nach STDOUT aus.
xclip -o > clipboard
Xclip eignet sich auch hervorragend für Pipe-Konstruktionen. Hier wird z.B. die Ausgabe von dmesg | grep eth0 in die primäre Zwischenablage kopiert, die sich mit der mittleren Maustaste in jede X-Anwendung einfügen lässt.
dmesg | grep eth0 | xclip
Siehe auch man xclip.

Xclip und VIM

Glücklich darf man sich schätzen, wenn man nicht nur auf GRMLs ZSH-Konfiguration, sondern auch GRMLs .vimrc gestoßen ist. Der Tipp stammt ursprünglich aus dem Vim-Wiki.

:map <F7> :w !xclip<CR><CR>
:vmap <F7> "*y
:map <S-F7> :r!xclip -o<CR>

Wenn SHIFT-F7 im Terminal der Wahl nicht funktioniert und "*y den Text ebenfalls nicht wie vorgesehen in den Buffer von Vim kopiert, kann man noch eine andere Variante aus den Kommentaren zum Tipp benutzen.

vmap <F6> :!xclip -f -sel clip
map <F7> mz:-1r !xclip -o -sel clip`z

Sobald sich etwas in Vims Buffer befindet, lässt sich mit F6 dieser Inhalt in die Zwischenablage kopieren und wie gewohnt mit STRG+V in eine X-Anwendung einfügen. Anders herum geht es mit F7 innerhalb von Vim, wenn man zuvor einen Text in einer grafischen Anwendung kopiert hat.

Xclip und Elinks

Ich will nun niemanden zu Textbrowsern wie Elinks bekehren, aber es gibt auch Anwendungsfälle, in denen sie sich sehr gut mit grafischen Browsern und anderen Anwendung ergänzen. Es gibt leider Webseiten, die lassen sich selbst mit modernen Rechnern nur schwerfällig betrachten, wenn Javascript und Flash die Überhand zu nehmen scheinen. Ich benutze deswegen zum Download und Anschauen von Youtube-Videos gerne auch Elinks in Kombination mit Youtube-dl und dem MPlayer. Die Konfiguration funktioniert nicht nur mit betagten Oldtimern, sondern spart mir auch die Zeit beim Auffinden von neuen Videos.
Durch die Brille eines Textbrowsers betrachtet ist Youtube nur eine Ansammlung von Links zu mehr oder weniger gut gelungenen Videos. Im alten Beitrag benutze ich die y-Taste zum Download oder Abspielen eines markierten Links und Alt-y um das Video der aktuell aufgerufenen Seite zu verarbeiten.
Mit Elinks lässt sich ein Link natürlich nicht nur an Youtube-dl oder Mplayer delegieren. Nicht ganz einfach ist es, die Adresse der gerade besuchten Seite in Elinks an die Zwischenablage zu übergeben und den Link anschließend weiterzureichen. Benutzt man jedoch Xclip ist nur ein weiterer Eintrag im Optionsmanager notwendig.

Taste O -> Dokumente -> URI-Delegierung

Jetzt nur noch einen neuen Eintrag namens "Zwischenablage" hinzufügen, der den folgenden Befehl ausführt.
echo -n %c | xclip -i -selection clipboard
Bedeutet nichts anderes, als dass der Link an Xclip übergeben und in die Zwischenablage kopiert wird, von wo er mit STRG+v in jede X- oder Konsolenanwendung eingefügt wird. Je nach dem, ob nun die y-Taste oder Alt-y aufgerufen wird, lässt sich so der Link der gerade besuchten Webseite oder irgendein beliebiger Link auf einer Seite, der gerade ausgewählt ist, in die Zwischenablage kopieren und dort weiterverarbeiten.
Klingt nach einer esoterischen Lösung, jedoch ist sie außerordentlich schnell. Am besten behält man sie im Hinterkopf, wenn man wieder einmal Elinks, Irssi, Mplayer, Youtube-dl, Wget, Aria2 und andere bekannte Applikationen für die Konsole benutzt.

Rxvt-Unicode

Zum Schluss: Rxvt-Unicode oder kurz urxvt. Ein schlanker Terminal-Emulator, der über Unicode- und Perl-Unterstützung verfügt. Bert Münnich hat eine nette Sammlung von nützlichen Perl-Erweiterungen für urxvt zur Verfügung gestellt, darunter auch das Clipboard-Skript. Welche Veränderungen man dafür in der .Xdefaults/.Xresources vornehmen muss, steht z.B. im Gentoo-Wiki.
Mit Xclip und der Perl-Erweiterung ist es danach möglich auch Text in die Zwischenablage zu kopieren und umgekehrt auch von X-Anwendungen mit Control-v in Rxvt-Unicode einzufügen.
Kopiert das Clipboard-Skript nach /usr/lib/urxvt/perl, um es global verfügbar zu machen. Meine Optionen für die .Xdefaults sind dann:

urxvt*perl-lib:         /usr/lib/urxvt/perl
urxvt*perl-ext-common:  default,clipboard
urxvt.keysym.A-c:     perl:clipboard:copy
urxvt.keysym.A-v:     perl:clipboard:paste
urxvt.keysym.A-C-v:   perl:clipboard:paste_escaped
urxvt.clipboard.copycmd:  xclip -i -selection clipboard
urxvt.clipboard.pastecmd: xclip -o -selection clipboard

Hier wird der Pfad zu den Perl-Erweiterungen definiert und die neue Erweiterung clipboard freigeschaltet. Die restlichen Zeilen legen die Tastenkombinationen fest, mit denen man Text vom Terminal in die Zwischenablage kopieren und umgekehrt auch wieder einfügen kann. Wichtig ist auch hier, dass sowohl für das Kopieren als auch für das Einfügen Xclip verwendet wird.

Fazit

Ich bin mir sicher, jeder stößt im Laufe der Zeit auf das Kopieren-und-Einfügen-Problem. Zwar ist die Standardlösung mit dem Markieren von Text mit der Maus und dem Einfügen mit der mittleren Maustaste sehr bequem und dazu auch noch äußerst schnell ausgeführt, jedoch funktioniert das bei umfangreich formatiertem Text nicht immer bestens. Mit Xclip gibt es ein sehr leichtgewichtiges Programm, dass das Leben auf der Konsole auf jeden Fall angenehmer macht. 🙂

hnb: Dein Notizbuch für die Konsole

Wohin mit den Gedanken zu Linux, wenn sie wieder einmal haltlos umhergeistern, während man gerade versucht sich auf etwas ganz anderes zu konzentrieren? Manchmal bin ich so nostalgisch angehaucht, dass ich ein Blatt Papier und einen Stift in die Hand nehme, sie schnell niederschreibe und mich dann nach zwei Tagen frage, was ich mir damit eigentlich sagen wollte. Ich weiß: bizarr.
In der Regel benutze ich natürlich irgendein elektronisches Medium als Speicherort und Stütze für alle wichtigen und unwichtigen Gedankengänge. Gute Dienste leisten mir der schlichte aber effektive Leafpad Editor oder Osmo, mit dem sich auch Termine und Mondphasen im Kalender überwachen und Kontakte merken lassen.
Denkt man etwas länger über das Thema Notizen nach wird einem schnell bewusst, dass es sich hierbei wieder mal nur um schnöden Text handelt. Braucht man dazu einen Dodeca Core, mit 12 GB RAM und 12 TB SSD Festplatte? Vermutlich nein. Es genügt der übliche ältere Rechner und ein schlankes Konsolenprogramm namens hnb.


Hnb gehört zu einer Reihe von Terminplanern und Notizanwendungen, die K.Mandla schon vor geraumer Zeit vorgestellt und empfohlen hat, die ich mir aber bis vor kurzem nicht näher angeschaut habe. Die drei Buchstaben von hnb stehen für hierarchical notebook, ein Notizbuch, welches auf Ncurses zum Zeichnen der Bedienungsoberfläche zurückgreift und sich praktisch auf jeder noch so alten Mühle ohne Einbußen benutzen lässt.
Wie der Screenshot zeigt und das "hierarchisch" schon andeutet, sind die einzelnen Einträge in hnb in einer Baumansicht gegliedert. Mit den Pfeiltasten navigiert man sowohl nach oben und nach unten und kann mit links/rechts tiefer in die Notizhierarchie hinab- oder auch wieder hinaufsteigen. Ist die Menge an Text zu umfangreich, scrollt man noch schneller mit der Bild-hoch-und-runter Taste.
Ein dickes Plus bei hnb ist, dass dieses kleine Programm sehr einfach nur durch Ausprobieren zu erlernen ist und nach dem ersten Programmstart eine leicht verständliche, kurze und knappe Anleitung bereitstellt, die alles Wesentliche erklärt.
In noch größerer Kürze funktioniert hnb so:

  • Einfach drauf lostippen oder Einfügen drücken und ein neuer Eintrag wird angelegt.
  • Kopieren, Ausschneiden und Einfügen funktioniert genauso wie man das von einer klassischen Desktopumgebung gewohnt ist. STRG+c, STRG+x, STRG+v
  • Man kann mit STRG+f innerhalb von hnb nach Begriffen suchen.
  • Einen Eintrag entfernt man mit (Überraschung) der Entfernen Taste oder STRG+x.
  • Möchte man eine Aktion rückgängig machen geht das mit STRG+z.
  • Mit <> werden Einträge ein- oder ausgerückt.
  • Mit + oder - lassen sich auch Strichpunkte unterhalb der aktuellen Position aus- und wieder einklappen.
  • Mit STRG+s werden Notizen alphabetisch sortiert.
  • Mit STRG+t wird zwischen Listenpunkten und einem Kontrollkästchen (Checkbox) umgeschaltet, welches sich mit STRG+d aus- oder abwählen lässt. Praktisch für jede Todo-Liste.
  • Ebenfalls äußerst nützlich ist die Möglichkeit URLs oder E-Mail-Adressen mit Hilfe von STRG+a direkt im voreingestellten Programm aufrufen bzw. ausführen zu können.
  • Benutzt man Screen sollte man die Tastenkombination STRG+a in der Konfigurationsdatei ~/.hnbrc genauso wie den bevorzugten Browser oder E-Mail-Client umstellen. Ich benutze hier Alpine und Elinks mit hnb, dass sich hervorragend mit den anderen Konsolenfavoriten ergänzt.
  • Hnb hat auch ein Menü, welches man mit ESC erreicht.

Außerdem gibt es noch Vorlagen für Kalender, die sich in hnb einfügen lassen. Ich werde hier voraussichtlich wyrd in Zukunft benutzen, was ich demnächst kurz vorstellen werde. Des Weiteren lassen sich alle Informationen in verschiedene Formate wie XML, HTML, ASCII oder Postscript exportieren. Bleibt zum Schluss nur noch zu sagen, dass hnb ein sehr intuitives und praktisches Programm ist, dessen einziger Mangel nur die fehlende UTF-8 Unterstützung ist.
In Zukunft werde ich es bestimmt öfter benutzen und vielleicht komme ich irgendwann auch einmal auf vimwiki zurück, wenn ich mehr Vernetzung zwischen Einträgen brauche. Doch ab sofort im Hier und Jetzt ersetzt hnb nun erst einmal Osmo zum Speichern und Organisieren wirrer Gedanken. 🙂

Webseiten mit elinks in screen über eine SSH-Verbindung mit rxvt-unicode solarisiert betrachten

Die Überschrift sagt schon alles. Ich vermute ein ähnliches Problem dürfte weniger als ein Milliardstel der Weltbevölkerung betreffen, aber aus Spaß hier die kurze Geschichte.
Ich hatte mich per SSH in den Toshiba Portégé 3110CT alias speedy eingeloggt und wollte nun mit Solarized und meinem neuen 256-Farben-Terminal rxvt-unicode das System updaten und überprüfen, ob mein Blog in elinks irgendwie anders als zuvor aussah. Wenn ich mich remote zu meinem mit Debian Stable betriebenen Laptop verbinde, starte ich danach für gewöhnlich screen, womit es mir leichter fällt mehrere Anwendungen parallel wie mit einem grafischen Fenstermanager zu nutzen.
Als erstes erhielt ich die Fehlermeldung

Error opening terminal: rxvt-unicode

als ich versuchte eine Anwendung wie htop zu starten. Das Problem resultiert daraus, dass das System den Terminal rxvt-unicode-256color nicht kennt und deshalb auch nicht weiß, wie es das aufgerufene Programm darstellen soll. Da das scheinbar ein uraltes Problem ist konnte ich sowohl im englischen Gentoo als auch im deutschen Arch Linux Wiki eine Lösung hierzu finden. Kurz gesagt, muss die Terminfo Datenbank auf den aktuellen Stand gebracht werden und eine Infodatei im versteckten Ordner .terminfo im Home-Verzeichnis des Benutzers auf dem entfernten Rechner angelegt werden.
Im Gentoo-Wiki wird das elegant so gelöst:

infocmp rxvt-unicode | ssh USER@REMOTE_IP 'mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti'

Auf dem lokalen Rechner werden die Informationen über den verwendeten rxvt-unicode-Terminal abgefragt und über SSH auf die entfernte Maschine geschickt, wo die Infodatei mit Hilfe von tic von einem Quellformat in ein kompiliertes Format umgewandelt wird. Danach konnte ich dann wie gewohnt Programme öffnen.
Obwohl ich den Terminaltyp in elinks nicht auf 256 Farben eingestellt hatte, sondern weiterhin bei den 16 ANSI Farben belassen hatte, wurde meine Webseite ohne weiteres Zutun schon in den Solarized-Farben dargestellt. Als allgemeiner Tipp solltet ihr bei Farbproblemen % in elinks drücken, womit man zwischen verschiedenen Dokumentfarben umschalten kann. Ich verstehe nur noch nicht, warum bei manchen Farbkombinationen die Schrift fett dargestellt wird und bei manchen normal. Vermutlich hat das etwas mit dem ANSI-Farbcode zu tun. Und so sieht gambaru in elinks solarisiert aus. 😉

Aus elinks mach Firefox

"Seltsam", dachte ich. Als ich eine der Vorzüge des modernen Web, Google Mail, einmal mit elinks erkunden wollte, scheiterte der Spaß schon beim Login.
Sollte er aber nicht, da elinks mit Formularfeldern und der Übertragung von Daten mit POST ansonsten gut zurecht kommt. Ich erninnerte mich dann wieder in der c't gelesen zu haben, dass selbst Opera mittlerweile von einigen prominenten Seiten ausgeschlossen wird. Wie sollte es da einem Exot wie elinks anders gehen?
Natürlich fiel K.Mandla dieses Problem vor einiger Zeit auch schon auf, weswegen ich nur noch seinen Tipp in die Tat umsetzen und den user-agent von elinks auf Firefox umändern musste.
In Elinks findet sich die Option hierfür im Optionsmanager "o" unter Protokolle->HTTP->Benutzer-Programm Identifikation.
Die magische Zeichenkette könnte z.B. so aussehen, womit man sowohl Firefox als auch ein 64 bit Betriebssystem und englische Sprache vorgaukelt.

Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5

Die Weisheit "Kleider machen Leute" trifft so auch unumwunden auf die elektronische Welt zu.
Als netter Nebeneffekt konnte ich mich danach nicht nur in Google Mail einloggen, auch der kurze Lag bei Aufruf größerer Seiten war verschwunden. Die Darstellung mancher Seiten ändert sich im positiven Sinne ebenfalls, da der Webserver nun davon ausgeht mit Firefox zu kommunizieren.

Fazit: Elinks war unschuldig. Sollten in Zukunft ähnliche Probleme auftreten, hat Google vermutlich Firefox 3.5 auf die Schwarze Liste gesetzt, wodurch wiederum nur ein erneutes Ändern des user-agents hilft.
Falls euch Alpine oder Mutt also zu langweilig wird, leistet elinks beim Email lesen gerne Hilfe.
Und so sieht Google Mail in elinks aus. 😉

Der universelle Browser namens elinks

Als ich vor zwei Jahren ernsthaft damit begann nach alternativer Software für die Konsole zu suchen, assoziierte ich mit Textbrowsern noch so etwas wie w3m oder lynx, die ich in den ersten Jahren mit Linux ausprobiert hatte. Schließlich bin ich dann auf K.Mandlas Artikel "Howto: Use elinks like a pro" gestoßen, der zu diesem Zeitpunkt auch schon wieder drei Jahre alt war.
Irgendwie erscheint die Verwendung eines Textbrowsers im Jahr 2011 ein Anachronismus zu sein, etwas was in die flashige, Javascript-animierte Online-Welt nicht mehr richtig passen mag. Dabei ist Elinks wohl der Textbrowser, der am ehesten an die Funktionalität eines grafischen Browsers heranreicht. Die Darstellung und Formatierung von Webseiten ist erstaunlich gut, obwohl er sich nur der universellen Schnittstelle schlechthin bedient - Text .
Elinks lässt sich auch durch verschiedene Skriptsprachen wie LUA, Perl oder Ruby erweitern. Dafür verzichtet man auf Javascript, Javaapplets und Flash. Ich kenne zwar keine Sicherheitsstudien zu elinks, aber allein das Fehlen dieser potentiellen Einfallstore und die Tatsache, dass https und SSL unterstützt wird, lassen mich ruhig schlafen.
Was ist nun so toll an einem Textbrowser? Für mich besteht das Universelle in elinks darin, dass er mich nicht darauf einschränkt, welche Hardware ich nutzen muss, um eine Information im Internet zu finden. Egal ob es der 15 Jahre alte Toshiba Satellite 220 cs mit 16 MB RAM oder der vor Kraft strotzende Intel 2 Duo mit 4 GB RAM ist, elinks erledigt einfach die Arbeit.
Arbeite ich unter X öffne ich einfach den Terminalemulator, gebe elinks ein und 1 Sekunde später befinde ich mich in der Adresszeile des Browsers. Adresse eintippen, Enter, Seite ist da. Da die Google-Suche schon als Smart Prefix definiert worden ist, genügt ein vorangestelltes g und der Suchbegriff um direkt zu den Suchergebnissen zu gelangen.

Das Angenehme: Elinks lässt sich sowohl effizient von der Tastatur als auch mit der Maus steuern. Ein typischer Ablauf sieht so aus:

  1. Elinks starten, URL in Adresszeile eingeben oder mit Hilfe eines Smart Prefix direkt nach einem Suchbegriff suchen. Elinks merkt sich Eingaben. Pfeiltaste Hoch und Runter bringt alte Eingaben hervor. Mit "g" ruft man jederzeit die Adresszeile wieder hervor.
  2. Mit den Pfeiltasten für Hoch- und Runter zu den Links navigieren.
  3. Mit ENTER oder der Pfeiltaste nach Rechts folgst du dem Link. Mit der Pfeiltaste nach links geht es eine Seite zurück.
  4. Drücke "t" und ein Tab öffnet sich (ja elinks kann Tabs!). Wechsle mit <> zwischen den Tabs hin und her und schließe sie wieder mit "c".
  5. Gefällt dir eine Seite, drücke "a" und speichere sie als Lesezeichen. Um alle deine Lesezeichen anzuzeigen, drücke "s".
  6. Zeigt der Link zu einer Datei, die du herunterladen möchtest, drücke "d". Es können mehrere Downloads parallel und auch im Hintergrund ausgeführt werden.
  7. Am schnellsten findet man eine bestimmte Information indem man wie bei vim mit "/" die Suche öffnet, den Suchbegriff eingibt und mit n vorwärts und mit N rückwärts sucht. Als Alternative bietet sich auch die Zeichenweise Suche an, die mit "#" gestartet wird.

Mit einem Linksklick am oberen Rand von elinks lässt sich das Menü öffnen, welches man auch mit F10 oder ESC erreichen kann. In einer grafischen Umgebung gibt es auch ein Rechtsklick-Menü.
Die Einstellungsmöglichkeiten sind zahllos. Mit "o" lässt sich der Optionsmanager und mit "k" der Tastenbelegungsmanager öffnen.
Die Darstellung der Farben in Elinks ist abhängig von den individuellen Vorlieben und des verwendeten Terminals. Am besten man navigiert im Menü zu Einstellungen->Terminaleinstellungen und passt das Ganze an.
Benutzt man also z.B. das solarized Thema könnte ein Blogpost z.B. so aussehen.


Wordpress-Blogs und jede Webseite, die Wert auf Standards legt, lassen sich gut darstellen und angenehm lesen:


Auch Bilder lassen sich in einem Textbrowser mit Hilfe externer Programme wie feh anzeigen.

Wie bei jedem neuen Programm brauch man etwas Zeit um alle Fähigkeiten kennenzulernen. Verwirrend ist am Anfang sicherlich das Verhalten von Elinks bei Formularfeldern. Man sollte zuerst auf das Feld mit den Pfeiltasten für Hoch- und Runter navigieren und danach ENTER drücken. Erst dann lässt sich etwas in das Feld schreiben. Gibt es mehrere Felder, muss man unbedingt mit den Pfeiltasten zum nächsten Feld navigieren, bevor man aus Versehen erneut ENTER drückt, was dazu führt, dass die Eingabe per POST gesendet wird.
Ich benutze mittlerweile Elinks regelmäßig auf den älteren Laptops und auf dem modernen Dual-Core-Rechner als Sekundärbrowser neben Firefox/Iceweasel. Insbesondere ist Elinks in Kombination mit meinem Feedreader canto zu gebrauchen, für das Rtorrent-Setup und, man glaubt es kaum, auch als Hilfsmittel um Youtube-Videos ohne Flashplayer mit Elinks und Mplayer abzuspielen.
Elinks kann zwar nicht alles, aber gerade wenn es nur um Text und Informationssuche geht, gelingt mit ihm vieles schneller. Fotoblogs und Flashseiten sind nicht seine Domäne. Gut geeignet ist er hingegen, wenn man überprüfen möchte, ob die eigene Seite standardkonform und barrierefrei ist. Für weitere Screenshots und Ideen empfehle ich nochmal K.Mandlas Post. Viel Spass mit Elinks!

Effizient und schnell: rtorrent, screen und elinks

Heute möchte ich rtorrent, einen kleinen und sehr effizienten Bittorrent Client vorstellen und wie man ihn bequem aus der Ferne mit ssh kontrollieren kann. Im Zusammenspiel mit dem Terminal Multiplexer screen sind rtorrent und der Textbrowser elinks eine komfortable Lösung, um einen Bittorrent Client fernzusteuern, schnell und einfach neue Torrents hinzuzufügen und gleichzeitig äußerst effizient mit Systemressourcen umzugehen.
Durch die geringen Anforderungen an die Hardware eignet sich rtorrent auch für ältere Rechner und für Lösungen ohne grafische Desktopumgebung und lässt sich insbesondere für einen dedizierten Server, eine sogenannte Seedbox, nutzen.
Rtorrent ist eine auf ncurses basierende Oberfläche der Bittorrent Bibliothek libtorrent und ist derzeit bei Debian und Ubuntu in der Version 0.8.6 (rtorrent) und 0.12.6 (libtorrent) verfügbar. Zentrale Konfigurationsdatei bei rtorrent ist die im Home Ordner versteckte Datei .rtorrent.rc.

1. Schritt: Programme installieren

aptitude install ssh rtorrent elinks screen

2. Schritt: Konfiguration

Eine Beispieldatei der .rtorrent.rc gibt es auf der offiziellen Homepage. Hier findet man unter anderem die üblichen Einstellungen zur minimalen und maximalen Anzahl von peers pro Torrent, Anzahl der gleichzeitigen Verbindungen beim Upload und eine Option für die Beschränkung der Upload/Download Rate.
Ein interessantes Feature von rtorrent ist das Überwachen von Ordnern auf neue Torrents. Diese werden dann automatisch in rtorrent gestartet und nach erfolgreichem Download in einen anderen Ordner verschoben. Um ein solches Szenario einzurichten, geht man einfach so vor:
Im Home Verzeichnis einen Ordner Downloads erstellen und in diesem dann z.B. die Unterverzeichnisse watch, session, todo, fertig anlegen. In der .rtorrent.rc müssen danach nur noch folgende Angaben gemacht werden:

directory = ~/Downloads/todo
session = ~/Downloads/session
schedule = watch_directory,10,10,"load_start=~/Downloads/watch/*.torrent,d.set_custom1=~/Downloads/fertig/"
schedule = tied_directory,10,10,start_tied=
schedule = untied_directory,10,10,stop_untied=
system.method.set_key=event.download.finished,move_complete,"d.set_directory=$d.get_custom1=;execute=mv, -u,$d.get_base_path=,$d.get_custom1="

Die letzte Zeile sieht zwar etwas kryptisch aus, bewirkt aber, dass nach der Fertigstellung des Downloads dieser vom Ordner todo nach fertig verschoben wird. Um die Torrent Datei automatisch aus dem watch Ordner zu entfernen und somit das Seeden bei einem Verhältnis von 1:1 zu beenden, muss noch dieser Code eingefügt werden.

ratio.enable=
ratio.min.set=100
ratio.max.set=120
ratio.upload.set=20M
system.method.set = group.seeding.ratio.command, d.close=, d.erase=

Verschlüsselung des Datenverkehrs erreicht man in rtorrent durch den Eintrag folgender Zeile in die .rtorrent.rc

encryption = allow_incoming, try_outgoing, require, require_RC4

3. Bedienung

Nachdem man sich mit ssh auf dem Rechner eingeloggt hat, startet man zunächst mit dem Befehl screen den Terminal Multiplexer. In screen gestartete Programme laufen auch nach dem Ausloggen mit ssh weiter. Diese können gleichzeitig in unterschiedlichen Fenstern laufen und auch nebeneinander in der Konsole dargestellt werden. Hat man rtorrent ausgeführt, kann man mit der Tastenkombination STRG+A und dann SHIFT+S die Darstellung horizontal teilen. Mit STRG+A und TAB wechselt man zur nächsten Hälfte und kann dort mit STRG+A und c eine neue Konsole öffnen. Hier startet man elinks, mit welchem man nach neuen Torrents suchen kann. Im Optionsmenü lässt sich als Standard Ordner für Downloads dann auf den watch Ordner verweisen. Heruntergeladene Torrents landen also direkt bei rtorrent!
Indem man eine Torrent Datei aus dem watch Ordner löscht, lässt sich das Herunterladen oder Verteilen beenden. Mit dem Kommando STRG+A und d verlässt man screen und schickt es in den Hintergrund. Mit dem Befehl screen -r kann man sich erneut zu seiner Session und aller darin laufenden Programme verbinden. Für weitere nützliche Kommandos innerhalb von screen einfach STRG+A und ? eingeben. Das vertikale Teilen von screen funktioniert bei Debian mit der Kombination STRG+A und |. Mehr Screenshots und weitere Informationen zu screen gibt es hier.

Wie lässt sich rtorrent bedienen?

Rtorrent lässt sich komplett über die Tastatur steuern. Mit den Pfeiltasten bewegt man sich zwischen Torrents und den Menüoptionen. Mit der Pfeiltaste nach Rechts kommt man in ein Untermenü, wo man mehr über die heruntergeladenen Dateien, Peers und Tracker erfährt. In rtorrent gibt es mehrere Ansichten, die sich über die Tasten 1-9 erreichen lassen. Das Upload Verhältnis lässt sich mit a/s/d erhöhen und mit y/x/c reduzieren. Für das Download Verhältnis ist es entsprechend A/S/D und Y/X/C. Möchte man, dass rtorrent für ein bestimmtes Torrent die globalen Einstellungen ignoriert muss man SHIFT+i drücken. Drückt man einmal STRG+d stoppt der Up-und Download des ausgewählten Torrents, ein weiteres STRG+d entfernt das Torrent. Schließlich kann man rtorrent mit STRG+q beenden.

4. Fazit

Diese Erklärung sollte nur einen kurzen Eindruck vermitteln, was man mit drei Konsolenprogrammen erreichen kann. Transmission ist sicherlich mit einer grafischen Oberfläche intuitiver zu bedienen. Wer sich jedoch von der Konfiguration einer Textdatei und der Tastensteuerung nicht abschrecken lässt, erhält einen hocheffizienten Bittorrent Client und eine hervorragende Lösung sowohl für Low als auch High End Rechner.

5. Links

Offizielle Projektseite mit umfangreicher Dokumentation für rtorrent und libtorrent

Youtube-Videos mit Elinks und Mplayer anschauen

Wer kennt nicht das Problem. Man möchte schnell mal ein interessantes Video auf Youtube anschauen, aber der Browser braucht wieder eine gefühlte Ewigkeit um es abzuspielen. Die CPU ächzt, das Surfen wird zur Qual, Browser abgestürzt, Moment mal! Sieht man von "ab und zu" auftretenden Sicherheitslücken in Flash ab und der Tatsache, dass man mit Flash- und Super-Cookies recht leicht das Benutzerverhalten erfassen kann, ohne dass die meisten Nutzer überhaupt etwas davon ahnen, bringt Flash einige wirklich hübsche visuelle Animationen auf den Bildschirm.
Fraglich bleibt nur, wozu man eigentlich Flash benötigt, wenn man nur ein Video im Netz anschauen möchte. Zwar ist HTML5 unterwegs, doch wer schon heute zum Videos anschauen auf Flash verzichten möchte, dem kann mit Hilfe eines simplen Textbrowsers namens Elinks und dem Multimedia-Alleskönner Mplayer geholfen werden.
Die Grundidee ist einfach. Ausführlich vorgestellt wurde sie Anfang des Jahres in Englisch von Urukrama. Gesucht ist eine Anwendung, welche schnell Suchergebnisse von Youtube zurückliefert, die URL des Videos auflöst und per Tastendruck diese an eine weitere Multimediaanwendung zur Darstellung übergibt. Dabei kommen drei verschiedene Programme zum Einsatz.

  1. youtube-dl
  2. Youtube-dl ist ein Skript, welches Videos von youtube direkt von der Kommandozeile herunterladen kann.

  3. elinks
  4. Ein hervorragender Textbrowser mit einer Vielzahl an Optionen.

  5. mplayer
  6. DER Multimediaabspieler unter Linux. Mplayer ohne GUI ist die ressourcenschonendste Möglichkeit Videos anzuschauen.

15.01.2011 Update:
Seit dem 10.12.2010 hat youtube.com neue Sicherheitsvorkehrungen getroffen. Cookies dienen nun der Identifikation des Clients. Die notwendigen Veränderungen habe ich in die Skripte eingetragen. Alles funktioniert wieder wie beabsichtigt 😉
Vielen Dank an diesen Post auf multimedia.cx für die Lösung.
Als Alternative für youtube-dl bietet sich auch clive an.

utube-Skript erstellen

Als erstes muss ein ausführbares Skript erstellt werden, welches mit Hilfe von youtube-dl die youtube Video-URL auflöst und diese an mplayer übergibt, damit es direkt abgespielt werden kann. Das Skript kann z.B. utube heißen und muss mit chmod+x utube ausführbar gemacht werden. Danach wird es nach /usr/local/bin oder /usr/bin kopiert, damit es systemweit auf der Konsole ausgeführt werden kann. Neu seit dem 10.12.2010 ist die Notwendigkeit ein Cookie abzuspeichern, mit welchem man sich beim youtube Server identifiziert.
 

#!/bin/sh
COOKIE_FILE=/var/tmp/youtube-dl-cookies.txt
mplayer -cookies -cookies-file ${COOKIE_FILE} $(youtube-dl -g --cookies ${COOKIE_FILE} $1) > /dev/null 2>&1

Elinks konfigurieren

In Elinks die Taste "O" drücken und der Optionsmanager öffnet sich. Unter Dokument(e)>URI Deligierung einen neuen Eintrag hinzufügen und ihm z.B. den Namen youtube geben. Als Wert trägt man utube %c ein. Alles sichern und den Optionsmanager schließen.
Anschließend mit der Taste "K" den Tastenbelegungsmanager öffnen. In der Haupttabelle bis zur Option "Die URI des aktuellen Links an ein externes Programm übergeben" scrollen. An dieser Stelle lässt sich der Name der Taste definieren, z.B. y, mit der das utube Skript aufgerufen wird, sobald man auf youtube.com einen Videolink ausgewählt hat. Damit sind die Videolinks gemeint, die nach einer Suchanfrage auf youtube erscheinen. Es genügt also mit der Tastatur auf einen dieser Links zu steuern und y zu drücken, wonach das Skript seine Arbeit verrichtet und mplayer sofort mit dem Abspielen beginnt.
Um ein Video abspielen zu können, wenn man sich direkt auf der Videoseite befindet, muss im Tastenbelegungsmanager die Option "Die URI der aktuellen Ansicht an ein externes Programm übergeben" mit einer Taste oder Tastenkombination belegt sein. Ich habe hier Alt-y gewählt.

Youtube-Videos suchen leicht gemacht

Elinks bietet die Möglichkeit mit Hilfe eines sogenannten smart prefix eine Zeichenfolge durch eine kürzere zu ersetzen. Innerhalb von elinks öffnet sich mit der Taste "G" die Adresszeile des Textbrowsers. Hier könnte man z.B. youtube.com eingeben und landet dann auf der Seite des Videoportals. Von dort aus lässt sich über das Suchfeld nach Videos suchen, mit der Tastatur auf einen Videolink steuern und mit y das Video abspielen. Einfacher geht es, wenn man direkt in der Adresszeile nach den Videos suchen kann. Die direkte URL für Suchanfragen bei youtube lautet:

http://www.youtube.com/results?search_query=

Die Zeichenkette nach dem = wird von youtube ausgewertet und man erhält eine Liste von Videos zurück. Um nicht jedesmal erneut diese URL eingeben zu müssen, lässt sich diese in elinks zu einem einzelnen Buchstaben, einem smart prefix, umdefinieren.
Dazu muss man im Optionsmanager unter Protokolle>URI Veränderung>Komplexe Präfixe ein neues Zeichen hinzufügen und als Wert die oben genannte Such-URL eintragen und den Parameter %s anfügen. Ich habe hier ebenfalls y gewählt. Drückt man nun in elinks "G" und gibt

y beethoven mondscheinsonate

ein, erhält man eine Liste mit Videos zu Beethovens berühmter Sonate zurück und kann diese mit der Tastatur auswählen und durch Drücken von y abspielen, ohne den Umweg über youtube.com und das Suchfeld gehen zu müssen.

Youtube-Videos herunterladen

Natürlich funktioniert auch der direkte Download eines Videos. Folgendes Miniskript ebenfalls in /usr/local/bin/ abspeichern und wie oben beschrieben mit dem Optionsmanager in Elinks z.B. unter dem Namen "download" verfügbar machen. Danach erscheint ein weiterer Menüeintrag "download" sobald die Taste "y" bei ausgewähltem youtube Link gedrückt wird.

#!/bin/sh
cd ~/Videos/youtube/
youtube-dl -t $1 > /dev/null 2>&1

Zum Schluss

Es gibt zwar tolle Addons für den Firefox, mit denen sich Videos leicht von youtube herunterladen und dann mit einem Player der Wahl abspielen lassen. Auch bietet z.B. Totem mit Plugins die Möglichkeit Videos direkt aus dieser Multimediaanwendung abzuspielen.
Wer aber eine sehr effiziente und leichtgewichtige Lösung sucht um Youtube Videos auf nahezu jedem Rechner abzuspielen, ohne sie vorher herunterzuladen, sollte youtube-dl, elinks und mplayer eine Chance geben. Die oben genannte Lösung funktionierte sogar auf meinem Toshiba Laptop mit 64 MB RAM und 300 MHz CPU. Wer schafft es außer mplayer youtube Videos im Framebuffer abspielen zu können? 😛

Meine elinks.conf

elinks.conf.tar