Newsgroup: it.comp.os.linux.development
Titolo: Architettura di X

Volevo avere risposta a una mia curiosità: per quello che ne so, c'è un
server X, che sta in ascolto in IP(o TCP/IP) di pacchetti con le richieste
di disegno, che le applicazioni inviano mediante Xlib; ma X direttamente
disegna solo testo, figure geometriche ecc. e non pulsanti, menu... quindi,
o(come xdvi) si crea l'interfaccia da solo e chiama la xlib, oppure usa Gtk
o QT; ora, se un applicazione è per Gnome e quindi usa Gtk, la Gtk chiama la
Xlib per disegnare la finestra; ma invece, quando la eseguo in KDE, viene
disegnata la finestra in stile KDE; c'è per caso un altro layer aggiuntivo?
In pratica, la Gtk(o Qt, perché la cosa è reciproca) chiama un'altra
libreria che poi corrisponde al window manager che poi pensa lui a chiamare
Xlib? E come si chiama 'sta libreria, dato che non ne ho mai sentito
parlare? Grazie.
--
Paolo Giarrusso
Per rispondere togliere solo "TOGLIMI" dall'indirizzo, non _spam.

 sentito parlare? Grazie.
AFAIK il window manager e' un'applicazione a se' stante che si occupa di
lanciare le altre applicazioni, disegna i bordi delle finestre delle
applicazioni, le barre dei titoli ed invia alle varie applicazioni i segnali
di visualizzazione, chiusura, modifica, iconizzazione delle finestre e cosi'
via.
Alessandro.


Gnome/GTK e Kde/QT sono Toolkits (insiemi di oggetti grafici + librerie 
per il loro utilizzo)
XLIB e' una libreria per il disegno di primitive grafiche attraverso il 
protocollo X11, l'X server e' il programma che esegue il disegno delle 
primitive grafiche.
Applicazione Gnome : GNOME -> GTK -> GDK -> XLIB -> XSERVER (X)
Applicazione Motif : Motif ->      XT    -> XLIB -> XSERVER (X)
Applicazione KDE   :   KDE ->      QT    -> XLIB -> XSERVER (X)
ecc. ecc.
la freccia '->' significa : utilizza/si appoggia su/chiama funzioni di
ciao
--
Mandoch

 la freccia '->' significa : utilizza/si appoggia su/chiama funzioni di
Ma allora come fa un applicazione Gtk eseguita su KDE ad avere la finestra
stile KDE? È il window manager che se ne occupa(come si capiva dall'altra
risposta?) Ma allora le applicazioni devono informare il window manager(o
lui lo sa xché è lui che le avvia (ma allora quando faccio partire qualcosa
con una console) o s'aggancia a exec() (assurdo)? E poi, a occuparsi della
logica a eventi è la libreria sopra XLIB(cioè XT, QT, GTK perché GDK è il
Gimp Drawing Kit che è solo per disegno?)? Grazie.


 Drawing Kit che è solo per disegno?)? Grazie. -- Paolo Giarrusso
Gli eventi vengono gestiti cosi`: tutto quello che fai col bordo della
finestra viene mandato al window manager, poi sara` lui a decidere cosa farne.
Se il wm usa una libreria come gtk, passera` il controllo dell'evento a quella
libreria, altrimenti lo gestira` direttamente con le Xlib.
Quello che e` dentro la finestra viene passato all'applicazione, quindi sara`
lei a gestirlo come meglio crede.
In definitiva quello che X passa e` il click del mouse e le coordinate in cui
si trova, relative all'angolo in alto a sinistra del bordo per il wm, e
all'angolo in alto a sinistra ESCLUSO il bordo per l'applicazione, poi e`
l'applicazione o il wm a gestire il click (o il drag'n'drop, o il semplice
posizionamento del cursore in una certa area).
Bye.

 layer aggiuntivo?
ma no, ma no, è una cosa molto più banale. E' solo il window manager di 
KDE che applica alle GTK una skin per farle assomigliare alle Qt
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!