Ich habe einNautilus-Skript. Ich habe das Skript eingefügt /home/sumeet/.local/share/nautilus/scripts
und es erscheint im Rechtsklickmenü. und funktioniert auch wie erwartet. Ich möchte dem Skript nur eine Verknüpfung zuweisen.
Wie kann ich Tastaturkürzel für meine Nautilus-Skripte erstellen?
Die in der obigen Frage gegebenen Antworten beziehen sich auf eine bestimmte Version und sind völlig veraltet. Außer dieser Frage konnte ich zu diesem Thema nichts anderes finden.
Antwort1
Wie es gemacht werden kann
Wenn Sie mit der rechten Maustaste auf eine Datei oder einen Ordner für ein Nautilus-Skript klicken, wird die ausgewählte Datei als Argument an das Skript übergeben. In den meisten Fällen etwa so:
import os
subject = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI")
... mit Python3 in seiner einfachsten Form.
Ersetzen Sie dies durch:
import pyperclip
subprocess.call(["xdotool", "key", "Control_L+c"])
subject = pyperclip.paste()
...der derzeitausgewähltDatei wird im Skript als Argument verwendet
Was du brauchst
Um diese Lösung (16.04 und höher) zu verwenden, müssen Sie beides installieren xdotool
und python3-pyperclip
:
sudo apt-get install python3-pyperclip xdotool
Das vollständige Skript, erwähnt in den Kommentaren
wird dann:
#!/usr/bin/env python3
import subprocess
import os
import sys
import pyperclip
# --- set the list of valid extensions below (lowercase)
# --- use quotes, *don't* include the dot!
ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"]
# --- set the list of preferred filenames
# --- use quotes
specs = ["folder.png", "cover.png", "monkey.png"]
# ---
# retrieve the path of the targeted folder
subprocess.call(["xdotool", "key", "Control_L+c"])
dr = pyperclip.paste()
for root, dirs, files in os.walk(dr):
for directory in dirs:
folder = os.path.join(root, directory)
fls = os.listdir(folder)
try:
first = [p for p in fls if p in specs]
first = first[0] if first else min(
p for p in fls if p.split(".")[-1].lower() in ext
)
except ValueError:
pass
else:
subprocess.Popen([
"gvfs-set-attribute", "-t", "string",
os.path.abspath(folder), "metadata::custom-icon",
"file://"+os.path.abspath(os.path.join(folder, first))
])
Wenn Sie dies zu einer Tastenkombination hinzufügen, werden die Symbole für alle Verzeichnisse festgelegtinnendas ausgewählte.
Hinzufügen zu einer Tastenkombination (!)
Hinzufügen von Tastenkombinationen, Ausführen von (Skripten mit) xdotool
Befehlen zum Drückenein andererTastenkombinationen können knifflig sein. Um zu verhindern, dass sich die beiden Tastenkombinationen gegenseitig beeinträchtigen, verwenden Sie:
/bin/bash -c "sleep 1 && python3 /path/to/script.py"
Erläuterung
Wenn Ctrl+ Cgedrückt wird, während eine Datei ausgewählt ist,Wegzur Datei wird in die Zwischenablage kopiert. Wir simulieren den Tastendruck mit:
subprocess.call(["xdotool", "key", "Control_L+c"])
python
Das pyperclip
Modul von erstellt einfach den Pfad, der file://
bei Verwendung entfernt wurde pyperclip.paste()
(dadurch wird er nicht wörtlich eingefügt, sondern im Skript verfügbar gemacht).
Antwort2
Wenn das Ziel darin besteht, Dateien auszuwählen und Aktionen auszuführen, ist dies mithilfe von Shell-Skripten mit xdotool
und möglich xclip
. Installieren Sie sie also zuerst:
sudo apt-get install xdotool xclip
Und erstellen Sie dann das folgende Skript mit den Aktionen innerhalb der Schleife:
#!/bin/bash
file=$(mktemp)
xdotool key "Control_L+c"
variable="$( xclip -out -selection clipboard)"
variable="$( echo -e "$variable" | \
awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | \
sed -e s#\"\"## | \
sed 's/" "/"\n"/g')"
echo "$variable" > $file
if [ -s "$file" ]; then
while read absolute_path_file; do
absolute_path_file="$(eval echo "$absolute_path_file")"
base_name="$(basename "$absolute_path_file")"
### Execute the actions with the selected files here
### echo "$absolute_path_file"
### echo "$base_name"
done < $file
fi
Dieses Skript benötigt keine NAUTILUS-Variablen und Sie können damit eine Verknüpfung erstellen:
/bin/bash -c "sleep 1 && /path/script.bash"
Antwort3
- Anwendung des Verfahrenshier beschriebenkönnen Sie in Nautilus eine Verknüpfung zu einem Nautilus-Skript hinzufügen. Dies funktioniert ab Nautilus 40 wieder.
- Mithilfe
_
des Namens des Nautilus-Skripts können Sie einem Skript einen Hotkey zuweisen. Beispielsweise wird ein Skript mit dem Namen „_Combine PDF“ mit unterstrichenem C angezeigt. Wenn eine Datei ausgewählt ist, können Sie mit Shift+ schnell auf das Skript zugreifen F10 c.
Sie können Ihre Skripte in Unterordnern organisieren. Diese Unterordner erscheinen auch als Menüoptionen, die zu einem Untermenü führen. Mit dieser Benennungskonvention können sie auch einem Hotkey zugewiesen werden.