Нашел таки вполне приемлемую библиотеку дял создания индикатора для GO. Вроде все просто, но конечно через связку с С который пользует стандартный GTK+ и AppIndicator.
В принципе модуль-обертка yandex-disk уже устоялся и работает вполне надежно. Поэтому прикрутить к нему индикатор оказалось довольно просто.
Что уже сделано:
1. есть иконка в трее, она меняет свой вид при изменении статуса + есть анимация иконки в процессе индексации и синхронизации
2. есть меню индикатора - там:
- показаны статус и размеры диска (занято/всего/свободно/в треше)
- есть возможность запустить и остановить демона синхронизации.
- ну и конечно есть возможность выйти из индикатора
Что еще предстоит сделать:
- Иконки пока только по темную панель, но с иконками там (в найденной библиотеке) вообще все не очень умно сделано: они там в байтовый массив вытаскиваются в go-коде, а потом в C они пишутся в файл, который отдается в GTK
... видимо такой стиль присущ Go-программам и это вполне обосновано, когда у иконки в трее только один вид, но для этого индикатора - решение не очень оптимальное и есть идея в своей коппии библиотеки переделать это на вариант использования сразу файлов.
- Интерфейс пока исключительно английский (как локализуются go-программы я вообще еще не разбирался пока)
- Покладка еще дает список последних обновленных, но текущая библиотека не поддерживает подменю - надо будет допилить сначала поддержку а потом уже можно будет реализовать это подменю.
- Надо прикрутить всплывающие уведомления - можно конечно через вызов notify-send, но надо поискать - может это через библиотеку можно сделать.
- В меню еще стоит добавить пункты открытия локального синхронизируемого каталога, и яндексдиска в интернете - но это то одно и самого простого: такое прикрутить - очень просто.
- Неплохо-бы прикрутить окно с настройками - но тут нужна будет еще одна библиотека и ее надо будет как-то женить с GTK-шным systray-ем (там уже есть вызов главного цикла gtk. Вобщем тут еще копать - долго.
- ...также нужно обвесить код работой с конфигурационным файлом
- Окно About - будет сделать просто после окна настроек (там все просто когда есть возможность создать gtk-диалог)
В общем пилить еще много, и откровенно говоря я не силно уверен, что моего запала хватит довести GO-верисю до вресии индикатора на Python.... но загадывать не перед не буду....
Также пока не решен вопрос с публикацией на launchpad
Если кто решит собирать из исходников, то там нужны еще пакеты libgtk-3-dev libappindicator3-dev для сборки
А бинарики 32 и 64 bit я собираюсь выложить на
github.
Пользователь добавил сообщение 24 Декабря 2017, 14:58:22:
... только вот под 32-бита мне что-то с налету собрать не удалось... пока дбавил только
64-бтный бинарик
Пользователь добавил сообщение 24 Декабря 2017, 15:13:04:
...и да, пока go-версия умеет работать только с 1-м, дефолтовым профилем Yandex.Disk-а.