Wie kann ich Tastaturkürzel für Nautilus-Skripte zuweisen?

Wie kann ich Tastaturkürzel für Nautilus-Skripte zuweisen?

Ich habe einNautilus-Skript. Ich habe das Skript eingefügt /home/sumeet/.local/share/nautilus/scriptsund 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 xdotoolund 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) xdotoolBefehlen 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"])

pythonDas pyperclipModul 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 xdotoolund 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.

verwandte Informationen