Страница 1 из 1

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

Добавлено: 06 июл 2018, 00:14
mexx400
Здравствуйте. 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
ПКМ по файлу -> ничего не изменилось (ФМ перезапустил). Как сделать правильно?

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

Добавлено: 06 июл 2018, 01:57
mexx400
Разобрался, надо:
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

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

Добавлено: 10 июл 2018, 17:37
mexx400
Еще один вопрос, связанный с темой, но больше к 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" и почему так?

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

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

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

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

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

Добавлено: 10 июл 2018, 20:50
Andreas17
Кто запускает, тот и передаёт. В данном случае Dolphin. :)

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

Добавлено: 11 июл 2018, 05:42
mexx400
Andreas17 писал(а): 10 июл 2018, 20:50 Кто запускает, тот и передаёт. В данном случае Dolphin. :)
Кто запускает, тот и передаёт... Хорошо.
А как узнать все передаваемые аргументы? В данном случае - передаваемые Dolphin? Почему ‘$1’ это именно имя файла? Каково значение ‘$2’?

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

Добавлено: 11 июл 2018, 09:43
mexx400
Методом перебора и логирования:
$0 - имя скрипта
$1 - имя "обрабатываемого" скриптом файла
Других аргументов не вижу.
Но где это можно посмотреть заранее? Например, для других случаев?

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

Добавлено: 11 июл 2018, 13:14
Andreas17
mexx400, можете добавить в скрипт строку:

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

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

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

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

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

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

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