Den Terminalmultiplexer GNU Screen im Solarized-Thema erstrahlen lassen

Hier ist eine kleine Notiz, wie man ganz einfach Anwendungen und die Shell in GNU Screen mit dem fantastischen Solarized-Thema aufpolieren kann. Die Lösung war schließlich ganz einfach, auch wenn ich zuerst gedacht hatte, es würde länger dauern das Problem zu lösen.
Bisher sahen Verzeichnisse und Dateien in Screen trotz meiner Umstellung auf "Solarized" grau in grau aus.
rxvt-unicode ohne solarized
 
Ich fand schnell heraus, dass Screen einen eigenen Wert "screen" für die $TERM-Variable hatte, der sich von meinem favorisierten Terminalemulator "rxvt-unicode-256color" unterschied. In der ~/.screenrc lässt sich der Wert in der Theorie mit

term     rxvt-unicode-256color

ändern. Bei mir passierte jedoch nichts. Also warum nicht den Zustand akzeptieren und meine ZSH-Einstellungen in ~/.zshrc.local erweitern.

ZSH

if [ $TERM = rxvt-unicode-256color ] || [ $TERM = screen ]; then
        eval `dircolors $HOME/.dir_colors`
fi

Am Ende musste lediglich die if-Abfrage so erweitert werden, dass nicht nur in Rxvt-unicode-256color, sondern auch in Screen die Farbpalette Solarized geladen wurde.
 
rxvt-unicode mit solarized

Vim

Blieb nur noch Vim übrig. Hier ist die Syntax geringfügig anders. Um tatsächlich 256 Farben zu erhalten, muss t_Co auf 256 gesetzt werden, der Rest ist wieder nur eine Erweiterung der IF-Abfrage.

set t_Co=256
set background=dark
if (&term=="rxvt-unicode-256color" || &term=="screen")
        colorscheme solarized
endif

Danach erstrahlt sowohl der normale Terminalemulator als auch Screen in Solarized. Trivial. 🙂

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. 😉

Solarized: dircolors mit 256 Farben für rxvt-unicode

Seit zwei Monaten nutze ich Ethan Schoonovers Farbschema "Solarized" für meinen Terminalemulator rxvt-unicode und meinen bevorzugten Editor Vim. Ich bin seither sehr zufrieden mit dem neuen Aussehen des Terminals. Verzeichnisse und verschiedene Arten von Dateien werden dadurch einfach besser hervorgehoben. Am liebsten wäre mir aber anstatt der 16 ANSI Farben das komplette 256-Farben-Thema gewesen. Obwohl ich damals die richtige TERM-Variable in .Xdefaults gesetzt hatte, passierte leider rein gar nichts.
Doch dann geschah es.
Als ich vor ein paar Tagen aptitude search rxvt ausführte, entdeckte ich plötzlich das Paket rxvt-unicode-256color. Autsch und Sorry. 😳 Irgendwie muss mir entgangen sein, dass es mehrere Rxvt-Unicode-Pakete bei Debian gibt und stillschweigend hatte ich angenommen, dass man den 256-Farben-Modus in der .Xdefaults an- und ausschalten kann.
Hat man rxvt-unicode-256color erst einmal installiert und die Variable

urxvt*termName:        rxvt-unicode-256color

in der .Xdefaults gesetzt, muss man nichts weiter tun als die Datei dircolors.256dark von seebis git Repositorium herunterzuladen und wie im alten Beitrag beschrieben nach ~/.dir_colors kopieren und dann von ~/.profile mit dem eval Befehl aufzurufen. Danach sind dann die Farben der Dateien und Verzeichnisse mit 256 Farben solarisiert.

Auch die Farben in Vim sehen dann gegenüber der alten 16 Farben ANSI Version natürlich verändert aus.

Mir gefällt Solarized als Farbthema weiterhin ausgezeichnet gut und wer nicht so auf dunkle Themen steht, sollte sich auch einmal die helle Version von Solarized anschauen, auf die sich spielend leicht in jedem Editor umstellen lässt.

Solarized: Massage für die geplagten Augen

Ab und an bin ich auf der Suche nach einer neuen Idee um das Terminal ein wenig zu verändern. Diese Woche bin ich an einer interessanten Farbpalette namens Solarized hängen geblieben. Ethan Schoonover hat ein, wie ich finde, elegantes Thema gefunden, welches unter anderem die Farbgestaltung diverser Terminalemulatoren und die Syntaxhervorhebung von Editoren optimiert.

Farben in Vim ändern

Als Farbschema in Vim habe ich z.B. bis vor kurzem desert genutzt und nun erst einmal auf Solarized umgestellt. Das Thema schafft es mit geringem Kontrast sowohl auf dunklem als auch auf hellem Hintergrund zu überzeugen.
Die Installation war nicht besonders schwer.

  1. Auf der Homepage von Ethan Schoonover die gezippte Datei solarized.zip herunterladen.
  2. Im Ordner vim-colors-solarized die Datei solarized.vim nach ~/.vim/colors kopieren.
  3. ~/.vimrc editieren:

    syntax enable
    set background=dark
    colorscheme solarized

Für einen hellen Hintergrund das dark einfach durch light ersetzen. Es gibt noch ein paar optionale Einstellungen, die aber gut dokumentiert sind.

Farbpalette in rxvt-unicode auf solarized anpassen

Normalerweise stelle ich keine großen Anforderungen an einen Terminalemulator (na gut vielleicht ein paar ;)), außer dass er schnell reagieren muss, wenig Ressourcen verbraucht und flexibel anpassbar ist. Hier kommt dann rxvt-unicode oder kurz urxvt ins Spiel.
Im Solarized-Ordner Xresources müssen die dort stehenden Farbwerte entweder in die Datei Xresources oder in die Xdefaults im Home Verzeichnis kopiert werden.
Nach diesen Schritten sieht eine Python Datei in Vim nun so aus.

dircolors in urxvt anpassen

Die Farben der Verzeichnisse und Dateien sahen mit dem GNU Befehl ls noch nicht "solarized" aus. Dank huyz git repository und ausführlicher Anleitung hat sich mein Terminal nun von den Standardfarben weiterentwickelt.
Aus einem nicht nachvollziehbaren Grund konnte ich die 256 Farben Version nicht nutzen (*hust* hier steht warum), obwohl die TERM Variable auf "rxvt-unicode-256color" gesetzt worden war. Die Farben waren komplett falsch. Das ANSI-Universal Thema hingegen funktionierte.

    1. Die entsprechende Datei bei seebi oder huyz git repository herunterladen.
    2. Die Datei dircolors.ansi-universal kann z.B nach ~/.dir_colors kopiert werden.
    3. Den Befehl eval `dircolors $HOME/.dir_colors` in die Datei ~/.profile einfügen.

Dann den Terminal neustarten und man sollte ähnliche (leider keine 256 Farben) Terminal-Screenshots wie bei huyz sehen.

Fazit

Solarized gefällt mir zur Zeit ziemlich gut. Die Vim-Konfiguration ist sehr angenehm für die Augen und verschiedene Syntax wird deutlich hervorgehoben. Einzelne Konsolenanwendungen funktionieren aber noch nicht perfekt mit meiner momentanen Konfiguration und solarized. So gibt es bei manchen Htop-Themen auch mal gar nichts zu lesen auf Grund unpassender Kontraste zwischen verschiedenen Schriftfarben. Da Solarized noch im Beta Stadium ist kann ich nicht 100% sagen, ob es an dem Thema liegt oder falscher Einstellungen meinerseits. Wahrscheinlich eher letzteres.
Tiefergehende Diskussionen zu diesem Thema gibt es auch hier. Als Erinnerung für mich: Um die Terminus Schriftart unter Debian für urxvt einzurichten muss das Paket xfonts-terminus installiert werden und in der .Xdefaults folgender Eintrag stehen:

urxvt*font: xft:Terminus:pixelsize=14