Як встановити нову налаштування для відкриття xdg?


28

Я хочу використовувати xdg-openдля відкриття irc://посилань, як я можу зробити необхідний параметр?



ви можете отримати допомогу з цього питання "Як я можу відкрити посилання irc: // у Pidgin від Chromium?"
Хуршид Алам

Відповіді:


17

xdg-open в основному просто дивиться, щоб побачити, яке середовище робочого столу у вас є, а потім виконує gnome-open, gvfs-open, xfce-open тощо.

Гном

Gnome використовує відкриту програму gnome, яка використовує gconf для зберігання всього. Наприклад, на моїй машині з Ubuntu 10.10 під керуванням gnome-open irc: // blah відкриває xchat, оскільки xchat включає в себе патч налаштування gconf, щоб додати обробник irc: //.

gconf-редактор показує irc з конфігурацією xchat

Це показує, як це робить 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 .


Чи можете ви згадати, як це зробити для всіх офіційних ДП?
Oxwivi

Не зовсім пов'язане з питанням, але чи можете ви цитувати повністю каталог у нижній частині знімка екрана? Дякую.
Oxwivi

4
xdg-open в основному просто дивиться, щоб побачити, яке середовище робочого столу у вас є, а потім працює gnome-open, gvfs-open, xfce-open тощо. --- Я не думаю, що так. По-перше, сторінка не говорить про це, по-друге, xdg-open працює ідеально без середовища робочого столу. Наприклад, я використовую його з менеджером вікон i3.
Алоїз Магдал

Чи є загальний спосіб створити нову асоціацію url / app під час встановлення програми?
jayarjo

14

Я опишу це з magnet:типом URI та Transmission (тобто випадком біторента), але той самий метод можна застосувати до будь-якої схеми чи типу файлу.

Також я перевірив це з Debian Jessie, і у мене фактично немає машини Ubuntu, але я вважаю, що вона повинна працювати так само (принаймні, для xdg-open , зауважте, що файлові менеджери можуть вибрати іншу логіку).

  1. Дізнайтеся рядок типу MIME. Для типів файлів MIME ви можете дізнатися його за допомогою команди файлів :

    $ 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
    
  2. Дізнайтеся ім'я файлу .desktop програми.

    Часто це не те саме, що "офіційне" ім'я, а швидше його невелика версія, або зовсім інша назва. Встановлені .desktop файли живуть під / usr / share / applications. Оскільки вони є звичайними текстовими файлами і містять "офіційне" ім'я, наступна команда може вам допомогти:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $
    

    Команда фактично означає "список файлів у цій директорії, які містять слово" Передача ". Деякі програми можуть бути встановлені лише для користувача, у цьому випадку шлях буде ~/.local/share/applications.

    Якщо у вас є "дивне" додаток, яке може взагалі не мати файлу, ви завжди можете створити його (і, можливо, надіслати його розробникам додатків). Найпростішим способом було б скопіювати наявне, переписати зрозумілі вам поля та видалити ті, яких ви не маєте. Зверніться до специфікації для деталей.

  3. Зробіть завдання за допомогою команди 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 man йдеться про те, що файл .desktop повинен вимагати типу MIME до того, як згадана команда запрацює, але для мене, здається, він працює, навіть якщо поле відсутнє. (Я маю на увазі, асоціація буде застосована, і додаток запуститься - якщо він справді може впоратися з типом, це інше питання). Я не впевнений, що є недоліком (можливо, в майбутньому xdg-mime буде більш обмежувальним).


wiki.archlinux.org/index.php/xdg-open дає більш-менш те саме. все ще хороший.
shirish

Ця відповідь - найкращий спосіб. Порада: 1) xdg-mime query filetype FILE- це XDG спосіб пошуку типів mime. 2) Ви також можете самостійно відредагувати параметри за замовчуванням, щоб зберегти речі більш організованими та створити резервну копію пізніше: .config/mimeapps.listце файл.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

відхилено 2 зміни: @frank, будь ласка, поясніть, як xdg-mime "працює краще"? Файл IMO є авторитетним інструментом для типів MIME, xdg-mime query filetype xyz.wbemOTOH дає менше інформації та значно більше набирає.
Алоїз Магдал

1
Прекрасне пояснення та порада використовувати єдине ім'я файлу робочого столу - це рішення, на яке я шукав подяку!
Андреа Річіарді

1
ця порада нарешті допомогла мені вирішити неможливість увійти, використовуючи слабкий настільний додаток на Linux. слабі переадресації до браузера, але потім браузер використовує схему URI, щоб перенаправити назад на слабкий режим. ваші поради допомогли мені побачити, що слабкого відображення URI xdg-mime не було. так радий, що знайшов це після години пошуку! Дякую тобі!
пестофаг

2

Я хотів пов’язати postmanпосилання з моїм встановленим вручну додатком Postman (не з розширенням Chrome), щоб я міг відкрити документи почтальона з браузера так:

введіть тут опис зображення

введіть тут опис зображення

Посилання, з яким я хотів пов’язати, виглядає приблизно так:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

Щоб зробити асоціацію, я зробив наступні кроки:

  1. Встановіть додаток вручну (завантажте та розпакуйте tar.gz) в /home/andrzej.rehmann/software/postman/
  2. Створіть файл на робочому столі в /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
  1. Пов’яжіть 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.