2010-07-16 1 views
6

저는 Xlib 프로그래밍에 약간 혼란 스럽습니다. 몇 주 전에 dwm (경량 창 관리자)을 사용하기 시작했고, dwm을 사용자 정의하기 위해 Xlib 프로그래밍 서적이나 온라인 리소스를 픽업하고 싶습니다.좋은 Xlib 프로그래밍 가이드는 어디에 있습니까?

그러나 웹을 검색하다가 Xlib에 관한 새로운 기사가 ​​많이 보지 않았습니까? Amazon에서 X 윈도우 시스템을위한 최신 프로그래밍 가이드는 1994 년에 나온 것입니다!? 오래된 책이 충분하거나, 내가 모르는 신기술이 있기 때문에 Xlib의 새로운 기사가 ​​없습니까? 또는 어쩌면 웹에서 검색 할 적절한 키워드가 없었을 수도 있습니다. 그렇다면 누군가 나를 올바른 장소로 안내해 줄 수 있습니까?

+4

X는 꽤 오래된 기술입니다. 최신 유닉스/리눅스 GUI 개발은 QT 또는 GTK + (또는 여러 다른 툴킷)에서 발생합니다. Xlib에서 시간 프로그래밍을 낭비하지 마십시오. 하루에 가장 많은 시간을 보낸 다음 GTK 또는 Qt (Xlib를 사용하여 구현 됨) –

답변

14

내가 아는 최신 책이 없습니다. 당신은 정말 많은 사양과 소스 코드를 읽어야합니다. 다행히도이 복잡하다는 것은 이 아닙니다.

나는 gtk +/gdk/x11 (GTK에 대한 X 백엔드) 소스를 읽고 좋아하는 WMs에 대한 소스는 먼 길을 갈 것이라고 말하고 싶다. ICCCM 및 EMWH 사양은 필수적입니다.

오래된 가이드 가래로 X 프로그래밍의 큰 변화는 더 이상 그리기, 글꼴, 인쇄 등을 위해 많은 서버 측 기능을 사용하는 것을 좋아하지 않는다는 것입니다. 그래서 XDrawFoo는 폰트, XPrint, GCs, 컬러 맵 등에 관한 모든 기능을 갖추고 있습니다. 드로잉은 일반적으로 카이로 (Cairo) 또는 스키 아 (Skia)와 같은 라이브러리를 사용하여 클라이언트 측에서 수행됩니다.

윈도우와 픽스맵에 관한 내용과 그 오래된 책에서 X가 작동하는 기본 방법은 여전히 ​​정확합니다.

당신은 WM 덤비는하는 경우 일부 좋은 일반 X 조언 :

  • 오히려 상태를 얻기보다는 이벤트에 응답해야합니다. 예를 들어, 항상 크기를 ConfigureNotify가있는 마지막 크기로 간주하십시오. XGetGeometry 또는 크기를 얻기 위해 뭔가를 호출하지 마십시오. 상태를 얻는 데는 두 가지 문제가 있습니다. 즉, 성능이 저하되고 (왕복을 막아 성능이 저하되는 경우) 경쟁 조건이 발생합니다.

  • 을 WM에서 처리하면 다른 응용 프로그램의 윈도우를 처리 할 수 ​​있으며 언제든지 해당 응용 프로그램을 삭제할 수 있습니다. 그러면 해당 윈도우를 만지면 오류가 발생합니다. 따라서 창에서 호출하는 모든 함수는 실패 할 수 있습니다.

  • 은 항상 실제 타임 스탬프를 사용, currentTime을 사용하지 않습니다, 또는 당신은

이 많은 것 같아요 자세한 도움말이 있지만 사람들은 당신이 얻을 세 가지이다 미친 당신이 운전할 것 이상한 경쟁 조건 버그를 만듭니다 일반적인 실수를 피하기 시작 ;-)