Какова процедура обновления типа mime ассоциации в KDE?

Там столько всего неправильного.

  • Не рассматривайте ExecStartи ExecStopкак командные строки оболочки. Они не. Руководство systemd предупреждает об этом. Расширения оболочки, такие как подстановка команд, недоступны в этих настройках файла сервисного модуля. Это , а не язык оболочки.
  • Не создавайте файловый механизм PID, если место, с которого вы начинаете, имеет под рукой фактический диспетчер служб. Файлы PID — это механизм, о котором мы знаем, что он сломан с 1980-х годов, и что надлежащее управление службами полностью избавляет от необходимости. У вас есть сервис-менеджер. Это гарантирует, что в любой момент времени будет запущен не более одного экземпляра службы. Он будет отслеживать идентификатор процесса. Он будет иметь дело с отправкой сигналов завершения в процесс службы, когда служба закрывается.
  • Не включайте в серверный процесс базовые -элементы серверной стороны, такие как создание FIFO и открытие его серверной части.

Делай так:

  • Создайте блок розеток, который будет располагаться рядом с сервисным блоком.
  • Убрать всю явную обработку FIFO из crashCollector.
  • Используйте ListenFIFOв гнездовом блоке. Конечно, для этого потребуется абсолютный путь.
  • Используйте StandardInput=socketв сервисном блоке.
  • Сделайте так, чтобы ваш crashcollectorскрипт просто читал со стандартного ввода.
  • Извлеките весь файл PID из crashCollector.
  • Удалите все перехваты сигналов и cleanup()прочее из crashCollector.
  • Исключите все явные убийства с помощью ExecStopи последующую махинацию, которую вы пытались совершить с помощью KillMode, из служебного подразделения.
  • Используйте StandardError=journalв сервисном блоке.
  • Замените logпростым echo 1>&2на стандартную ошибку.

Дополнительная литература

3
21.01.2020, 08:13
1 ответ

Does KDE provide such a utility or should I use the generic xdg-utils?

Да, KDE прочитать эти mimeapps.list . Код написан в mimetypedata.cpp

KSharedConfig::Ptr profile = KSharedConfig::openConfig("mimeapps.list", KConfig::NoGlobals, QStandardPaths::GenericConfigLocation);

KDE попытается прочитать их в этом порядке

.config/kde-mimeapps.list
.config/mimeapps.list
/etc/xdg/kde-mimeapps.list
/etc/xdg/mimeapps.list
/usr/share/applications/mimeapps.list

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

What is the procedure to put KDE's house in order in regard to mime types (for local user and system-wide)?

Для локальных пользователей вы можете редактировать или создавать файлы в вашем каталоге .config. Принимая во внимание, что для широкого использования системы -вы можете вместо этого создать те, что в /etc.

Однако в большинстве случаев нет необходимости трогать эти файлы вручную. Вы уже создали ~/.config/mimeapps.list. Если вы хотите изменить приложение, связанное с любым расширением файла, просто right-click -> Open With -> Other Application.... Выберите новое приложение и установите флажок Запомнить ассоциацию приложения для всех файлов типа... . Это отредактирует ваш ~/config/mimeapps.listдля вас. Например, если вы хотите изменить связь PDF на evince вместо okular , вы делаете это, а запись

application/pdf=org.gnome.Evince.desktop;

будет добавлено к вашему mimeapps.list. application/pdfугадывается из записи /usr/share/mime/application/pdf.xml. Поэтому не стесняйтесь изучать синтаксис таким образом или вместо этого используйте xdg-mime. Вот спецификация ассоциаций приложений MIME

4
28.04.2021, 23:25

Теги

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