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…

 

Dovecot: zlib-Files entpacken

Im Dezember musste ich Mails einer Domäne in ein Mailarchiv importieren. Dieses mochte jedoch die komprimierten Files nicht so ganz (mit zlib-Kompression lässt sich bis zu 40% Speicherplatz mit Dovecot einsparen…so steht’s im Dovecot-Buch). Also musste ich erst mal entpacken.

Da das vmail-Directory nur noch alte Nachrichten enthielt und das aktuelle System nicht dort speichert, konnte ich mich austoben und die Nachrichten einfach verschieben (das Directory wurde danach sowieso gelöscht – hier werden ja bestehende Files verschoben, würde ich jetzt nicht direkt so auf einem produktiven System laufen lassen… 😉 ).

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…

 

mutt mit Outlook-Flags sags den Loosern mit Flags !

Das ist ja geil. ich hab schon seit langem in Mutt definiert, dass eine spezielle Message-Flag gesetzt wird:

Bisher dachte ich immer, dass die einfach im Header hinterlegt ist, nix spezielles. Aber grad eben musste ich auf einem Windows-Client schnell was anschauen und hab das gesehen:

Unter nicht-Outlook-MUA’s wird das nicht dargestellt – explizit nur in MS-Outlook. Sehr geil, genau das erreicht, was ich wollte.

Outlook 2007 stellt das genau so dar. 2013 leider nicht, da muss man es anscheinend leider händisch anpassen. schade, schade…

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 :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

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”

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.

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…