Контекстное меню в Dolphin

Ответить
mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 06 июл 2018, 00:14

Здравствуйте. ROSA10/64/Plasma
Не могу разобраться - прошу помочь.
Для удобства хотел вынести несколько типовых действий в контекстное меню dolphin (ПКМ по файлу).
Например, открыть файл в текстовом редакторе gedit
Сейчас это "ПКМ -> Открыть с помощью -> Текстовый редактор"
Как его закрепить на главном окне контекстного меню, чтобы стало "ПКМ -> Текстовый редактор"?
Создал файл ~/.local/share/kservices5/ServiceMenus/fileopengedit.desktop
[Desktop Entry]
Type=Service
Actions=fileopengedit
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=inode
X-KDE-Priority=TopLevel

[Desktop Action fileopengedit]
Exec=gedit
Icon=gedit
Name=Открыть в gedit
ПКМ по файлу -> ничего не изменилось (ФМ перезапустил). Как сделать правильно?
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 06 июл 2018, 01:57

Разобрался, надо:
MimeType=text/plain
И в "Настройка -> Настроить Dolphin -> Действия" проверить включен ли чекбокс "Открыть в gedit"
Список основных MIME - https://developer.mozilla.org/ru/docs/W ... D0%B2_MIME
То есть в итоге:
[Desktop Entry]
Type=Service
Actions=fileopengedit
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=text/plain
X-KDE-Priority=TopLevel

[Desktop Action fileopengedit]
Exec=gedit %U
Icon=gedit
Name[ru]=Открыть в gedit
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 10 июл 2018, 17:37

Еще один вопрос, связанный с темой, но больше к bash
Создал действие сохранения копии файла:

Код: Выделить всё

[Desktop Entry]
Type=Service
Actions=filesave
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=text/plain
 
[Desktop Action filesave]
Exec=/home/user/filesave.sh
Name=Save state
Name[ru]=Сохранить копию
Сам скрипт:

Код: Выделить всё

#!/bin/bash
FNAME=$1
cp $FNAME "$FNAME.old"
Всё работает.
Но не могу понять - откуда скрипт берет значение переменной "$1" и почему так?
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

Аватара пользователя
Andreas17
Сообщения: 149
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640 / 12 ГБ ОЗУ / NVIDIA GTX 650 / ROSA FRESH R10 Plasma 5
Откуда: Москва

Контекстное меню в Dolphin

Сообщение Andreas17 » 10 июл 2018, 19:17

mexx400 писал(а):
10 июл 2018, 17:37
Но не могу понять - откуда скрипт берет значение переменной "$1" и почему так?
$1 это первый аргумент передаваемый скрипту при запуске ($0 - имя самого скрипта).

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 10 июл 2018, 20:45

Andreas17 писал(а):
10 июл 2018, 19:17
$1 это первый аргумент передаваемый скрипту при запуске ($0 - имя самого скрипта)
Да, так везде и написано.
Но я не могу понять - кто и почему передает эти аргументы скрипту?
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

Аватара пользователя
Andreas17
Сообщения: 149
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640 / 12 ГБ ОЗУ / NVIDIA GTX 650 / ROSA FRESH R10 Plasma 5
Откуда: Москва

Контекстное меню в Dolphin

Сообщение Andreas17 » 10 июл 2018, 20:50

Кто запускает, тот и передаёт. В данном случае Dolphin. :)

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 11 июл 2018, 05:42

Andreas17 писал(а):
10 июл 2018, 20:50
Кто запускает, тот и передаёт. В данном случае Dolphin. :)
Кто запускает, тот и передаёт... Хорошо.
А как узнать все передаваемые аргументы? В данном случае - передаваемые Dolphin? Почему ‘$1’ это именно имя файла? Каково значение ‘$2’?
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 11 июл 2018, 09:43

Методом перебора и логирования:
$0 - имя скрипта
$1 - имя "обрабатываемого" скриптом файла
Других аргументов не вижу.
Но где это можно посмотреть заранее? Например, для других случаев?
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

Аватара пользователя
Andreas17
Сообщения: 149
Зарегистрирован: 21 май 2017, 20:07
Operating system: AMD Athlon II X4 640 / 12 ГБ ОЗУ / NVIDIA GTX 650 / ROSA FRESH R10 Plasma 5
Откуда: Москва

Контекстное меню в Dolphin

Сообщение Andreas17 » 11 июл 2018, 13:14

mexx400, можете добавить в скрипт строку:

Код: Выделить всё

echo $2 >> ~/1.txt
Но навряд ли Dolphin что-то ещё передаёт в качестве аргументов.

Есть ещё переменные:
$# - содержит количество переданных параметров. Если в $2 было пусто, то будет равно 1.
$* - содержит все параметры в виде строки.
mexx400 писал(а):
11 июл 2018, 05:42
Почему ‘$1’ это именно имя файла?
Это решает разработчик приложения.

mexx400
Сообщения: 393
Зарегистрирован: 13 окт 2013, 16:06
Operating system: Ноутбук MSI & ROSA R10 Plasma [amd64] & Debian 8 MATE [amd64]

Контекстное меню в Dolphin

Сообщение mexx400 » 11 июл 2018, 16:25

Andreas17 писал(а):
11 июл 2018, 13:14
можете добавить в скрипт строку:
Да, я так по наитию и делал :) Нет, ничего более не передает:

Код: Выделить всё

echo $# >> ~/arg.txt
выдает '1'.
Andreas17 писал(а):
11 июл 2018, 13:14
$* - содержит все параметры в виде строки
Да, все кроме '$0'
Andreas17 писал(а):
11 июл 2018, 13:14
Это решает разработчик приложения
Понятно. Спасибо за ответы!
Debian 8 MATE [amd64]
ROSA Desktop R10 Plasma [amd64] *4
ROSA Desktop R10 Plasma [x86]

Ответить