Обработка "magnet" ссылок в Google Chrome
Магнет-ссылки предназначены для указания на ресурсы, доступные к загрузке через p2p сети. Такие ссылки в основном идентифицируют файлы не по их расположению или имени, а по содержанию, точнее, по хеш-коду.
При клике по такой ссылке google chrome передаёт эту ссылку утилите xdg-open, которая в свою очередь передаёт ссылку конечной программе. Но вряд ли xdg-open точно знает какая программа должна обрабатывать magnet-ссылку и у меня, например, xdg-open передавала ссылку Transmission, а нужно было Eiskalt DC++. Сейчас я расскажу вам как научить xdg-open открывать magnet-ссылки тем, чем нужно.
Для этого смотрим, где находится файл xdg-open:
whereis xdg-open
и открываем его для редактирования:
sudo gedit /usr/bin/xdg-open
Далее идем в самый конец файла и видим строки:
case "$DE" in
kde)
open_kde "$url"
;;
gnome)
open_gnome "$url"
;;
xfce)
open_xfce "$url"
;;
generic)
open_generic "$url"
;;
*)
exit_failure_operation_impossible "no method available for opening '$url'"
;;
esac
Понятно, что для open_xfce соответствует то, что команда будет выполняться в xfce, для open_kde то, что в kde и т.д. При необходимости ненужные DE можно стереть. Теперь нужно добавить условие, которое будет выполняться, если переданная ссылка magnet. Ниже приведен пример для GNOME и dc-клиента Eiskalt.
case "$DE" in
gnome)
if (echo $url | grep '^magnet') then
eiskaltdcpp "$url"
else
open_gnome "$url"
fi
;;
*)
exit_failure_operation_impossible "no method available for opening '$url'"
;;
esac
Естественно, что вместо eiskaltdcpp вы можете подставить любую программу.
Вот и всё, теперь можете попробовать покликать magnet-ссылки.