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

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

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


person Patrick    schedule 16.07.2010    source источник
comment
X — довольно старая технология. Современная разработка графического пользовательского интерфейса для UNIX/Linux происходит в QT или GTK+ (или некоторых других наборах инструментов). Не тратьте время на программирование в Xlib. Потратьте на это максимум день, а затем изучите GTK или Qt (которые реализованы с использованием Xlib)   -  person    schedule 16.07.2010


Ответы (1)


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

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

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

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

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

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

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

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

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

person Havoc P    schedule 23.07.2010