X Window System core protocol: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Atomi: ortografia |
m Bot: inserimento template categorie qualità; modifiche estetiche |
||
Riga 1:
[[
L''''X Window System core protocol''' (protocollo principale di X Window System) <ref name="sche-gett">Robert W. Scheifler and James Gettys: ''X Window System: Core and extension protocols, X version 11, releases 6 and 6.1'', Digital Press 1996, ISBN 1-55558-148-X</ref><ref name="rfc 1013">RFC 1013</ref><ref name="intr">Grant Edwards. [http://www.visi.com/~grante/Xtut/ An Introduction to X11 User Interfaces]</ref> è il protocollo base dell'[[X Window System]], che è un sistema (che lavora in rete) di gestione delle finestre per [[bitmap]] display usato per creare [[Interfaccia grafica|interfacce grafiche utente]] in sistemi [[Unix]], [[Unix-like]] e altri [[sistema operativo|sistemi operativi]]. L'X Window System è basato su un modello [[client-server]]: un singolo [[server]] controlla l'[[hardware]] di[[input/output]], come lo [[schermo]], la [[Tastiera (informatica)|tastiera]] e il [[mouse]]; ogni applicazione ([[Programma (informatica)|programma]]) agisce come un client, interagendo con l'utente e con gli altri client attraverso il server. Questa interazione è regolata dal X Window System core protocol. Esistono altri [[Protocollo (informatica)|protocolli]] relativi all'X Window System, sia costruiti ''sopra'' l'X Window System core protocol sia come protocolli separati.
Riga 11:
La comunicazione fra server e i client avviene mediante lo scambio di pacchetti attraverso un [[Canale (telecomunicazioni)|canale]]. La connessione viene stabilita dal client (nel protocollo non viene specificato come il client viene avviato). Il client invia anche il primo pacchetto, contenente l'[[ordine dei byte]] da usare e informazioni sulla versione del protocollo e il tipo di autenticazione che il client si aspetta che il server usi. Il server risponde con un pacchetto che stabilisce l'accettazione o il rifiuto della connessione, oppure con una richiesta di ulteriore [[autenticazione]]. Se la connessione viene accettata, il pacchetto di accettazione contiene dati per il client da usare nella seguente interazione con il server.
[[
Dopo che la connessione viene stabilita, possono venire scambiati quattro tipi di pacchetto fra client e server nel canale:
# '''Request:''' Il client richiede informazioni dal server o gli chiede di eseguire un'azione.
# '''Reply:''' Il server risponde alla richiesta. Non tutte le richieste generano una risposta.
# '''Event:''' Il server invia un evento al client, per esempio un input da mouse o tastiera o una finestra che è stata mossa, ridimensionata o esposta.
# '''Error:''' Il server invia un pacchetto di errore se una richiesta non è valida. Dato che le richieste vengono accodate, i pacchetti di errore generati da una richiesta potrebbero non essere inviati immediatamente.
I pacchetti di richiesta e di risposta hanno lunghezza variabile, mentre pacchetti di errore ed evento hanno una lunghezza fissata di 32 [[byte]].
Riga 28:
Quella che di solito in altre interfacce grafiche utente viene chiamata una finestra, è una ''finestra top-level'' (di primo piano) nell'X Window System. Il termine ''finestra'' è anche usato per finestre che stanno dentro un'altra finestra, in altre parole, ''sotto finestre'' di una ''finestra padre''. Gli elementi grafici tipo [[Button|bottoni]], [[Menu (informatica)|menu]], [[Icona (informatica)|icone]], ecc. sono tutti realizzati usando finestre.
[[
Un client può richiedere la creazione di una finestra. Più precisamente può richiedere la creazione di una sotto finestra di una finestra esistente. Le finestre create dai client sono strutturate in un [[Albero (informatica)|albero]] (una gerarchia). La radice di quest'albero è la ''root window'' (finestra radice), che è una finestra speciale creata automaticamente dal server all'avvio. Tutte le altre finestre sono direttamente o indirettamente sotto finestre della finestra radice. Visivamente la finestra radice è larga come tutto lo schermo (anche se potrebbe essere più larga, nel qual caso l'utente può muoversi sull'area visibile), e sta dietro a tutte le altre finestre.
Riga 38:
Le finestre possono essere di <code>InputOutput</code> o <code>InputOnly</code>. Le finestre che possono essere mostrate sullo schermo e usate per disegnare sono del primo tipo. Quelle del secondo tipo non vengono mai mostrate nello schermo; sono utilizzate solo per ricevere input.
[[
La cornice decorativa e la [[barra del titolo]] (che include eventualmente bottoni) che viene vista di solito attorno alle finestre sono create dal [[window manager]], non dal client che crea la finestra. Il window manager gestisce anche gli input relativi a questi elementi, tipo il ridimensionamento della finestra quando l'utente clicca e trascina il bordo della finestra. I client di solito operano all'interno della finestra che hanno creato, a prescindere dai cambiamenti attuati dal window manager. Un cambiamento che un client deve tenere in considerazione è che i [[re-parenting window manager]] (window manager che adottano tutte le finestre, ovvero le rendono loro figlie), quali sono quasi tutti i window manager moderni, cambiano le finestre top-level in finestre che non sono la radice. Dal punto di vista del core protocol, il window manager è un client, con nessuna differenza rispetto alle altre applicazioni.
Riga 56:
Il core protocol specifica l'uso di font lato-server<ref name="font-faq">[http://www.faqs.org/faqs/fonts-faq/part15/ comp.fonts FAQ: X11 Info]</ref>. Tali font sono salvati su file e il server vi accede o direttamente tramite il [[file system]] locale oppure via rete tramite un altro programma chiamato ''font server''. I client possono fare richiesta della lista di font utilizzabili al server e possono richiedere che un font venga caricato (se non lo è già) o scaricato (se non usato da altri client) dal server. Un client può richiedere informazioni generali sul font (per esempio l'[[ascent]] del font) e lo spazio che una data stringa può occupare quando disegnata con un font specifico.
[[
Il nome dei font sono stringhe arbitrarie a livello del X Window core protocol. Le convenzioni [[X logical font description]] <ref name="logi-font">{{Cita web|url= http://www.xfree86.org/current/xlfd.pdf |titolo= X Logical Font Description Conventions |accesso=30 dicembre 2005 |autore= Jim Flowers |coautori= Stephen Gildea |data= 1994 |formato= PDF |opera= [[Digital Equipment Corporation]] |editore= [[X Consortium]] }}</ref> specificano come i font dovrebbero essere nominati in accordo con i loro attributi. Queste convenzioni specificano anche i valori delle proprietà opzionali che possono essere assegnate ai font.
Riga 96:
L'evento <code>Expose</code> viene inviato quando un'area di una finestra dal contenuto non visibile diventa visibile. Il contenuto di una finestra potrebbe venir distrutto in alcune condizioni, per esempio, se la finestra è coperta e il server non sta mantenendo la backing store. Il server genera un evento <code>Expose</code> per notificare al client che una parte della finestra deve essere disegnata.
[[
La maggior parte di tipi di eventi vengono inviati solo se il client ha mostrato interesse in loro in precedenza. Questo perché i client potrebbero essere interessati solo ad alcuni tipi di eventi. Per esempio, un client potrebbe essere interessato ad eventi relativi alla tastiera ma non a quelli relativi al mouse. Alcuni tipi di eventi sono comunque inviati ai client anche se non ne hanno fatto specificatamente richiesta.
Riga 188:
== Mappings (Mappature) ==
[[
In X Window System, ogni singolo tasto è associata ad un numero nell'intervallo 8-255 chiamato ''keycode'' (codice tasto). Un keycode identifica solo un tasto, non un particolare carattere o termine (ad esempio "Page Up") fra quelli che potrebbero essere raffigurati nel tasto. Ognuno di questi caratteri o termini viene invece identificato da un ''keysym''. Mentre un keycode dipende solo dal tasto appena premuto, un keysym potrebbe dipendere, per esempio, dalla pressione o meno del tasto Shift o qualche altro modificatore (Ctrl, Alt, ecc.).
Riga 197:
# lo stato corrente dei modificatori (Shift, Control, ecc.) e dei bottoni del mouse
[[
Il server invia quindi un keycode e lo stato dei modificatori senza cercare di tradurlo in uno specifico carattere. È responsabilità del client fare questa conversione. Per esempio, un client potrebbe ricevere un evento che stabilisce che un dato tasto è stato premuto mentre il modificatore Shift era premuto. Se questo tasto normalmente genererebbe il carattere "a", il client (e non il server) associa questo evento al carattere "A".
Riga 222:
; passiva: la cattura ha luogo solo quando un viene premuto un tasto o un bottone del mouse specificato in precedenza e termina quando questo viene rilasciato.
[[
Una richiesta di cattura può includere una richiesta di ''freezing'' (congelamento) di tastiera o puntatore. La differenza tra cattura e congelamento è che la cattura cambia il destinatario degli eventi, mentre il congelamento ferma proprio la loro consegna. Quando una periferica è congelata, gli eventi che genera sono salvati in una coda da cui essere consegnati normalmente una volta finito il congelamento.
Riga 237:
== Estensioni ==
[[
Il X Window core protocol fu progettato per essere estensibile. Esso specifica un meccanismo per interrogare le estensioni disponibili e come sono fatti gli eventi, le estensioni, i pacchetti di errore dell'estensione.
Riga 280:
== Voci correlate ==
* [[Protocolli e architettura di X Window System]]
== Collegamenti esterni ==
* {{en}}[http://www.x.org/ X.Org Foundation] (official home page)
* {{en}}[http://xorg.freedesktop.org/wiki/ X.Org Foundation wiki]
* {{en}}[http://www.rahul.net/kenton/bib.html Kenton Lee's pages on X Window and Motif]
* {{en}}[ftp://ftp.x.org/pub/X11R7.0/doc/PDF/proto.pdf The X11R7 Protocol Specification]
[[Categoria:X Window System| ]]
{{
|