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

Я пытаюсь написать оконный менеджер. (На Самом Деле, Я есть написал ОС и компилятор, но это не имеет значения.)

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

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

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

2 ответов


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

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

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


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

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

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