Подтвердить что ты не робот

Создание диспетчера окон для Linux

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Вот несколько ссылок, которые могут вам пригодиться:

Ответ 3

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

Ответ 4

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

Ответ 6

Ради понимания я также буду заинтересован в предложениях о том, как запустить диспетчер окон с нуля

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

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

Ответ 7

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

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

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

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

Ответ 8

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