Современные способы написания оконного менеджера - PullRequest
16 голосов
/ 28 апреля 2011

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 28 апреля 2011

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

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

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

4 голосов
/ 27 января 2013

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

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

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

...