Я хочу використовувати xdg-open
для відкриття irc://
посилань, як я можу зробити необхідний параметр?
Я хочу використовувати xdg-open
для відкриття irc://
посилань, як я можу зробити необхідний параметр?
Відповіді:
xdg-open в основному просто дивиться, щоб побачити, яке середовище робочого столу у вас є, а потім виконує gnome-open, gvfs-open, xfce-open тощо.
Gnome використовує відкриту програму gnome, яка використовує 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 та Transmission (тобто випадком біторента), але той самий метод можна застосувати до будь-якої схеми чи типу файлу.
Також я перевірив це з Debian Jessie, і у мене фактично немає машини Ubuntu, але я вважаю, що вона повинна працювати так само (принаймні, для xdg-open , зауважте, що файлові менеджери можуть вибрати іншу логіку).
Дізнайтеся рядок типу 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
Дізнайтеся ім'я файлу .desktop програми.
Часто це не те саме, що "офіційне" ім'я, а швидше його невелика версія, або зовсім інша назва. Встановлені .desktop файли живуть під / usr / share / applications. Оскільки вони є звичайними текстовими файлами і містять "офіційне" ім'я, наступна команда може вам допомогти:
$ grep "Transmission" -l -r /usr/share/applications /usr/share/applications/transmission-gtk.desktop $
Команда фактично означає "список файлів у цій директорії, які містять слово" Передача ". Деякі програми можуть бути встановлені лише для користувача, у цьому випадку шлях буде
~/.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 man йдеться про те, що файл .desktop повинен вимагати типу MIME до того, як згадана команда запрацює, але для мене, здається, він працює, навіть якщо поле відсутнє. (Я маю на увазі, асоціація буде застосована, і додаток запуститься - якщо він справді може впоратися з типом, це інше питання). Я не впевнений, що є недоліком (можливо, в майбутньому xdg-mime буде більш обмежувальним).
xdg-mime query filetype FILE
- це XDG спосіб пошуку типів mime. 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