Интерфейс для Яндекс.Диска в Ubuntu 14.04

  • Tutorial
image

Как известно, Яндекс.Диск на Ubuntu существует только как консольный клиент. Сегодня я решил «хватит это терпеть» и написал для себя простенький скрипт, который значительно упрощает работу с ним (исходники внизу статьи).

Стоит пояснить, что данный скрипт писался для личного пользования, но знакомый уговорил выложить тут, поэтому такие вещи, как абсолютные адреса файлов, будут не абсолютными и вам стоит подправить их для собственной системы.

Для работы нам нужно только три файла:
  1. Файл запуска для взаимодействия с пользователем
  2. Bash скрипт для взаимодействия с клиентом
  3. Иконка сервиса Яндекс.Диск


Начнем с 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" "Синхронизация" "Прогресс:$SUNC\n$all\n$nfree\n$free\n$maxfile\n$trash"
		elif [[ "$status" == ": обработка данных" ]]; then # Если демон ведёт учет файлов
			notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "Статус$status"
		else # Если демон простаивает
			notify-send -i "$HOME/Розробка/yandex-disk/icon.png" "Статус$status" "$all\n$nfree\n$free\n$maxfile\n$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, то правой кнопкой можно останавливать и запускать демон.

Обещанные исходники.
Поделиться публикацией

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

    +8
    Как-то вот это "$HOME/Розробка/yandex-disk/" хардкодить не очень хорошо.
      +5
      Да ещё и в паре десятков мест прописано одно и то же -_- хотя в целом дёшево и сердито. Можно бы ещё открытие синхронизируемой директории прикрутить, но так просто уже не выйдет.
      Kozack, может быть, на github? Яндекс.Диск удобен, конечно, но не для правки кода.
      +7
      Как известно Яндекс.Диск на Ubuntu существует только как консольный клиент

      Да ну?
      help.yandex.ru/disk/cli-clients.xml#cli-gui
        0
        Кстати, да. Пользуюсь yd-tools и доволен.
        +2
        Переходим по адресу, где лежат все наши ярлыки приложений
        cd /usr/share/applications/

        Теперь создаем ярлык нашего нового приложения командой:
        sudo gedit ya-disk.desktop

        Лучше в ~/.local/share/applications — прав рута не нужно.
          +18
          Пожалуйста, не выкладывайте код в архивах — причешите, снабдите README и выложите в репозиторий (GitHub, BitBucket, что-то другое — по вкусу).
            –11
            Написал и ладно. Ничего сверхъестественного или архисложного, чтобы постить это на хабр.
              +3
              Получите status в переменную и grep-айте ее потом сколько влезет.
              Зачем каждый раз дергать утилиту для получения одного и того же?
                +2
                А ничего что у вас yandex-disk status вызывается 7 раз подряд, хотя можно было вывод вынести в переменную и её уже грепать? Я понимаю что нагрузка скорее всего минимальная будет, но это же не экономно по ресурсам…
                  +1
                  Если бы еще кто сподобился сделать подобный гаджет для Windows 7…
                    +1
                    Круто. Положите на github, пожалуйста.
                      +6
                      нафик.
                      Давно монтирую его как юзерспейс davs://
                      Это делается тупо мышкой в наутилусе.
                        +1
                        Все бы хорошо, но по WebDav у Яндекса не все впорядке у некоторых провайдеров.
                        Вот лично сам тестировал выгрузку на несколько WebDav сервисов

                        download.ru 4800 КБайт\сек
                        nekaka 6024 КБайт\сек
                        onedrive 4528КБайт\сек
                        YaDisk 285 КБайт\сек

                        Причем через веб интерфейс льется с максимальной скоростью.
                          0
                          Да, скорость там не очень. Согласен.
                          Но подкупает простота монтирования именно своего диска из разных мест.
                          Так что я использую его для хранения всякой необходимой мелочи.
                          Мелочь он раздаёт шикарно.
                        0
                        А чем не понравился yd-tools?

                        Ссылки:
                        launchpad.net/~slytomcat/+archive/ubuntu/ppa — ать
                        www.snowdimon.ru/2014/02/yandex-disk-gui.html — два
                          0
                          Я про него просто не знал :)

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое