Когда приложение выпущено для Linux, как сделать его совместимым с большинством оконных менеджеров?

Когда я говорю оконный менеджер, я имею в виду KDE, Gnome, lxde, xfce и т. д.

Я никогда не создаю оконное приложение, кроме как с Qt, но я предполагаю, что не все приложения используют Qt, некоторые используют wx, но когда в репозиториях Ubuntu есть одно приложение, оно выпускается для всех оконных менеджеров.

Как сделать эти приложения совместимыми со всеми оконными менеджерами? Должен ли разработчик приложения связать свое приложение со всеми оконными менеджерами, или есть общая основа для создания оконного приложения с Xorg или другим? Qt или wx решают эти проблемы? Кажется, я помню, что видел какое-то приложение, выпущенное только для gnome или KDE, но я не уверен.

Я всегда задавался этим вопросом, и это заставило меня задуматься о фрагментации области приложений Linux...


person jokoon    schedule 25.09.2013    source источник
comment
Почему вы спрашиваете? Вы программируете на Qt или на GTK? Иначе как и почему бы и нет?   -  person Basile Starynkevitch    schedule 25.09.2013


Ответы (3)


Раньше существовал стандарт ICCCM, но теперь вы должны как минимум ориентироваться на EWMH и другие freedesktop (включая dbus).

Конечно, последние наборы инструментов, такие как GTK3 или Qt5, должны помочь, так как они поддерживают многие из них.

(детали сложные, поэтому начинать с нуля нереально)

person Basile Starynkevitch    schedule 25.09.2013
comment
поэтому, когда вы создаете оконное приложение, оно никогда не взаимодействует с каким-либо кодом KDE или gnome? - person jokoon; 25.09.2013
comment
Он взаимодействует с кодом Qt или Gtk, используя упомянутые стандарты. - person Basile Starynkevitch; 25.09.2013
comment
так что есть стандартные заголовки, которые вы включаете, чтобы сделать это - person jokoon; 25.09.2013
comment
Я не понимаю, почему вы спрашиваете. Чтобы использовать Gtk или Qt, вы должны включить их заголовки. - person Basile Starynkevitch; 25.09.2013
comment
или поэтому gtk и qt просто соблюдают эти стандарты. - person jokoon; 25.09.2013

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

Если приложение доступно только для некоторых определенных оконных менеджеров, причина в том, что оно также связано с некоторыми функциями, характерными для этого оконного менеджера (например, KWallet или gnome-keyring). Такие дополнительные библиотеки устанавливаются автоматически, если вы устанавливаете это приложение из репозитория дистрибутива программного обеспечения.

person Abrixas2    schedule 25.09.2013

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

Другой вопрос касается интеграции меню и системного трея или обмена сообщениями на рабочем столе. Это отличается от одного оконного менеджера к другому.

См. http://www.freedesktop.org/wiki/Software/dbus/.

person yegorich    schedule 25.09.2013