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
Для KDE вы должны посмотреть файлы .protocol в / usr / share / kde4 / services /, создать новый для вашего нового протокола и поместить его в ~ / .kde / share / kde4 / services /, если это супер полезно, тогда рассмотрите возможность добавления его в пакет как исправление для других пользователей.
KDE использует kde-open или kfmclient в зависимости от того, что доступно и какая у вас версия KDE.
XFCE
XFCE использует программу под названием exo-open, у этой программы нет способа сконфигурировать ее или добавить обработчики uri. Просмотр исходного кода показывает, что он использует файлы рабочего стола для указания только трех типов программ. TerminalEmulator, WebBrowser и EmailClient.
В XFCE4 (и, возможно, также в других) можно настроить xdg-open для определения собственного обработчика протокола. В некоторых вы должны создавать / редактировать следующие файлы:
Можете ли вы упомянуть, как это сделать для всех официальных DE?
Oxwivi
Не совсем относится к вопросу, но можете ли вы процитировать каталог в нижней части снимка экрана? Спасибо.
Oxwivi
4
xdg-open в основном просто смотрит, какая у вас среда рабочего стола, а затем запускает gnome-open, gvfs-open, xfce-open и т. д. - я так не думаю. Во-первых, man-страница не говорит об этом, а во-вторых, xdg-open прекрасно работает без среды рабочего стола. Например, я использую его с оконным менеджером i3.
Алоис Махдал
Существует ли общий способ создания новой ассоциации URL / приложений во время установки приложения?
Джаярджо
14
Я опишу это с magnet:типом URI и передачей (т. Е. Битовый поток), но тот же метод можно применить к любой схеме или типу файла.
Также я проверил это с Debian Jessie, и у меня фактически нет машины с Ubuntu, но я считаю, что она должна работать так же (по крайней мере, для xdg-open , обратите внимание, что файловые менеджеры могут использовать другую логику).
Узнайте строку типа MIME. Для типов файлов MIME вы можете узнать это с помощью команды file :
Для приведенного выше файла тип MIME равен video/webm.
Для обработчиков URI типом является x-scheme-handler/<scheme>, где
<scheme>часть URI перед двоеточием, например, «http», «mailto», «irc» или «magnet». Ниже приведены примеры допустимых типов MIME:
Часто это не то же самое, что «официальное» имя, а скорее строчная версия, или совершенно другое имя. Установленные файлы .desktop находятся в каталоге / usr / share / Applications. Так как они являются обычными текстовыми файлами и содержат «официальное» имя, вам может помочь следующая команда:
Команда фактически означает «список файлов в этом каталоге, которые содержат слово« Transmission »». Некоторые приложения могут быть установлены только для пользователя, в этом случае путь будет
~/.local/share/applications.
Если у вас есть «странное» приложение, которое может вообще не иметь файла, вы всегда можете создать его (и, возможно, отправить его разработчикам приложения). Легким способом было бы скопировать существующее, переписать поля, которые вы понимаете, и удалить те, которые вы не делаете. Обратитесь к
спецификации для деталей.
Обратите внимание, что независимо от того, где файл находится (/ usr / share / Applications, ~ / .local / share / Applications ...), вы всегда используете
только имя , а не полный путь.
Обычно команда ничего не выводит - это нормально. Если вы хотите проверить, что вы только что сделали, или посмотреть, что в данный момент назначено любому типу MIME, не открывая его:
Примечание 1: Если вы хотите проверить другие типы MIME, вы можете посмотреть /etc/mime.types. Он не содержит все типы в мире; например, обработчики URI, но его можно использовать для «агрессивной» формы обработки ассоциаций. Например:
Примечание 2. Файлы .desktop часто содержат список типов MIME, которые, как они утверждают, могут обрабатывать с помощью MimeTypeполя.
Страница man xdg-mime сообщает, что файл .desktop должен иметь тип MIME, прежде чем будет работать вышеупомянутая команда, но для меня это работает, даже если поле отсутствует. (Я имею в виду, ассоциация будет применена, и приложение запустится - если это действительно может обработать тип, это другой вопрос). Я не уверен, что является недостатком (возможно, в будущем xdg-mime будет более ограничительным).
Этот ответ - лучший способ. Совет: 1) xdg-mime query filetype FILEэто способ XDG найти типы пантомимы. 2) Вы также можете отредактировать значения по умолчанию самостоятельно, чтобы упорядочить вещи и создать резервную копию позже: .config/mimeapps.listэто файл.
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
откат 2 правок: @frank, хочешь объяснить, как xdg-mime "работает лучше"? IMO- файл - это аутентичный инструмент для типов MIME, xdg-mime query filetype xyz.wbemOTOH дает меньше информации и гораздо больше печатает.
Алоис Махдал
1
Большое объяснение и подсказка, чтобы использовать единственное имя файла рабочего стола было решением, которое я искал, спасибо!
Андреа Ричиарди
1
этот совет, наконец, помог мне решить, что я не могу войти в систему с помощью приложения Slack Desktop на Linux. Slack перенаправляет в браузер, но затем браузер использует схему URI для перенаправления обратно в Slack. Ваши советы помогли мне увидеть, что слабое отображение URI xdg-mime исчезло. так рад, что нашел это после часа поиска! Спасибо!
Пестофаг
2
Я хотел связать postmanссылки с моим установленным вручную приложением Postman (не расширением Chrome), чтобы я мог открывать документы почтальона из браузера следующим образом:
Ссылка, которую я хотел связать, выглядит следующим образом:
Ответы:
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
Для KDE вы должны посмотреть файлы .protocol в / usr / share / kde4 / services /, создать новый для вашего нового протокола и поместить его в ~ / .kde / share / kde4 / services /, если это супер полезно, тогда рассмотрите возможность добавления его в пакет как исправление для других пользователей.
KDE использует kde-open или kfmclient в зависимости от того, что доступно и какая у вас версия KDE.
XFCE
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 :
Для приведенного выше файла тип MIME равен
video/webm
.Для обработчиков URI типом является
x-scheme-handler/<scheme>
, где<scheme>
часть URI перед двоеточием, например, «http», «mailto», «irc» или «magnet». Ниже приведены примеры допустимых типов MIME:Узнайте название файла приложения .desktop.
Часто это не то же самое, что «официальное» имя, а скорее строчная версия, или совершенно другое имя. Установленные файлы .desktop находятся в каталоге / usr / share / Applications. Так как они являются обычными текстовыми файлами и содержат «официальное» имя, вам может помочь следующая команда:
Команда фактически означает «список файлов в этом каталоге, которые содержат слово« Transmission »». Некоторые приложения могут быть установлены только для пользователя, в этом случае путь будет
~/.local/share/applications
.Если у вас есть «странное» приложение, которое может вообще не иметь файла, вы всегда можете создать его (и, возможно, отправить его разработчикам приложения). Легким способом было бы скопировать существующее, переписать поля, которые вы понимаете, и удалить те, которые вы не делаете. Обратитесь к спецификации для деталей.
Сделайте назначение, используя команду xdg-mime :
Обратите внимание, что независимо от того, где файл находится (/ usr / share / Applications, ~ / .local / share / Applications ...), вы всегда используете только имя , а не полный путь.
Обычно команда ничего не выводит - это нормально. Если вы хотите проверить, что вы только что сделали, или посмотреть, что в данный момент назначено любому типу MIME, не открывая его:
Примечание 1: Если вы хотите проверить другие типы MIME, вы можете посмотреть /etc/mime.types. Он не содержит все типы в мире; например, обработчики URI, но его можно использовать для «агрессивной» формы обработки ассоциаций. Например:
связал бы все известные видео форматы с 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), чтобы я мог открывать документы почтальона из браузера следующим образом:Ссылка, которую я хотел связать, выглядит следующим образом:
Чтобы сделать ассоциацию, я сделал следующие шаги:
/home/andrzej.rehmann/software/postman/
/usr/share/applications/Postman.desktop
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
источник