Comment enregistrer une action personnalisée dans gnome/ubuntu/nautilus qui reçoit les noms de fichiers sélectionnés dans nautilus?
Si vous écrivez un script dans ~/.local/share/nautilus/scripts, vous obtenez une nouvelle entrée dans le menu contextuel. Comment appeler ce script via un raccourci?
C'est une question de suivi pour Nautilus: Marquer les fichiers du répertoire comme favoris
J'utilise Ubuntu 16.04
La réponse ci-dessous répondra d'abord littéralement à votre question.
comment appeler un script et utiliser les fichiers actuellement sélectionnés comme arguments
[1]
.
Cependant, la réponse acceptée dans la question liée utilise des scripts nautilus , qui prennent des fichiers comme arguments de nautilus. Cela ne fonctionne pas à partir d'un raccourci , uniquement en cliquant avec le bouton droit de la souris en nautile. Dans _[2]
_, j’ai donc ajouté la fonctionnalité des scripts de la question liée à la réponse. Vous devez donc exécuter l’un ou l’autre d’entre eux (dans _[2]
_) à partir d’un raccourci.
[1]
_ Pour 16.04 et versions supérieures *, exécution d'un script avec les fichiers sélectionnés comme argumentsVous pouvez simplement utiliser le court script ci-dessous. Il "lira" les fichiers actuellement sélectionnés et exécutera votre script avec les fichiers comme arguments.
_#!/usr/bin/env python3
import subprocess
import pyperclip
import time
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
subprocess.Popen(["/path/to/script", item])
_
installer _python3-pyperclip
_ et xdotool
:
_Sudo apt install python3-pyperclip xdotool
_
Copiez le script ci-dessus dans un fichier vide, enregistrez-le sous le nom _run_withselected.py
_ Replace dans le script.
_"/path/to/script"
_
par le chemin d'accès au script que vous souhaitez exécuter. Utilisez des chemins absolus , entre guillemets.
Ajoutez-le à une touche de raccourci: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
_python3 /path/to/run_withselected.py
_
[2]
_ CependantNotez que le script Nautile lié de l’autre réponse ne fonctionnera pas comme cela, car il récupère ses arguments d’une autre manière directement de Nautile . J'ai donc combiné la fonctionnalité du script à partir de la question liée, avec celle ci-dessus.
Vous n’avez plus besoin du ou des autres scripts de l’autre réponse.
sélectionner des fichiers
appuyez sur le raccourci pour marquer (basculer) les fichiers
_#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
time.sleep(1)
def npath(p, f):
return os.path.join(p, f)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
data = item.rsplit("/", 1); path = data[0]; name = data[1]
newname = name[2:] if name.startswith("*0") else "*0"+name
shutil.move(npath(path, name), npath(path, newname))
_
sélectionner des fichiers
appuyez sur le raccourci pour créer (basculer) un lien dans "Mes favoris"
_#!/usr/bin/env python3
import subprocess
import pyperclip
import shutil
import os
import time
fav = os.path.join(os.environ["HOME"], "My_Favorites")
try:
os.mkdir(fav)
except FileExistsError:
pass
time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])
for item in pyperclip.paste().splitlines():
name = item.rsplit("/", 1)[-1]
link = os.path.join(fav, name)
try:
os.symlink(item, link)
except FileExistsError:
os.remove(link)
_
les scripts nécessitent _python3-pyperclip
_ et xdotool
:
_Sudo apt install python3-pyperclip xdotool
_
Copiez le script ci-dessus dans un fichier vide, enregistrez-le sous le nom _toggle_selected.py
_
Ajouter une touche de raccourci: Choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
_python3 /path/to/toggle_selected.py
_
xdotool
pour appuyer virtuellement sur Ctrl+CPar la suite, le script (en interne) crée une liste de fichiers sélectionnés:
_pyperclip.paste().splitlines()
_
Ces fichiers sont ensuite utilisés comme arguments pour renommer les fichiers:
_for item in pyperclip.paste().splitlines():
data = item.rsplit("/", 1); path = data[0]; name = data[1]
newname = name[2:] if name.startswith("*0") else "*0"+name
shutil.move(npath(path, name), npath(path, newname))
_
ou créer un lien symbolique:
_for item in pyperclip.paste().splitlines():
name = item.rsplit("/", 1)[-1]
try:
os.symlink(item, os.path.join(fav, name))
except FileExistsError:
os.remove(link)
_
La time.sleep(1)
a pour but de s’assurer que la "vraie" touche n’interfère pas avec la pression simulée par xdotool
.
... nécessitera une procédure différente pour installer pyperclip:
_Sudo apt-get install python3-pip xdotool
Sudo pip3 install pyperclip
_