2010-07-16 24 views
6

Sono un po 'confuso sulla programmazione Xlib ora. Ho iniziato a usare dwm (un window manager leggero) alcune settimane fa, e mi piacerebbe prendere alcuni libri di programmazione Xlib o risorse online per personalizzare il dwm.Dove sono alcune buone guide di programmazione Xlib?

Tuttavia, dopo aver cercato su Google in rete, non vedo molti nuovi articoli che parlano di Xlib ?? La nuova guida alla programmazione per X Window System su Amazon è nel 1994 !? Non ci sono nuovi articoli di Xlib perché il vecchio libro è sufficiente, o perché ci sono alcune nuove tecnologie di cui non sono a conoscenza? O forse non avevo la parola chiave giusta per cercare sul web. In tal caso, qualcuno può indicarmi il posto giusto?

+4

X è una tecnologia piuttosto vecchia. Lo sviluppo moderno della GUI UNIX/Linux avviene in QT o GTK + (o in molti altri toolkit). Non sprecare la programmazione del tempo in Xlib. Passa un giorno al massimo e poi impara GTK o Qt (che sono implementati usando Xlib) –

risposta

14

Non ci sono libri aggiornati che io conosca. Devi solo leggere un sacco di specifiche e codice sorgente. Fortunatamente non è quello complicato.

Direi di leggere il sorgente su gtk +/gdk/x11 (il backend X su GTK) e la fonte della tua coppia preferita di WM andrebbe molto. Le specifiche ICCCM e EMWH sono essenziali.

Un enorme cambiamento nella programmazione X rispetto alle vecchie guide è che a nessuno piace usare molte delle funzionalità lato server per il disegno, i caratteri, la stampa, ecc. Quindi le funzioni di XDrawFoo, tutto ciò che riguarda font, XPrint, GC, colormaps, tutto ciò che è più o meno obsoleto. Il disegno viene generalmente effettuato dal lato client ora con biblioteche come Cairo o Skia.

Le informazioni su Windows e pixmap e il modo in cui X funziona in quei vecchi libri sarebbe comunque accurato.

Alcuni generale X consigli se stai pasticciano con un WM:

  • è necessario rispondere a eventi piuttosto che ottenere lo stato. Ad esempio, considera sempre la tua taglia come l'ultima dimensione per cui hai ottenuto ConfigureNotify; non chiamare XGetGeometry o qualcosa per ottenere la tua taglia. Ottenere lo stato ha due problemi: uccide le prestazioni (bloccando un round trip = performance death) e introduce condizioni di gara.

  • in un WM, hai a che fare con le finestre di altre app e queste possono essere distrutte in qualsiasi momento, causando un errore se tocchi quella finestra. quindi qualsiasi funzione chiamata su una finestra potrebbe fallire.

  • mai usare CurrentTime, utilizzare sempre un vero e proprio timestamp, o si creerà Freaky bug race condition che ti faranno impazzire

ci sono molti ulteriori suggerimenti ma immagino che questi sono tre per arrivare iniziato a evitare errori comuni ;-)

Problemi correlati