5.2 ÁA¸Ñ X ªº¥@¬É

²Ä¤@¦¸±µÄ² X ªº¤H¡A¤j·§³£·|¦³¨Ç¾_¾Ù¡A¤×¨ä¬O¼ô±x¨ä¥L GUI ¤¶­±(¹³¬O Microsoft® Windows® ©Î Mac OS®)ªº¨Ï¥ÎªÌ¡C

ÁöµM X ¦U¤¸¥óªº©Ò¦³²Ó¸`¤Î¹B§@¤è¦¡¡A¨Ã¤£¬O¥²¶·­nª¾¹Dªº¡C ¦ý¹ï¥¦­Ì¦³¨Ç°ò¥»·§©À·|§ó®e©ö¤W¤â¡C

5.2.1 ¬°¦ó¥s°µ X¡H

X ¨Ã«D UNIX® ¤W²Ä¤@®Mµøµ¡¨t²Î¡A¦ý¥¦«o¬O³Ì¼s¬°¬y¶Ç¹B¥Î¡C ­ì¥»ªº X ¬ãµo¹Î¶¤¦b¬ãµo X ¤§«e¦³¶}µo¥t¤@®Mµøµ¡¨t²Î¡C ¨º®M¨t²Î¥s°µ ¡§W¡¨(¨ú ¡§Window¡¨ ªº²Ä¤@­Ó¦r)¡C ¦Ó X «h¬O W ¤§«áªº¤U¤@­Óù°¨¦r¥À¡C

X ¥ç³QºÙ¤§¬° ¡§X¡¨¡B¡§X Window System¡¨¡B ¡§X11¡¨¡A¥H¤Î¨ä¥L¤@¨Çµü·J¡C ¨Ï¥Î ¡§X Windows¡¨ ³o¦r²´¨ÓºÙ©I X11¡A¥i¯à·|Åý¦³¨Ç¤H¤£²n¡F³o³¡¤À²Ó¸`¥i°Ñ¾\ X(7) »¡©ú¡C

5.2.2 X ªº Client/Server ¬[ºc

X ¤@¶}©l¬O³]­p¬°ºô¸ô¬[ºcÀô¹Ò¡A¨Ã±Ä¥Î ¡§client-server¡¨ ¬[ºc¡C

¦b X ¬[ºc¤U¡A ¡§X server¡¨ ¬O¦b¦³Áä½L¡B¿Ã¹õ¡B·Æ¹«ªº¹q¸£¤W¹B§@¡C ¦Ó server ³¡¥÷«h¬O­t³d¹³¬OÅã¥Ü³¡¥÷ªººÞ²z¡B ³B²z¨Ó¦ÛÁä½L¡B·Æ¹«¤Î¨ä¥L³]³Æ(¤ñ¤è¹³¬O¥Hø¹ÏªO¨Ó¿é¤J¡B ©ÎªÌ¬OÅã¥Ü¨ì§ë¼v¾÷)ªº¿é¤Jµ¥µ¥¡A ¨C­Ó X µ{¦¡(¹³¬O XTerm¡A©Î Netscape®)³£¬O ¡§client¡¨¡C client ·|¶Ç°T®§¨ì server ¤W¡A¤ñ¦p¡G¡§Please draw a window at these coordinates¡¨¡A±µµÛ server ·|¶Ç¦^°T®§¡A¤ñ¦p¡G ¡§The user just clicked on the OK button¡¨¡C

¦b®a®x©Î¤p¿ì¤½«ÇÀô¹Ò¡A³q±` X server ¸ò X client ³£¬O¦b¦P¤@¥x¹q¸£¤W°õ¦æªº¡C µM¦Ó¡A¤]¥i¥H¦b¤ñ¸ûÄꪺ®à¾÷¤W°õ¦æ X server¡A ¨Ã¦b¤ñ¸û±j¡B¤ñ¸û¶Qªº¹q¸£¤W¶] X µ{¦¡(client)¨Ó°µ¨Æ±¡¡C ¦b³oºØ³õ´º¡AX client »P server ¤§¶¡ªº·¾³q´N»Ý³z¹Lºô¸ô¨Ó¶i¦æ¡C

³oÂI¥i¯à·|Åý¦³¨Ç¤H²£¥Í§x´b¡A¦]¬° X ³N»y»P¥L­Ì­ì¥»ªº»{ª¾­è¦n¬Û¤Ï¡C ¥L­Ì­ì¥»¥H¬° ¡§X server¡¨ ¬O­n¦b³Ì±j®«ªº¾÷¾¹¤W¶]¤~¦æ¡A¦Ó ¡§X client¡¨ «h¬O¦b¥L­Ì®à¾÷¤W­±¶]¡C ¹ê»Ú¤W«o¤£¬O³o¼Ë¡C

¦³ÂI¬Û·í­«­n¡A½Ð°O¦í X server ¬O¦b¦³±µ¿Ã¹õ¡BÁä½Lªº¾÷¾¹¤W¹B§@¡A ¦Ó X client «h¬OÅã¥Ü³o¨Çµøµ¡ªºµ{¦¡¡C

¨ó©w(protocol)¤º¨ÃµL±j¨î³W©w client ¥H¤Î server ¨âÃä¾÷¾¹³£±o¬O¦P¤@§@·~¨t²Î¡A©ÎªÌ±o¬O¦P«¬¾÷¾¹¤~¥i¥H¡C ´«¥y¸Ü»¡¡A¤]¥i¥H¦b Microsoft Windows ©ÎÄ«ªG¹q¸£(Apple)ªº Mac OS ¤W¶] X server¡A¦Ó¥B¥i¥H³z¹L³\¦h§K¶O©Î°Ó·~³nÅé§¹¦¨³o¨Ç¦w¸Ë¡B³]©w¡C

5.2.3 The Window Manager

X ³]­p­õ¾Ç»P UNIX ³]­p­õ¾Ç¬Û·íÃþ¦ü¡A³£¬O ¡§tools, not policy¡¨¡C ¤]´N¬O»¡¡AX ¤£·|¸Õ¹Ï±j¨î³W©w¬Y¥ô°ÈÀ³¸Ó­n¦p¦ó§¹¦¨¡A¦Ó¬O¥u´£¨Ñ¨Ï¥ÎªÌ¤@¨Ç¤u¨ã¡A ¦Ü©ó¦p¦ó¹B¥Î³o¨Ç¤u¨ã¡A«h¬O¨Ï¥ÎªÌ¥»¨­ªº¨Æ¤F¡C

X ©µÄò³o­õ¾Ç¡A¥¦¨Ã¤£³W©w¡G¿Ã¹õ¤Wªºµøµ¡¸Óªø¤°»ò¼Ë¡B­n¦p¦ó²¾°Ê·Æ¹««ü¼Ð¡B ¸Ó¥Î¤°»ò²Õ¦XÁä¨Ó¤Á´«¦Uµøµ¡(¤ñ¦p¡G¦b Microsoft Windows ªº Alt+TabÁä)¡B¦Uµøµ¡ªº¼ÐÃD¦Cªø¬Û¡A¥H¤Î¬O§_¸Ó¦³Ãö³¬¶sµ¥µ¥¡C

¨Æ¹ê¤W¡AX §â³o³¡¤À¥æµ¹©Ò¿×ªº ¡§Window Manager¡¨ ¨ÓºÞ²z¡C ¦³¤@°ï window manager µ{¦¡¡A¹³¬O: AfterStep ¡BBlackbox¡Bctwm ¡BEnlightenment¡B fvwm¡BSawfish¡B twm¡B Window Maker µ¥µ¥¡C¨C¤@ºØ window manager ³£´£¨Ñ¤£¦Pªº¨Ï¥Î¸gÅç¡F ¦³¨ÇÁÙ¥i¨Ï¥Î ¡§virtual desktops(µêÀÀ®à­±) ¡¨¡F¦³¨Ç«h¥i¦Û­q²Õ¦XÁä¨ÓºÞ²z®à­±¡F¦³¨Ç·|¦³ ¡§Start(¶}©l) ¡¨¶s©Î¨ä¥LÃþ¦ü³]­p¡F¦³¨Ç«h¬O ¡§¥i§ó´«§G´º¥DÃD¡¨¡A ¥i¦Û¦æ¦w¸Ë·sªº§G´º¥DÃD¥H§ó´«¥~Æ[¡C ³o¨Ç¸ò¨ä¥Lªº window manager ¦b Ports Collection ¤ºªº x11-wm ¥Ø¿ý¤º³£¦³¡C

¦¹¥~¡AKDE ¤Î GNOME ®à­±Àô¹Ò«h¦³¨ä¦ÛÄݨþã¦X§¹¾ãªº window manager¡C

¨C­Ó window manager ¤]¦U¦³¨ä¤£¦Pªº³]©w¾÷¨î¡F¦³¨Ç»Ý¤â°Ê¼g³]©wÀÉ¡A ¦Ó¦³ªº«h¥i³z¹L GUI ¤u¨ã¨Ó§¹¦¨¤j³¡¤Àªº³]©w¡CÁ|­Ó¨Ò¤l¡G Sawfish ´N¦³¥H Lisp »y¨¥¼gªº³]©wÀÉ¡C

Focus Policy: window manager ªº¥t¤@¯S¦â´N¬O­t³d·Æ¹««ü¼Ðªº ¡§focus policy¡¨¡C ¨C¤@ºØµøµ¡¨t²Î³£»Ý­n¿ï¾Ü§@¥Îµøµ¡ªº¤è¦¡ ¡A¥H±µ¨üÁä½L¿é¤J¡A¥H¤Î¨M©w¥Ø«e­þ­Óµøµ¡¬O³B©ó¨Ï¥Î¤¤ªºª¬ºA¡C

³q±`¸û¬°¤H¼ô±xªº focus policy ¥s°µ ¡§click-to-focus¡¨¡A ³o¬O Microsoft Windows ©Ò±Ä¥Îªº¼Ò¦¡¡A¤]´N¬O«ü¼Ð¦b¸Óµøµ¡«ö¤@¤Uªº¸Ü¡A ¸Óµøµ¡´N·|³B©ó¨Ï¥Î¤¤ªºª¬ºA¡C

X ¨Ã¤£¤ä´©¤@¨Ç¯S®íªº focus policy¡C ´«¥y¸Ü»¡¡Awindow manager ·|±±¨î­þ­Óµøµ¡¦b¦ó®É¬O§@¥Î¤¤¡C ¤£¦Pªº window manager ¦³¤£¦Pªº¤ä´©¤è¦¡¡C ¦ý¥¦­Ì³£¤ä´© click-to-focus¡A ¦Ó¥B¤j¦h¼Æ³£¦³¤ä´©¦hºØ¤è¦¡¡C

¥H¤U¬O¥Ø«e³Ì¬y¦æªº focus policy¡G

focus-follows-mouse

·Æ¹«²¾¨ì­þ­Óµøµ¡´N¬O¨Ï¥Î¸Óµøµ¡¡C ¸Óµøµ¡¤£¤@©w¦ì©ó¨ä¥Lµøµ¡¤W­±¡A ¦ý¥u­n§â·Æ¹«²¾¨ì¸Óµøµ¡´N¥i¥H§ïÅܧ@¥Î¤¤ªºµøµ¡¡A ¦Ó¤£»Ý¦b¥¦¤W­±ÂIÀ»¡C

sloppy-focus

¸Ó policy ¬O°w¹ï focus-follows-mouse ªº¤p¤p©µ¦ù¡C ¹ï©ó focus-follows-mouse ¦Ó¨¥¡A­Y§â´å¼Ð²¾¨ì³Ìªìªºµøµ¡(©Î®à­±)¡A ¨º©Ò¦³¨ä¥Lµøµ¡³£·|³B©ó«D§@¥Î¤¤¡A¦Ó¥B©Ò¦³Áä½L¿é¤J¤]·|¥¢®Ä¡C ­Y¬O¿ï¥Î sloppy-focus¡A«h¥u¦³¦b´å¼Ð²¾¨ì·sµøµ¡®É¡A §@¥Î¤¤ªºµøµ¡¤~·|Åܦ¨·sªº¡A ¦Ó¥uÂ÷¶}¥Ø«e§@¥Î¤¤ªºµøµ¡¤´¤£·|§ïÅܧ@¥Îª¬ºA¡C

click-to-focus

¥Ñ´å¼ÐÂIÀ»¤~·|¨M©w§@¥Î¤¤ªºµøµ¡¡C ¨Ã¥B¸Óµøµ¡·|³Q ¡§raised(¥YÅã)¡¨ ¨ì©Ò¦³¨ä¥Lµøµ¡¤§«e¡A §Y¨Ï´å¼Ð²¾¨ì¨ä¥Lµøµ¡¡A©Ò¦³ªºÁä½L¿é¤J¤´·|¥Ñ¸Óµøµ¡©Ò±µ¦¬¡C

³\¦h window manager ¤]¤ä´©¨ä¥L policy¡A»P³o¨Ç¬Û¤ñ°_¨Ó¤S¦³¨Ç¤£¦P¡A ²Ó¸`³¡¤À½Ð°Ñ¾\¸Ó window manager ªº¤å¥ó»¡©ú¡C

5.2.4 Widgets

The X approach of providing tools and not policy extends to the widgets seen on screen in each application.

¡§Widget¡¨ is a term for all the items in the user interface that can be clicked or manipulated in some way; buttons, check boxes, radio buttons, icons, lists, and so on. Microsoft Windows calls these ¡§controls¡¨.

Microsoft Windows and Apple's Mac OS both have a very rigid widget policy. Application developers are supposed to ensure that their applications share a common look and feel. With X, it was not considered sensible to mandate a particular graphical style, or set of widgets to adhere to.

As a result, do not expect X applications to have a common look and feel. There are several popular widget sets and variations, including the original Athena widget set from MIT, Motif® (on which the widget set in Microsoft Windows was modeled, all bevelled edges and three shades of grey), OpenLook, and others.

Most newer X applications today will use a modern-looking widget set, either Qt, used by KDE, or GTK+, used by the GNOME project. In this respect, there is some convergence in look-and-feel of the UNIX desktop, which certainly makes things easier for the novice user.

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C