2009-04-23

Скрипты в Nautilus

Замечательная штука — скрипты файлового менеджера Nautilus. Нужно открыть консоль в текущей папке? Открывать консоль, cd /путь/до/папки... а если папка глубоко... брррр. Куда проще тыкнуть правой мышкой в свободное место открытой папки, да выбрать «Сценарии → term_here»




Что особенно приятно — добавляются эти скрипты легко и просто. Представляя из себя обычные текстовые шелл-скрипты, они кладутся в ~/.gnome2/nautilus-scripts/ и незамедлительно проявляются в вышеуказанной менюшке. Написать что-то простенькое под свои нужды также ничуть не сложно, если есть базовые понимания шелл-скриптинга (как у меня =)). Небольшой пример — написанный мною скрипт, закачивающий в текущую папку файл из скопированного в буфер обмена линка. Закачать можно при помощи wget'а в один поток, или axel'я — в 2 или 4 потока на выбор. После скачивания выдается сообщение что файл слит ).

Мега скрипт:

#!/bin/bash

XCLIP_CMD=/usr/X11R6/bin/xclip

if [ ! -e $XCLIP_CMD ] ; then
if [ -z `which $XCLIP_CMD` ] ; then
zenity --error --text="xclip not found!

Please put xclip on your search path or edit XCLIP_CMD in the script:
$0"
exit 1
fi
fi

Стандартное начало баш-скрипта и проверка наличия утилиты xclip, которая будет выплевывать из буфера обмена скопированный туда линк. В случае необнаружения утилиты в заданном месте, вызывается утила zenity, рисующая матерные выражения в предупредительном окошке.

FILE=`xclip -o`

DOWNLOADER=$(gdialog --title "Download with... (\"`echo $FILE`\")" --radiolist "Downloaders" 60 100 10 1 wget on 2 axel*2 off 3 axel*4 off 2>&1)

Кладем скопированную ссылку в переменную FILE, а далее используем утилиту gdialog для рисования окошка:



При этом, в зависимости от выбора, переменной DOWNLOADER присваивается значение от 1 до 3, которое мы тут же и обрабатываем:

if [ $DOWNLOADER = "1" ]; then
wget "`echo $FILE`"
gdialog --title "Download complete" --msgbox "File: \"`echo $FILE`\"" 20 500
fi

if [ $DOWNLOADER = "2" ]; then
axel --num-connections=2 "`echo "$FILE"`"
gdialog --title "Download complete" --msgbox "File: \"`echo $FILE`\"" 20 500
fi

if [ $DOWNLOADER = "3" ]; then
axel --num-connections=4 "`echo "$FILE"`"
gdialog --title "Download complete" --msgbox "File: \"`echo $FILE`\"" 20 500
fi

В зависимости от значения DOWNLOADER качаем файл соответствующей качалкой, после чего выводим сообщение с заголовком «Download complete» и телом, состоящим из строки «File: "ссылка-на-файл"»


Конечно это очень упрощенный вариант, в котором много чего не предусмотрено, например — ссылка фактически вставляется не из того буфера, который CTRL+C/V, а из того который работает по выделению и средней мышке. То есть если скопировать в буфер линк, после чего выделить кусок текста, то линк уже не скачается. Но несмотря на недоработки, скрипт вполне рабочий и достаточно прост, как мне кааца, для понимания.

Коллекцию скриптов, куда более удачных чем мой, можно найти вот тут.

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

Отправить комментарий