In Teil 1 ging es um das Duplizieren von Dateien direkt aus dem Dateibrowser von ART unter Linux. Da ART selbst keine Dateiorganisation übernimmt, sondern vollständig auf die Ordnerstruktur des Dateisystems setzt, lässt sich diese Funktion auch unter macOS über die User Commands-Schnittstelle nahtlos nachrüsten.
Wer im Dateibrowser von ART auf ein Bild klickt, sucht standardmäßig vergebens nach einer Option wie “Duplizieren”. Entwicklungs-Profile oder Snapshots decken zwar vieles ab, aber wenn eine echte, unabhängige Kopie der Datei auf der Festplatte benötigt wird, führt der Weg meist über den Finder. Mit einem kleinen zsh-Skript lässt sich dieser Zwischenschritt komplett einsparen.
Unter macOS gibt es bei der Einrichtung allerdings zwei feine Besonderheiten hinsichtlich Pfad-Struktur und Berechtigungen zu beachten.
1. Konfiguration und XDG-Symlink anlegen
ART nutzt unter macOS je nach Build-Struktur manchmal bevorzugt das XDG-Standardverzeichnis ~/.config/ART. Um auf der sicheren Seite zu sein und spätere Pfadprobleme zu vermeiden, verlinkt man dieses Verzeichnis direkt mit dem macOS-Standardpfad Application Support.
Zunächst wird die Konfigurationsdatei angelegt:
~/Library/Application Support/ART/usercommands/duplicate.txt
Inhalt der duplicate.txt:
[ART UserCommand]
Label=Duplicate File
Label[de]=Datei duplizieren
Command=/Users/BENUTZER/.local/bin/duplicate.sh
FileType=any
MinArgs=1
Wichtige Hinweise zur Konfiguration:
- Den Pfad
/Users/BENUTZERunbedingt durch den eigenen macOS-Benutzernamen ersetzen. - Es dürfen keine Rautenzeichen (
#) für Kommentare innerhalb des Blocks genutzt werden, da der Parser von ART die Datei sonst beim Start nicht einlesen kann und den Menüpunkt verwirft.
Damit ART den Ordner unter allen Umständen und Bauarten zuverlässig findet, erstellt man im Terminal zusätzlich den passenden Symlink:
mkdir -p ~/.config/ART
ln -s "$HOME/Library/Application Support/ART/usercommands" ~/.config/ART/usercommands
2. Das zsh-Skript erstellen
Unter macOS kommt in der Kommandozeile standardmäßig die zsh zum Einsatz. Man legt das Skript unter dem Pfad /Users/BENUTZER/.local/bin/duplicate.sh an.
Das Skript verarbeitet alle in ART markierten Dateien, baut einen fortlaufenden Zähler für den Dateinamen auf (falls bereits Kopien existieren) und kopiert neben der Hauptdatei auch alle verknüpften Sidecars (.arp und .xmp):
#!/usr/bin/env zsh
# Loop through all files selected in ART
for filepath in "$@"; do
if [[ -f "$filepath" ]]; then
dir=$(dirname "$filepath")
filename=$(basename "$filepath")
name="${filename%.*}"
ext="${filename##*.}"
# Define target path pattern
new_filepath="${dir}/${name}_copy.${ext}"
# Increment counter if copy exists
counter=1
while [[ -f "$new_filepath" ]]; do
new_filepath="${dir}/${name}_copy_${counter}.${ext}"
((counter++))
done
# Copy main image file
cp "$filepath" "$new_filepath"
# Copy sidecar files if present
[[ -f "${filepath}.arp" ]] && cp "${filepath}.arp" "${new_filepath}.arp"
[[ -f "${filepath}.xmp" ]] && cp "${filepath}.xmp" "${new_filepath}.xmp"
fi
done
3. Ausführrechte setzen (Kritischer Schritt unter macOS)
Ein oft übersehenes Detail unter macOS: ART prüft beim Start im Hintergrund, ob die im User Command angegebene Datei existiert und ausführbar ist. Ist das Skript nicht mit Ausführrechten versehen, blendet ART den Eintrag User Commands im Kontextmenü schlichtweg stumm aus.
Das Skript muss daher im Terminal explizit ausführbar gemacht werden:
chmod +x /Users/BENUTZER/.local/bin/duplicate.sh
Fazit und Test
Nach einem vollständigen Neustart von ART (Anwendung mit Cmd + Q beenden) erscheint beim Rechtsklick auf eine beliebige Datei im Dateibrowser der Menüpunkt User Commands -> Datei duplizieren.
Egal ob RAW, JPEG oder TIFF: Die Datei wird inklusive aller Anpassungen geklont und taucht direkt im Dateibrowser von ART auf.
Nächste Woche schließt Teil 3 die Reihe mit der Umsetzung unter Windows 11 per PowerShell ab.
Bleibt mir gewogen, Euer Albfotograf