Для удобства использования пришлось добавить в контекстное меню Dolphin пункт публикации файла/папки, а в conky информацию о текущем состоянии Яндекс.Диска.

Сделать и то и другое довольно просто.
Добавим пункт в меню Dolphin.
Для этого создадим файл *.desktop (мой файл называется YDisk.desktop) со следующим содержанием:
[Desktop Entry] Type=Service ServiceTypes=all/allfiles MimeType=all/all; Actions=ToYandex; X-KDE-Priority=TopLevel X-KDE-Icon=/usr/share/pixmaps/YD_logo.png X-KDE-ServiceTypes=KonqPopupMenu/Plugin [Desktop Action ToYandex] Name=Опубликовать Icon=/usr/share/pixmaps/YD_logo.png Exec=/usr/bin/YD_public %F
Теперь поместим его в каталог /usr/share/kde4/services
sudo cp YDisk.desktop /usr/share/kde4/services
Как видно из содержания файла, в качестве иконки я использую png картинку размещённую в папке /usr/share/pixmaps/
А при нажатии на пункт выполняется команда /usr/bin/YD_public %F, где %F это имя файла.
На случай если кому-то понадобится

Вот, у нас появился пункт в меню.

Создадим файл для обработки этого события.
Для этого напишем файл YD_public следующего содержаниея.
#!/usr/bin/bash # Выполняем команду yandex-disk publish объединяя поток error с stdout # в переменной var будет содержаться Ссылка на опубликованный файл либо Ошибка var=`yandex-disk publish $1 2>&1` # Запускаем оповещение о том, что файл опубликован notify-send -i /usr/share/pixmaps/YD_logo.png "Яндекс.Диск" "$var" # С помощью dbus копируем ссылку на файл в клипбоард qdbus org.kde.klipper /klipper org.kde.klipper.klipper.setClipboardContents $var
Копируем наш файл в /usr/bin и делаем файл исполняемым.
cp YD_public /usr/bin chmod +rx /usr/bin/YD_public
Результат работы notify-send

Ссылка в клипбоард тоже успешно скопирована

С первой частью разобрались, пункт меню добавлен, всплывающее оповещение имеется, а ссылка копируется в клипбоард.
Теперь разберёмся с conky (Я специально выделил белым всё что связано с Yandex.Disk)
Тут у нас типичный conky с типичным .conkyrc

Если выполнить в консоли yandex-disk status, то утилита нам в ответ выдаст что-то вроде
[rain@rainhost kde]$ yandex-disk status Статус ядра синхронизации: ожидание команды Путь к папке Яндекс.Диска: '/mnt/raid/YDisk' Всего: 211.97 GB Занято: 4.08 GB Свободно: 207.89 GB Максимальный размер файла: 10 GB Размер корзины: 0 B
Хоть и не совсем годится для отображения в conky, но ничто не мешает нам его «парсить».
Посмотрите на файл конфигурации
yandex.disk - ${exec yandex-disk status | grep -i Всего | sed -e 's/^.\{8\}//'} ${exec yandex-disk status | grep -i Занято | sed -e 's/^.\{9\}//'}${alignr}${execbar YD_free} Status:${alignr}${exec yandex-disk status | grep -i "Статус ядра"| sed -e 's/^.\{27\}//'} Other informations: ${exec yandex-disk status | grep -i "Статус синхронизации"| sed -e 's/^.\{22\}//'}
Немного разберём его.
В первой строке мы запускаем yandex-disk status, с помощь grep отбираем строчку в которой есть совпадение со словом «Всего» grep -i Всего и удаляем 8 первых символов sed -e ‘s/^.\{8\}//’. Таким образом мы получили общий объём Яндекс.Диска и вывели в conky. Аналогичным способом получили информации о том сколько занято (строка 2), а также информацию о статусе (строки 3 и 5).
Во второй строке я также вывожу bar с информацией о том на сколько заполнен диск в процентах, для этого я написал небольшой скрипт YD_free который возвращает число от 0 до 100 в зависимости от заполненности диска а execbar отображает его принимая в качестве аргумента результат работы YD_free:
#!/usr/bin/bash var=`yandex-disk status | grep -i Всего | sed -e 's/^.\{8\}//' | sed 's/.\{6\}$//' 2>&1` vos=`yandex-disk status | grep -i Занято | sed -e 's/^.\{9\}//' | sed 's/.\{6\}$//' 2>&1` echo $[$vos*100/$var]
Тут в первую переменную пишем сколько у нас места Всего, во вторую сколько Занято, а в третей строке выводим процент.
P.S. Хотелось бы что бы команда Яндекс добавила больше опций на вывод (к примеру пишешь команду yandex-disk status disk free — результат свободное место на диске цифрами), а читатель «получил запал» для старта новых идей.
ссылка на оригинал статьи http://habrahabr.ru/post/212763/
Добавить комментарий