Современные способы написания оконного менеджера

StackOverflow https://stackoverflow.com/questions/5811332

  •  25-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать оконный менеджер.(На самом деле, я иметь написана операционная система и компилятор, но это не относится к делу.)

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

Мой вопрос заключается в следующем:действительно ли все эти низкоуровневые штучки необходимы в наши дни?Существуют ли библиотеки, которые будут инкапсулировать все эти неприятные вещи для меня?У меня есть смутное воспоминание, что люди Эпохи Просвещения делали нечто подобное, но я ничего не могу найти.Или современные библиотеки виджетов, такие, скажем, как GDK, обладают достаточной функциональностью, чтобы мне не нужно было прикасаться к слою Xlib?

Особый интерес представляют любые библиотеки с привязками Java...

Это было полезно?

Решение

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

Я задавал себе тот же вопрос и пришел к выводу, что такой вещи не существует, особенно в Java.Хотя некоторые наборы инструментов для виджетов, такие как qt, предлагают вам возможность использовать существующую структуру отображения и создавать виджеты из существующих оконных дескрипторов xlib, вам все равно придется использовать xlib / xcb для выполнения неприятной работы по взаимодействию с X-сервером для специфичных операций wm.Другие библиотеки, как заявляли другие, такие как GDK и the enlightenment, также предлагают довольно хорошую работу с базовой абстракцией.

Тем не менее, я был недоволен тем фактом, что все они используют C / C ++, и сидеть на своей ленивой заднице в ожидании, пока кто-нибудь сделает за меня работу на Java, было не вариантом, я начал писать свою собственную библиотеку, которая позволяет вам создавать свой собственный модульный WM на Java.https://github.com/Zubnix/trinityshell

Другие советы

действительно ли все эти низкоуровневые штучки необходимы в наши дни?

Если под "низкоуровневыми материалами" вы имеете в виду язык C, то нет, в этом нет необходимости с технической точки зрения;вы могли бы использовать XCB's XML создавать привязки для любого языка.

Однако, если под "низкоуровневыми материалами" вы подразумеваете работу на уровне протокола X, то да, это необходимо (если вы не хотите рвать на себе волосы).Оконный менеджер должен работать на уровне протокола X11, поэтому использование чего-то "высокоуровневого" только усложнит вам жизнь.Фактически, XCB был создан именно потому, что Xlib был слишком высокоуровневым, маскируя слишком многое под собой, поэтому было легко совершать ошибки и затрудняя или делая невозможным полный контроль.(Кроме того, XCB не является "очень старым" с точки зрения X;только в последние несколько лет все основные дистрибутивы Linux наконец начали полностью использовать XCB.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top