LINUX.ORG.RU

О глобальном меню

 , ,


0

3

Здравствуйте! Заинтересовал вопрос глобального меню в GNU/Linux. Я разрабатываю окружение рабочего стола (уже не раз здесь упоминал свой проект) и хотелось бы добавить данный функционал. Но я столкнулся с отсутствием нормальной документации по libdbusmenu, в частности, спецификации DBusMenu. +, как я вижу, проект заброшен, да и далеко не все программы экспортируют своё меню, используя этот стандарт.

Вопрос такой. Имеет ли смысл написать с нуля свою библиотеку, реализующую функционал глобального меню (как серверную, так и клиентскую часть) и удастся ли хоть как-нибудь её распространить среди Open Source проектов (допускаю необходимость делать коммиты самому), если она, например, будет написана на чистом C, и также будет опционально иметь биндинги с Qt, GTK, версию на Python и т.д.? Суть в том, чтобы предоставить нормальную документацию по этой библиотеке и сделать её каким-никаким, но стандартом.

Либо же этим всем заниматься не стоит и лучше таки освоить имеющийся стандарт DBusMenu, и как-то оживить libdbusmenu?

Спасибо.


Ответ на: комментарий от DumLemming

Нашел реализацию, которую использует KDE. Так понял, что они форкнули libdbusmenu-qt и вот эта реализация (https://github.com/KDE/plasma-workspace/tree/master/libdbusmenuqt) не заброшена. Плюс, я видел еще другую реализацию (в проекте helloSystem - https://hellosystem.github.io/docs/developer/menu.html). Ок, посмотрю в эту сторону. Тем не менее, не отменяет факта, что нормальной документации по глобальному меню нет.

thm
() автор топика
Ответ на: комментарий от thm

Тем не менее, не отменяет факта, что нормальной документации по глобальному меню нет.

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

hateyoufeel ★★★★★
()
Ответ на: комментарий от hateyoufeel

Специально сейчас на виртуалку кеды поставил. Во многих приложениях глобальное меню не работает. Работает в Qt Creator, element-desktop, LibreOffice, Okular, KeePassXC, OBS, VLC, CopyQ, но не работает в GIMP, virt-manager, pcmanfm, FileZilla, Leafpad, Nemo. Это ещё я не говорю про Firefox, который известно, что без патча не умеет в глобальное меню. Тоже не идеальный вариант. По-хорошему, этот функционал должен быть включен в GTK и Qt по умолчанию, чтобы заниматься глобальным меню не было задачей программы, но, к сожалению, это не так.

P.S. перед тестами поставил пакеты libdbusmenu-qt5, libdbusmenu-gtk3, libdbusmenu-gtk2, но ситуацию это не изменило.

В итоге, можно сделать реализацию org.canonical.appmenu, как в KDE, например, но работать это будет далеко не везде. По совершенно не понятной мне причине стандарта Freedesktop на глобальное меню не существует, а те стандарты, что были, не всегда используются даже в достаточно популярных программах +, по факту, не имеют документации. Собственно, поэтому и хочется сделать все с нуля, по-человечески и попытаться распространить новый стандарт (еще раз повторю, я готов для этого делать коммиты в Open Source проекты сам).

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

thm
() автор топика
Последнее исправление: thm (всего исправлений: 6)

То есть пример мало кому нужного уже существующего стандарта тебя не предостерегает от желания создать новый точно такой же стандарт? Дай угадаю его вероятную судьбу 🤔.

Virtuos86 ★★★★★
()
Ответ на: комментарий от thm

По совершенно не понятной мне причине стандарта Freedesktop на глобальное меню не существует

Просто это никому не нужно. Странно, что тебе это непонятно. Меню вообще не нужно в качестве постоянного элемента интерфейса, многие программы умеют его скрывать и показывать по клавише Alt. Другой вариант - спрятать его в бургер. Так себе идея, но лучше, чем global menu.

another ★★★★★
()

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

Но тот гном давным давно сдох и, как видно, остались имитации этого подхода только в КДЕ (что многое говорит о разработчиках гнома).

Безотносительно вопроса нужности глобального меню, это фича, которую нельзя «прикрутить». Вся идея DE должна строиться вокруг идеи глобального меню, как, например, в тайловых WM вся идея исключает свободных хаос таскания окошек.

legolegs ★★★★★
()
Ответ на: комментарий от another

Меню вообще не нужно в качестве постоянного элемента интерфейса

Гномосек или работаешь в соснольке? Предложи спрятать меню или засунуть его в дебилоидный гамбургер в офисных пакетах или САПРах, узнаешь о себе много интересного.

anonymous
()
Ответ на: комментарий от legolegs

глобальное меню вверху экрана было дефолтом в каком-то гноме

Это было в Юнити по дефолту, а не в Гноме. Для панельки в Гноме 2 был апплет, реализующий глобальное меню. Убунта с Юнити никуда не делась. Но не в каждом приложении на 3 и 4 говнотыке сейчас в принципе есть меню.)

anonymous
()
Ответ на: комментарий от anonymous

Предложи для этого использовать глобальное меню тоже самое узнаешь ;) Изначально неудобная для работы вещь если более одного приложения используется, потому и не нашла развития

anonymous
()
Ответ на: комментарий от thm

Если ты посмотришь внимательно, не работает оно в прогах на GTK. Это почти что фишка. Кстати, проверь что ты запустил: в wayland оно для GTK вообще сломано, в иксах ещё кое-как работает. В KDE для Wayland сделан отдельный протокол (https://wayland.app/protocols/kde-appmenu), который естественно в GTK не поддерживается.

В GTK4 классическое меню приложения вообще выпилили, заменив его на бургер-меню.

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

Я бы на твоём месте вместо ЛОРа сходил к разрабам KDE либо в их Discourse, либо в рассылку, и спросил про это там. Шансов что тебе опишут ситуацию адекватнее немного больше.

И ещё учти, что у перцев в GTK своё очень альтернативное видение интерфейса. Поэтому им ты это наверняка вообще никак не продашь, что бы ты не делал.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 3)
Ответ на: комментарий от the_real_kinik

Ленточный интерфейс не для этого сделан. Он сделан чтобы MS могла его запатентовать и запретить конкурентам его копировать. Этакий vendor lock-in через всратый интерфейс, чтобы юзеры не пользовались альтернативами.

hateyoufeel ★★★★★
()
Ответ на: комментарий от anonymous

Хз, народ десятилетиями работает на маках с глобальным меню и не жужжит. Линуксу и его адептам такая рыночная доля воркстейшенов и не снилась. Как и наличие профессионального софта для чего угодно. Кроме того, ящетаю, что на экранах небольшого размера (субъективно - до 24") глобальное меню гораздо удобнее традиционного в окне приложения. А если при максимайзе еще и заголовок окна прячется, как это сделано в юнити, то вообще топ.

anonymous
()
Ответ на: комментарий от the_real_kinik

Не зря же там везде ленточный интерфейс.

«Там везде» это где? CATIA, Solidworks, КОМПАС, Maya, 3dsMax, широчайшая линейка продуктов Adobe - с традиционной строкой меню. Ну да, кто-то погнался за модой и впилил ленточный интерфейс вслед за MS, но далеко не все. Вон в LibreOffice сто лет как он есть, толку-то, кто им пользуется вообще. Были странные персонажи, которые МSовские плитки на сайты пихали, странно делать из этого глобальные выводы.

anonymous
()

проблема в том что нужно не только запилить библиотеку, но еще и интегрировать ее как минимум в апстримы GTK и Qt. На что шансов не очень много, там люди сидят не для того чтобы принимать патчи от каких-то анонимов из интернета.

Что с этим делать - а хрен его знает. Страдать и пользоваться макосью, там глобальное меню цветет и пахнет.

Lrrr ★★★★★
()
Ответ на: комментарий от anonymous

Глобальное меню - это и есть «спрятать», при этом не вредя САПРам, но до гномосеков не доходит. Епл что то подсыпает для разжижения мозгов, потому что сами от глобального меню не отказываются. Гамбургер не нужен, а ЦСД никак не мешает

DumLemming ★★★
()
Ответ на: комментарий от anonymous

А если при максимайзе еще и заголовок окна прячется, как это сделано в юнити, то вообще топ.

У меня в KDE так и сделано. Работает прекрасно.

Но основная писечка с этим экспортом меню не в этом. Основная писечка – HUD. Убунтоиды пытались сделать это, но не дотянули. Представь, что ты в любой проге можешь нажать хоткей и вызвать строку поиска функции, потому что они все экспортированы через меню. Как в VSCode/Emacs и т.д., но только вообще в любой проге.

cc @the_real_kinik см выше. Ленточное меню сосёт в сравнении с простым поиском.

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от DumLemming

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

anonymous
()
Ответ на: комментарий от the_real_kinik

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

anonymous
()
Ответ на: комментарий от anonymous

Гномосек или работаешь в соснольке? Предложи спрятать меню или засунуть его в дебилоидный гамбургер в офисных пакетах или САПРах, узнаешь о себе много интересного.

Работаю в офисном пакете, конкретно в LibreOffice Writer и Calc, иногда Impress. Это один из основных моих инструментов в работе. Хочу спрятать меню, ибо оно нужно очень редко. Расскажи мне много интересного. :)

another ★★★★★
()
Ответ на: комментарий от anonymous

При желании, скрипт, который скачивается курлом, можно самому вручную скачать и прочитать. Это обычный shell, который качает plainInstaller, который, в свою очередь, лежит в репозиториях на гитхабе. Сам plainInstaller клонирует репозитории plainPanel, plainControlCenter, plainAbout, plainBase, plainArtwork, компилирует все локально и устанавливает в систему. Все из этого также Open Source и доступно на гите. Данное решение было принято, чтобы оставить возможность скомпилировать все на стороне пользователя, и в то же время сделать это проще для него. Но, конечно же, если есть у вас сомнения, все открыто и можно проверить.

Включение пакетов, в официальные репозитории в т.ч., также в будущем планируется.

thm
() автор топика
Последнее исправление: thm (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ага и в результате на маках два меню в большинстве приложений одно в панели другое в самом окне приложение

Я не скажу за большинство, но вот в моей старенькой El Capitan всё нормально, меню одно, наверху. Самое смешное, что меню моего DoubleContact тоже встраивается в глобальное и отдельные его элементы даже встраиваются в подходящие пункты верхнего уровня, хотя я никаких специальных действий для этого не предпринимал. Скорее всего, программисты Qt5 постарались, чтобы оно хорошо работало. Вывод — чтобы оно НЕ работало, надо быть ну очень уж криворукой макакой… ну или неправильный тулкит использовать. :)

Вообще, глобальное меню, имхо — лучшее, что есть в макосёвом UI. В остальном я не увидел там ничего прям такого замечательного по сравнению с кедами или виндой.

hobbit ★★★★★
()

не все программы экспортируют своё меню, используя этот стандарт.

Почему ты думаешь, что они будут экспортировать меню через твой формат?

Ну можешь попытаться в интересующие тебя приложения патчи с дбас-меню прислать.

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

ya-betmen ★★★★★
()
Ответ на: комментарий от hobbit

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

anonymous
()