Я хочу использовать xdg-open
для открытия irc://
ссылок, как я могу сделать необходимый параметр?
Я хочу использовать xdg-open
для открытия irc://
ссылок, как я могу сделать необходимый параметр?
Ответы:
xdg-open в основном просто смотрит, какая у вас среда рабочего стола, а затем запускает gnome-open, gvfs-open, xfce-open и т. д. Смотрите ниже инструкции по конкретной среде рабочего стола ...
Gnome использует программу gnome-open, которая использует gconf для хранения всего. Например, на моей машине с Ubuntu 10.10 работает gnome-open irc: // blah открывает xchat, потому что xchat включает в себя патч настройки gconf для добавления обработчика irc: //.
Это показывает, как это делает gnome с настройками gconf в /desktop/gnome/url-handlers/
. Смотрите xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas
в качестве примера.
Для KDE вы должны посмотреть файлы .protocol в / usr / share / kde4 / services /, создать новый для вашего нового протокола и поместить его в ~ / .kde / share / kde4 / services /, если это супер полезно, тогда рассмотрите возможность добавления его в пакет как исправление для других пользователей.
KDE использует kde-open или kfmclient в зависимости от того, что доступно и какая у вас версия KDE.
XFCE использует программу под названием exo-open, у этой программы нет способа сконфигурировать ее или добавить обработчики uri. Просмотр исходного кода показывает, что он использует файлы рабочего стола для указания только трех типов программ. TerminalEmulator, WebBrowser и EmailClient.
В XFCE4 (и, возможно, также в других) можно настроить xdg-open для определения собственного обработчика протокола. В некоторых вы должны создавать / редактировать следующие файлы:
~ / .local / share / Applications / protocolhandler.desktop ~ / .local / share / Applications / mimeapps.list
Пример добавления обработчика для протокола ed2k представлен на stackexchange.com 2 .
Я опишу это с magnet:
типом URI и передачей (т. Е. Битовый поток), но тот же метод можно применить к любой схеме или типу файла.
Также я проверил это с Debian Jessie, и у меня фактически нет машины с Ubuntu, но я считаю, что она должна работать так же (по крайней мере, для xdg-open , обратите внимание, что файловые менеджеры могут использовать другую логику).
Узнайте строку типа MIME. Для типов файлов MIME вы можете узнать это с помощью команды file :
$ file -i Broken_Blossoms.webm Broken_Blossoms.webm: video/webm; charset=binary $
Для приведенного выше файла тип MIME равен video/webm
.
Для обработчиков URI типом является x-scheme-handler/<scheme>
, где
<scheme>
часть URI перед двоеточием, например, «http», «mailto», «irc» или «magnet». Ниже приведены примеры допустимых типов MIME:
x-scheme-handler/http
x-scheme-handler/irc
x-scheme-handler/magnet
x-scheme-handler/mailto
Узнайте название файла приложения .desktop.
Часто это не то же самое, что «официальное» имя, а скорее строчная версия, или совершенно другое имя. Установленные файлы .desktop находятся в каталоге / usr / share / Applications. Так как они являются обычными текстовыми файлами и содержат «официальное» имя, вам может помочь следующая команда:
$ grep "Transmission" -l -r /usr/share/applications /usr/share/applications/transmission-gtk.desktop $
Команда фактически означает «список файлов в этом каталоге, которые содержат слово« Transmission »». Некоторые приложения могут быть установлены только для пользователя, в этом случае путь будет
~/.local/share/applications
.
Если у вас есть «странное» приложение, которое может вообще не иметь файла, вы всегда можете создать его (и, возможно, отправить его разработчикам приложения). Легким способом было бы скопировать существующее, переписать поля, которые вы понимаете, и удалить те, которые вы не делаете. Обратитесь к спецификации для деталей.
Сделайте назначение, используя команду xdg-mime :
$ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet $
Обратите внимание, что независимо от того, где файл находится (/ usr / share / Applications, ~ / .local / share / Applications ...), вы всегда используете только имя , а не полный путь.
Обычно команда ничего не выводит - это нормально. Если вы хотите проверить, что вы только что сделали, или посмотреть, что в данный момент назначено любому типу MIME, не открывая его:
$ xdg-mime query default x-scheme-handler/magnet transmission-gtk.desktop $
Примечание 1: Если вы хотите проверить другие типы MIME, вы можете посмотреть /etc/mime.types. Он не содержит все типы в мире; например, обработчики URI, но его можно использовать для «агрессивной» формы обработки ассоциаций. Например:
grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop
связал бы все известные видео форматы с VLC.
Примечание 2. Файлы .desktop часто содержат список типов MIME, которые, как они утверждают, могут обрабатывать с помощью MimeType
поля.
Страница man xdg-mime сообщает, что файл .desktop должен иметь тип MIME, прежде чем будет работать вышеупомянутая команда, но для меня это работает, даже если поле отсутствует. (Я имею в виду, ассоциация будет применена, и приложение запустится - если это действительно может обработать тип, это другой вопрос). Я не уверен, что является недостатком (возможно, в будущем xdg-mime будет более ограничительным).
xdg-mime query filetype FILE
это способ XDG найти типы пантомимы. 2) Вы также можете отредактировать значения по умолчанию самостоятельно, чтобы упорядочить вещи и создать резервную копию позже: .config/mimeapps.list
это файл.
xdg-mime query filetype xyz.wbem
OTOH дает меньше информации и гораздо больше печатает.
Я хотел связать postman
ссылки с моим установленным вручную приложением Postman (не расширением Chrome), чтобы я мог открывать документы почтальона из браузера следующим образом:
Ссылка, которую я хотел связать, выглядит следующим образом:
postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...
Чтобы сделать ассоциацию, я сделал следующие шаги:
/home/andrzej.rehmann/software/postman/
/usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
postman
ссылку XDG с приложением, запустив:xdg-mime default Postman.desktop x-scheme-handler/postman
Я аннулировал эту конфигурацию, если кому-то интересно: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml