Как я могу зарегистрировать пользовательское действие в гноме/человечности/наутилусе, который получает имена файлов, которые выбраны в наутилусе?
Если Вы пишете сценарий в ~/.local/share/nautilus/scripts, то Вы получаете новую запись в контекстном меню. Как назвать этот сценарий через ярлык?
Это - последующий вопрос Наутилусу: Mark регистрирует в каталоге как фаворит
Я использую Ubuntu 16.04
Ответ ниже сначала буквально ответит на Ваш вопрос;
как назвать сценарий и использовать в настоящее время выбираемые файлы в качестве аргументов
[1]
.
Однако принятый ответ в связанном вопросе использует сценарии наутилуса, которые берут файлы в качестве аргументов от наутилуса. Это не работает от ярлыка, только когда щелкнутый правой кнопкой в наутилусе. В [2]
, Я поэтому добавил функциональность сценариев от связанного вопроса до ответа, таким образом, только необходимо выполнить любого из них (в [2]
) от ярлыка.
[1]
Для 16,04 и выше*, запуская скрипт с выбранными файлами как аргументыМожно просто использовать короткий сценарий ниже. Это "считает" в настоящее время выбираемые файлы и запустит Ваш скрипт с файлами как аргументы.
#!/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])
установка python3-pyperclip
и xdotool
:
sudo apt install python3-pyperclip xdotool
Скопируйте сценарий выше в пустой файл, сохраните его как run_withselected.py
Замена в сценарии
"/path/to/script"
фактическим путем к сценарию Вы хотите работать. Используйте полные пути в кавычках.
Добавьте его к shortut ключу: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
python3 /path/to/run_withselected.py
[2]
ОднакоОбратите внимание, что связанный сценарий наутилуса из другого ответа не будет работать как это однако, так как он получает свои аргументы в другом отношении от наутилуса непосредственно. Я поэтому объединил функциональность сценария от связанного вопроса с тем выше.
Вам не нужен другой сценарий (сценарии) из другого ответа больше затем.
выберите файлы
нажмите ярлык для маркировки (переключают) файлы
#!/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))
выберите файлы
нажмите ярлык для создания (переключают) ссылку в "My_Favorites"
#!/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)
потребности сценариев python3-pyperclip
и xdotool
:
sudo apt install python3-pyperclip xdotool
Скопируйте сценарий выше в пустой файл, сохраните его как toggle_selected.py
Добавьте shortut ключ: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
python3 /path/to/toggle_selected.py
xdotool
фактически нажать Ctrl+CВпоследствии, сценарий (внутренне) создает список выбранных файлов:
pyperclip.paste().splitlines()
Эти файлы впоследствии используются в качестве аргументов любому, переименовывают файлы:
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))
или создайте символьную ссылку:
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)
time.sleep(1)
наконец должен удостовериться, что "реальное" нажатие клавиши не вмешивается в моделируемое нажатие клавиши xdotool
.
... потребует другой процедуры установки pyperclip:
sudo apt-get install python3-pip xdotool
sudo pip3 install pyperclip