Linux – einfache Print Option für Nemo

Das habe ich schon lange vermisst: Im Filemanager, egal ob Nemo oder Nautilus, eine Print Option zu haben. Die Jahre zogen ins Land und die Option blieb in weiter ferne. Bis heute … \o/

… und so zogen sie los, und machten es selbst …

Wir brauchen :

  • – einen Texteditor nach Wahl
  • – ein Druckprogramm
    – eine Nemo Action

Hintergrundwissen

Eine Nemo Action ist eine Datei, die einen Eintrag im Context-Menü von Nemo erzeugt. Analog gibt es das auch für Nautilus, da die das beide von Gnome-Files mitgeforkt haben. Entweder kann ein Benutzer eine eigene Action unter ~/.local/share/nemo/actions  ablegen oder systemweit kann man das unter /usr/share/nemo/actions machen, dazu braucht man dann aber auch die nötigen Root-Rechte.

In der Datei kann ich sagen, welches Tool aufgerufen werden soll, wie die Files dem Tool übergeben werden, wie das Icon aussehen soll usw. Alle Änderungen funktionieren zur Laufzeit von Nemo, so daß wir es nicht laufend neustarten müssen, was extrem praktisch ist.

Die Nemo Action

Wir nehmen für unsere Action das lokale Verzeichnis ~/.local/share/nemo/actions und erzeugen eine Datei namens print.nemo_action

[Nemo Action]
Name=Print
Comment=Printing from Nemo

#Exec=gnome-terminal -x sh -c "echo %F | less"
Exec=<print.sh %F>
Icon-Name=document-print
Selection=Any
Separator=;
Extensions=txt;pdf;jpg;gif;png

Wie man sieht, ähnelt die Datei von Aufbau einer Desktopdatei, was kein Zufall sein dürfte 😉

Wir können also beliebige Experimente machen, was man oben im #Exec Kommentar sehen kann.  Die Auskommentierte Anweisung öffnet ein Terminal, gibt per Echo die Files aus, die selektiert wurden und piped das an Less, so daß man das sehen kann. Ohne Less würde das Fenster sofort wieder zu gehen.

Die Anweisung „Exec=<print.sh %F>“ bezieht sich auf einen Befehl, hier ein Bashscript, im Actionsverzeichnis selbst, statt auf absolute Pfade zurück zugreifen.

Mit „Extensions=txt;pdf;jpg;gif;png“ legen wir fest, daß wir nur im Context von diesen Endungen angezeigt und ausgeführt werden wollen. Sinnvoll, denn MP3 Files kann man zwar drucken, aber das Ergebnis dürfte ernüchternd sein.

Der Separator „;“ ist wichtig, weil sich sonst Filelisten mit „Leerzeichen“ im Dateipfad oder -namen  nicht parsen liessen.
Wer das ohne versucht, wird todsicher scheitern, sobald ein “ “ irgendwo auftaucht.

„document-print“ ist ein Theme übergreifender Symbolname, so daß Hoffnung besteht, das neben Adwaita auch andere Themes ein Symbol parat haben werden.

Wer alle Optionen kennenlernen will, die in so einer Action benutzbar sind, kann sich das hier ansehen:

https://github.com/linuxmint/nemo/blob/master/files/usr/share/nemo/actions/sample.nemo_action

Das Print-Bash-Script

Das Bashscript ist für unsere Zwecke ausreichend, die keine besonderen Anforderungen an das Drucken stellen:

#!/bin/bash

IN=$*
date -R > ~/.local/share/nemo/actions/print.log
IFS=";" read -ra FILES <<< "$IN"
for i in "${FILES[@]}"; do
 echo "processing $i" >> ~/.local/share/nemo/actions/print.log
 lp -o fit-to-page "$i"
done

nochmal im Einzelnen :

IN=$*

Liest alle Argument in die Variable IN ein.

date -R > ~/.local/share/nemo/actions/print.log

Initialisiert unser Logfile, damit wir etwaige Fehler erkennen können.

IFS=“;“ read -ra FILES <<< „$IN“

Splittet die Argumentenliste am „;“ auf, so daß wir wissen, was zum Filenamen gehört und was nicht. Das Ergebnis kommt in einen Array, der in der For-Schleife durchgeackert wird:

for i in „${FILES[@]}“; do
      echo „processing $i“ >> ~/.local/share/nemo/actions/print.log
      lp -o fit-to-page „$i“ >> ~/.local/share/nemo/actions/print.log
done

lp ist unser Druckbefehl. Der kann PDF, Txt und alle gängigen Grafiken drucken. die Option „-o fit-to-page“ passt das Printgut an die maximal Größe der Seite an aka. wir drucken immer mit 100%. Sollte es ein ganz kleines Bild sein, wird es später stark vergrößert sein.

Den jeweils letzten Printjob kann man sich dann im Logfile ansehen, wo hoffentlich keine Fehlermeldung stehen wird 🙂

Vorteile

Der große Vorteil dieser ganzen Action ist, daß die Reihenfolge genau so sortiert ist, wie im Nemo auch angezeigt wird. Damit können wir z.b. einen Stapel Rechnungen nach Rechnungsnummern sauber in der richtigen Reihenfolge drucken.

Files zum Drucken selektieren

Wenn man z.b. alle selektierten PDF Rechnungen mit Evince öffnen würde, könnte man das nicht mehr, bzw. nur mit großen Aufwand. So ist das jetzt ein Klacks! Dateien markieren, Print auswählen und Papiere einsammeln.

Gedruckt wir das Ganze dann an den Standarddrucker.

Heldenapplaus bitte in der Kommentarsektion abgeben, Reklamationen auch. Ich optimiere das gerne weiter 🙂

Nemo mit Windowsfreigabe verbinden

Wer Nemo als Filemanager benutzt und sich mit einer Windowsfreigabe verbinden will, der hat die in der Hilfe angegebene Funktion „Other Locations“ sicherlich auch schon gesucht ( und nicht gefunden ).  Was nun ?

In Nautilus ist diese Funktion im Netzwerktab verfügbar, was aber nicht heißt, daß es auch geht 😉 Was aber geht, ist im Dateimenü die Option „Mit Server verbinden“ anzuklicken.  Es erscheint das Menü:

nemo1-smbMan muß leider einen Usernamen und ein Passwort eingeben, auch eine Domäne wäre hilfreich, wird aber notfalls auch automatisch ausgefüllt. Username und Passwort werden immer mitgeschickt, was einer Sicherheitslücke gleichkommt, wie die Macher von Hak5.com bewiesen haben.

Sind die Angaben gesendet, klappt es auch mit dem Einloggen:

nemo2-smbWas uns jetzt natürlich noch fehlt, ist der Netzwerkscanner, der alle verfügbaren Server findet und uns das elegant zur Auswahl gibt, also so, wie man das schon hatte, bevor es kaputt gepatcht wurde im Nautilus.

 

temporär Nemo als Nautilusersatz testen

Um auf Fedora Gnome Nemo als Default-Dateimanager zu testen, kann man sich eines ganz fiesen Tricks bedienen. Zunächst muß man natürlich Nemo installiert haben:

sudo dnf install nemo

danach öffnet man sich eine Root-Shell und verschiebt Nautilus einfach und ersetzt es durch Nemo. Das erspart einem eine ganze Menge Konfigurationsarbeit, die man vielleicht nur dann machen will, wenn einem Nemo im Normalbetrieb gefällt.

cd /usr/bin/
mv nautilus nautilus.bak
ln -s nemo nautilus

Jetzt der Warnhinweis für alle, die die Folgen des Obigen nicht absehen können:

Das hält nur bis zum nächsten Nautilusupdate. Es ist eine temporäre Lösung.

Das Ersetzen klappt, weil Nemo ein Dropinreplacement von Nautilus ist. Nemo wurde vom Nautilus 3.4 Stand geforkt, weil Nautilus einen Weg eingeschlagen hat, der nicht von allen geteilt wurde. Das kann ich voll und ganz verstehen, beim BigIconProblem z.b. mußte Nautilus für Gnome 3.20 von seiner „Die dicken Icons bleiben“ Strategie wieder umschwenken. Nemo hat das z.b. nie umgesetzt.

Wenn ich mich für Nemo final entschieden habe, denn auch hier läuft nicht alles komplett rund, werde ich Euch einen Guide zum Umkonfigurieren der Systemeinstellungen auf den Weg geben.