Я немного смущен на Xlib, программирующем теперь. Я начал использовать dwm (легкий менеджер окон) несколько недель назад, и я хотел бы к погрузке некоторый Xlib, программируя книги или ресурс онлайн для настройки dwm.
Однако после поиска с помощью Google вокруг сети, я не вижу, что много новых статей говорит о Xlib?? Новейшее руководство по программированию для X-оконной системы на Amazon в 1994!? Разве никакие новые статьи Xlib не то, потому что старая книга достаточна, или потому что существует некоторая новая технология, о которой я не знаю? Или, возможно, у меня не было правильного ключевого слова для поиска в сети. Если это так, кто-то может указать на меня на правильное место?
Насколько мне известно, нет современных книг. Вам действительно просто нужно прочитать кучу спецификаций и исходного кода. К счастью, это не , что сложно.
Я бы сказал, что чтение исходного кода для gtk + / gdk / x11 (X-бэкэнд для GTK) и исходного кода для пары ваших любимых WM будет иметь большое значение. Спецификации ICCCM и EMWH очень важны.
Огромное изменение в программировании X со времени появления старых руководств состоит в том, что никто больше не любит использовать многие серверные средства для рисования, шрифтов, печати и т. Д. Итак, функции XDrawFoo, все, что касается шрифтов, XPrint, GC, цветовых карт, все это более или менее устарело. Рисование обычно выполняется на стороне клиента с помощью таких библиотек, как Cairo или Skia.
Тем не менее, информация об окнах, растровых изображениях и основном способе работы X в тех старых книгах все равно будет точной.
Несколько хороших общих советов по X, если вы возитесь с WM:
вам нужно реагировать на события, а не получать информацию о состоянии. Например, всегда считайте свой размер последним размером, для которого вы получили ConfigureNotify; не вызывайте XGetGeometry или что-то еще, чтобы узнать свой размер. Получение состояния имеет две проблемы: оно убивает производительность (блокировка для возврата = смерть производительности) и вводит условия гонки.
в WM вы имеете дело с окнами других приложений, и они могут быть уничтожены в любой момент, что приведет к ошибке, если вы коснетесь этого окна. поэтому любая функция, которую вы вызываете в окне, может потерпеть неудачу.
никогда не используйте CurrentTime, всегда используйте реальную временную метку, иначе вы создадите причудливые ошибки состояния гонки, которые сведут вас с ума
Я думаю, есть еще много советов, но это три, чтобы вы начали избегать типичных ошибок; - )