Xdg-open и pcmanfm
Довольно давно, я использую torrent клиент deluge. Всем замечательная качалка торрентов, но вот постоянно меня раздражало то, что когда пытаешься из него открыть папку, она открывалась в браузере вместо pcmanfm например. В gnome\kde\xfce с этим проще, в них не используется xdg-open, там свои утилиты. Та же ситуация была и с dropbox, и думаю ещё с многими программами. Долго я мучился с этим. Пока в один день, не вспомнил что nixtrian, не так давно решал схожую проблему. С ним мы довольно быстро нашли решение, которое оказалось весьма тривиальным.
Открываем файл /usr/bin/xdg-open
и находим следующие строки:
open_generic()
{
IFS=":"
for browser in $BROWSER; do
if [ x"$browser" != x"" ]; then
IFS=' '
browser_with_arg=${browser//'%s'/"$1"}
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
else $browser_with_arg;
fi
if [ $? -eq 0 ]; then exit_success;
fi
fi
done
exit_failure_operation_impossible "no method available for opening '$1'"
}
Нам нужно добавить в самом начале одну функцию, которая собственно и будет открывать ссылки на файлы в pcmanfm.
if [ -d "$1" ]; then
pcmanfm $1
exit
fi
После добавления, будет выглядеть примерно так:
open_generic()
{
if [ -d "$1" ]; then
pcmanfm $1
exit
fi
IFS=":"
for browser in $BROWSER; do
if [ x"$browser" != x"" ]; then
IFS=' '
browser_with_arg=${browser//'%s'/"$1"}
if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1";
else $browser_with_arg;
fi
if [ $? -eq 0 ]; then exit_success;
fi
fi
done
exit_failure_operation_impossible "no method available for opening '$1'"
}
Pcmanfm можно заменить на любой другой файловый менеджер по вкусу. Всё бы было гораздо проще, если бы была хоть какая либо вменяемая документация по xdg-open. Хотя, возможно, я её просто не нашёл. Зато, в процессе поиска, была найдена одна приятная команда:
xdg-open $(ls . | dmenu)