Movatterモバイル変換


[0]ホーム

URL:


Skip to content
Search Gists
Sign in Sign up

Instantly share code, notes, and snippets.

@maximal
Last activeMarch 6, 2019 11:36
    • Star(0)You must be signed in to star a gist
    • Fork(0)You must be signed in to fork a gist
    Save maximal/2387d023534a989cf2b3d68132807b67 to your computer and use it in GitHub Desktop.
    Запуск произвольной команды над набором выбранных в файловом менеджере Nautilus файлов
    #!/usr/bin/env python3
    ##
    # Запуск произвольной команды над набором выбранных в файловом менеджере Nautilus файлов
    #
    # Удобно вешать действия над файлами на горячие клавиши в Линуксе.
    #
    # Использование:
    # Допустим, у нас есть команда или скрипт `/home/user/your/command`, что принимает первым аргументом имя файла для обработки.
    # Мы хотим запускать эту команду для каждого из выбранных в Наутилусе файлов.
    #
    # 1. Копируем этот скрипт себе допустим в `/home/user/run-on-selected.sh`, ставим ему права на запуск.
    # 2. Заходим в Параметры → Устройства → Клавиатура
    # 3. Добавляем свою комбинацию клавиш, пишем любое имя, в команде пишем:
    # /home/user/run-on-selected.sh '/home/user/your/command'
    # Таким образом можно настроить сколько угодно команд и горячих клавиш.
    # 4. Готово.
    # В файловом менеджере выделяем нужные файлы, нажимаем выбранную комбинацию.
    # В случае проблем смотрим журнал '/tmp/run-on-selected.log
    #
    # Зависимости: python3-pyperclip xdotool
    # Перед использованием надо установить эти. Например, в Debian/Ubuntu:
    # sudo apt install python3-pyperclip xdotool
    #
    # Если команда — текстовый скрипт, то вначале должен быть шебанг, иначе Питон её не запустит. См.:
    # @link https://stackoverflow.com/questions/27606653/oserror-errno-8-exec-format-error
    #
    # @author MaximAL
    # @since 2019-03-06
    # @copyright © MaximAL 2019
    # @link https://gist.github.com/maximal/2387d023534a989cf2b3d68132807b67
    # @link https://t.me/sijekotech/1853
    # @link https://maximals.ru
    # @link https://sijeko.ru
    ##
    importsubprocess
    importpyperclip
    importtime
    importsys
    importlogging
    fromurllib.parseimportunquote
    # Логгер действий
    formatter=logging.Formatter('@%(asctime)s [%(levelname)s] $%(name)s @%(threadName)s: %(message)s')
    fhandler=logging.FileHandler('/tmp/run-on-selected.log',mode="a")
    fhandler.setLevel(logging.DEBUG)
    fhandler.set_name('file_handle')
    fhandler.setFormatter(formatter)
    logger=logging.getLogger(sys.argv[0])
    logger.addHandler(fhandler)
    logger.setLevel(logging.DEBUG)
    # Поехали!
    logger.info('Command run')
    # Недостаточно аргументов (нужна команда для запуска)
    iflen(sys.argv)<2:
    print ('Usage: '+sys.argv[0]+' '+'<command>')
    print ('Runs <command> on every file selected in Nautilus.')
    print ('<command> argument is mandatory.')
    logger.error('Error: <command> argument is mandatory')
    exit(1)
    command=sys.argv[1]
    logger.info(command)
    # Делаем паузу на всякий случай
    time.sleep(0.5)
    # Копируем имена файлов в буфер обмена
    subprocess.call(['xdotool','key','Control_L+c'])
    # Для каждого имени файла запускаем команду с аргументом
    foriteminpyperclip.paste().splitlines():
    logger.debug([command,item])
    out=subprocess.check_output([command,item])
    logger.debug(out)
    logger.info('Command done')
    @maximal
    Copy link
    Author

    По-русски / Russian

    Я с помощью этого скрипта, например, сделал генерацию папки с фавиконками разных размеров по горячей клавише из выбранной SVG-шки (сам скрипт тут:https://t.me/sijekotech/1614).

    Можно подписывать фотки копирайтами, не заходя в графические редакторы и терминалы, ресайзить картинки, конвертировать аудио из FLAC в OGG/MP3 — да и вообще автоматизировать любые рутинные действия.

    Спасибо Максу Никитенко за помощь с Питоном.

    В Маках похожее делается через Эплскрипт (см. у Бирмана:https://ilyabirman.ru/meanwhile/all/resize-window-applescript/,https://ilyabirman.ru/meanwhile/all/apple-shortcuts-rant/ и т. п.). Сам язык довольно хреновый, но зато там всё в одной экосистеме: и файловый менеджер, и оконный, и вся остальная ОС — так что там можно бо́льше такого наворотить с меньшими затратами. А в Линуксе всё независимыми компонентами, поэтому приходится такие связки придумывать.

    Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

    [8]ページ先頭

    ©2009-2025 Movatter.jp