5. Applicazioni client

Spostiamo per un momento l'attenzione sui programmi client. Si pensi di voler scrivere un programma client da zero, usando solo gli strumenti forniti da X. Ci si accorgerebbe presto che Xlib è un tool abbastanza spartano, e che fare cose come posizionare pulsanti sullo schermo, testo e controlli elaborati (barre si scorrimento e pulsanti radio) è incredibilmente complicato.

Fortunatamente, qualcun altro si è preso la briga di implementare questi controlli e di presentarceli in forma utilizzabile: una libreria. Questi controlli sono conosciuti come "widget" e ovviamente la libreria è chiamata "widget library". Quindi io devo solo richiamare una funzione di questa libreria con qualche parametro e ottenere che un pulsante sia visualizzato sullo schermo. Esempi di widget includono menu, pulsanti, pulsanti radio, barre di scorrimento e canvas.

Un "canvas" (tela per dipinti) è un tipo di widget interessante, dal momento che è essenzialmente una sottoarea dell'applicazione client in cui si può disegnare. Comprensibilmente, poiché non si dovrebbe usare Xlib direttamente (perché ciò interferirebbe con il lavoro della widget library) la libreria stessa fornisce un modo di fare dei disegni arbitrari all'interno del widget canvas.

Poiché è la widget library che si occupa di disegnare realmente gli elementi sullo schermo, così come di interpretare le azioni dell'utente e trasformarle in input per le applicazioni, la libreria usata è largamente responsabile per l'aspetto e il comportamento di ogni client. Dal punto di vista di uno sviluppatore, una libreria widget ha anche le sue API (insiemi di funzioni), ed è questo aspetto che potrebbe farlo scegliere tra una particolare widget library e un'altra.