÷ƒ’À;è TeX output 2006.06.30:0221‹ÿÿÿÿ‘·ºâŸ·ºâòO! /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if ïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if endï˜ps:SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark endï color popŽ’Ôï color popŽŽ { þW@‘H ÿ8ýÀïTps:SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark endï1ps:SDict begin [ {Catalog} << >> /PUT pdfmark endïps:SDict begin H.S endïps:SDict begin 12 H.A endïMps:SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark endïpapersize=0.0pt,0.0ptïps:SDict begin H.S endïps:SDict begin 12 H.A endïZps:SDict begin [ /View [/XYZ H.V] /Dest (XWINDOW-OVERVIEW-HOWTO) cvn H.B /DEST pdfmark endŸ&ñ‘Jªóúâ phvb8t¾X–êÏWindo ƒw“System“Ar€¡cÀOhitectureŽŸ Y’˜µmOver?°vie ƒw‘êÏHO‘þÁWT‘ÿBOŽŸ!C–’¿CñóúG® phvb8t¿Daniel‘ͽManriqueŽ¤’·µróú phvb8tÀr•Â“oadmr@entr“opia.com.mxŽ¡ŸõÑ0Diario–Uüdelle“ReÑóvisioniŽŸ¦aïps:SDict begin H.S endïps:SDict begin 0 H.A endïKps:SDict begin [ /View [/XYZ H.V] /Dest (table.1) cvn H.B /DEST pdfmark endŸÿþ‘0óáÚŽ phvr8tÁRe³7visione‘ǧ1.0.1Ž‘w„2001-05-22Ž’¬Â4Re³7visionato–ǧda:“dmŽŽ¤ 4u‘0Alcune–ǧcorrezioni“g•ægr“ammaticali,–ǧindicate“da“Bill“StaehleŽŽŸ 9–‘0Re³7visione‘ǧ1.0Ž‘w„2001-05-20Ž’¬Â4Re³7visionato–ǧda:“dmŽŽ¡‘0Release–ǧiniziale“LDP‘þ38.ŽŽŽŸ*÷ ’‰€ó?Á|‰ ptmr8t½Questo–€documento“fornisce“una“panoramica“dell'architettura“del“sistema“X“W™ŸindoÀw‘ÿY ,“aiuta“aŽ¤ ’‰€comprendere–€mešÙ glio“la“sua“progettazione“e“spie˜gó7a“quali“componenti“si“inte˜grano“con“X“eŽ¡’‰€collaborano–€per“formare“un“ambiente“graco.“Inoltre“illustra“le“scelte“a“disposizione“per“quantoŽ¡’‰€riguarda–€componenti“come“windoÀw“manager™Ÿ,“librerie,“toolkit“di“widget“e“ambienti“desktop.Ž¡’‰€T¦graduzione–€a“cura“di“Silvio“Donnini,“e-mail:“scaudi“at“alice“dot“it“ReÀvisione“a“cura“di“GiulioŽ¡’‰€Daprel€à–€e-mail:“daprela“at“pluto“dot“itŽŸ@Ÿ‘Mïps:SDict begin H.S endïps:SDict begin 13 H.A endïKps:SDict begin [ /View [/XYZ H.V] /Dest (PREFACE) cvn H.B /DEST pdfmark endŽŸ-lŒ‘H¿1.‘ͽPrefazioneŽ‘HŸ7Eïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (24) cvn H.B /DEST pdfmark endŸ È»‘0½Questo–h¡documento“fornisce“una“panoramica“dell'architettura‘h del“sistema“X‘h›W™ŸindoÀw‘ÿY ,“aiuta“a“comprendereŽ¡‘0mešÙ glio–€la“sua“progettazione“e“spie˜gó7a“quali“componenti“si“inte˜grano“con“X“e“collaborano“per“formare“unŽ¡‘0ambiente–€graco.“Inoltre“illustra“le“scelte“a“disposizione“per“quanto“riguarda“componenti“come“windoÀwŽ¡‘0manager™Ÿ,–€librerie,“toolkit“di“widget“e“ambienti“desktop.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (25) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Indaghiamo–€su“diÀvšÙ ersi“concetti“che“v˜engono“menzionati“spesso“ma“potrebbero“risultare“un“po'“oscuri“perŽ¡‘0coloro–€che“non“hanno“un“background“tecnico“riguardante“widget,“toolkit,“windoÀw“manager“e“ambientiŽ¡‘0desktop.–€V‘þã×engono“forniti“alcuni“esempi“di“come“questi“componenti“interagiscono“durante“l'usoŽ¡‘0quotidiano–€delle“applicazioni.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (26) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Questo–€documento“€è“deliberatamente“non“troppo“tecnico.“€È“basato“sulla“conoscenza“empirica“dell'autoreŽ¡‘0sull'arÑðgomento,–€e,“bench€é“sia“inteso“principalmente“come“un'introduzione“non“tecnica,“sono“bene“accettiŽ¡‘0tutti–€i“tipi“di“commenti,“esempi,“spieÙ gó7azioni“e“correzioni“tecniche“al“riguardo.“TŒÏutte“le“domande“e“iŽ¡‘0commenti–€su“questo“documento“sono“ben™ŸvÙ enuti“e“l'autore“pu€ò“essere“raggiunto“tramite“l'indirizzoŽ¡‘0ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (27) cvn H.B /DEST pdfmark endïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (28) cvn H.B /DEST pdfmark endóϯ8 ptmri8tÂr•ŒÏoadmr@entr“opia.com.mx‘‡§½(mailto:roadmr@entropia.com.mx).ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïPps:SDict begin [ /View [/XYZ H.V] /Dest (INTRODUCTION) cvn H.B /DEST pdfmark endŽŸ0‘Hïcolor push Black’ÏÂ1ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹*‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýœ›‘H¿2.‘ͽIntr§ŒoduzioneŽ‘HŸ7Eïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (31) cvn H.B /DEST pdfmark endŸ È»‘0½Ai–€tempi“in“cui“Unix“era“cosa“nuoÙ vÀa,“intorno“al“1970,“le“interfægacce“grache“erano“solo“stranezze“con“cuiŽ¤ ‘0si–€giocherellaÌÐvÀa“nei“laboratori“(lo“Xerox'‘ÿs8s“P‘ÿARC“per“la“precisione).“Al“giorno“d'oggi,“comunque,“ogniŽ¡‘0sistema–€operatišÀvÌÐo“che“vuole“essere“un“minimo“competiti˜vÌÐo“ha“bisogno“di“un“sottosistema“GUI“(InfægacciaŽ¡‘0Graca–€per“l'Utente).“Le“GUI“sono“ritenute“pi€ù“fægacili“da“usare.“Ma“questo“non“interessa“granch€é“ad“unŽ¡‘0utente–€di“Unix,“sistema“che“€è“sempre“stato,“tradizionalmente“e“in“un“certo“suo“modo,“abbastanzaŽ¡‘0insensibile–€alle“esigenze“di“usabilit€à“dei“propri“utenti,“preferendo“la“vÙ ersatilit€à“alla“fægacilit€à“d'uso.“TŒÏuttaÌÐviaŽ¡‘0ci–€sono“parecchi“motiÀvi“per“cui“una“GUI“€è“desiderabile“anche“su“un“sistema“Unix.“Per“esempio,“data“laŽ¡‘0natura–€multitasking“di“Unix,“€è“naturale“aÌÐvÙ ere“in“ogni“momento“molti“programmi“che“girano“sulla“stessaŽ¡‘0macchina.–€Una“GUI“d€à“pi€ù“controllo“su“come“i“programmi“sono“visualizzati“sullo“schermo,“fornendoŽ¡‘0strumenti–€per“gestire“moltissimi“programmi“in“contemporanea.“E“poi“alcune“informazioni“rendono“di“pi€ùŽ¡‘0in–€formato“graco“(alcune,“addirittura,“possono“essere“visualizzate“solo“in“forma“graca;“come“il“porno“eŽ¡‘0altri–€dati“intrinsecamente“graci).Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (32) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Storicamente–€Unix“ha“riceÀvuto“molti“miglioramenti“pro•Ù v“enienti–€da“ambienti“accademici.“Un“bÌÐuonŽ¡‘0esempio–€€è“il“codice“di“rete“di“BSD,“aggiunto“alla“ne“dešÙ gli“anni“'70,“che“era,“o˜vviamente,“il“risultato“delŽ¡‘0la•ÌÐv“oro›€sv“olto˜all'uniÀv•Ù ersit€à˜della˜California,˜a˜Berkægele“y‘ÿY .˜Anche˜il˜sistema˜X˜W™ŸindoÀw˜(anche˜detto˜X,˜maŽ¡‘0mai–€X“W™ŸindoÀws),“che“rappresenta“le“fondamenta“per“la“maggior“parte“dei“sottosistemi“GUI“dei“sistemiŽ¡‘0Unix–€moderni“(inclusi“Linux“e“i“všÀari“BSD),“€è“il“prodotto“di“un“progetto“uni˜všÙ ersitario,“o˜vv˜ero“il“progettoŽ¡‘0Athena–€del“Massachusetts“Institute“of“T‘ÿLÐechnology“(MIT).Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (33) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Unix–€€è“sempre“stato“n“dai“suoi“inizi“multiutente,“multitasking“e“time“sharing.“Inoltre,“da“quando“vi“sonoŽ¡‘0state–€incorporate“tecnologie“di“rete,“ha“aÌÐvuto“la“capacit€à“di“permettere“a“un“utente“di“connettersi“daŽ¡‘0remoto–€e“la•ÌÐv“orare–€sul“sistema.“Precedentemente“ci€ò“era“fægattibile“o“colleÙ gó7andosi“via“terminale“seriale“oŽ¡‘0attraÌÐvšÙ erso–€una“connessione“di“rete“(il“le˜ggendario“telnet).Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (34) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Quando–€giunse“il“tempo“di“sviluppare“un“sistema“GUI“che“potesse“girare“principalmente“sotto“Unix,Ž¡‘0questi–€concetti“vÙ ennero“tenuti“a“mente“e“incorporati“nella“progettazione.“In“realt€à“X“ha“una“strutturaŽ¡‘0piuttosto–€complessa,“cosa“che“€è“spesso“stata“menzionata“come“uno“svÀantaggio.“TŒÏuttaÌÐvia,“proprio“grazieŽ¡‘0alla–hàsua“struttura,“esso›h߀è“anche“un“sistema“molto“vÙ ersatile,“e“ci€ò˜diÀvšÙ err€à“molto“chiaro“quando“spie˜gheremoŽ¡‘0come–€si“incastrano“fra“loro“le“parti“che“vÀanno“a“comporre“una“GUI.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (35) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Prima–€di“andare“a“vÙ edere“l'architettura“di“X,“€è“necessario“parlare“un“po'“della“sua“storia“e“di“come“essoŽ¡‘0sia›€arri•Àv“ato˜sui˜sistemi˜Linux.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (36) cvn H.B /DEST pdfmark endŸ æl‘0X–€€è“stato“sviluppato“dal“progetto“Athena“e“rilasciato“nel“1984.“Nel“1988“un“ente“chiamato“"Consorzio“X"Ž¡‘0prese–€le“redini“del“progetto,“e“ad“oggi“gestisce“il“suo“sviluppo“e“la“sua“distribÌÐuzione.“Le“speciche“di“XŽ¡‘0sono–€disponibili“al“pubblico,“mossa“saggia“che“ha“reso“X“onnipresente.“Ecco“come“vÙ enne“alla“luceŽ¡‘0XFree86:–€XFree86“€è“l'implementazione“di“X“sulle“nostre“macchine“Linux.“XFree86“funziona“anche“suŽ¡‘0altri–€sistemi“operatišÀvi,“come“i“v˜ari“*BSD,“OS/2“e“forse“altri.“Inoltre,“nonostante“il“suo“nome,“XFree86“€èŽ¡‘0disponibile–€per“diÀvÙ ersi“tipi“di“processore.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïQps:SDict begin [ /View [/XYZ H.V] /Dest (ARCH-OVERVIEW) cvn H.B /DEST pdfmark endŽŸ0‘Hïcolor push Black’ÏÂ2ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹h‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýœ›‘H¿3.–ͽAr§ŒcÓÅhitettura“del“sistema“X“Windo½°w:“una“panoramicaŽ‘HŸ“­ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (39) cvn H.B /DEST pdfmark endŸ lS‘0½L‘ÿ'architettura–€di“X“€è“client-servšÙ er‘ÿs8.“Le“applicazioni“stesse“sono“dei“client;“esse“comunicano“con“il“serv˜er“eŽ¤ ‘0in™Ÿviano–€delle“richieste,“riceÀvšÙ endo“informazioni“dal“serv˜er‘ÿs8.ŽŸqèïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (40) cvn H.B /DEST pdfmark endŸ Ž‘0Il–€servÙ er“X“ha“il“controllo“esclusiÀvÌÐo“dello“schermo“e“dei“servizi“richiesti“dai“client.“A“questo“punto“iŽ¡‘0vÀantaggi–€di“questo“modello“sono“abbastanza“chiari.“Le“applicazioni“(client)“hanno“solo“bisogno“di“sapereŽ¡‘0come–€comunicare“con“il“servÙ er“e“non“si“dešÀvÌÐono“preoccupare“dei“dettagli“del“dispositi˜vÌÐo“graco“sico.“AlŽ¡‘0liÀvšÙ ello–€base,“un“client“dice“al“serv˜er“cose“del“tipo“"dise˜gna“una“linea“che“vÀa“da“qui“a“qui",“oppureŽ¡‘0"visualizza–€questo“testo,“usando“questi“caratteri,“in“questo“punto“dello“schermo".Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (41) cvn H.B /DEST pdfmark endŸ ÕÈ‘0€È–€come“se“stessimo“usando“una“libreria“graca“per“scriÀvÙ ere“la“nostra“applicazione.“TŒÏuttaÌÐvia“il“modello“diŽ¡‘0X–€fæga“un“passo“in“pi€ù.“Non“si“limita“a“poter“essere“usato“solo“da“un“client“che“risiede“sulla“stessa“macchinaŽ¡‘0del–|bservšÙ er‘ÿs8.“Il“protocollo“usato“per“fægar“comunicare“client“e“serv˜er“pu€ò“funzionare“anche“attraÌÐv˜erso“una“rete,Ž¡‘0e–€in“realt€à“qualsiasi“"meccanismo“di“comunicazione“interÌÐ-processo“che“fornisca“un“usso“di“byteŽ¡‘0adabile".–€Ovviamente“il“modo“preferito“di“fægar“comunicare“un“client“e“un“servšÙ er“remoto“€è“attraÌÐv˜erso“iŽ¡‘0protocolli–€TCP/IP‘þã×.“Evidentemente“il“modello“di“X“€è“vÙ eramente“potente;“l'esempio“classico“€è“quello“in“cuiŽ¡‘0si–€fæga“girare“un'applicazione“che“impeÙ gna“pesantemente“il“processore“su“un“computer“Cray‘ÿY ,Ž¡‘0un'applicazione–€che“gestisce“un“database“su“un“servÙ er“Solaris,“un'applicazione“di“posta“elettronica“su“unŽ¡‘0mail–€servšÙ er“BSD,“un“programma“di“visualizzazione“su“un“serv˜er“SGI“e“poi“si“visualizza“tutto“sulloŽ¡‘0schermo–€di“una“wægorkstation“Linux.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (42) cvn H.B /DEST pdfmark endŸ æl‘0Fin–€qui“abbiamo“visto“che“il“servšÙ er“X“€è“quello“che“si“occupa“della“visualizzazione“v˜era“e“propria.“E,Ž¡‘0siccome–€€è“il“servÙ er“X“che“gira“sulla“macchina“sica“su“cui“l'utente“sta“la•ÌÐv“orando,–€€è“responsabilit€à“delŽ¡‘0servšÙ er–€X“gestire“tutta“l'interazione“eetti•Àv“a–€con“l'utente.“Incluso“le˜ggere“i“mo˜vimenti“del“mouse“e“l'inputŽ¡‘0della–€tastiera.“TŒÏutte“queste“informazioni“sono“passate“al“client,“che“ošÙ vviamente“do˜vr€à“reagire“ad“esse.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (43) cvn H.B /DEST pdfmark endŸ ÕÈ‘0X–€fornisce“una“libreria,“chiamata“Xlib,“che“gestisce“tutte“le“comunicazioni“client-servšÙ er“di“basso“liÀv˜ello.Ž¡‘0Sembra–€ošÙ vvio“quindi“che“il“client“debba“in™ŸvÌÐocare“le“funzioni“contenute“in“Xlib“per“fægare“quello“che“deÀv˜eŽ¡‘0fægare.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (44) cvn H.B /DEST pdfmark endŸ æl‘0A–€questo“punto“tutto“sembra“andare“per“il“všÙ erso“giusto.“Abbiamo“un“serv˜er“che“si“occupa“dell'outputŽ¡‘0visiÀvÌÐo–€e“dell'input,“applicazioni“client“e“un“meccanismo“per“fægarle“comunicare“tra“loro.“Nel“gurarsiŽ¡‘0un'interazione–€ipotetica“tra“un“client“e“un“servšÙ er™Ÿ,“il“client“potrebbe“chiedere“al“serv˜er“di“fægarsi“asse˜gnareŽ¡‘0un'area–€rettangolare“dello“schermo.“Essendo“un“client,“non“mi“interessa“do•Ù v“e›€v“engo˜messo˜sulloŽ¡‘0schermo.–€Dico“solo“al“servšÙ er:“"dammi“un“area“di“dimensioni“X“per“Y“in“pix˜el"“e“poi“chiamo“funzioni“perŽ¡‘0eseÙ guire–}azioni›}del“tipo˜"diseÙ gna“una“linea˜da“qui˜a“qui",“"dimmi˜se“l'utente“sta˜muo•Ù v“endo–}il˜mouse“sopraŽ¡‘0la–€mia“area“dello“schermo",“e“cos€ì“via.ŽŸ±èïps:SDict begin H.S endïps:SDict begin 13 H.A endïSps:SDict begin [ /View [/XYZ H.V] /Dest (WINDOW-MANAGERS) cvn H.B /DEST pdfmark endŸ+ú¤¿4.–ͽI“Windo½°w“ManaÓÅg,:erŽŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (47) cvn H.B /DEST pdfmark endŸ 'Æ‘0½Ad–€ogni“modo“non“abbiamo“mai“menzionato“come“fægaccia“il“servÙ er“X“a“gestire“la“manipolazione“delleŽŽŸ0‘Hïcolor push Black’ÏÂ3ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹+Ò‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýš‘x½aree–€di“visualizzazione“dei“client“su“schermo“(chiamate“anche“nestre).“€È“oÙ vvio,“a“chiunque“abbia“usatoŽ¤ ‘xuna–€GUI,“che“bisogna“aÌÐvšÙ ere“il“controllo“su“delle“"nestre“client".“T¦gipicamente“l'utente“pu€ò“muo˜v˜erle“eŽ¡‘xordinarle,–€cambiarne“le“dimensioni,“minimizzarle“o“massimizzarle.“Come“fæga“a“gestire“tali“compiti“ilŽ¡‘xservÙ er–€X?“La“risposta“€è:“non“lo“fæga.Ž‘H©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (48) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Uno–gwdei›gvprincipi“fondamentali“di˜X‘gq€è:˜"noi“forniamo˜il“meccanismo,“ma˜non“la“politica".˜E‘gqcos€ì,˜bench€é“ilŽ¡‘0servšÙ er–€X“fornisca“un“modo“(meccanismo)“per“manipolare“le“nestre,“non“dice“come“si“deÀv˜e“comportareŽ¡‘0eetti•Àv“amente–€questa“manipolazione“(politica).Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (49) cvn H.B /DEST pdfmark endŸ ÕÈ‘0TŒÏutta–€questa“roba“strana“riguardo“a“meccanismi“e“politiche“si“riduce“ad“un“solo“precetto:“€è“responsabilit€àŽ¡‘0di–€un“altro“programma“gestire“lo“spazio“su“schermo.“Questo“programma“decide“do•Ù v“e–€piazzare“le“nestre,Ž¡‘0fornisce–€il“meccanismo“per“fægar“specicare“all'utente“l'aspetto“delle“nestre,“le“posizioni“e“la“loroŽ¡‘0dimensione;–jãsolitamente“fornisce“"decorazioni"›jäcome“i“titoli“delle“nestre,“cornici“e˜pulsanti“che“ci“dannoŽ¡‘0il–€controllo“della“nestra“stessa.“Questo“programma,“che“gestisce“le“nestre,“€è“chiamato“"windoÀwŽ¡‘0manager".Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (50) cvn H.B /DEST pdfmark endŸ ÕÈ‘0"Il–€windošÀw“manager“in“X“€è“solo“un“altro“client“--“non“€è“parte“del“sistema“X“W™Ÿindo˜w‘ÿY ,“bench€é“goda“diŽ¡‘0prišÀvileÙ gi–€speciali“--“qundi“non“esiste“un“unico“windo˜w“manager;“ce“ne“sono“molti,“che“supportano“di˜vÙ erseŽ¡‘0modalit€à–€di“interazione“con“l'utente“e“diÀvÙ ersi“schemi“di“posizionamento“delle“nestre,“decorazioni,Ž¡‘0gestione–€della“tastiera,“della“mappa“colori“e“del“focus."Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (51) cvn H.B /DEST pdfmark endŸ ÕÈ‘0L‘ÿ'architettura–€X“fornisce“i“mezzi“ad“un“windoÀw“manager“per“eseÙ guire“tutte“queste“azioni“sulle“nestre;Ž¡‘0ma–€non“fornisce“un“vÙ ero“e“proprio“windoÀw“manager‘ÿs8.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (52) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Ci–€sono,“oÙ vviamente,“moltissimi“di“windošÀw“manager™Ÿ,“poich€é,“dal“momento“che“il“windo˜w“manager“€è“unŽ¡‘0componente–€esterno,“€è“(relati•Àv“amente)–€fægacile“scriÀvšÙ erne“uno“che“si“adatti“alle“proprie“esigenze,“o˜vv˜ero“leŽ¡‘0proprie–€preferenze“sul“look“delle“nestre,“il“loro“comportamento,“la“posizione“in“cui“si“vuole“che“siŽ¡‘0troÙ vino,–€etc.“Alcuni“windošÀw“manager“sono“semplicistici“e“bruttini“(twn);“alcuni“hanno“un“aspetto“vi˜v˜aceŽ¡‘0e–€includono“praticamente“tutto“a“parte“un“laÌÐvÀandino“(enlightenment);“poi“ci“sono“tutte“le“vie“di“mezzo:Ž¡‘0fvwm,–€amiwm,“icešÀwm,“windo˜wmakæger™Ÿ,“afterstep,“saÙ wsh,“kwm“e“tantissimi“altri.“Ci“sono“windo˜wŽ¡‘0manager–€per“tutti“i“gusti.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (53) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Un–€windošÀw“manager“€è“un“"meta-client",“il“cui“obbietti˜vÌÐo“di“base“€è“quello“di“gestire“altri“client.“LaŽ¡‘0maggior–€parte“dei“windošÀw“manager“fornisce“qualche“strumento“aggiunti˜vÌÐo“(e“alcuni“ne“fornisconoŽ¡‘0tantissimi).–€Comunque“una“funzionalit€à“che“sembra“presente“nella“maggior“parte“dei“windoÀw“manager“€èŽ¡‘0un–€sistema“per“lanciare“le“applicazioni.“Alcuni“forniscono“un“box“do•Ù v“e–€si“possono“scriÀvÙ ere“comandiŽ¡‘0standard–€(che“possono“essere“usati“per“lanciare“applicazioni“client).“Altri“hanno“dei“riniti“menu“appositiŽ¡‘0di–€qualche“tipo.“Non“ci“sono“standard“in“proposito“comunque;“di“nuoÙ vÌÐo,“poich€é“X“non“detta“alcunaŽ¡‘0politica–€su“come“una“applicazione“client“doÙ vrebbe“essere“lanciata,“questa“funzionalit€à“vÀa“implementataŽ¡‘0nei–€programmi“client.“Mentre“tipicamente“di“ci€ò“si“occupa“il“windoÀw“manager“(e“ciascuno“l“fæga“in“modoŽ¡‘0diÀvšÙ erso),–€€è“concepibile“aÌÐv˜ere“applicazioni“client“il“cui“solo“scopo“€è“lanciare“altre“applicazioni“client,“siŽ¡‘0pensi–x²ad“un“pannello“di›x³lancio“dei“programmi.“E‘x°di“certo“sono“state˜scritte“molte“applicazioni“per“lanciareŽ¡‘0programmi.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïWps:SDict begin [ /View [/XYZ H.V] /Dest (CLIENT-APPLICATIONS) cvn H.B /DEST pdfmark endŽŸ0‘Hïcolor push Black’ÏÂ4ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹A‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýœ›‘H¿5.–ͽApplicazioni“c§ŒlientŽ‘HŸ“­ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (56) cvn H.B /DEST pdfmark endŸ lS‘0½Spostiamo–€per“un“momento“l'attenzione“sui“programmi“client.“Si“pensi“di“vÌÐoler“scriÀvÙ ere“un“programmaŽ¤ ‘0client–€da“zero,“usando“solo“gli“strumenti“forniti“da“X.“Ci“si“accorÑðgerebbe“presto“che“Xlib“€è“un“toolŽ¡‘0abbastanza–€spartano,“e“che“fægare“cose“come“posizionare“pulsanti“sullo“schermo,“testo“e“controlli“elaboratiŽ¡‘0(barre–€si“scorrimento“e“pulsanti“radio)“€è“incredibilmente“complicato.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (57) cvn H.B /DEST pdfmark endŸ ÕÈ‘0FÙ ortunatamente,–€qualcun“altro“si“€è“preso“la“brigó7a“di“implementare“questi“controlli“e“di“presentarceli“inŽ¡‘0forma–wÞutilizzabile:“una“libreria.›wßQuesti“controlli“sono“conosciuti“come“"widget"“e˜oÙ vviamente“la“libreria“€èŽ¡‘0chiamata–€"widget“library".“Quindi“io“deÀvÌÐo“solo“richiamare“una“funzione“di“questa“libreria“con“qualcheŽ¡‘0parametro–€e“ottenere“che“un“pulsante“sia“visualizzato“sullo“schermo.“Esempi“di“widget“includono“menu,Ž¡‘0pulsanti,–€pulsanti“radio,“barre“di“scorrimento“e“can™ŸvÀas.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (58) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Un–€"can™ŸvÀas"“(tela“per“dipinti)“€è“un“tipo“di“widget“interessante,“dal“momento“che“€è“essenzialmente“unaŽ¡‘0sottoarea–€dell'applicazione“client“in“cui“si“pu€ò“disešÙ gnare.“Comprensibilmente,“poich€é“non“si“do˜vrebbeŽ¡‘0usare–€Xlib“direttamente“(perch€é“ci€ò“interferirebbe“con“il“la•ÌÐv“oro–€della“widget“library)“la“libreria“stessaŽ¡‘0fornisce–€un“modo“di“fægare“dei“diseÙ gni“arbitrari“all'interno“del“widget“can™ŸvÀas.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (59) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Poich€é–€€è“la“widget“library“che“si“occupa“di“diseÙ gnare“realmente“gli“elementi“sullo“schermo,“cos€ì“come“diŽ¡‘0interpretare–€le“azioni“dell'utente“e“trasformarle“in“input“per“le“applicazioni,“la“libreria“usata“€è“larÑðgó7amenteŽ¡‘0responsabile–€per“l'aspetto“e“il“comportamento“di“ogni“client.“Dal“punto“di“vista“di“uno“sviluppatore,“unaŽ¡‘0libreria–€widget“ha“anche“le“sue“API“(insiemi“di“funzioni),“ed“€è“questo“aspetto“che“potrebbe“fægarlo“sceÙ gliereŽ¡‘0tra–€una“particolare“widget“library“e“un'altra.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïLps:SDict begin [ /View [/XYZ H.V] /Dest (TOOLKITS) cvn H.B /DEST pdfmark endŸ+BT¿6.–ͽWidgš,:et“librar˜y“o“toolkitŽŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (62) cvn H.B /DEST pdfmark endŸ 'Æ‘0½La–€widget“library“originale,“sviluppata“per“il“progetto“Athena,“si“chiama“preÀvÙ edibilmente“Athena“widgetŽ¡‘0library‘ÿY ,–€conosciuta“anche“come“Athena“widgets.“€È“molto“primiti•Àv“a,–€molto“brutta“e“non“€è“intuiti•Àv“a–€per“gliŽ¡‘0standard–€odierni“(per“esempio,“una“barra“di“scorrimento“o“uno“slider“non“si“possono“trascinare:“perŽ¡‘0scorrere–€in“su“o“in“gi€ù“si“dešÀvÌÐono“cliccare“rispetti˜v˜amente“il“pulsante“destro“e“quello“sinistro).“Come“taleŽ¡‘0non–€viene“granch€é“utilizzata“ai“giorni“nostri.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (63) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Proprio–€come“accade“per“i“windoÀw“manager™Ÿ,“ci“sono“molti“toolkit,“progettati“per“scopi“dierenti.“Uno“deiŽ¡‘0primi–€toolkit“€è“il“fšægamoso“Motif,“che“f˜ace•Àv“a–€parte“dell'ambiente“graco“Motif“della“Open“Softw˜areŽ¡‘0FÙ oundation,–€e“consiste“in“un“windoÀw“manager“e“di“un“toolkit.“In“questo“documento“non“tratteremo“laŽ¡‘0storia–€della“OSF‘ÿ37.“Il“toolkit“Motif,“essendo“superiore“ad“Athena“widgets,“diÀvÙ enne“di“larÑðgo“utilizzo“tra“gliŽ¡‘0anni–€'80“e“i“primi“'90.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (64) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Ai–€giorni“nostri“Motif“non“€è“una“scelta“popolare.“Non“€è“softwægare“libero,“e“ci“vuole“denaro“per“ottenereŽ¡‘0una–€licenza“per“sviluppare“con“OSF“Motif“(o•Ù vv“ero–€compilare“i“propri“programmi“con“esso),“bench€é“siŽ¡‘0possa–€distribÌÐuire“liberamente“un“le“binario“linkato“dinamicamente“a“Motif.“FÙ orse“l'applicazione“MotifŽ¡‘0pi€ù–€conosciuta,“ameno“per“gli“utenti“Linux,“€è“Netscape“NaÌÐvigó7ator/Communicator“(precedente“a“Mozilla).ŽŽŸ0‘Hïcolor push Black’ÏÂ5ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹V¢‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ {‘H ýïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (65) cvn H.B /DEST pdfmark endŸ ‘0½Per–€un“po'“Motif“€è“stato“il“solo“toolkit“decente“disponibile,“e“c'€è“molto“softwægare“Motif“in“giro.Ž¤ ‘0Ovviamente–k˜si›k™€è“iniziato“a˜sviluppare“delle“alternatiÀvÙ e,“e˜oggi“ci“sono˜molti“toolkit,“come˜XFÙ orms,“FL‘ÿTK,Ž¡‘0e‘€altri.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (66) cvn H.B /DEST pdfmark endŸ æl‘0Non–€si“sente“molto“parlare“di“Motif“al“momento,“in“particolare“nel“mondo“del“softwægare“libero.“La“ragioneŽ¡‘0€è–€che“ora“ci“sono“alternatiÀvÙ e“migliori,“in“termini“di“licenza,“prestazioni“(Motif“€è“ritenuto“molto“esoso“inŽ¡‘0termini–€di“risorse)“e“funzioni“oerte.ŽŸÊ8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (67) cvn H.B /DEST pdfmark endŸ 5È‘0Uno–€di“questi“toolkit,“il“fægamoso“e“usatissimo“Gtk,“€è“stato“creato“specicamente“per“rimpiazzare“MotifŽ¡‘0nell'ambito–€del“progetto“GIMP“(una“possibile“interpretazione“di“"Gtk"“€è“"GIMP“T‘ÿ37oolkit",“sebbene,“dataŽ¡‘0la–€sua“enorme“diusione,“potrebbe“anche“signicare“"GNU“T‘ÿ37oolkit").“Gtk“adesso“€è“molto“popolare,Ž¡‘0perch€é›rmrelati•Àv“amente–rlleÙ ggero,˜ricco“di˜funzioni,˜estendibile,“ed˜€è“per˜intero˜softwægare“libero.˜La“release˜0.6Ž¡‘0di–€GIMP“include•Àv“a–€nel“changelog“l'aermazione:“"Bloatif“has“been“zorched"“("Bloatif"“€è“un“gioco“diŽ¡‘0parole–€fra“bloat“(pesante)“e“Motif,“"zorched"“deri•Àv“a–€da“"zorch",“che“nel“dialetto“hackæger“ha“un“signicatoŽ¡‘0che–€vÀaria“molto“a“seconda“del“contesto.“Qui“suona“come“"il“pesante“Motif“€è“stato“eclissato"“n.d.T‘ÿB.).Ž¡‘0Questa–€frase“€è“il“testamento“della“pesantezza“di“Motif.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (68) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Un–€altro“toolkit“molto“popolare“oggi“€è“Qt.“Non“era“molto“conosciuto“prima“dell'aÌÐvvÙ ento“del“progettoŽ¡‘0KDE,–€che“utilizza“Qt“per“tutti“gli“elementi“della“sua“GUI.“Di“certo“non“aronteremo“la“questione“dellaŽ¡‘0licenza–€d'uso“di“Qt,“n€é“la“dicotomia“KDE/GNOME.“Abbiamo“parlato“di“pi€ù“di“Gtk“perch€é“la“sua“storiaŽ¡‘0come–€rimpiazzo“di“Motif“€è“interessante;“Qt“viene“menzionato“breÀvÙ emente“perch€é“€è“estremamenteŽ¡‘0popolare.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (69) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Inne,–€un'altra“alternati•Àv“a–€deÙ gna“di“nota“€è“LessT¦gif.“Il“nome“€è“un“gioco“di“parole“con“Motif“(La“"Mo"“diŽ¡‘0Motif–€viene“pronunciata“con“un“suono“che“somiglia“a“"more"“(pi€ù),“quindi“la“parola“LessT¦gif“€è“creataŽ¡‘0sostituendo–€"Mo"“con“"Less"“(meno)“n.d.T‘ÿB.),“LessT¦gif“mira“ad“essere“un'alternati•Àv“a–€(libera“e“compatibileŽ¡‘0dal–€punto“di“vista“dell'interfægaccia“di“programmazione)“a“Motif.“Non“€è“chiaro“no“a“che“punto“LessT¦gifŽ¡‘0miri–€ad“essere“usato“per“progetti“a“s€é,“piuttosto“che“per“aiutare“coloro“che“hanno“gi€à“del“codice“scrittoŽ¡‘0utilizzando–€Motif“a“passare“immediatamente“ad“un'alternati•Àv“a–€libera“mentre“pianicano“il“passaggio“adŽ¡‘0un–€altro“toolkit.ŽŸY”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïJps:SDict begin [ /View [/XYZ H.V] /Dest (SO-FAR) cvn H.B /DEST pdfmark endŸ-Rø¿7.–ͽCosa“abbiamo“noraŽŸ7Eïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (72) cvn H.B /DEST pdfmark endŸ È»‘0½A–€questo“punto“abbiamo“un'idea“dell'architettura“client-servšÙ er“di“X,“do˜v˜e“i“client“sono“i“nostriŽ¡‘0programmi–€applicatišÀvi.“Con“questo“sistema“graco“client-servÙ er“possiamo“usare“parecchi“windo˜wŽ¡‘0manager™Ÿ,–€che“gestiscono“tutto“quello“che“viene“visualizzato“sullo“schermo;“abbiamo“anche“le“nostreŽ¡‘0applicazioni–€client,“che“sono“ci€ò“che“comunemente“usiamo“per“la•ÌÐv“orare.–€T‘ÿ37ali“applicazioni“possono“essereŽ¡‘0state–€programmate“utilizzando“molti“toolkit“diÀvÙ ersi.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (73) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Qui–€le“cose“cominciano“a“fægarsi“complicate.“Ogni“windošÀw“manager“ha“un“approccio“di˜vÙ erso“alla“gestioneŽ¡‘0dei–€client;“il“comportamento“e“le“decorazioni“vÀariano.“Inoltre,“anche“i“client“possono“comportarsi“edŽ¡‘0essere–€visualizzati“in“maniera“diÀvÙ ersa“tra“loro“a“seconda“del“toolkit“usato.“Poich€é“non“c'€è“niente“che“dicaŽ¡‘0che–€gli“sviluppatori“debbano“usare“lo“stesso“toolkit“per“ogni“loro“applicazione,“€è“perfettamente“plausibileŽŽŸ0‘Hïcolor push Black’ÎÊ@Â6ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹k‚‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýš‘x½che–€un“utente“stia“la•ÌÐv“orando–€con“diciamo“sei“dišÀvÙ erse“applicazioni,“ognuna“scritta“con“un“toolkit“di˜vÙ erso,“eŽ¤ ‘xche–€tutte“si“comportino“e“všÙ engó7ano“visualizzate“diÀv˜ersamente.“Ci€ò“crea“confusione“perch€é“ilŽ¡‘xcomportamento–€delle“applicazioni“non“€è“consistente.“Se“si“€è“mai“usato“un“programma“scritto“con“AthenaŽ¡‘xwidgets–mási“noter€à“che“non“€è‘mâmolto“simile“a“qualunque“altra“cosa“scritta“con“Gtk.“E‘mÝsi“ricorder€à“la“dicolt€àŽ¡‘xdi–€usare“tutte“queste“applicazioni“con“un“look“&“feel“dišÀvÙ erso.“Questi“difetti“annullano“il“v˜antaggio“diŽ¡‘xaÌÐvÙ ere–€a“disposizione“un'interfægaccia“graca.Ž‘H©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (74) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Da–€un“punto“di“vista“pi€ù“tecnico,“usare“molti“toolkit“diÀvÙ ersi“aumenta“l'utilizzo“delle“risorse.“I“sistemiŽ¡‘0operatišÀvi–€moderni“supportano“il“concetto“di“librerie“condi˜vise“dinamicamente“(dynamic“shared“libraries).Ž¡‘0Ci€ò–€signica“che“se“ho“due“o“tre“applicazioni“che“usano“Gtk“come“libreria“linkata“dinamicamente,“quelleŽ¡‘0due–xÐo“tre›xÏapplicazioni“condiÀvideranno“la“stessa˜copia“di“Gtk,“sia“sul˜disco“che“in“memoria:˜non“c'€è“sprecoŽ¡‘0di–€risorse.“Se“in™ŸvÙ ece“ho“un'applicazione“Gtk,“un'applicazione“Qt,“qualcosa“che“usa“Athena,“unŽ¡‘0programma–tbasato“su“Motif“come›tNetscape,“un“programma“che“usa“FL‘ÿTK‘te“un˜altro“che“usa“XFÙ orms,“stoŽ¡‘0caricando–€sei“diÀvÙ erse“librerie“in“memoria,“una“per“ciascun“toolkit.“Bisogna“tenere“presente“che“tutti“iŽ¡‘0toolkit–€forniscono“in“deniti•Àv“a–€le“stesse“funzionalit€à.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (75) cvn H.B /DEST pdfmark endŸ æl‘0Ci–€sono“altri“problemi.“Il“modo“in“cui“si“lanciano“i“programmi“všÀaria“da“un“windo˜w“manager“all'altro.Ž¡‘0Alcuni–€hanno“un“gradeÀvÌÐole“menu“per“lanciare“le“applicazioni,“altri“no“e“si“aspettano“che“l'utente“apra“unŽ¡‘0box–€per“lanciare“comandi,“o“usi“una“determinata“combinazione“di“tasti,“o“ancora“apra“un“terminale“xtermŽ¡‘0e–€lanci“tutte“le“applicazioni“richiamandole“da“rigó7a“di“comando.“Ancora“una“vÌÐolta“non“ci“sono“standard“eŽ¡‘0le–€cose“si“fæganno“complicate.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (76) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Inne–uBci›uCsono“alcune“caratteristiche˜utili“che“ci˜aspettiamo“da“una˜GUI‘u?e“che˜n“qui“non˜abbiamo“trattato.Ž¡‘0Cose–€come“un'utility“di“congurazione“(o“"pannello“di“controllo")“o“un“le“manager“graco,“cheŽ¡‘0certamente–€possono“essere“scritte“come“applicazioni“client.“E“in“tipico“stile“free“softwægare“ci“sonoŽ¡‘0centinaia–€di“le“manager“e“centinaia“di“programmi“per“la“congurazione“del“sistema,“cheŽ¡‘0preÀvšÙ edibilmente–€apportano“ulteriore“confusione“al“gi€à“dicile“compito“di“aÌÐv˜ere“a“che“fægare“con“moltiŽ¡‘0componenti–€softwægare“diÀvÙ ersi.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïXps:SDict begin [ /View [/XYZ H.V] /Dest (DESKTOP-ENVIRONMENTS) cvn H.B /DEST pdfmark endŸ+BT¿8.–ͽP‘ÿ{Rer“f§ŒorXstuna“esistono“gli“ambienti“desktopŽŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (79) cvn H.B /DEST pdfmark endŸ 'Æ‘0½Ecco›€do•Ù v“e˜si˜inserisce˜il˜concetto˜di˜ambiente˜desktop.˜L‘ÿ'idea˜€è˜che˜un˜ambiente˜desktop˜fornisce˜unŽ¡‘0insieme–€di“strumenti“e“linee“guida“per“standardizzare“tutto“ci€ò“che“abbiamo“menzionato“in“modo“daŽ¡‘0minimizzare–€i“problemi“citati.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (80) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Il–€concetto“di“ambiente“desktop“€è“nuoÙ všÌÐo“per“chi“si“a˜vvicina“a“Linux“per“la“prima“v˜olta,“poich€é“altriŽ¡‘0sistemi–€operatišÀvi“(come“W™Ÿindo˜ws“e“Mac“OS)“lo“danno“per“scontato.“Per“esempio“MacOS,“che“€è“una“delleŽ¡‘0interfægacce–€grache“pi€ù“antiche,“fornisce“un“look“&“feel“molto“consistente“attraÌÐvÙ erso“tutta“la“sessione“diŽ¡‘0utilizzo–€del“sistema.“Il“sistema“operatiÀvÌÐo“fornisce“molte“delle“caratteristiche“utili“menzionate:“un“leŽ¡‘0manager–€predenito“(il“nder),“un“pannello“di“controllo“che“gestisce“l'intero“sistema,“un“singolo“toolkitŽ¡‘0che–€deÀvšÙ e“essere“usato“da“tutte“le“applicazioni“(in“modo“che“tutte“v˜engó7ano“visualizzate“allo“stesso“modo).Ž¡‘0Le–€nestre“delle“applicazioni“sono“gestite“dal“sistema“(per“essere“precisi“dal“windoÀw“manager).“E“inneŽ¡‘0ci–€sono“delle“linee“guida“che“dicono“agli“sviluppatori“come“si“doÙ vrebbero“comportare“le“proprieŽŽŸ0‘Hïcolor push Black’ΡHÂ7ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹€Ö‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýš‘x½applicazioni,–€raccomandano“disposizione“e“visualizzazione“dei“componenti,“e“suggerisconoŽ¤ ‘xcomportamenti–€consistenti“con“le“altre“applicazioni“del“sistema.“TŒÏutto“ci€ò“per“ottenere“una“maggioreŽ¡‘xuniformit€à–€e“fægacilit€à“d'uso.Ž‘HŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (81) cvn H.B /DEST pdfmark endŸ æl‘0A–€questo“punto“sorÑðge“una“domanda:“perch€é“gli“sviluppatori“di“X“lo“hanno“progettato“in“maniera“cos€ìŽ¡‘0particolare?–€Ha“senso“chiederselo,“perch€è“si“sarebbero“eÀvitati“tutti“i“problemi“menzionati“in“precedenza.Ž¡‘0La–€risposta“€è“che“nel“progettare“X“i“suoi“creatori“hanno“scelto“di“renderlo“il“pi€ù“possibile“essibile.Ž¡‘0T‘ÿ37ornando–€al“paradigma“politica/meccanismo,“MacOS“fornisce“principalmente“politiche.“I“meccanismi“ciŽ¡‘0sono,–€solo“che“gli“sviluppatori“non“vÙ engono“incoraggiati“ad“occuparsene.“Il“risultato“€è“che“si“perde“inŽ¡‘0vÙ ersatilit€à:–€se“non“mi“piace“il“modo“in“cui“MacOS“gestisce“le“nestre“o“il“toolkit“non“ha“le“funzioni“di“cuiŽ¡‘0ho–€bisogno,“non“posso“fægarci“niente.“Ci€ò“non“accade“sotto“X,“bench€é“come“visto“il“prezzo“della“essibilit€àŽ¡‘0sia–€una“maggiore“complessit€à.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (82) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Sotto–€Linux/Unix“e“X“si“riduce“tutto“a“mettersi“d'accordo“su“qualcosa“e“continuare“ad“usarlo.“PrendiamoŽ¡‘0ad–€esempio“KDE.“KDE“include“un“solo“windoÀw“manager“(kwm),“che“gestisce“e“controlla“ilŽ¡‘0comportamento–€delle“nostre“nestre.“Raccomanda“l'utilizzo“di“un“certo“toolkit“graco“(Qt),“in“modo“cheŽ¡‘0ogni–€applicazione“KDE“vÙ engó7a“visualizzata“allo“stesso“modo“ntanto“che“essa“resta“sullo“schermo.“KDEŽ¡‘0estende–€ulteriormente“Qt“fornendo“un“insieme“di“librerie“speciche“per“l'ambiente“(kdelibs)“che“servÌÐonoŽ¡‘0per–€esešÙ guire“operazioni“frequenti“come“creare“menu,“nestre“"about",“barre“de˜gli“strumenti,“comunicareŽ¡‘0tra–€programmi“diÀvÙ ersi,“stampare,“selezionare“le“ecc.“Queste“rendono“il“la•ÌÐv“oro–€del“programmatore“pi€ùŽ¡‘0fægacile–€e“standardizzano“il“modo“in“cui“si“comportano“queste“funzioni“speciali.“KDE“fornisce“inoltre“unŽ¡‘0insieme–€di“linee“guida“per“la“progettazione“ai“programmatori,“con“l'intenzione“di“rendere“uniforme“ilŽ¡‘0comportamento–€e“gli“aspetti“visiÀvi“delle“applicazioni“di“coloro“che“le“seÙ guono.“Inne,“KDE“fornisce,Ž¡‘0come–€parte“dell'ambiente,“un“pannello“di“lancio“(kpanel),“un“le“manager“standard“(che“€è“al“momentoŽ¡‘0K¦gonqueror)–€e“un'utility“di“congurazione“(pannello“di“controllo)“da“cui“si“possono“controllare“moltiŽ¡‘0aspetti–€del“proprio“sistema,“da“impostazioni“come“lo“sfondo“del“desktop“e“il“colore“della“barra“del“titoloŽ¡‘0delle–€nestre“alla“congurazione“dell'hardwægare.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (83) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Il–€pannello“KDE“€è“l'equi•Àv“alente–€della“barra“delle“applicazioni“di“MS“W™ŸindoÀws.“FÙ ornisce“un“puntoŽ¡‘0d'accesso–€centrale“da“cui“lanciare“applicazioni,“e“permette“anche“a“piccole“applicazioni,“chiamateŽ¡‘0"applet",–€di“vÙ enire“visualizzate“al“suo“interno.“Ci€ò“include“funzionalit€à“come“il“piccolo“orologio“senza“ilŽ¡‘0quale–€la“maggior“parte“dešÙ gli“utenti“non“pu€ò“viÀv˜ere.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïaps:SDict begin [ /View [/XYZ H.V] /Dest (SPECIFIC-DESKTOP-ENVIRONMENTS) cvn H.B /DEST pdfmark endŸ+BT¿9.–ͽAmbienti“desktop“speciciŽŸ“­ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (86) cvn H.B /DEST pdfmark endŸ lS‘0½Abbiamo–€usato“KDE“come“esemio,“ma“non“€è“assolutamente“il“primo“ambiente“desktop“per“i“sistemiŽ¡‘0Unix.–€FÙ orse“uno“dei“primi“€è“CDE“(Common“Desktop“En™Ÿvironment),“un“altro“parente“di“OSF‘ÿ37.“A“quantoŽ¡‘0dice–€la“F‘ÿBA‘ÿs8Q“di“CDE:“"Common“Destktop“En™Ÿvironment“€è“un“desktop“standard“per“Unix,“che“fornisce“iŽ¡‘0suoi–€servizi“all'utente“nale,“all'amministratore“di“sistema“e“agli“sviluppatori“di“applicazioni“su“molteŽ¡‘0piattaforme."–€La“chiašÌÐvÙ e“qui“€è“la“consistenza.“TŒÏutta˜via“CDE“non“era“cos€ì“fægacile“e“ricco“di“caratteristicheŽ¡‘0come–€in™ŸvšÙ ece“aÌÐvrebbe“do˜vuto.“Insieme“a“Motif,“CDE“€è“praticamento“scomparso“dal“mondo“del“softwægareŽ¡‘0libero,–€essendo“stato“rimpiazzato“da“alternatiÀvÙ e“migliori.ŽŽŸ0‘Hïcolor push Black’ÏÂ8ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹ –8‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïJps:SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ {‘H ýïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (87) cvn H.B /DEST pdfmark endŸ ‘0½Sotto–€Linux“gli“ambienti“desktop“pi€ù“popolari“sono“KDE“e“GNOME,“ma“non“sono“i“soli.“Una“vÙ eloceŽ¤ ‘0ricerca–€su“Internet“riÀvÙ eler€à“una“mezza“dozzina“di“ambienti“desktop:“GNUStep,“R•™ŸO“X,–€GTK+XFce,“UDE,Ž¡‘0per–€nominarne“alcuni.“TŒÏutti“forniscono“le“funzionalit€à“di“base“che“abbiamo“menzionato“in“precedenza.Ž¡‘0GNOME–€e“KDE“hanno“aÌÐvuto“il“supporto“maggiore“sia“dalla“comunit€à“che“dall'industria,“cosicch€é“essiŽ¡‘0sono–€i“pi€ù“aÌÐvÀanzati“e“mettono“a“disposizione“dell'utente“e“delle“applicazioni“una“grande“quantit€à“diŽ¡‘0servizi.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (88) cvn H.B /DEST pdfmark endŸ æl‘0Abbiamo–€menzionato“KDE“e“i“componenti“che“forniscono“servizi“specici“sotto“tale“ambiente.“Da“bÌÐuonŽ¡‘0ambiente–€desktop,“GNOME“€è“simile“sotto“questo“punto“di“vista.“La“dierenza“pi€ù“oÙ vvia“€è“che“GNOMEŽ¡‘0non–€detta“l'utilizzo“di“alcun“windoÀw“manager“(nel“modo“in“cui“KDE“fæga“con“kwm).“Il“progetto“GNOMEŽ¡‘0ha–€sempre“cercato“di“rimanere“agnostico“rispetto“alla“questione“dei“windoÀw“manager™Ÿ,“riconoscendo“cheŽ¡‘0molti–€utenti“rimangono“molto“aezionati“al“proprio“windoÀw“manager“preferito,“e“che“forzarli“ad“usareŽ¡‘0qualcosa–€che“gestisce“le“nestre“in“modo“diÀvšÙ erso“li“allontanerebbe.“In“principio“GNOME“fæga•ÌÐv“ore˜ggia“vÀa‘€ilŽ¡‘0windošÀw–€manager“Enlightenment“e“al“momento“il“loro“windo˜w“manager“preferito“€è“SaÙ wsh,“ma“ilŽ¡‘0pannello–€di“controllo“di“GNOME“ha“sempre“aÌÐvuto“una“sezione“che“permette•Àv“a–€di“selezionare“un“windoÀwŽ¡‘0manager‘ÿs8.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (89) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Oltre–€a“ci€ò,“GNOME“usa“il“toolkit“Gtk“e“fornisce“un“insieme“di“funzioni“di“alto“liÀvšÙ ello“attraÌÐv˜ersoŽ¡‘0l'insieme–€di“librerie“gnome-libs.“GNOME“ha“il“suo“insieme“di“linee“guida“per“la“programmazione“perŽ¡‘0consentire–€un“comportamento“consistente“tra“tutte“le“applicazioni“supportate,“fornisce“un“pannelloŽ¡‘0(chiamato–€semplicemente“"pannello"),“un“le“manager“(gmc,“bench€é“probabilmente“sar€à“sostituito“daŽ¡‘0Nautilus),–€e“un“pannello“di“controllo“(il“centro“di“controllo“gnome).ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïPps:SDict begin [ /View [/XYZ H.V] /Dest (FIT-TOGETHER) cvn H.B /DEST pdfmark endŸ+BT¿10.–ͽCome“si“integra“il“tuttoŽŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (92) cvn H.B /DEST pdfmark endŸ 'Æ‘0½Ogni–€utente“€è“libero“di“usare“l'ambiente“desktop“che“preferisce.“Il“risultato“nale“€è“che“se“si“usa“unŽ¡‘0sistema–€con“solo“KDE“o“solo“GNOME,“allora“il“look“&“feel“dell'ambiente“€è“molto“consistente“e“tutte“leŽ¡‘0applicazioni–€interagiscono“molto“bene“tra“loro.“Ci€ò“semplicemente“non“era“possibile“quando“leŽ¡‘0applicazioni–€erano“scritte“con“una“miriade“di“diÀvÙ ersi“toolkit.“La“moltitudine“di“strumenti“forniti“daiŽ¡‘0moderni–€ambienti“desktop“sotto“Linux“permette“altri“simpatici“trucchetti,“come“architetture“a“componentiŽ¡‘0(KDE–€ha“Kparts“e“GNOME“usa“il“frameÀwšægork“di“componenti“Bonobo),“che“f˜anno“s€ì“che“si“possano“creareŽ¡‘0cose–€come“documenti“testuali“che“contengono“un“foglio“di“calcolo“o“un“graco,“strumenti“di“stampaŽ¡‘0globali–€simili“ai“contesti“di“stampa“che“si“troÙ všÀano“sotto“W™Ÿindo˜ws,“e“tutte“cose“che“rendono“possibile“adŽ¡‘0utenti–€pi€ù“aÌÐvÀanzati“di“fægar“interagire“e“collaborare“le“applicazioni“in“modi“interessanti.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (93) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Secondo–€la“concezione“Unix“di“"ambiente“desktop"“si“possono“aÌÐvÙ ere“programmi“di“un“ambiente“cheŽ¡‘0girano–€in“un“altro.“€È“concepibile“che“io“possa“usare“K¦gonqueror“sotto“GNOME,“o“Gnumeric“sotto“KDE.Ž¡‘0Dopo–rktutto“sono“solo›rlprogrammi.“Ovviamente“l'idea“di“ogni“ambiente“desktop“€è˜la“consistenza,“quindi“haŽ¡‘0senso–€usare“solo“applicazioni“progettate“per“il“proprio“particolare“ambiente;“tuttaÌÐvia“se“l'utente“vuoleŽ¡‘0aÌÐvÙ ere–€a“che“fægare“con“un'applicazione“che“sembra“"fuori“luogo"“e“non“interagisce“bene“con“il“restoŽ¡‘0dell'ambiente,–€liberissimo“di“fægarlo.ŽŸ±èïps:SDict begin H.S endïps:SDict begin 13 H.A endïIps:SDict begin [ /View [/XYZ H.V] /Dest (A-DAY) cvn H.B /DEST pdfmark endŽŸ0‘Hïcolor push Black’ÏÂ9ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹ ªÝ‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïKps:SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark endï color popŸüfdŸ÷™œïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (106) cvn H.B /DEST pdfmark endŸfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýœ›‘H¿11.–ͽUna“giornata“nei“panni“di“un“sistema“XŽ‘HŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (96) cvn H.B /DEST pdfmark endŸ 'Æ‘0½Questo–€€è“un“esempio“di“come“procede“una“tipica“sessione“GNOME“in“un“ambiente“desktop“moderno“suŽ¤ ‘0un–€sistema“Linux.“Le“cose“funzionano“in“maniera“simile“ad“altri“ambienti,“fermo“restando“che“il“sistemaŽ¡‘0alla–€base“sia“X.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (97) cvn H.B /DEST pdfmark endŸ æl‘0Quando–€un“sistema“Linux“fæga“partire“X,“il“servÙ er“X“si“ašÌÐvvia“e“inizializza“il“dispositiÀv˜o“graco,“aspettandoŽ¡‘0richieste–€dai“client.“Per“primo“parte“un“programma“chiamato“gnome-session“e“inizializza“la“sessione“diŽ¡‘0la•ÌÐv“oro.–€Una“sessione“include“cose“come“applicazioni“usate“di“frequente,“la“loro“posizione“su“schermo“eŽ¡‘0cose–€simili.“Poi“viene“aÌÐvviato“il“pannello.“Il“pannello“appare“in“fondo“(di“solito)“ed“€è“una“specie“diŽ¡‘0cruscotto–lŸper“un“ambiente›l a“nestre.“Permetter€à“di“lanciare“programmi,“vÙ edere“quali˜sono“in“esecuzione“eŽ¡‘0di–€controllare“l'ambiente“di“la•ÌÐv“oro.–€Poi“si“aÌÐvvia“il“windoÀw“manager‘ÿs8.“V‘ÿfgisto“che“stiamo“usando“GNOMEŽ¡‘0potrebbe–€essere“uno“dei“tanti,“ma“in“questo“caso“assumiamo“che“sia“SaÙ wsh.“Inne“viene“aÌÐvviato“il“leŽ¡‘0manager–€(gmc“o“Nautilus).“Il“le“manager“gestisce“la“presentazione“delle“icone“del“desktop.“A“questoŽ¡‘0punto–€l'ambiente“GNOME“€è“pronto.Ž©*8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (98) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Fin–€qui“tutti“i“programmi“che“sono“stati“aÌÐvviati“sono“client,“che“si“connettono“al“servÙ er“X.“Nel“casoŽ¡‘0specico–€il“servÙ er“X“risiede“sullo“stesso“computer™Ÿ,“ma“come“abbiamo“visto“prima“ci€ò“non“€è“necessario.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïFps:SDict begin [ /View [/XYZ H.V] /Dest (99) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Apriamo–€un“terminale“xterm“per“scriÀvÙ ere“qualche“comando.“Quando“clicchiamo“sull'icona“xterm,“ilŽ¡‘0pannello–j>fæga“partire“l'applicazione›j=xterm.“€È‘j8un'altra“applicazione“client“X,“quindi“essa˜si“aÌÐvvia,“si“connetteŽ¡‘0al–pùservšÙ er“X‘põe“comincia“a“visualizzare“i“suoi“elementi.‘pøQuando“il“serv˜er“X‘põasse˜gna“lo“spazio“su“schermo“adŽ¡‘0xterm,–€fæga“in“modo“che“il“windoÀw“manager“(SaÙ wsh)“decori“la“nestra“con“una“bella“barra“del“titolo“eŽ¡‘0decida›€do•Ù v“e˜essa˜debba˜apparire˜sullo˜schermo.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (100) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Ora–€naÌÐvighiamo“un“po'.“Clicchiamo“sull'icona“di“Netscape“sul“pannello“e“parte“un“broÀwser‘ÿs8.“BisognaŽ¡‘0ricordare–€che“questo“broÀwser“non“usa“le“librerie“di“GNOME“n€é“il“toolkit“Gtk.“Sembra“un“po'“fuoriŽ¡‘0luogo...–€inoltre“non“interagisce“in“maniera“molto“uida“con“il“resto“dell'ambiente.“Ora“apriamo“il“menuŽ¡‘0"File".–€Motif“fornisce“i“controlli“che“appaiono“sullo“schermo,“quindi“€è“compito“della“libreria“di“MotifŽ¡‘0quello–€di“usare“la“libreria“Xlib“per“diseÙ gnare“su“schermo“i“componenti“necessari“a“visualizzare“il“menu“eŽ¡‘0fægare–€in“modo“che“si“possa“selezionare“l'opzione“"eÙ xit"“per“chiudere“l'applicazione.Ž¦ïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (101) cvn H.B /DEST pdfmark endŸ ÕÈ‘0Ora–€apriamo“un“foglio“di“calcolo“Gnumeric“e“incominciamo“a“la•ÌÐv“orarci.–€Ad“un“certo“punto“abbiamoŽ¡‘0bisogno–€di“usare“xterm,“quindi“ci“clicchiamo“sopra.“SašÙ wsh“v˜ede“questa“azione“ed“essendo“incaricatoŽ¡‘0della–€gestione“delle“nestre“porta“xterm“in“primo“piano“e“gli“concede“il“focus“di“modo“che“ci“si“possaŽ¡‘0la•ÌÐv“orare.ŽŸ”ïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (102) cvn H.B /DEST pdfmark endŸ æl‘0Dopodich€é,–€torniamo“al“nostro“foglio“di“calcolo;“ašÌÐvÙ endo“nito“di“modicarlo“v˜orremmo“stampare“ilŽ¡‘0nostro–€documento.“Gnumeric“€è“un'applicazione“GNOME,“quindi“pu€ò“usare“gli“strumenti“fornitiŽ¡‘0dall'ambiente–€GNOME.“Quando“stampiamo“Gnumeric“richiama“la“libreria“gnome-print,“che“comunicaŽ¡‘0eetti•Àv“amente–€con“la“stampante“e“produce“la“copia“su“carta“di“cui“ho“bisogno.ŽŸj8ïps:SDict begin H.S endïps:SDict begin 13 H.A endïMps:SDict begin [ /View [/XYZ H.V] /Dest (COPYRIGHT) cvn H.B /DEST pdfmark endŽŸ0‘Hïcolor push Black’ÊÂ10ŽŽŽŽŽŽŽ’Ôï color popŽŽŒ‹ ¿Ö‘·ºâŸ·ºâïþps:SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end ç ýU‘Hïcolor push Blackïcolor push gray 0ïps:SDict begin H.S endïcolor push gray 0ï color popŽïps:SDict begin H.R endïKps:SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark endï color popŸüfd’ @yÂX–€W‘ÿs8indow“System“Ar•¡GcšÙ hitectur“e–€Overvie˜w“HO‘ÿÿWTÑðOŽŽŽŽŽŽŽ’Ôï color popŽŽ { ýœ›‘H¿12.–ͽCop½°yright“and“LicenseŽ‘HŸØ:ïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (105) cvn H.B /DEST pdfmark endŸ 'Æ‘0½Copægyright–€(c)“2001“by“Daniel“ManriqueŽŸ!‘0Permission–€is“granted“to“copægy‘ÿY ,“distribÌÐute“and/or“modify“this“document“under“the“terms“of“the“ÂGNU“F‘ÿs8r¡GeeŽ¤ ‘0Documentation–€License“½(http://www‘ÿY .gnu.orÑðg/copægyleft/fdl.html),“V‘þã×ersion“1.1“or“anšÙ y“later“v˜ersionŽ¡‘0published–€by“the“Free“Softwægare“FšÙ oundation“with“no“In™ŸvÀariant“Sections,“no“Front-Co˜v˜er“T‘ÿLÐe˜xts,“and“noŽ¡‘0Back-Co•Ù v“er›€T‘ÿLÐe“xts.˜A˜cop•ægy˜of˜the˜license˜can˜be˜found˜ïps:SDict begin H.S endïps:SDict begin 13 H.A endïGps:SDict begin [ /View [/XYZ H.V] /Dest (109) cvn H.B /DEST pdfmark endhere˜(http://www‘ÿY .gnu.orÑðg/cop“yleft/fdl.html).ŽŽŸ0‘Hïcolor push Black’ÊÂ11ŽŽŽŽŽŽŽ’Ôï color popŽŽŒøÔýƒ’À;è¢T~Óºâ óϯ8 ptmri8tóáÚŽ phvr8tóú phvb8tóúG® phvb8tóúâ phvb8tó?Á|‰ ptmr8tùÛ,ßßßß