zur Übersicht

nächste Seite


Programmfenster Album

Die Ausführungen der vorherigen Seiten über Programmfenster werden hier weitergeführt.
Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste. 
Oder man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Editors ein.  
Dann drückt man zum Abspeichern gleichzeitig Strg und O 
dann drückt man die Eingabetaste um den Dateinamen zu bestätigen 
dann drückt man zum Verlassen des Editors gleichzeitig Strg und X.


Wenn man sich an das erste script   scA.sh   erinnert das auf der Seite
Programmfenster
erzeugt wurde so weiß man inzwischen daß das script über das Terminal gestartet werden kann oder über einen Programmstarter oder über eine Tastenkombination. Aber es gibt eine weitere Möglichkeit das Programm zu starten. Dazu kopiert man das ausführbare script in den Ordner
~/.local/share/nautilus/scripts/
Man kann sich diesen Ordner im Dateisystem anschauen.

Dieser Ordner ist besonders. Alle ausführbaren scripte die hier abgelegt werden erscheinen in einem Zusatzmenu. Dieses Zusatzmenu erscheint erst nachdem ein ausführbares script dort abgelegt wurde. Dazu macht man auf eine Datei einen Rechtsklick

Wählt man den Reiter mit   scA.sh   so wird das script gestartet. Allerdings hat das script nichts zu tun mit der angeklickten Datei. Sinnvoller wäre es wenn ein script gestartet würde das mit der angeklickten Datei etwas machen würde. Dazu müßte das Terminal aber wissen welche Datei markiert wurde - und das macht eine spezielle nautilus-interne Variable
$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
Wie das funktioniert kann man sich mit folgendem script anschauen, das diese Variable in eine Datei schreibt.

nano ~/.local/share/nautilus/scripts/scN1.sh

In den Editor eingeben

#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" > ~/nauti.txt

Nun muß man die Datei ausführbar machen

chmod +x ~/.local/share/nautilus/scripts/scN1.sh

Markiert man nun mehrere Dateien und macht einen Rechtsklick auf diese Markierung und wählt das script   scN1.sh   aus so werden in der Datei nauti.txt alle markierten Dateien mit Name und Pfad hinterlegt. Es ist also eine Liste der markierten Dateien, die jetzt im Terminal vorhanden ist und bearbeitet werden kann. 
Beispiel

nano ~/.local/share/nautilus/scripts/scN2.sh

In den Editor eingeben

#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file; do
cp "$file" ~/Bla/
done

Nun muß man die Datei ausführbar machen

chmod +x ~/.local/share/nautilus/scripts/scN2.sh

Markiert man nun mehrere Dateien in einem anderen Ordner als ~/Bla und macht man einen Rechtsklick auf die Markierung und wählt   scN2.sh   so werden diese Dateien in den Ordner ~/Bla kopiert. Es gibt keine Warnung die bewirkt daß vor dem Überschreiben einer vorhandenen Datei gleichen Namens nachgefragt wird. Man sollte genau wissen was ein script mit den Dateien anstellt damit böse Überraschungen vermieden werden. 

Nun soll eine kleine Ergänzung zum Web-Projekt gemacht werden. Dazu wird ein script geschrieben das folgendes macht (abc muß natürlich mit Ihrer Kennung ersetzt werden):
In dem Ordner   /home/abc/Bla/Web/bilder/   wird ein Unterordner album77 erstellt und in diesem wiederum ein Unterordner thumb (dabei wird zuerst geprüft ob ein solcher Unterordner thumb bereits existiert).
Dann wird die Liste der markierten Dateien genommen und bearbeitet. Zunächst wird geprüft ob die markierte Datei eine Bilddatei mit Format 
jpg png bmp 
ist (andere Möglichkeiten können ergänzt werden). Dann wird gezählt wieviele Dateien in album77 vorhanden sind die einen Namen der Form albb*.jpg haben (z.B. 1 Datei). Die nächsthöhere Nummer wird bestimmt (z.B. 002). Dann wird die markierte Datei auf die Bildgröße 900x600 pixel verkleinert und mit dem Namen der nächsthöheren Nummer im Ordner album77 abgespeichert (z.B. albb002.jpg). Andere Bildgrößen können aufgeschrieben werden und andere Verkleinerungsverfahren können benutzt werden (ImageMagick bietet eine Vielzahl von Möglichkeiten) und ein anderer Komprimierungsfaktor kann gewählt werden. Die Bildgröße 900x600 gibt nur den Außenbereich vor indem das Bild, unter Beibehaltung des Verhältnisses von Breite und Höhe, größtmöglich eingepasst wird (ein quadratisches Bild bleibt quadratisch). Achtung: ist das Bild kleiner als 900x600 pixel so wird dieses vergrößert! Dann wird ein thumbnail für dieses Bild mit passendem Namen im Unterordner thumb erstellt (z.B. talbb002.jpg).

nano ~/.local/share/nautilus/scripts/album77.sh

In den Editor eingeben

#!/bin/bash

szPath=/home/abc/Bla/Web/bilder/album77
if [ ! -d "$szPath"/thumb ]; then mkdir -p "$szPath"/thumb; fi

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file; do
if test "${file##*.}" != "jpg" -a "${file##*.}" != "png" -a "{file##*.}" != "bmp"
then
continue
fi

szANZ=$(find "$szPath" -maxdepth 1 -type f -name "albb*.jpg" | wc -l)
aNEU=$(echo "scale=3; ($szANZ+1)/1000" | bc -ql | sed 's|\.||g')

convert -sample 900x600 "$file" -quality 90% "$szPath"/albb${aNEU}.jpg

convert -thumbnail 94x94 "$file" -size 98x98 xc:white +swap -gravity center -composite -bordercolor black -border 1 -quality 90% "$szPath"/thumb/talbb${aNEU}.jpg

done

Nun muß man die Datei ausführbar machen

chmod +x ~/.local/share/nautilus/scripts/album77.sh

Durch Markieren und Rechtsklick kann man jetzt die Bilder für das Album sammeln. 

Wenn man alle Album-Bilder zusammengetragen hat kann man den Ordner album77 umbenennen in z.B. album16. Ein erneutes Aufrufen von album77.sh wird diesen Ordner wieder neu erstellen und man kann andere Bilder sammeln. 

Will man bei dem Web-Projekt die Album-Bilder aus album16 z.B. auf page164.htm einbinden, so braucht man die entsprechenden Links. Dazu wird zuerst der Eingabeprompt in den Ordner ~/Bla/Web/bilder/album16 verlegt

cd ~/Bla/Web/bilder/album16

Dann kann man diese Links erzeugen durch

for i in albb*.jpg; do
nTT=$(cat <<_EOF_
<a href="../bilder/album16/$i"><img border="0" src="../bilder/album16/thumb/t$i" width="100" height="100"></a>
_EOF_
)
cat >> ~/Bla/album16-links.txt <<_EOF_
$nTT
_EOF_
done

Die Datei album16-links.txt enthält
<a href="../bilder/album16/albb001.jpg"><img border="0" src="../bilder/album16/thumb/talbb001.jpg" width="100" height="100"></a> 
<a href="../bilder/album16/albb002.jpg"><img border="0" src="../bilder/album16/thumb/talbb002.jpg" width="100" height="100"></a> 
<a href="../bilder/album16/albb003.jpg"><img border="0" src="../bilder/album16/thumb/talbb003.jpg" width="100" height="100"></a> 
<a href="../bilder/album16/albb004.jpg"><img border="0" src="../bilder/album16/thumb/talbb004.jpg" width="100" height="100"></a>

Man kann diese Links kopieren und, nachdem page164.htm mit gedit oder einem anderen Editor geöffnet wurde, an der passenden Stelle einfügen.

         
Eingabeprompt verlegen

Wenn man mit dem Terminal öfters arbeitet kommt es vor daß man den Eingabeprompt des Terminals in einen bestimmten Ordner verlegt. Hier oben wurde dies gemacht mit
cd ~/Bla/Web/bilder/album16
Auch auf den vorhergehenden Seiten gab es dazu Beispiele:
cd ~/Bla/Nur/BlaBla             auf der Seite Programmschliefen
cd ~/Bla/Nur/BlaBla/Oder     auf der Seite ImageMagick GIF
Deshalb ist es sinnvoll durch Markieren eines Ordners und Rechts-Klicken auf ein script gleich ein Terminal zu öffnen das den Eingabeprompt in diesen Ordner verlegt. Oder durch Markieren einer Datei und Rechts-Klicken auf ein script gleich ein Terminal zu öffnen das den Eingabeprompt in den Ordner dieser Datei verlegt. 
Um Probleme zu vermeiden, die durch das Markieren mehrerer files entstehen könnten, wird die nautilus-Liste mit head -n 1 auf die erste Zeile reduziert. Dann wird eine Unterscheidung zwischen Ordner (Verzeichnis) und Datei gemacht. 
Das script

nano ~/.local/share/nautilus/scripts/Terminal-Ordner.sh

Eingabe in den Editor 

#!/bin/bash

echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | head -n 1 | while read file; do

if [ -d "$file" ]; then D="$file"

else D=$(dirname "$file")

fi

gnome-terminal --working-directory="$D"

done

Nun muß man die Datei ausführbar machen

chmod +x ~/.local/share/nautilus/scripts/Terminal-Ordner.sh

Durch Markieren und Rechtsklick kann man jetzt schnell das passende Terminal öffnen. 



 

zur Übersicht

nächste Seite