Наутилус: Пользовательское действие на выбранных файлах через сочетание клавиш

  1. Я открываю каталог, содержащий приблизительно 100 файлов в наутилусе
  2. Я выбираю N (возможно, 10) файлы путем рассмотрения предварительного просмотра файла.
  3. Теперь я хотел бы поразить ярлык, и мой пользовательский сценарий нужно назвать.
  4. Мой пользовательский сценарий получает имена файлов и делает то, что я хочу, чтобы он сделал.

Как я могу зарегистрировать пользовательское действие в гноме/человечности/наутилусе, который получает имена файлов, которые выбраны в наутилусе?

Новая запись контекста в контекстном меню наутилуса

Если Вы пишете сценарий в ~/.local/share/nautilus/scripts, то Вы получаете новую запись в контекстном меню. Как назвать этот сценарий через ярлык?

Фон

Это - последующий вопрос Наутилусу: Mark регистрирует в каталоге как фаворит

Версия

Я использую Ubuntu 16.04

3
задан 13 April 2017 в 15:24

1 ответ

Рабочие действия с выбранными файлами

Ответ ниже сначала буквально ответит на Ваш вопрос;

как назвать сценарий и использовать в настоящее время выбираемые файлы в качестве аргументов [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])

Использовать

  1. установка python3-pyperclip и xdotool:

    sudo apt install python3-pyperclip xdotool
    
  2. Скопируйте сценарий выше в пустой файл, сохраните его как run_withselected.py Замена в сценарии

    "/path/to/script" 
    

    фактическим путем к сценарию Вы хотите работать. Используйте полные пути в кавычках.

  3. Добавьте его к shortut ключу: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/run_withselected.py
    

[2] Однако

Обратите внимание, что связанный сценарий наутилуса из другого ответа не будет работать как это однако, так как он получает свои аргументы в другом отношении от наутилуса непосредственно. Я поэтому объединил функциональность сценария от связанного вопроса с тем выше.

Вам не нужен другой сценарий (сценарии) из другого ответа больше затем.

A. Определяйте файлы, меняя имя

выберите файлы

enter image description here

нажмите ярлык для маркировки (переключают) файлы

enter image description here

#!/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))

B. Определяйте файлы путем создания ссылки в каталоге "избранного"

выберите файлы

enter image description here

нажмите ярлык для создания (переключают) ссылку в "My_Favorites"

enter image description here

#!/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)

Использовать (любой один)

  1. потребности сценариев python3-pyperclip и xdotool:

    sudo apt install python3-pyperclip xdotool
    
  2. Скопируйте сценарий выше в пустой файл, сохраните его как toggle_selected.py

  3. Добавьте shortut ключ: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/toggle_selected.py
    

Объяснение

  1. Использование сценария xdotool фактически нажать Ctrl+C
  2. Впоследствии, сценарий (внутренне) создает список выбранных файлов:

    pyperclip.paste().splitlines()
    
  3. Эти файлы впоследствии используются в качестве аргументов любому, переименовывают файлы:

    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)
    
  4. time.sleep(1) наконец должен удостовериться, что "реальное" нажатие клавиши не вмешивается в моделируемое нажатие клавиши xdotool.

    Примечания

    • В связанном ответе второй сценарий создает ссылку, но не переключается. Я сделал ответ "B", также переключают существование символьной ссылки.
    • Если бы это было для опубликованного приложения, то я объединил бы A и B в один сценарий, и решил бы что действие взять в файле настроек. Я мог бы добавить это позже.

*14.04

... потребует другой процедуры установки pyperclip:

sudo apt-get install python3-pip xdotool
sudo pip3 install pyperclip
3
ответ дан 1 December 2019 в 16:20

Другие вопросы по тегам:

Похожие вопросы: