Создание оконного менеджера для Linux - PullRequest
24 голосов
/ 13 августа 2010

Я хочу создать простой оконный менеджер стека (в C) для личного пользования, в основном для обучения и испытаний.

Я просмотрел исходный код twm, в котором относительно мало наворотов, но он кажется очень низким, поскольку он не основан на наборе инструментов виджетов. 1 Было бы предпочтительнее использовать инструментарий, такой как GTK +? Я боюсь, что некоторые коды и библиотеки в twm могут быть слишком устаревшими ( edit: устарела), и я хочу, чтобы оконный менеджер использовал относительно современные библиотеки. Для понимания меня также будут интересовать предложения по запуску оконного менеджера с нуля - для этого не так много учебных пособий.

Обновление: Для тех, кто думает о похожих проектах: я закончил с использованием Common Lisp и CLX библиотеки . tinywm-lisp послужил основой, и блестящие CLFSWM и Stumpwm оказали большую помощь. Для справки я использовал CLX - Общий интерфейс LISP X ( PDF предупреждение ) и #xlib на Freenode.

Ответы [ 8 ]

21 голосов
/ 13 августа 2010

Что бы вы ни делали, используйте XCB, а не Xlib. Он современный, асинхронный, простой и дает вам прямой доступ к протоколу X11.

6 голосов
/ 21 июля 2011

Посмотрите на код для dwm . Кодовая база красива и проста для понимания. Всего около 2000 строк.

6 голосов
/ 13 августа 2010

Очень минималистичный WM - wm2 .Я не читал исходный код и, следовательно, я не знаю, если это учебный пример.Конечно, вы можете использовать библиотеки, которые уже выполняют большую часть работы по абстракции и рисованию, например gdk и gtk .Но так как этот проект предназначен только для личного обучения, я бы пошел трудным путем и напрямую использовал Xlib.

Вот несколько ссылок, которые могут быть вам полезны:

4 голосов
/ 10 декабря 2014

Я написал подробный учебник, в котором показано, как написать оконный менеджер X11 на C ++:

Кроме того,Вы можете проверить простой пример оконного менеджера basic_wm, по адресу

Это комментируется в педагогических целях.

В Xlib vsXCB - я бы порекомендовал Xlib поверх XCB, если вы только начинаете.XCB более эффективен, но гораздо более низкоуровневый и более многословный (подумайте на ассемблере для GUI).Вы не хотите обременять себя преждевременной оптимизацией, пока у вас уже не работает прототип.

2 голосов
/ 01 декабря 2010

Ради понимания меня также интересуют предложения по запуску оконного менеджера с нуля

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

http://www.red -bean.com / decklin / aewm /

2 голосов
/ 13 августа 2010

metacity использует gtk для определенных элементов пользовательского интерфейса.Смотрите его взлома и README.

см. Также Где хорошие руководства по программированию на Xlib?

2 голосов
/ 13 августа 2010

http://code.google.com/p/partiwm/ - это попытка написать оконный менеджер (мозаичный, а не стековый) с нуля, может быть полезно прочитать код.

0 голосов
/ 25 сентября 2010

Xmonad может быть хорошим местом для начала.

...