top mit Farben

Wer sagt denn, dass top nicht etwas farbiger sein darf? Es muss nicht zwingend htop deswegen verwendet werden…

Hab hier ein .toprc gefunden (zu faul, um selbst was zusammenzustellen, ist ja nur zum Testen. Ansonsten muss man sich wohl etwas intensiver mit den manpages von top befassen…)

Ab Version 3.6 von top gibt es auch die TOPCOLORS-Variable (Debian sid hat 3.3.12 drin…), damit finde ich das setzen von den Farben etwas verständlicher:

tag ist der Name des zu checkenden Wertes, min und max spezifizieren den Range dieses Wertes und code ist der ANSI-Farbcode.

 

 

Terminals…back to xterm und ich bin doch bei xterm hängen geblieben...

Ich bin nun doch wieder etwas weg von lilyterm. Generell funktioniert es zwar ja ganz gut und ich war auch recht zufrieden (u.a auch, weil die Config einfach ein File unter .config ist), jedoch hat auch lilyterm einige (wenn auch wenige) Sachen, die mir doch nicht passen:

  • Entwicklung scheint ziemlich tot (aktiv würde ich jetzt in dem Repo nicht sagen…)
  • die Preview in Ranger “verschwindet”, sobald der Fokus auf ein anderes Fenster gerichtet ist (was rxvt bei mir übrigens auch macht)

Das Ranger-Preview-Issue ist ja schon recht minimales Problem, aber wenns mit einem anderen Terminal klappt, warum nicht ? Naja, also wieder zurück zu rxvt bzw… xterm. Warum so weit in die Ferne schweifen…? xterm zeigt auch Ranger-Previews an, wenn der Fokus nicht aktiv ist. Also, back to the roots, xterm scheint jedoch absolut passend für mich derzeit. Xresources hab ich eigentlich nur minimal angepasst, gemäss einigen Hints aus dem Arch-Wiki

Auf reddit gibt’s übrigens noch einen interessanten Thread über “is new always better ?”

Nichtsdestotrotz – die lilyterm config schmeiss ich doch ins git repo für meine dotfiles, man weiss ja nie 😉

PS: ja ich weiss, alle reden derzeit von der fish-Shell, aber das hab ich noch nicht angeschaut (gibt noch einen interessanten Blog-Beitrag von noqqe, den ich mal genauer anschauen wollte). Werde ich vielleicht bei Gelegenheit mal machen, aber derzeit hab ich keinen Bedarf und in letzter Zeit genügend terminals getestet… 😉

Lilyterm

Schon seit einiger Zeit bin ich urxvt am einrichten, tweaken etc, aber dazu später eventuell mehr.

Auf Reddit wurde grad das Thema Lilyterm eingeschmissen – ich hab das nicht gekannt, aber gleich mal montiert und ich muss sagen, es gefällt mir auf Anhieb. Die Pro-Punkte werden ja schon auf Reddit erwähnt (lightweight, wenig dependencies, etc). Zudem funktioniert auch die File-Preview in Ranger tadellos mit lilyterm. Ich glaube, dass Lilyterm mal mein default wird, dann kann ich mehr dazu sagen….

dd mit Status

Ich hab das jahrelang nicht gewusst – mit dd kann man auch den Status anzeigen mit status=progress. Damit ich’s nicht vergesse, wirds hier dokumentiert…

 

vim: doc, odt, pdf und Co. Office-Files mit vim öffnen

Grad auf Reddit gesehen und finde es erwähnenswert: mit diesem Schnipsel kann man Word-Dokumente, LibreOffice-Dokumente etc direkt in vim öffnen (RO). Natürlich müssen die benötigten Tools installiert sein (antiword, pandoc, odt2txt etc).

Und das ganze funktioniert dann auch noch verdammt gut. Geil.

taskwarrior taskmanagement done right

Bin beim “RSS-Feeds” räumen grad auf diesen Blogeintrag gestossen und hab mir gedacht, dass ich Taskwarrior auch mal anschauen werde… (ja ich weiss, ist schon älter, hab ihn immer “ungelesen” gelassen, da ich es eben genauer anschauen wollte…)

Task anlegen

Ich mach jetzt grad ein Beispiel, bei dem möglichst viele Angaben enthalten sind. Diese müssen natürlich nicht immer angegeben werden

Das legt dem Tasl “über taskwarroir schreiben” unter dem Projekt “work” mit den tags “blog”, dem Fälligkeitsdatum in einer Woche, der Priorität Medium an. Zudem ist er abhängig vom Task mit der ID 2 + 4.

Oder einen monatlichen Task erstellen, aber nur für ein Jahr

Auch ganz cool: Monatlich jeweils am 25-ten

und dann andere Zahlungen abhängig machen davon

Ändern

Mit modify können Tasks geändert werden (man kann aber auch “edit” verwenden und via vi anpassen)

Notizen

um eine Notiz bei einem Task hinzuzufügen:

Dies kann man beliebig oft wiederholen. In der Auflistung wird mit der Anzahl Notizen in [] hingewiesen, bspw.:

Filterung

Wenn man nur die Tasks mit gewissen Tags oder von gewissen Projekten angezeit haben möchte, kann man das einfach bei den Parametern mitgeben, z.B.:

Das ganze geht natürlich auch ohne Tags / Projekt, aber ich finde diese Optionen schon ziemlich cool…

Wenn man einen Task starten, teilt man das einfach taskwarrior mit (ich glaube, damit wird auch einfach die Priosisierung in tw aktualisiert). Zudem kann man bspw. mit “task active” checken, woran man grad arbeitet…

wenn er erledigt ist einfach “done” setzen…

Doku

Das ganze geht natürlich ins “Endlose”, also schaut man sich am Besten mal die Doku mit etlichen Beispielen und Erklärungen an (hab ja auch das meiste nur daraus kopiert…)

Suche

mit task ls /suchbegriff/ kann man recht simpel suchen

Viele weitere Beispiele findet man in der Doku… darum geh ich auch nicht weiter darauf ein…

Integration in Mutt

Um Mails zu Tasks zu machen, erstellt man ein Keybinding. Ich habe C-a gewählt (t ist bei mir schon für’s Taggen reserviert)

Dass mutt2task-Script ist ziemlich simpel gestrickt:

Damit wird ein Task mit dem Mailsubject und dem Tag “email” erstellt.

Sync mit Bugtracker

Mit bugwarrior können Tickets aus Redmine, Github, Jira und etlichen anderen Bugtrackern synchronisiert werden. Wird dort ein Ticket geschlossen, wird dies auch beim nächsten Syncdurchgang berücksichtigt. Die Dokumentation hat zu allen Services Beispiele. Das ganze schaut dann in etwa so aus (hier mit Redmine):

Somit werden Tickets mit dem Tag “redmine” zum Projekt “work” synchronisiert, auf 100 limitiert. Wird ein Ticket geschlossen, wird dies natürlich auch im Sync berücksichtigt…

Server

Verwendet man Taskwarrior auf mehreren Endgeräten, ist natürlich eine Serverinstanz gar nicht uninteressant. Auch hierzu gibt es eine Lösung: den Taskserver (unter Debian ist er als taskd paketiert).

Es gibt auch etliche Tools / Erweiterungen für Taskwarrior, bspw. Weboberflächen etc. Ziemlich cool, das ganze. Und so kann man auch Leute dazu bewegen, Taskwarrior einzusetzen, die nichts mit einem cli-Interface zu tun haben möchten…

Übersicht

so schaut in etwa ein “task next” Output aus…

mein Fazit

also ich setze das ganze jetzt seit etwa einer Woche ein – und ich bin verdammt begeistert. Vorallem der Sync mit Redmine, einfach Hammer. Ich habe das Gefühl, dass ich meine “Tasks” wesentlich besser im Griff habe, seitdem ich taskwarrior verwende. Ich kann jedem nur empfehlen, taskwarrior mal anzuschauen. Für mich ist es generell eine sehr grosse Bereicherung, jetzt habe ich Mail (mutt), Kalender (khal), Kontakte (khard) und IM (profanity/weechat) im “TUI” (terminal user interface). Das macht mich schon sehr happy…

Eigentlich dachte ich, dass Redmine schon mehr als genug ist für mich (würde ich auch nicht meĥr weggeben), aber taskwarrior setzt noch eins drauf…

EDIT [30.01.2018]

Nach bald einem Monat mit taskwarrior bin ich immer noch voll begeistert, hab mich jedoch noch nicht dazu bewegt, eine Serverinstanz aufzusetzen (taskd).

Gerade eben kam mir noch todoman in die Quere. Es ist zwar wesentlich weniger umfangreich, was ich bei todoman aber sehr schön finde, ist die out-of-the-box Integration mit CalDAV. Das scheint bei taskwarrior leider nicht so ein Thema zu sein.

 

tmux

Ich konnte es nun doch nicht bleiben lassen und hab mir kurz tmux angeschaut. Also Splitting ist wesentlich simpler als in screen (unter Screen finde ich das ganze eigentlich doch noch recht umständlich…aber intensiv angeschaut hab ich’s auch nicht mit screen, um ehrlich zu sein…).

Ich bin ja kompletter tmux/screen Anfänger, aber ich denke, dass es meinen Workflow ziemlich beeinträchtigen wird in Zukunft.

eine neue Session starten:

auch hier ist der Sessionname nicht zwingend, es reicht auch nur die einfach die Eingabe von tmux, um eine Session zu starten

vorhandene Sessions auflisten

auf vorhandene Session verbinden

Wenn nur eine Session läuft, reicht tmux a (oder tmux at oder tmux attach)

Bei mehreren Sessions kann mit -t den Sessionnamen mitgeben

andere Shortcuts

C-b c neues Sessionfenster

C-b [Fensternummer] Fensterwechsel

C-b d tmux “aushängen” (reattach mit screen a)

C-b , Fenstertitel umbenennen

C-b ‘ Fensterwechsel durch Eingabe des Titels / Fensternummer

C-b w Fensterliste anzeigen (sehr geil; mit Preview!)

C-b % horizontal splitten

C-b “ vertikal splitten

C-b [Pfeiltasten] zwischen gesplitteten Fenstern wechselt man einfach mit den Pfeiltasten, ziemlich logisch (mit aktiver Maus kann natürlich auch diese verwendet werden)

C-b q Pane Nummern / IDs anzeigen (oder tmux list-panes [-a])

C-b ? Hilfe anzeigen

C-b x aktuelles Fenster schliessen

C-b :kill-session Alle Fenster schliessen und tmux beenden

Statusbar

Und mit echo $TERM findet man raus, ob man sich gerade in einer tmux-Session befindet oder nicht. Falls schon, sieht man es in der Ausgabe mit “screen…”, also identisch mit screen. Jedoch kommt tmux bereits von Beginn mit einer Statusbar daher (zumindest bei mir), also sieht man’s eigentlich auf Anhieb.

Colors

ohne grosse Konfiguration gab’s bei mir schnell Fehler, bspw., wenn ich mutt mit meinem Farbschema gestartet hab (Terminal hat zuwenig Farben). Dies muss man tmux in der Config mitteilen:

Auf die config geh ich jetzt aber nicht weiter ein, da findet man hunderte Beispiele auf Github…

Panes resizen

Mit aktiver Maus können die Panes wie erwartet angepasst werden. Ansonsten kann man in den Eingabemodus wechseln und via command Anpassungen tätigen.

C-b : in den Eingabemodus wechseln

Panes verschieben

Manchmal möchte man ja auch Panes “verschieben”. Kein Problem:

C-b C o : Panes swappen
C-b Alt o : Panes swappen (wenn mehr als zwei Panes offen sind)

kompletten Platz ausnutzen

Wenn ich bspw. mit dem Laptop auf eine Session am Desktop verbinde, ist natürlich das Verhältnis nicht identisch. Je nachdem werden dann Bereiche “ausgespart”:

Um dies zu unterbinden trennt man am besten alle anderen Connections, wenn man sich verbindet.

Natürlich kann man auch einfach attachen, dann muss man jedoch mit halt mit dem ungenutzen Platz “leben”. Eine andere Variante (hab ich aber selber nicht getestet): C-b Shift-D, um andere Sessions zu trennen. Anscheinend listet dann tmux alle Sessions und man kann auswählen, was man detachen will.

Copy/Paste

den Copymodus in tmux hab ich noch nicht wirklich geschnallt. Sofern jedoch die Maus aktiviert ist, kann man die Shift-Taste gedrückt halten und mit der linken Maustaste den Text markieren. Somit ist es bereits kopiert. Einfügen kann man mit gedrückter Shift-Taste und der mittleren Maustaste.

Keyboard only

Aber natürlich möchte ich so oft wie möglich auf die Maus verzichten. Das ist auch nicht weiter schwierig:

C-b [: in den Kopiermodus wechseln
Space: gewünschten Text mit der Leertaste markieren
Enter: Auswahl kopieren

Den kopierten Text kann man mittels C-b ] einfügen. Hier ist jedoch zu beachten, dass der kopierte Text nur innerhalb von tmux nutzbar ist. Um dies generell nutzen zu können, wäre glaub ich das Plugin tmux-yank nutzbar, kann aber nichts dazu sagen, da ich’s bisher noch nicht getestet hab.

Plugins

Es scheint, dass es recht viele Plugins (und auch einen entsprechenden Plugin Manager) für tmux gibt, jedoch bin ich noch nicht soweit 😉

GNU Screen

Ich hab schon länger gedacht “das hätte ich jetzt bequemer machen können mit screen”, war aber immer zu faul, mir das ganze genauer anzuschauen. Grosser Fehler…

Eigentlich braucht man gar nicht viel von screen zu wissen, um einigermassen schlau damit zu arbeiten:

eine neue Session starten:

(der Session-Name ist optional, ich würde es aber empfehlen, vor allem, wenn mehrere Sessions gestartet werden)

vorhandene Sessions auflisten

(auch mit -list möglich)

auf vorhandene Session verbinden

andere Shortcuts

C-a c neues Sessionfenster

C-a n Fensterwechsel (auch mit C-a space oder C-a C-n möglich)

C-a d screen “aushängen” (reattach mit screen -r)

C-a A Fenstertitel umbenennen

C-a “ vorhandene Fenster auflisten

C-a ‘ Fensterwechsel durch Eingabe des Titels / Fensternummer

C-a w Fensterliste anzeigen (z.B. wenn man keine Statusbar hat)

C-a ? Hilfe anzeigen

Statusbar

Und mit echo $TERM findet man raus, ob man sich gerade in einer screen-Session befindet oder nicht. Falls schon, sieht man es in der Ausgabe mit “screen.xterm-…”.

Jedoch wesentlich bequemer finde ich, wenn man eine .screenrc anlegt und dort eine Statusbar definiert. Ich hab jetzt einfach mal das “erstbeste” via copy-paste hier eingefügt, muss mir meine Statusbar erst noch zurechtbasteln

Dann kriegt man in screen jeweils eine Statusbar und sieht auf Anhieb, wo man dran ist:

von einem zweiten Rechner in Session einklinken

Wenn man -r durch -x ersetzt, kann man sich auch von einem anderen Rechner in die Session einklinken. Der Output ist auf beiden Rechnern identischt, verdammt witzig…

nicht-default config verwenden

Die .screenrc ist ja die Defaultconfig. Ich verbinde mich aber immer wieder zu Kunden. Hier wäre doch schön, eine screenrc zu haben, wo alles bereits hinterlegt ist. Mit -c kann man eine spezielle Config mitgeben, zb.

Da steht dann einfach sowas drin:

recht angenehm – ein command, mit allen connected….

 

So wie man liest, scheint tmux in vielen Sachen bessere Funktionalität mitzubringen, ich werde es mir bestimmt mal bei Gelegenheit auch noch anschauen. Derzeit gewöhne ich mir aber erst mal ein bisschen die vermehrte Verwendung von screen an (gibt’s ja erst seit 1987…). Wenn mich dann gewisse Sachen nerven, werde ich “von selbst” mal tmux anschauen… 😉

Jedenfalls mal wieder was in der Art “warum hast du das nicht schon vor Jahren so gemacht ?!”

 

bash vi-mode / zsh ?

Bash vi-Mode

und dann noch so einfach, einfach mit folgender Ergänzung in .bashrc ?

ja, und das klappt auch tadellos (zb. b / w, etc). Eigentlich doch recht angenehm, wenn man sowieso sonst mit vim arbeitet…

Hier verlässt man dann, wie in vi, mit esc den Input-Mode bei der Eingabe von normalen Commands….

Da sitzt man doch täglich stundenlang vor Terminals und findet sowas per Zufall mal so nebenbei raus… und vorallem geht das ja nicht nur in bash, wenn man’s ins .inputrc schmeisst (was ich noch nicht selbst probiert hab).

zsh / Powerlevel

naja, irgendwie hab ich das Gefühl, das ganze ist derzeit sehr hip und alle Screenshots, die man sieht, haben alle nur noch solche Shells. Das finde ich nicht sooo sympathisch (Hipster ?!). Aber angeschaut hab ich’s mir trotzdem. Und ich muss gestehen, wenn man in einem git-Repo ist, dann ist das ganze schon recht angenehm…. (ansonsten sehe ich den Sinn jetzt nicht so sehr, bis jetzt zumindest).

Aber in git sieht man gleich, ob es neue Files gibt, ob commits noch nicht gepusht wurden etc. Schon irgendwie angenehm. Aber es geht auch ohne, ist derzeit noch meine Meinung….irgendwie viel zu farbig… (einen git status und so muss ich ja auch hier trotzdem machen, wenn ich mehr wissen möchte).

Powerlevel9k ist aber recht anpassbar, wie man das ganze dargestellt haben möchte.

 

Auf terminalsare.sexy gibt es etliche Varianten, die versuchen git in die Bash (und zsh) zu integrieren. Hier hat es bestimmt noch einige sehenswerte Ansätze mit dabei.

Zudem wurde vor einiger Zeit einiges Powerline-Zeugs grad auch ins Debian-Repo aufgenommen (natürlich genau nachdem ich alles (also eigentlich nur die Powerline-Fonts und vim-airline) in ein kleines Shellscript gebastelt hab…d’oh… die Powerline Fonts benötigte ich derzeit aber nur für die Symbole in meinen i3-Workspaces).

Heisst das jetzt, dass ich aus reinen Bequemlichkeitsgründen auf zsh umsteige oder das bash-powerline-script anpasse ? Oder bleib ich oldschool bei dem, was ich schon seit Jahren verwende ? Ich weiss es selbst noch nicht. Werde wohl ein bisschen länger damit arbeiten müssen… generell ist es mir einfach etwas zu “hipster”…. (oder bin ich einfach langsam zu alt ?!)

Powerlevel-Alternative für die Bash

Es gibt da auch eine Bash-Variante, aber die musste ich erst mal selber kosmetisch bearbeiten und die sieht etwas weniger schick aus…(beim Namen könnte man ja meinen, Powerline Fonts würden verwendet, ist aber nicht so…). Aber “schick” ist auch reine Ansichtssache…. und “getestet” habe ich es etwa ganze 2 Minuten…

Agnoster-Bash scheint ganz passabel für die Bash, zumindest auf den ersten Blick… ist wesentlich weniger umfangreich als Powerlevel9k, jedoch für meine Bedürfnisse komplett ausreichend… Beispielsweise ist hier die rechte Zeile komplett nicht unterstützt, aber das ist mir sowas von egal…

Edit 12.01.:

Es gibt noch eine weitere Bash-Variante, die vielversprechend aussieht, hab’s aber selbst noch nicht getestet: fancybash. Aber warum alle Datum, Zeit und sonstiges in jeder Shell sehen wollen, ist (und bleibt) mir schleierhaft. Vorallem wenn man einen tiling window manager verwendet und etliche terminals offen hat, was bringt das ganze ?!

Ranger: Musik für den V70er (I)

Tja, mein Zweit-Volvo ist schon sooo neu, dass neben dem Kassettendeck sogar über ein CD-Player verfügt (ich weiss, das ist schwer grenzwertig…jedenfalls noch ein 97ger und …naja, einigermassen eckig…).  Aber das ist ein anderes Thema und jeder der mich kennt weiss, wie mein Autogeschmack seit Mitte der 90 stagniert ist und welche Marke ich liebe…)

Und da ich derzeit sowieso immer mehr auf Ranger abfahre, dachte ich mir, dass es doch Sinn macht, direkt in Ranger meine CDs zu brennen. Nix spezielles, jedoch just for the record hier dokumentiert… (und sonstwo im www 1000mal…)

Ich hab mir in rc.conf ein Mapping mit – trommelwirbel – “burn” angelegt (was ich mit der Zeit immer mehr liebe sind eigentlich Dialektwörter….)

(Pfad ist jetzt erst mal nur für “zom pröbla, blibt ned aso”, wenn wir grad bei Dialekt sind…später wird das mapping vielleicht ja zu “brötla” oder so…)

Das ganze sieht dann so aus (ja, ich weiss, dass .sh eigentlich ja nicht bash ist…)

Also einfach das gewünschte Directory / Album in Ranger ansteuern, burn – und am Ende gibts ne schöne Audio-CD.

Benötigte Packages sind wodim, normalize-audio, ffmpeg und natürlich ranger (und sudo, aber irgendwann ist fertig lustig mit Links zu packages.debian.org. Ist ja auch sinnfrei…)

Für wodim hab ich einen sudoers-Eintrag angelegt, weil ich sonst nur mit “komischen” Fehlermeldungen “entschädigt” wurde…