Chromium не открывает magnet, steam и другие подобные ссылки
Недавно я заметил, что мой 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 репозиторий с патчем.