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

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

Однако после поиска с помощью Google вокруг сети, я не вижу, что много новых статей говорит о Xlib?? Новейшее руководство по программированию для X-оконной системы на Amazon в 1994!? Разве никакие новые статьи Xlib не то, потому что старая книга достаточна, или потому что существует некоторая новая технология, о которой я не знаю? Или, возможно, у меня не было правильного ключевого слова для поиска в сети. Если это так, кто-то может указать на меня на правильное место?

6
задан Patrick 16 July 2010 в 15:38
поделиться

1 ответ

Насколько мне известно, нет современных книг. Вам действительно просто нужно прочитать кучу спецификаций и исходного кода. К счастью, это не , что сложно.

Я бы сказал, что чтение исходного кода для gtk + / gdk / x11 (X-бэкэнд для GTK) и исходного кода для пары ваших любимых WM будет иметь большое значение. Спецификации ICCCM и EMWH очень важны.

Огромное изменение в программировании X со времени появления старых руководств состоит в том, что никто больше не любит использовать многие серверные средства для рисования, шрифтов, печати и т. Д. Итак, функции XDrawFoo, все, что касается шрифтов, XPrint, GC, цветовых карт, все это более или менее устарело. Рисование обычно выполняется на стороне клиента с помощью таких библиотек, как Cairo или Skia.

Тем не менее, информация об окнах, растровых изображениях и основном способе работы X в тех старых книгах все равно будет точной.

Несколько хороших общих советов по X, если вы возитесь с WM:

  • вам нужно реагировать на события, а не получать информацию о состоянии. Например, всегда считайте свой размер последним размером, для которого вы получили ConfigureNotify; не вызывайте XGetGeometry или что-то еще, чтобы узнать свой размер. Получение состояния имеет две проблемы: оно убивает производительность (блокировка для возврата = смерть производительности) и вводит условия гонки.

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

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

Я думаю, есть еще много советов, но это три, чтобы вы начали избегать типичных ошибок; - )

14
ответ дан 8 December 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: