Блог    Теги    RSS    Файлопомойка Мой Github

Блог №200 по адресу 0708:07C7 / Меню монтирования в OpenBox

23 апреля 2011, 20:43
Буду краток. Давеча, не найдя готового, написал вот такую штуку:



Итак, код:
#!/bin/sh
case "$1" in
openn)
rox $(mount |grep $2 |awk '{print $3}')
;;
moope)
$0 mount $2
$0 openn $2
;;
mount)
LABEL="$(/sbin/blkid -o udev /dev/$2 |grep ID_FS_LABEL\= |awk -F'=' '{print $2}')"
test -z "$LABEL" && LABEL=$2
notify-send -c device.added -i gnome-dev-removable "Монтирование $2" "Точка монтирования: $LABEL"
pmount /dev/$2 "$LABEL"
;;
umoun)
notify-send -i gnome-dev-removable "Отмонтирование $2" "Точка монтирования: $(mount |grep $2 |awk '{print $3}')"
pumount $3 /dev/$2
if [ $? -eq 0 ]; then notify-send -u low -c device.removed -i gnome-dev-removable \
"Устройство $2 отмонтировано" "Теперь это устройство можно безопасно извлечь"
else notify-send -u critical -c device.removed -i gnome-dev-removable "Устройство $2 НЕ отмонтировано" \
"$(lsof $(mount |grep $2 |awk '{print $3}')|awk '{printf $1"("$2") "}')"
fi
;;
umoul)
$0 umoun $2 --lazy
;;
esac
test -n "$*" && exit
echo "<openbox_pipe_menu>"
echo "<separator label=\"Закладки\" />"
for bookmark in `sed 's/< ><^ >*$//' .gtk-bookmarks |sed s/file\://
` ; do
echo '<item label="'`basename ${bookmark}`'">'
echo '<action name="Execute"><execute>'
echo "rox ${bookmark}"
echo '</execute></action>'
echo '</item>'
done
echo "<separator label=\"Устройства\" />"
for i in /sys/block/sd*/; do cd $i; for ii in sd*; do
test -r $ii || continue
test ${ii%?} = sda && continue
VENDOR=$(cat $i/device/vendor |sed 's/ *$//g')
MODEL=$(cat $i/device/model |sed 's/ *$//g')
echo "<menu id=\"$ii\" label=\"$ii <$VENDOR - $MODEL>\">"
echo "<separator label=\"Действия над $ii\"/>"
echo "<item id=\"${ii}_openn\" label=\"Открыть\">"
echo "<action name=\"Execute\"><execute>$0 openn $ii </execute></action>"
echo "</item>"
echo "<item id=\"${ii}_moope\" label=\"Монтировать и открыть\" >"
echo "<action name=\"Execute\"><execute>$0 moope $ii</execute></action>"
echo "</item>"
echo "<item id=\"${ii}_mount\" label=\"Монтировать\" >"
echo "<action name=\"Execute\"><execute>$0 mount $ii</execute></action>"
echo "</item>"
echo "<item id=\"${ii}_umoun\" label=\"Отмонтировать\" >"
echo "<action name=\"Execute\"><execute>$0 umoun $ii</execute></action>"
echo "</item>"
echo "<item id=\"${ii}_umoul\" label=\"Отмонт. принудительно\" >"
echo "<action name=\"Execute\"><execute>$0 umoul $ii</execute></action>"
echo "</item>"
echo "<separator/>"
echo "<item id=\"${ii}_imntpt\" label=\"Точка монт.: $(mount |grep $ii |awk '{print $3}')\" />"
# echo "<item id=\"${ii}_ilabal\" label=\"Метка: $(/sbin/blkid /dev/$ii)\" />"
echo "</menu>"
done; cd -; done
echo "</openbox_pipe_menu>"


Как видно из кода, необходимы pmount, blkid, notify-send, rox (или другой файл-менеджер).

Использование - прописать в menu.xml что-то вроде такого:
<menu id="mounts" label="Монтирование" execute="~/.config/openbox/mountmenu.sh" />

Чтобы заменить файл-менеджер, отредактируйте строки 5 и 37. Чтобы добавить игнорируемые скриптом диски, отредактируйте строку 45.


Пост был написан для блога welinux.ru
Теги: #nix   #openbox  

Комментарии RSS

Ваше имя:

E-mail (будет скрыт):

Текст: