Awesome WM виджет монтирования флешек


Написано на lua, работает через dbus c udisks2
Иконка появляется сразу после вставки флешки.

Монтирование и размонтирование происходит по ЛКМ и ПКМ по названию в менюшке

Не смонтировано

Смонтировано


Весь проект https://github.com/warlock90000/awesome
Модуль работы с флешкой https://github.com/warlock90000/awesome/blob/master/util/udisks.lua

В файле описания виджетов (или в rc.lua) добавляем
udisks = require("util.udisks")
udisks.filemanager = "dolphin"
где
udisks = require("util.udisks") путь к udisks.lua
udisks.filemanager - ваш файлменеджер
далее в файле описания wiboks`ов (или в rc.lua) в секции

........
s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        {...........
добавляем
udisks.widget

Сама менюшка сделана с использованием фремйворка radical, по этому его тоже нужно подключать (в udisks.lua он добавлен в заголовки)
https://github.com/warlock90000/awesome
а как это запилить имея лишь опыт установки арча и небольших тренировок с опенбокс и овсом?)
.
.
/// удалил цитирование. vadik///
Romeo86_93rus
а как это запилить имея лишь опыт установки арча и небольших тренировок с опенбокс и овсом?)
Для начала не цитировать большие посты целиком. Уберите.

А как запилить - человек доступно описал.

Идея, конечно, не новая, но некоторым может быть полезна. Я сам время от времени иногда цеплял на панель что-то для монтирования/размонтирования. Сейчас, если кто посмотрит на мои скриншоты, это тот же значок usb (на скриншотах не активен), тот же левый/правый клик для монтирования/размонтирования, только выбор устройства размонтирования реализован на dmenu.
Aivar
только выбор устройства размонтирования реализован на dmenu
А при долгом размонтировании, какой-нибудь индикатор прикручивали?
p.s. я notify-send пытался использовать, однако если монтирование идёт довольно долго то это не выход. вот пока так и не нашёл способа индикации так и использую терминал для размонтирования.
p.p.s. может вообще кто подскажет(не сверяя хэши)) можно как нибудь гарантировано проверить отмонтировано устройство и все данные на него записаны или нет?
Ошибки в тексте-неповторимый стиль автора©
indeviral
какой-нибудь индикатор прикручивали?
Нотификацию. Вот часть размонтирования:
IFS=$'\n'
# UNMOUNT DEVICE
mnt=`lsblk -ndso name,mountpoint | sed -e /^sda/d -e '/\/run\/media/!d' -e 's/\/run\/media\/.*\///' | tr -s \  `
[[ -z "$mnt" ]] && exit
um=$(echo -e "$mnt" | dmenu -fn "dejavu sans-12" -p Eject)
[[ -z "$um" ]] && i3stat-notify -u critical -t 5 -s error "Umount" "Устройство не размонтировано!" && exit
dev=`echo $um | cut -c 1-3`
um=`echo -e "$mnt" | cut -d \  -f 1 | sed '/^'$dev'/!d'`

for i in $um
do
eval udisksctl unmount -b /dev/$i > /dev/null 2>&1
done

[[ -n `lsblk -ndso name,mountpoint | sed -e /^sda/d -e '/\/run\/media/!d' | cut -d \  -f 1 | sed '/^'$dev'/!d'` ]] && i3stat-notify -u critical -t 5 -s error "Umount" "Устройство не размонтировано!" && exit
[ `echo $dev | cut -c 1,2` != sd ] && exit
sleep 1
eval udisksctl power-off -b /dev/$dev
i3stat-notify -u normal -t 5 -s hardware_remove "Eject" "Теперь устройство можно извлечь"
Там муть с sda потому как lsblk в столбце rm не считает внешний хард портативным устройством. Хотя, смотрю, уже появился столбец hotplug. Надо будет переделать, но не сегодня... )
Aivar
Надо будет переделать, но не сегодня...
Переделал сегодня. Выглядит так:
~/.local/bin/mnt
————————————————
#!/usr/bin/bash

IFS=$'\n'
if [[ $1 = umnt ]]; then
# UNMOUNT DEVICE
mnt=`lsblk -ndso hotplug,name,mountpoint | sed -e '/\/run\/media/!d' -e 's/\/run\/media\/.*\///' | tr -s \  | cut -c 4-`
[[ -z "$mnt" ]] && exit
um=$(echo -e "$mnt" | dmenu -fn "dejavu sans-12" -p Eject)
[[ -z "$um" ]] && i3stat-notify -u critical -t 5 -s error "Umount" "Устройства не размонтированы!" && exit
dev=`cut -c 1-3 <<< $um`
um=`echo -e "$mnt" | cut -d \  -f 1 | sed '/^'$dev'/!d'`

for i in $um
do
eval udisksctl unmount -b /dev/$i > /dev/null 2>&1
done

[[ -n `lsblk -ndso name,mountpoint,hotplug | sed -e '/0$/d' -e '/\/run\/media/!d' | cut -d \  -f 1 | sed '/^'$dev'/!d'` ]] && i3stat-notify -u critical -t 5 -s error "Umount" "Устройство не размонтировано!" && exit
sleep 1
eval udisksctl power-off -b /dev/$dev
i3stat-notify -u normal -t 5 -s hardware_remove "Eject" "Теперь устройство можно извлечь"

else
# MOUNT DEVICE
nmnt=`lsblk -npdso name,mountpoint,hotplug | sed -e '/0$/d' -e '/\/run\/media/d' | cut -d \  -f 1`
[[ -z "$nmnt" ]] && exit

for i in $nmnt
do
udisksctl mount -b $i > /dev/null 2>&1
done

mnt=`lsblk -ndso hotplug,name,mountpoint | sed -e '/\/run\/media/!d' -e 's/\/run\/media\/.*\///' | tr -s \  | cut -c 4-`
[[ -z "$mnt" ]] && exit
i3stat-notify -u normal -t 5 -s hardware_insert "Смонтированные устройства:" "$mnt"
fi
Монтирование:
$ mnt
Размонтирование:
$ mnt umnt
Пользуйтесь, адаптируйте и т.д. )
Aivar
udisks сильно жирный, да и если бы от него что то зависело.
опять же если размонтирование будет длится полчаса, то 5 секундный notify можно и проморгать.
а если процесс отмонтирования уже начался, то если запустить повторно уже покажет что устройство отмонтировано.
хотя на самом деле это может быть и не так. Вообщем наверно как то не так я живу.
Ошибки в тексте-неповторимый стиль автора©
indeviral
udisks сильно жирный, да и если бы от него что то зависело.
Видали и пожирнее... ) Он нужен gvfs, а оно мне нужно для подключения Audio CD, фотокамеры, смартфона, привык короче...

indeviral
если размонтирование будет длится полчаса, то 5 секундный notify можно и проморгать.
ctrl+grave

indeviral
а если процесс отмонтирования уже начался, то если запустить повторно то уже покажет что устройство отмонтировано.
В смысле? Не покажет пока не будет размонтировано. Или я чего-то не понял?

indeviral
Вообщем наверно как то не так я живу.
У всех разные критерии. )
indeviral, тебе нужно знать завершился ли процесс копирования или отмонтировалось ли устройство?
От этого зависит какие утилиты использовать для контроля ........ или я опять чего то не понял?
Конечно всё зависит от устройства. Но бывает что запись(async) проходить моментально, а потом пол часа дописывает из озу. В таких случаях umount будет ждать пока не завершится запись. И если невидеть висящего процесса umount. Запустить umount ещё раз то он запуститься ничего не сделает и завершится(как будто всё окей и запись завершена), хотя на самом деле второй umount будет висеть в фоне.

vasek
indeviral, тебе нужно знать завершился ли процесс копирования или отмонтировалось ли устройство?
я про то что надо знать завершился ли процесс, при этом индикация должна быть выполнено явно не на notify.
мне просто интересно было кто как это реализует, а то надоело терминал запускать...

Aivar
Он нужен gvfs
gvfs тоже жирный и ненужный))
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.