LINUX.ORG.RU

Поддержка системы плагинов для меню включена в Qt 4.8

 , ,


0

3

6 дней назад в Qt 4.8 был включен патч, реализующий поддержку системы плагинов для меню.

Вместе с плагином „appmenu-qt“ это даёт возможность не пересобирая ванильный Qt использовать глобальное меню в Plasma, или спрятать меню в кнопку декораций окон в Kwin. Раньше для достижения такого эффекта в Qt-приложениях требовалось пересобирать Qt (хотя некоторые дистрибутивы поставляли уже пропатченный вариант).

Appmenu работает через dbus и реализован для разных тулкитов: appmenu-gtk предоставляет такую же функциональность для GTK-приложений, а для Firefox, Thunderbird, и LibreOffice есть специальные плагины. Таким образом, приложения на разных тулкитах работают с таким меню однообразно (будь то в Unity, Plasma, или в декорациях окон Kwin).

Скриншоты для тех, кто ничего не понял: глобальное меню, меню в декорациях окон.

>>> Подробности

★★★★★

Проверено: JB ()
Последнее исправление: cetjs2 (всего исправлений: 5)
Ответ на: комментарий от ChALkeR

Да, действительно. Я наврал.

4 дня назад, в понедельник.

Извините. Кто-нибудь может исправить?


да пофик) на характер новости не влияет, а 99.9% прочитавших поверят наслово)

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

Так привычнее, но зачем тогда слово «Menu»?

Кстати, в таком случае нельзя открыть контекстное меню окна левой кнопкой по значку? (то меню, в котором есть, например, параметр «Поддерживать поверх других»)

aspotashev ★★★
()

Круто, рад за qt.

uju ★★
()

Хорошая новость. Есть где-нибудь how-to как всё это сделать в текущих версиях?

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

надо взять патч и пересобрать с ним Qt.

Если убунта, то там Qt сразу с ним.

Если openSUSE, то пакет есть в этом репозитории.

Если Arch, то пакет есть в aur.

anonymousss ★★
()

А что, еще пару релизов и попробую снова КДЕ. выглядит как торт

druganddrop-2 ★★
()
Ответ на: комментарий от aspotashev

Кстати, в таком случае нельзя открыть контекстное меню окна левой кнопкой по значку? (то меню, в котором есть, например, параметр «Поддерживать поверх других»)

Правой кнопкой на любом месте заголовка окна.

ChALkeR ★★★★★
() автор топика

> Appmenu работает через dbus

Как обычно, распространение получило какое-то говно от каноникал. Вместо того, чтобы допилить модулей к globalemenu, который архитектурно намного прямее, т.к. работает через свойства иксового окна.

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

>т.к. работает через свойства иксового окна.

Нельзя завязываться на иксы. Это тупик.

ЗЫ

Что никак не отменяет ненужности глобального меню.

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

а что же Вы предлагаете вместо D-Bus (и что вы по существу имеете против?)? у Вас, наверное, имеются собственные наработки высокоуровневого IPC?

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

> высокоуровневого IPC

Во-первых, нахрен не нужен высокоуровневый IPC, при помощи которого я не могу послать команду программе руками. Прообразом нормальной программной шины, при помощи которой можно рулить агентами шины из скриптов, консоли и вообще как угодно, был dcop, который успешно закопали.

Во-вторых, нахрен не нужна сеансовая шина сообщений, прибитая гвоздями к локальной машине. Мой сеанс работы в общем случае может состоять из множества приложений на нескольких разных машинах. Напрашивается очевидное (всем, кроме идиотов из fd.o) решение — использовать иксовый протокол как транспорт для шины. За одно, упрощается и доступ — нужен только порт для иксов, других портов открывать не потребуется.

В-третьих, гонять туда-сюда и парсить xml — очень хороший способ жрать электричество, нихрена не делая.

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

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

>Мой сеанс работы в общем случае может состоять из множества приложений на нескольких разных машинах

И часто такое требуется?

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

> И часто такое требуется?

Мне — редко. А кому-то — постоянно.

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

>Вместо того, чтобы допилить модулей к globalemenu, который архитектурно намного прямее, т.к. работает через свойства иксового окна.
A Client is a Window with menu context. It receives XPropertyNotify notifications for _NET_GLOBALMENU_MENU_EVENT, and changes _NET_GLOBALMENU_MENU_CONTEXT. To support the specification more efficiently, a map from Path to real actions should be implementated

Лучше dbus. С ним можно, например, перекинуть меню во что-нибудь вроде dmenu.

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

>Во-первых, нахрен не нужен высокоуровневый IPC, при помощи которого я не могу послать команду программе руками.
Не осилил dbus-send?

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

Не прибита. У гномеров dbus обладает сетевой прозрачностью. Сделанной через одно место, впрочем.

В-третьих, гонять туда-сюда и парсить xml — очень хороший способ жрать электричество, нихрена не делая.

Ты уверен, что через иксы будет быстрее?

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

Ага. Но это решается перетаскиванием части dbus в ядро, к примеру. А с иксами масштабирование отсутствует в принципе (попробуй запустить >256 клиентов на один X.org-сервер)

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

я был уверен, что в итоге Вы предложите иксовый протокол в качестве транспорта... Вы порете попросту откровенную чушь.
в целях ликбеза:
* D-Bus может быть использован для проброса сообщений между машинами;
* протокол D-Bus не использует xml - там бинарный формат, который в частности поддерживает прозрачную упаковку/распаковку потока данных. xml используется лишь для описания интерфейсов (понятия не имею почему выбрали именно xml, но вижу как минусы данного выбора, так и плюсы). формат данных по эффективности не уступает gProtobuf, но поддерживает только простые типы, тогда как комплексные типы описываются в xml (иной подход к «версионингу» интерфейсов и типов данных).

з.ы. dcop не закопали - именно он и стал прародителем и вдохновителем идеи D-Bus

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

>Напрашивается очевидное (всем, кроме идиотов из fd.o) решение — использовать иксовый протокол как транспорт для шины.

угу, прибить обмен сообщениями между программами к иксам. ура.

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

а при чём тут кьют? это был тонкий намёк на венду, но, видимо, черезчур тонкий...

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

> угу, прибить обмен сообщениями между программами к иксам. ура.

У меня что, где-то написано, что иксы должны быть _единственным_ возможным транспортом для шины?

И по факту: сообщения, который относятся к GUI и нужно (логично и правильно) транслировать через иксы. Например, сабж треда.

geekless ★★
()

угу, прибить обмен сообщениями между программами к иксам. ура.


У меня что, где-то написано, что иксы должны быть _единственным_ возможным транспортом для шины?


И по факту: сообщения, который относятся к GUI и нужно (логично и правильно) транслировать через иксы. Например, сабж треда.


это не по факту. далеко не по факту... )

rtk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.