LINUX.ORG.RU

«Открыть в другом приложении» с помощью клавиатурной комбинации

 , ,


0

1

В контекстных меню файлов, в файл-манагере, есть пункт «открыть в другом приложении», с выбором нужного. Как выполнить эту операцию с клавиатуры шорткатом, без открытия меню? То есть выделить, например, произвольную картинку в nautilus-е и заданной комбинацией открыть её в gimp?

Есть старые скрипты для наутилуса и я глянул как там устроено «открыть» или «применить». Попытался что-то придумать своё, но эти потуги ни к чему не привели, так как с башем я на «вы». Скрипты, запущенные с клавы, открывают прогу без выделенного файла.

Как это можно сделать?

Гуглил, но ничего похожего не нашлось. Или это никому не нужно, или искал неправильно.

Ubuntu 20.04, gnome 3.36.8, X11


Ты хочешь, чтобы были разные комбинации для разных программ?

В кутях есть приблуда, которая открывает выбор программы, в которой открыть данный файл, вот хотя бы её вызвать, уже было бы что-то.

Хотя… Если через xclip, но я не уверен, что он умеет запоминать пути к скопированному файлу. Если умеет, то можно на комбинации вешать скрип с копированием и подстановкой.

Короче, если заглянуть в clipboard гнома (расширение), то видно, что он запоминает скопированные файлы и, если чем-то другим, например xclip, можно такое воспроизвести, то дело в шляпе — дальше скрипт и его на хоткей.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

чтобы были разные комбинации для разных программ?

Именно так. В gthumb есть такое - выделенная картинка, по нажатию g, отправляется в gimp и также можно задать свои комбинации, через настройку «персонализация». Вот бы такое же, но из наутилуса.

xclip и clipboard гнома у меня использовался для просмотра в mpv, скопированных ссылок на ютуб, но скрипт я взял здесь на лоре и не уверен, что смогу допилить под свои хотения, так как обычный убунтуюсер, но попробую посмотреть

allext
() автор топика
Ответ на: комментарий от allext

Вот такая конструкция в скрипте:

gthumb $(xclip -o -selection clipboard)

через хоткей отрабатывает нормально, но как перехватить выделение, а не копирование?

allext
() автор топика
Ответ на: комментарий от allext

У меня получилось.

Назовём скрипт, например, open_in_program.
Положи его, например, в ~/.local/bin.

Сделай его исполняемым!

Вот содержимое скрипта:

#! /bin/bash

xdotool key ctrl+c
copy=`xclip -selection clip -o`
path=`echo "$copy" | tail -n1 | sed 's/file:\/\///'`

gimp $path

Открой настройки гнома и добавь там вызов скрипта open_in_program по сочетаю клавиш.

Открой наутилус, выдели любую картинку, нажми комбинацию клавиш и гимп откроет тебе эту картинку.

Создавай новые скрипты, добавляй комбинации, только вместо gimp в скриптах пиши другие программы.

Как-то так.

papin-aziat ★★★★★
()
Последнее исправление: papin-aziat (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

У меня не хочет работать - gimp запускается без выделенного файла. Для небольшой проверки, привёл скрипт к виду:

#!/bin/bash
copy=`xclip -selection clip -o`
path=`echo "$copy" | tail -n1 | sed 's/file:\/\///'`
echo $copy $path

Выделил в наутилусе картинку, затем ctrl+c и запустил скрипт из терминала. Вывод:

/home/allexit/kapmuHka.jpeg /home/allexit/kapmuHka.jpeg

Мне кажется, что вывод правильный и всё упирается в xdotool key ctrl+c. Как проверить её работу? Другие команды xdotool, например: свернуть окно, клик мыши - отрабатывали. Но с этой есть заморочки - жёстко спамит в терминал.

Xev, кстати, выдаёт Control_L и Control_R, но и так тоже не работает.

Скрипт с удалённым xdotool key ctrl+c нормально отрабатывает через выделение и ctrl+c.

allext
() автор топика
Ответ на: комментарий от allext

Продолжив изыскания наткнулся на это: https://github.com/jordansissel/xdotool/issues/210

Заменил xdotool key ctrl+c на xdotool sleep 0.50 key ctrl+c

Скрипт, пока, отрабатывает нормально. Непонятно, только, как правильно подобрать sleep. Дополнительно, завернул в двойные кавычки $path, так как из-за пробелов в имени и пути gimp ругался «Нет такого файла…»

Небольшой нюанс в том, что манагер буфера обмена будет записывать в историю, но в общем-то некритично, хотя если есть варианты, то можно рассмотреть (:

papin-aziat, спс за помощь

allext
() автор топика
Ответ на: комментарий от allext

echo $copy

/home/allexit/kapmuHka.jpeg

Ого, тогда у тебя всё проще.

#! /bin/bash

xdotool sleep 0.50 key ctrl+c
gimp "`xclip -selection clip -o`"

У меня xclip -selection clip -o выдаёт

x-special/nautilus-clipboard
copy
file:///home/me/Dump/2024-10-14_10-30.png

поэтому пришлось подрезать выхлоп, а тебе походу не надо.

Непонятно, только, как правильно подобрать sleep.

Методом тыка же 😀
Я использую --delay 100 в скиптике, который копирует для голдендикта. С таким значением всё ок, а без, почему-то ничего не происходит.

манагер буфера обмена будет записывать в историю

А как иначе, ведь отрабатывает Ctrl+C. Тогда надо идти каким-то другим путём, хотя не ясно зачем, ведь гномовский clipboard всё равно записывает все скопированные файлы зачем-то.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

Кстати, также обратил внимание, что на входе sed то же, что и на выходе, но так как внутренности линукса не знаю, то решил, что может возникнуть необходимость в обрезке при каких-то условиях. Где-то такое - file:///home/ уже видел раньше.

Упрощённая версия работает тоже.

allext
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.