Где хорошие руководства по программированию на Xlib? - PullRequest
6 голосов
/ 16 июля 2010

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

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

1 Ответ

14 голосов
/ 23 июля 2010

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

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

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

Материал об окнах и растровых изображениях, а также о том, как X работает в этих старых книгах, все равно будет точным.

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

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

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

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

Думаю, есть еще много советов, но вот три, которые помогут вам избежать распространенных ошибок; -)

...