Как известно Яндекс.Диск на Ubuntu существует только как консольный клиент. Сегодня я решил «Хватит это терпеть» и написал для себя простенький скрипт, который значительно упрощает работу с ним. (Исходники в низу статьи)
Стоит пояснить, что данный скрипт писался для личного пользования, но знакомый уговорил выложить тут, поэтому такие вещи как абсолютные адреса файлов будут не абсолютными и вам стоит подправить их для собственной системы.
Для работы нам нужно только три файла:
- Файл запуска для взаимодействия с пользователем
- Bash скрипт для взаимодействия с клиентом
- Иконка сервиса Яндекс.Диск
Начнем с BASH. Создаём в любом удобном месте файл ya-disk.sh
#!/bin/bash
case $1 in
start) # Команда запуска
deamon=`yandex-disk start`
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "$deamon"
;;
stop) # Команда остановки
deamon=`yandex-disk stop`
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "$deamon"
;;
*) # Команда проверки статуса
deamon=`yandex-disk status`
if [[ "$deamon" == "Ошибка: демон не запущен" ]] # Проверяем состояние демона и если он не запущен - Запускаем.
then
deamon=`yandex-disk start`
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "$deamon"
else # Если демон уже запущен собираем информацию и выводим
status=`yandex-disk status | grep -o '^Статус ядра синхронизации: .*$' | grep -o ': .*$'`
all=`yandex-disk status | grep -o 'Всего:.*'`
nfree=`yandex-disk status | grep -o 'Занято:.*'`
free=`yandex-disk status | grep -o 'Свободно:.*'`
maxfile=`yandex-disk status | grep -o 'Максимальный размер файла:.*'`
trash=`yandex-disk status | grep -o 'Размер корзины:.*'`
if [[ "$status" == ": синхронизация" ]] # Если демон в процесе синхронизации
then
SUNC=`yandex-disk status | grep -o 'Статус синхронизации: .*' | grep -o '[^:]*$'`
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "Синхронизация" "Прогресс:$SUNCn$alln$nfreen$freen$maxfilen$trash"
elif [[ "$status" == ": обработка данных" ]]; then # Если демон ведёт учет файлов
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "Статус$status"
else # Если демон простаивает
notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "Статус$status" "$alln$nfreen$freen$maxfilen$trash"
fi
fi
;;
esac #окончание оператора case.
exit 0
Теперь создадим файл запуска
Переходим по адресу, где лежат все наши ярлыки приложений
cd /usr/share/applications/
Теперь создаем ярлык нашего нового приложения командой:
sudo gedit ya-disk.desktop
Со следующим содержанием:
[Desktop Entry]
Version=1.0
Type=Application
Name=Яндекс.Диск
Comment=Позволяет Запускать, останавливать и получать информацию о состоянии вашего Яндекс.Диска
Exec=/home/alex/Розробка/yandex-disk/ya-disk.sh
Terminal=false
Icon=/home/alex/Розробка/yandex-disk/icon.png
StartupNotify=true
Actions=Window;Document;
[Desktop Action Window]
Name=Запустить
Exec=/home/alex/Розробка/yandex-disk/ya-disk.sh start
OnlyShowIn=Unity;
[Desktop Action Document]
Name=Остановить
Exec=/home/alex/Розробка/yandex-disk/ya-disk.sh stop
OnlyShowIn=Unity;
Не забудьте изменить значение параметров Exec и Icon. Они должны вести на соответствующие файлы на вашем.
И последний штрих. Скачайте и разместите иконку по адресу, который указан в параметре Icon.
Для меня это
/home/alex/Розробка/yandex-disk/icon.png
Вот и всё.
В Dash появится иконка Яндекс.Диск. Если вынести её на панель Unity то правой кнопкой можно останавливать и запускать демон.
И обещанные исходники
Автор: Kozack