воскресенье, 8 сентября 2013 г.

Tips & tricks — google chrome + magnet-ссылки

Магнет ссылки предназначены для указания на ресурсы, доступные к загрузке через p2p сети. Такие ссылки в основном идентифицируют файлы не по их расположению или имени, а по содержанию, точнее, по хеш-коду.

При клике по такой ссылке google chrome передаёт эту ссылку утилите xdg-open, которая в свою очередь передаёт ссылку конечной программе. Но вряд ли xdg-open точно знает какая программа должна обрабатывать magnet-ссылку.

Сейчас будем учить xdg-open открывать magnet-ссылки тем, чем нужно.

Для этого смотрим, где находится файл xdg-open:

1
whereis xdg-open

и открываем его для редактирования

1
sudo nano /usr/bin/xdg-open

Далее идем в самый конец файла и видим строки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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. Ниже приведен пример для всех DE и torrent клиента deluge.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
case "$DE" in
    kde)
    if (echo $url | grep '^magnet') then
 deluge "$url"
    else 
    open_kde "$url"
    fi
    ;;
    gnome)
    if (echo $url | grep '^magnet') then
 deluge "$url"
    else 
    open_gnome "$url"
    fi
    ;;
    xfce)
    if (echo $url | grep '^magnet') then
 deluge "$url"
    else 
    open_xfce "$url"
    fi
    ;;
    generic)
    if (echo $url | grep '^magnet') then
 deluge "$url"
    else 
     open_generic "$url"
    fi
    ;;
    *)
    exit_failure_operation_impossible "no method available for opening '$url'"
    ;;
esac

Естественно, что вместо deluge вы можете подставить любую программу.
Как  уже было сказано выше ненужные DE можно удалить и для openbox вышепреведённый код можно заменить на:

1
2
3
4
5
if (echo $url | grep '^magnet') then
 deluge "$url"
    else 
     open_generic "$url"
    fi

Вот и всё, теперь можете попробовать покликать magnet-ссылки.

Комментариев нет: