Форум русскоязычного сообщества Ubuntu


Автор Тема: Плагины/индикаторы для индикации статуса синхронизации с Yandex-disk  (Прочитано 282244 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн visevisevise

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Здравствуйте, уважаемый автор.
Пытаюсь поставить yd-tools, висит на окне "Яндекс-Диск - авторизация", в самом контейнере текст отсутствует.
Устанавливал из под рута, запускаю из под юзера.
UP
сразу после написания сообщения - в контейнере увидел текст с кодом, но он неверный (видимо код отображается позже 300 секунд). Если что изменится - дам знать)
//ya.ru/device' и введите код ‘***’ в течение 300 секунд. Убедитесь, что вы авторизованы в браузере с нужным аккаунтом.Ошибка

Собственно запустил через терминал
yandex-disk tokenТокен создался, yd индикатор - запустился!
Если я смогу как-то вам помочь, дайте знать - скину логи (скажите какие), воспроизведу по необходимости проблему.
Спасибо.
« Последнее редактирование: 29 Мая 2022, 12:02:21 от visevisevise »

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
висит на окне "Яндекс-Диск - авторизация", в самом контейнере текст отсутствует.
Устанавливал из под рута, запускаю из под юзера.
Вот тут подробнее...
Для начала нужно понять: установка и yandex-disk от яндекса и yd-tools требует прав рута - тут иначе никак.

Но вот настраивать yandex-disk и запускать yandex-disk-indicator (yd-tools) надо под обычным пользователем.

Про "в самом контейнере текст отсутствует" - вообще не распарсил: в каком контейнере(что вы имели в виду) и какой текст должен быть? Какой код - не понял вообще... Можете пояснить или видос снять?


Пользователь добавил сообщение 29 Мая 2022, 13:07:56:
Сдается мне что это не индикатора, а яндекса проблема, если речь про яндекс в браузере.

И просто, что бы было понятно: я к яндексу никакого отношения не имею (только на пару собеседований туда ходил :) - в основном из спортивного интереса  8))
« Последнее редактирование: 29 Мая 2022, 13:07:56 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн olegorov

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Здравствуйте!

Очень меня обрадовала новость, что Вы планируете развивать версию yd-go
Сейчас она у меня работает в Fedora 36 KDE.
И работает почти хорошо. Если не возражаете, есть несколько пожеланий:

1. Пункт меню "Помощь". Там вместо Щ стоит Ш, то есть "Помошь"
2. Пункт меню "О индикаторе". На мой взгляд, лучше "О_б_ индикаторе".
3. При клике на пункте "О индикаторе" ничего не происходит.
4. В процессе синхронизации жутко глючит меню. Я прикрепил архив с кусочком записи экрана.
5. Очень не хватает информации о появлении новой версии программы. И не хватает номеров версий в имени файла, чтоб понимать, скачал я его уже или нет... Но я видел, что Вы планируете сделать репозиторий (или даже заменить yd-tools на yd-go), так что это пожелание вполне терпит до этих существенных изменений.
6. Иконка стала лучше, но всё равно на фоне соседних чётких иконок видно, что она ещё размыта. Особенно страдают крутящиеся стрелочки =)

И спасибо Вам за Ваш труд!

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
olegorov, спасибо вам за предложения и замечания. Мне просто довольно трудно уследить за всем со стороны разработки, даже в русском могу ошибок наделать т.к. никогда им не блистал - в школе на 3-чку всю дорогу вытягивал и даже вызублренные правила для экзамена не помогли - забыл их сразу после экзамена :(

При нажатии на "О индикаторе" должно выводиться уведомление (notification) с информацией о индикаторе и там же прописана версия. Для работы уведомлений используется тоже d-bus и соответствующий плагин нотификаций.

На сколько я понял в KDE он по умолчанию может блокировать уведомления от стороних приложений. С первого раза, в свеже-установленной Kubuntu 22.04 в виртуалке, у меня тоже сначала уведомления не показывались. Но я там потыкал в настройки (уже не вспомню куда) и они появились.

Меню у меня при обновлении обновляется довольно часто (и с-но перерисовывается). Похоже это причина многих проблем - меню по определению не является сильно динамичным элементом GUI. Но я, в самом начале этого проекта, подумал что можно меню использовать для показа данных. Так вот при синхронизации эти данные обновляются очень часто. Я уже думал над тем что бы сделать там задержку в обновлении. Видимо это придется сделать.

По поводу размытия иконки в KDE - это вообще больная тема - там иконки и из AppIndicator (в python версии используется) тоже смазываются. KDE просто как-то самостоятельно их масштабирует.

Стрелочки довольно плохо выглядят и у меня в XFCЕ - думал как-то поменять саму эту анимацию или уже вообще от нее отказаться (как собственно во всех рекомендациях к индикаторам и прописано). Но я не дизайнер и у меня просто фантазии не хватает придумать как лучше решить этот вопрос.

Еще один затык у меня с языковой поддержкой - просто что-то сломалось и я не смог пока понять куда копать что-бы починить. Или придется переходить на другую библиотеку для локализации - что тоже потребует времени.
« Последнее редактирование: 30 Мая 2022, 00:42:25 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Rootdiv

  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
    • Web-разработчик
Sly_tom_cat, кстати может вместо пути к папке Яндекс.Диска стоит написать Открыть каталог Яндекс.Диск как в python версии.
Ubuntu Mate 22.04.1 64 bit

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Rootdiv, А я уже и позабыл как там в Python версии :idiot2:

Но вы правы - стоит привести к общему виду (в виду моего грандиозного плана).

Пользователь добавил сообщение 30 Мая 2022, 15:11:19:
Rootdiv, сегодня погонял yd-go в виртуалке на Ubuntu Mate 22.04 с терейсингом обмена по D-BUS.

Сложилась вот какая картина (если при чтении становится понятно что ничего не понятно - пропускаем все до черты):

Серверная часть org.kde.StatusNotifierWatcher (отвечает за прорисовку иконки индикатора и меню, именно к этом сервису подключаются индикаторы приложений и в частности yd-go) обслуживается библиотекой /usr/lib/ayatana-indicator-application/ayatana-indicator-application-service.

Обмен по d-bus показывает следующий порядок взаимодействия (в процессе остановки сервиса yandsex-disk меняется один раз иконка Idle->off-line и меняется меню):
1. yd-go сообщает org.kde.StatusNotifierWatcher что изменились свойство IconPixmap и в этом же сообщении отправляет новое значение (бинарное представление иконки)
2. org.kde.StatusNotifierWatcher запрашивает yd-go все свойства интерфейса org.kde.StatusNotifierItem и yd-go отдает все свойства этого интерфейса включая свойство IconPixmap.

Т.е. на этом этапе org.kde.StatusNotifierWatcher дважды получает новую иконку в бинарном представлении.

Но вот дальше странное....
org.kde.StatusNotifierWatcher начинает слать сообщения об обновлении индикатора в трее другому серверу D-BUS: org.ayatana.indicator.application.service (который внезапно хостится все тем же бинариком /usr/lib/ayatana-indicator-application/ayatana-indicator-application-service, т.е. шлем сами себе ;) )

И вот в сообщении ApplicationIconCanged оправляются просто две пустые строчки :o никаких бинарных данных нет. Могу только предположить, что на самом деле отправляются просто поля типа IconName/IconThemePath - т.е. те поля которые в рамках yd-go/systray просто не используются.

_________________

Я понимаю что текст выше может быть непонятен большей половине посетителей этого форума поэтому просто краткое резюме:


В Ubuntu Mate 22.04 иконка yd-go не показывается потому, что плагин панели индикаторов не поддерживает получение иконки от приложения в бинарном формате. К сожалению со стороны yd-go эту проблему не пофиксить (собственно yd-go отдает плагину все что нужно).

Я попробую найти разработчиков этого самого плагина и зарепортить им эту проблему (если она еще не висит у них в репортах).


Пользователь добавил сообщение 30 Мая 2022, 16:13:03:
Ну. все верно - ayatana-indicator-application тупо не поддерживает свойство IconPixmap - у них только IconName и IconDesc.

Что несколько нарушает пусть и драфт, но уже дефакто стандарт.

На эту тему нашлось у них на github ишью, приписал свой вопрос (планируют ли добавить поддержку IconPixmap) приписал в него.

Пользователь добавил сообщение 31 Мая 2022, 01:44:03:
Собрал новую сборку.

Поправил CI скрипт, что бы использовался простой формат версии (как тег релиза: <бранч>-<хеш коммита>), а то раньше там довольно странной была версия с двумя хешами.

Версию можно посмотреть теперь не только через меню -> About, но и в командной строке: yd-go -h покажет версию в том самом правильном формате.

Поправил меню (правда это немного ломает переводы на русский) - до переводов пока руки не дошли.

Сделал (на уровне библиотеки systray) ограничение на частоту обновления меню - теперь обновляется не чаще чем 10 раз в секунду. Должно меньше глючить в процессе обновления.

Нашел и поправил пару мест где были гонки данных (data races) - там не так криминально, что бы приложение из-за этого падало, но где это может вылезти - никогда не знаешь - лучше их убрать, тем более, что в go очень неплохие средства для отлова таких ситуаций.
« Последнее редактирование: 31 Мая 2022, 01:44:50 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Ух, целая детективная история у меня получилась....

Посидел тут на выходных последил за D-BUS в процессе запуска тестового приложения в котором довольно регулярно проявлялась проблема с прорисовкой под-меню у меня в Xubuntu.

И выяснилось:
Ответы на запросы полученные через d-bus отдаются в произвольном порядке. Для того, чтобы запрашивающей стороне было понятно какой ответ пришел на какой запрос, все сообщения в D-Bus сериализуются: к сообщению-запросу добавляется серийный номер, и ответное сообщение содержит этот серийный номер.

Но как бы не так. Если плагин системных уведомлений XFCE получает ответы не в порядке "первый пришел, первый ушел", то подменю ломаются.

Но на уровне библиотеки systray (которую я форкнул и активно дорабатываю) порядок ответных сообщений не возможно контролировать.

Первым делом я завел ошибку в проекте godbus (та либа, которая используется в systray для работы с D-Bus). Но разработчики этой либы резонно заметили, что спеки d-bus ни разу не требуют какого-либо порядка в ответах, для того там и введена сериализация сообщений и ответов, что бы такими вещами не заморачиваться).

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

Ну а пока попробую наладить сборку с временным патчем в godbus: там две буквы убрать и ответы будут отдаваться в порядке поступления запросов - что не совсем правильно, но это фиксит проблему в рамках кодовой базы приложения.
___

Попутно пообщался со знакомым дизайнером и он подсказал вариант переделки иконок, что бы их не сильно коробило при ресайзе. Оказалось (и это было для меня откровением) что более тонкие линии при ресайзе меньше смазываются т.к. там линия по сути становится даже толще (с точки зрения пропорций), но алгоритмы ресайза всячески стараются сохранить ее.

Попробовал сделать стрелочки при синхронизации тоньше и результат оказался очень даже заметный. По крайней мере у меня в XFCE иконки при синхронизации стали выглядеть получше.

___

Еще одним результатом моего субботнего бдения за d-bus стало открытие факта, что меню индикаторов (работающих через D-BUS) в Linux тоже поддерживают иконки в пунктах меню (так делает нетворкменеджер в своей иконке). Конкретно в проекте yd-go не уверен что это пригодится, но на всякий случай в своем форке systray впилил эту фичу и оно работает !

____

Надо только погонять в витртуалках эти вещи (новые иконки yd-go и иконки в пунктах меню)
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Да уж, история конечно печальная, но оказалось глюкавая библиотека (используемая в плагине системных нотификаций XFCE) уже давно ни кем не поддерживается :( и ни кто ее править видимо не хочет.... поправил бы в форке сам, но этот №;%№; c++ выносит мне мозг. И я даже половины из того, что там понаписано не понимаю.

Ну и самое печальное, оказывается разработчики XFCE тоже планируют переползти на проект Ayatana indicator....
Ага, именно тот самый что уже засунут в Ubuntu Mate и не показывает там иконку из за неполноценной реализации интерфейса org.kde.StatusNotifierItem...

Пока сделал ручной патчинг godbus (последовательная обработка запросов вместо асинхронной) - что не совсем правильно, но лучшего решения я пока не вижу. Дело в том, что когда в основном меню пунктов много, а еще может быть иконка, то ответ на запрос свойств основного меню формируется гораздо дольше, чем ответ на свойства пунктов подменю. И такой расклад почти не оставляет шансов увидеть подменю из за глюка в библиотеке, которую никто не хочет исправлять.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Погонял иконки в меню на разных дистрибутивах - везде работают даже в MATE :D где та же иконка в панели не показывается из за описанной выше проблемы.

Посему добавил это в свой форк и завел еще MR в версию systray, которую маинейнят ребята из fyne.io. MR приняли.

Там собственно и мои правки по data races и паникам - тоже приняли + приняли обновление этих правок. Так что там у них вполне рабочая библиотека теперь.

Что они не захотели принимать - это ограничение частоты обновлений меню и переход на embed.

embed - это удобная фича в golang начиная с версии 1.16: можно бинарные данные из файла затянуть прямо в переменную одной строчкой в коде, или даже целую файловую систему затянуть внутрь получаемого при компиляции бинарика. Это сильно упрощает доставку решения - все внутри одного исполняемого файла и минимум зависимостей (это в целом одна из киллер-фич golang). Раньше такие вещи тоже делались, но с помощью кодо-гереации - бинарные данные просто записывались как HEX данные для инициализации бинарного массива.

Уж не знаю зачем, но ребята в fyne.io сильно беспокоятся о старых версиях go где embed еще нет. И хотя embed там только в приложении-примере, но....

Ну да и фиг с ними.
« Последнее редактирование: 17 Июня 2022, 15:56:33 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн olegorov

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Пробую перейти на Федору.
Поставил параллельно с Гномом и с КДЕ.
Под Кедами всё так же, как и в Kubuntu.
А вот под Гномом внезапно не увидел иконки.
Решилось добавлением расширения AppIndicator/KStatusNotifierItem support for GNOME Shell
Решил поделиться. Вдруг кто-то ещё столкнётся с этой проблемой.
Или я что-то не так делаю?

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Да нет, все сделали правильно.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн DoctorRover

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 1967
  • Ubuntu 22.10, 23.04
    • Просмотр профиля
А вот под Гномом внезапно не увидел иконки.
Решилось добавлением расширения AppIndicator/KStatusNotifierItem support for GNOME Shell
Решил поделиться. Вдруг кто-то ещё столкнётся с этой проблемой.
Всё так и должно быть. Дело в том, что в чистой немодифицированной среде рабочего стола GNOME Shell области уведомлений (ака системный трей) попросту нет. Разработчики GNOME полагают, что трей "отвлекает" пользователя (добро пожаловать в зазеркалье), поэтому данная функциональность была начисто удалена. Соответственно, трей можно получить только и исключительно с помощью расширений. Fedora, если не ошибаюсь, поставляет чистый GNOME Shell. Как следствие, трея там по умолчанию нет. Разработчики же Ubuntu, к счастью, считают, что область уведомлений, наряду с постоянно видимой панелью задач, -- нужная штука. Поэтому в Ubuntu расширение, реализующее область уведомлений, поставляется по умолчанию в составе дистрибутива.
You're never too old to Rock'n'Roll if you're too young to die.

Оффлайн SantyagoS

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Спасибо за программу!

Помогите решить проблему. Всё работало хорошо, но в один прекрасный день перестал синхронизироваться. Горит красный индикатор.
Статус ядра синхронизации: ошибка
Ошибка: ошибка сервера
Путь: 'Документы/1212.html'
Путь к папке Яндекс.Диска: '/home/fixftp/utils/YandexDisk'
Любой файл и каталог который добавляю в этот каталог не синхронизируется. Проверил права на все файлы - всё норм.

Попробовал на сайте яндекс диска поменять файл - синхронизация этого файла произошла корректно.

Оффлайн Sly_tom_cat

  • Автор темы
  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12124
  • Xubuntu 20.04
    • Просмотр профиля
    • Github
Это вопрос не к индикатору, а к самой утилите yandex-disk.
Индикатор просто выводит то что ему сообщает утилита.

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

Поэтому я бы посоветовал обратиться в саппорт Яндекса.
« Последнее редактирование: 12 Марта 2023, 22:57:53 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн SantyagoS

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Спасибо за программу!

Помогите решить проблему. Всё работало хорошо, но в один прекрасный день перестал синхронизироваться. Горит красный индикатор.
Код: [Выделить]
Статус ядра синхронизации: ошибка
Ошибка: ошибка сервера
Путь: 'Документы/1212.html'
Путь к папке Яндекс.Диска: '/home/fixftp/utils/YandexDisk'
Любой файл и каталог который добавляю в этот каталог не синхронизируется. Проверил права на все файлы - всё норм.

Попробовал на сайте яндекс диска поменять файл - синхронизация этого файла произошла корректно.

Если у кого то будет, что-то подобное. Оказалось, что на другом компьютере с виндой, в тамошнем приложении ЯндексДиск, был включен  "не сохранять эту папку на компьютере" ( как то так, ну типа не синхронизировать эту папку). Включил синхронизацию и всё заработало на линуксе.

 

Страница сгенерирована за 0.06 секунд. Запросов: 22.