Недавно я заметил, что мой Chrome (Chromium) неправильно обрабатывает magnet, steam и другие подобные ссылки. После непродолжительной отладки xdg-open выяснилось, что проблема возникает в open_generic. В популярных DE этой ошибки нет, ибо для открытия файлов там используются свои решения, но те, кто не использует DE (я использую Awesome WM), проблеме подвержены.
В чём проблема
Как оказалось, проблема заключается в том, что по умолчанию обработка события браузером стоит выше, чем запуск заданным приложением для открываемого x-scheme-handler.
Решение
Как стало очевидно, чтобы решить проблему нужно обработать событие заданным приложением для x-scheme-handler перед браузером, поэтому решение выглядит так (файл xdg-open):
- if [ -n "$BROWSER" ]; then - open_envvar "$1" - fi - if [ -n "$DISPLAY" ]; then open_generic_xdg_x_scheme_handler "$1" fi + if [ -n "$BROWSER" ]; then + open_envvar "$1" + fi +
Ссылки
Чтобы не редактировать файл напрямую (так делать очень плохо), я собрал пакет с применённым патчем для Arch Linux: xdg-utils-patched. Буду поддерживать в актуальном состоянии.
Также доступен GitHub репозиторий с патчем.