diff options
Diffstat (limited to 'en_US.ISO8859-1/books/handbook/x11/chapter.xml')
-rw-r--r-- | en_US.ISO8859-1/books/handbook/x11/chapter.xml | 1743 |
1 files changed, 1743 insertions, 0 deletions
diff --git a/en_US.ISO8859-1/books/handbook/x11/chapter.xml b/en_US.ISO8859-1/books/handbook/x11/chapter.xml new file mode 100644 index 0000000000..188155f246 --- /dev/null +++ b/en_US.ISO8859-1/books/handbook/x11/chapter.xml @@ -0,0 +1,1743 @@ +<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> +<!-- + The FreeBSD Documentation Project + + $FreeBSD$ +--> + +<chapter id="x11"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Ken</firstname> + <surname>Tom</surname> + <contrib>Updated for X.Org's X11 server by </contrib> + </author> + <author> + <firstname>Marc</firstname> + <surname>Fonvieille</surname> + </author> + </authorgroup> + </chapterinfo> + + <title>The X Window System</title> + + <sect1 id="x11-synopsis"> + <title>Synopsis</title> + + <para>FreeBSD uses X11 to provide users with + a powerful graphical user interface. X11 + is a freely available version of the X Window System that + is implemented in <application>&xorg;</application> + (and other software + packages not discussed here). + The + default and official flavor of X11 in &os; is + <application>&xorg;</application>, the X11 server developed by + the X.Org Foundation under a license very similar to the one used + by &os;. Commercial X servers for &os; are also available.</para> + + <para>For more information on the video hardware that X11 + supports, check the <ulink + url="http://www.x.org/">&xorg;</ulink> web site.</para> + + <para>After reading this chapter, you will know:</para> + + <itemizedlist> + <listitem> + <para>The various components of the X Window System, and how they + interoperate.</para> + </listitem> + + <listitem> + <para>How to install and configure X11.</para> + </listitem> + + <listitem> + <para>How to install and use different window managers.</para> + </listitem> + + <listitem> + <para>How to use &truetype; fonts in X11.</para> + </listitem> + + <listitem> + <para>How to set up your system for graphical logins + (<application>XDM</application>).</para> + </listitem> + </itemizedlist> + + <para>Before reading this chapter, you should:</para> + + <itemizedlist> + <listitem> + <para>Know how to install additional third-party + software (<xref linkend="ports"/>).</para> + </listitem> + </itemizedlist> + </sect1> + + <sect1 id="x-understanding"> + <title>Understanding X</title> + + <para>Using X for the first time can be somewhat of a shock to someone + familiar with other graphical environments, such as µsoft.windows; or + &macos;.</para> + + <para>While it is not necessary to understand all of the details of various + X components and how they interact, some basic knowledge makes + it possible to take advantage of X's strengths.</para> + + <sect2> + <title>Why X?</title> + + <para>X is not the first window system written for &unix;, but it is the + most popular of them. X's original development team had worked on another + window system prior to writing X. That system's name was + <quote>W</quote> (for <quote>Window</quote>). X was just the next + letter in the Roman alphabet.</para> + + <para>X can be called <quote>X</quote>, <quote>X Window System</quote>, + <quote>X11</quote>, and a number of other terms. You may find + that using the term <quote>X Windows</quote> to describe X11 + can be offensive to some people; for a bit more insight on + this, see &man.X.7;.</para> + </sect2> + + <sect2> + <title>The X Client/Server Model</title> + + <para>X was designed from the beginning to be network-centric, and + adopts a <quote>client-server</quote> model.</para> + + <para>In the X model, the + <quote>X server</quote> runs on the computer that has the keyboard, + monitor, and mouse attached. The server's responsibility includes tasks such as managing + the display, handling input from the keyboard and mouse, and other + input or output devices (i.e., a <quote>tablet</quote> can be used as + an input device, and a video projector may be an alternative output + device). + Each X application (such as <application>XTerm</application>, or + <application>&netscape;</application>) is a <quote>client</quote>. A + client sends messages to the server such as <quote>Please draw a + window at these coordinates</quote>, and the server sends back + messages such as <quote>The user just clicked on the OK + button</quote>.</para> + + <para>In a home or small + office environment, the X server and the X clients commonly run on + the same computer. However, it is perfectly possible to run the X + server on a less powerful desktop computer, and run X applications + (the clients) on, say, the powerful and expensive machine that serves + the office. In this scenario the communication between the X client + and server takes place over the network.</para> + + <para>This confuses some people, because the X terminology is + exactly backward to what they expect. They expect the <quote>X + server</quote> to be the big powerful machine down the hall, and + the <quote>X client</quote> to be the machine on their desk.</para> + + <para>It is important to remember that the X server is the machine with the monitor and + keyboard, and the X clients are the programs that display the + windows.</para> + + <para>There is nothing in the protocol that forces the client and + server machines to be running the same operating system, or even to + be running on the same type of computer. It is certainly possible to + run an X server on µsoft.windows; or Apple's &macos;, and there are + various free and commercial applications available that do exactly + that.</para> + </sect2> + + <sect2> + <title>The Window Manager</title> + + <para>The X design philosophy is much like the &unix; design philosophy, + <quote>tools, not policy</quote>. This means that X does not try to + dictate how a task is to be accomplished. Instead, tools are provided + to the user, and it is the user's responsibility to decide how to use + those tools.</para> + + <para>This philosophy extends to X not dictating what windows should + look like on screen, how to move them around with the mouse, what + keystrokes should be used to move between windows (i.e., + <keycombo action="simul"> + <keycap>Alt</keycap> + <keycap>Tab</keycap> + </keycombo>, in the case of µsoft.windows;), what the title bars + on each window should look like, whether or not they have close + buttons on them, and so on.</para> + + <para>Instead, X delegates this responsibility to an application called + a <quote>Window Manager</quote>. There are dozens of window + managers available for X: <application>AfterStep</application>, + <application>Blackbox</application>, <application>ctwm</application>, + <application>Enlightenment</application>, + <application>fvwm</application>, <application>Sawfish</application>, + <application>twm</application>, + <application>Window Maker</application>, and more. Each of these + window managers provides a different look and feel; some of them + support <quote>virtual desktops</quote>; some of them allow customized + keystrokes to manage the desktop; some have a <quote>Start</quote> + button or similar device; some are <quote>themeable</quote>, allowing + a complete change of look-and-feel by applying a new theme. These + window managers, and many more, are available in the + <filename>x11-wm</filename> category of the Ports Collection.</para> + + <para>In addition, the <application>KDE</application> and + <application>GNOME</application> desktop environments both have their + own window managers which integrate with the desktop.</para> + + <para>Each window manager also has a different configuration mechanism; + some expect configuration file written by hand, others feature + GUI tools for most of the configuration tasks; at least one + (<application>Sawfish</application>) has a configuration file written + in a dialect of the Lisp language.</para> + + <note> + <title>Focus Policy</title> + + <para>Another feature the window manager is responsible for is the + mouse <quote>focus policy</quote>. Every windowing system + needs some means of choosing a window to be actively receiving + keystrokes, and should visibly indicate which window is active as + well.</para> + + <para>A familiar focus policy is called <quote>click-to-focus</quote>. + This is the model utilized by µsoft.windows;, in which a window + becomes active upon receiving a mouse click.</para> + + <para>X does not support any particular focus policy. Instead, the + window manager controls which window has the focus at any one time. + Different window managers will support different focus methods. All + of them support click to focus, and the majority of them support + several others.</para> + + <para>The most popular focus policies are:</para> + + <variablelist> + <varlistentry> + <term>focus-follows-mouse</term> + + <listitem> + <para>The window that is under the mouse pointer is the + window that has the focus. This may not necessarily be + the window that is on top of all the other windows. + The focus is changed by pointing at another window, there + is no need to click in it as well.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>sloppy-focus</term> + + <listitem> + <para>This policy is a small extension to focus-follows-mouse. + With focus-follows-mouse, if the mouse is moved over the + root window (or background) then no window has the focus, + and keystrokes are simply lost. With sloppy-focus, focus is + only changed when the cursor enters a new window, and not + when exiting the current window.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>click-to-focus</term> + + <listitem> + <para>The active window is selected by mouse click. The + window may then be <quote>raised</quote>, and appear in + front of all other windows. All keystrokes will now be + directed to this window, even if the cursor is moved to + another window.</para> + </listitem> + </varlistentry> + </variablelist> + + <para>Many window managers support other policies, as well as + variations on these. Be sure to consult the documentation for + the window manager itself.</para> + </note> + </sect2> + + <sect2> + <title>Widgets</title> + + <para>The X approach of providing tools and not policy extends to the + widgets seen on screen in each application.</para> + + <para><quote>Widget</quote> 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. µsoft.windows; + calls these <quote>controls</quote>.</para> + + <para>µsoft.windows; and Apple's &macos; 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.</para> + + <para>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, + <application>&motif;</application> (on which the widget set in + µsoft.windows; was modeled, all bevelled edges and three shades of + grey), <application>OpenLook</application>, and others.</para> + + <para>Most newer X applications today will use a modern-looking widget + set, either Qt, used by <application>KDE</application>, or + GTK+, used by the + <application>GNOME</application> + 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.</para> + </sect2> + </sect1> + + <sect1 id="x-install"> + <title>Installing X11</title> + + <para><application>&xorg;</application> is the default X11 + implementation for &os;. <application>&xorg;</application> is + the X server of the open source X Window System implementation released by the X.Org + Foundation. <application>&xorg;</application> is based on the code of + <application>&xfree86; 4.4RC2</application> and X11R6.6. + The version of <application>&xorg;</application> currently + available in the &os; Ports Collection is &xorg.version;.</para> + + <para>To build and install <application>&xorg;</application> from the + Ports Collection:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11/xorg</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <note> + <para>To build <application>&xorg;</application> in its + entirety, be sure to have at least 4 GB of free space + available.</para> + </note> + + <para>Alternatively, X11 + can be installed directly from packages. + Binary packages to use with &man.pkg.add.1; tool are also available for + X11. When the remote fetching + feature of &man.pkg.add.1; is used, the version number of the + package must be removed. &man.pkg.add.1; will automatically fetch + the latest version of the application.</para> + + <para>So to fetch and install the package of + <application>&xorg;</application>, simply type:</para> + + <screen>&prompt.root; <userinput>pkg_add -r xorg</userinput></screen> + + <note><para>The examples above will install the complete + X11 distribution including the + servers, clients, fonts etc. Separate packages and ports of X11 + are also + available.</para> + + <para>To install a minimal X11 distribution you can alternatively install + <filename role="package">x11/xorg-minimal</filename>.</para> + </note> + + <para>The rest of this chapter will explain how to configure + X11, and how to set up a productive desktop + environment.</para> + </sect1> + + <sect1 id="x-config"> + <sect1info> + <authorgroup> + <author> + <firstname>Christopher</firstname> + <surname>Shumway</surname> + <contrib>Contributed by </contrib> + <!-- July 2001 --> + </author> + </authorgroup> + </sect1info> + <title>X11 Configuration</title> + + + <indexterm><primary>&xorg;</primary></indexterm> + <indexterm><primary>X11</primary></indexterm> + + <sect2> + <title>Before Starting</title> + + <para>In most cases, X11 is self-configuring. Those with older + or unusual equipment may find it helpful to gather some + hardware information before beginning configuration.</para> + + <itemizedlist> + <listitem><para>Monitor sync frequencies</para></listitem> + <listitem><para>Video card chipset</para></listitem> + <listitem><para>Video card memory</para></listitem> + </itemizedlist> + + <indexterm> + <primary>horizontal sync frequency</primary> + </indexterm> + <indexterm> + <primary>horizontal scan rate</primary> + <see>horizontal sync frequency</see> + </indexterm> + <indexterm><primary>refresh rate</primary></indexterm> + <indexterm> + <primary>vertical sync frequency</primary> + <see>refresh rate</see> + </indexterm> + <indexterm> + <primary>vertical scan rate</primary> + <see>refresh rate</see> + </indexterm> + + <para>Screen resolution and refresh rate are determined by the + monitor's horizontal and vertical sync frequencies. Almost + all monitors support electronic autodetection of these values. + A few monitors do not provide these values, and the + specifications must be determined from the printed manual + or manufacturer web site.</para> + + <para>The video card chipset is also autodetected, and used to + select the proper video driver. It is beneficial for the user + to be aware of which chipset is installed for when + autodetection does not provide the desired result.</para> + + <para>Video card memory determines the maximum resolution and + color depth which can be displayed.</para> + </sect2> + + <sect2> + <title>Configuring X11</title> + + <para><application>&xorg;</application> + uses <acronym>HAL</acronym> to autodetect keyboards and mice. + The <filename role="package">sysutils/hal</filename> and + <filename role="package">devel/dbus</filename> ports are installed + as dependencies of <filename role="package">x11/xorg</filename>, but + must be enabled by the following entries in the + <filename>/etc/rc.conf</filename> file:</para> + + <programlisting>hald_enable="YES" +dbus_enable="YES"</programlisting> + + <para>These services should be started (either manually or by + rebooting) before further <application>&xorg;</application> + configuration or use is attempted.</para> + + <para><application>&xorg;</application> can + often work without any further configuration steps by simply typing at + prompt:</para> + + <screen>&prompt.user; <userinput>startx</userinput></screen> + + <para>The automatic configuration may fail to work with some hardware, + or may not set things up quite as desired. In these cases, manual + configuration will be necessary.</para> + + <note> + <para>Desktop environments like + <application>GNOME</application>, + <application>KDE</application> or + <application>Xfce</application> have tools allowing the user + to easily set the screen parameters such as the resolution. + So if the default configuration is not acceptable and you + planned to install a desktop environment then just continue + with the installation of the desktop environment and use the + appropriate screen settings tool.</para> + </note> + + <para>Configuration of X11 is + a multi-step process. The first step is to build an initial + configuration file. + As the super user, simply + run:</para> + + <screen>&prompt.root; <userinput>Xorg -configure</userinput></screen> + + <para>This will generate an + X11 configuration skeleton file in the + <filename>/root</filename> directory called + <filename>xorg.conf.new</filename> (whether you &man.su.1; or + do a direct login affects the inherited supervisor + <envar>$HOME</envar> directory variable). The + X11 program will attempt to probe + the graphics hardware on the system and write a + configuration file to load the proper drivers for the detected + hardware on the target system.</para> + + <para>The next step is to test the existing + configuration to verify that <application>&xorg;</application> + can work with the graphics + hardware on the target system. Type:</para> + + <screen>&prompt.root; <userinput>Xorg -config xorg.conf.new -retro</userinput></screen> + + <para>If a black and grey grid and an X mouse cursor appear, + the configuration was successful. To exit the test, switch to the + virtual console used to start it by pressing + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>Alt</keycap> + <keycap>F<replaceable>n</replaceable></keycap> + </keycombo> (<keycap>F1</keycap> for the first virtual console) + and press + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>C</keycap> + </keycombo>.</para> + + <note> + <para>The + <keycombo action="simul"> + <keycap>Ctrl</keycap> + <keycap>Alt</keycap> + <keycap>Backspace</keycap> + </keycombo> key combination may also be used to break out of + <application>&xorg;</application>. To enable it, + you can either type the following + command from any X terminal emulator:</para> + + <screen>&prompt.user; <userinput>setxkbmap -option terminate:ctrl_alt_bksp</userinput></screen> + + <para>or create a keyboard configuration file for + <application>hald</application> called + <filename>x11-input.fdi</filename> and saved in the + <filename + class="directory">/usr/local/etc/hal/fdi/policy</filename> + directory. This file should contain the following + lines:</para> + + <programlisting><?xml version="1.0" encoding="iso-8859-1"?> +<deviceinfo version="0.2"> + <device> + <match key="info.capabilities" contains="input.keyboard"> + <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge> + </match> + </device> +</deviceinfo></programlisting> + + <para>You will have to reboot your machine to force + <application>hald</application> to read this file.</para> + + <para>The following line will also have to be added to + <filename>xorg.conf.new</filename>, in the + <literal>ServerLayout</literal> or <literal>ServerFlags</literal> + section:</para> + + <programlisting>Option "DontZap" "off"</programlisting> + </note> + + <para>If the mouse does not work, you will need to first + configure it before proceeding. See <xref linkend="mouse"/> + in the &os; install chapter. In recent + <application>Xorg</application> versions, + the <literal>InputDevice</literal> sections in + <filename>xorg.conf</filename> are ignored in favor of the + autodetected devices. To restore the old behavior, add the + following line to the <literal>ServerLayout</literal> or + <literal>ServerFlags</literal> section of this file:</para> + + <programlisting>Option "AutoAddDevices" "false"</programlisting> + + <para>Input devices may then be configured as in previous versions, + along with any other options needed (e.g., keyboard layout + switching).</para> + + <note> + <para>As previously explained + the <application>hald</application> daemon will, by default, + automatically detect your keyboard. There are chances that + your keyboard layout or model will not be correct, desktop + environments like <application>GNOME</application>, + <application>KDE</application> or + <application>Xfce</application> provide tools to configure + the keyboard. However, it is possible to set the keyboard + properties directly either with the help of the + &man.setxkbmap.1; utility or with a + <application>hald</application>'s configuration rule.</para> + + <para>For example if one wants to use a PC 102 keys keyboard + coming with a french layout, we have to create a keyboard + configuration file for <application>hald</application> + called <filename>x11-input.fdi</filename> and saved in the + <filename + class="directory">/usr/local/etc/hal/fdi/policy</filename> + directory. This file should contain the following + lines:</para> + + <programlisting><?xml version="1.0" encoding="iso-8859-1"?> +<deviceinfo version="0.2"> + <device> + <match key="info.capabilities" contains="input.keyboard"> + <merge key="input.x11_options.XkbModel" type="string">pc102</merge> + <merge key="input.x11_options.XkbLayout" type="string">fr</merge> + </match> + </device> +</deviceinfo></programlisting> + + <para>If this file already exists, just copy and add to your + file the lines regarding the keyboard configuration.</para> + + <para>You will have to reboot your machine to force + <application>hald</application> to read this file.</para> + + <para>It is possible to do the same configuration from an X + terminal or a script with this command line:</para> + + <screen>&prompt.user; <userinput>setxkbmap -model pc102 -layout fr</userinput></screen> + + <para>The + <filename>/usr/local/share/X11/xkb/rules/base.lst</filename> + file lists the various keyboard, layouts and options + available.</para> + </note> + + <indexterm><primary>X11 tuning</primary></indexterm> + + <para>The <filename>xorg.conf.new</filename> + configuration file may now be tuned to taste. Open the file in a text editor such + as &man.emacs.1; or &man.ee.1;. If the monitor is an older + or unusual model that does not support autodetection of + sync frequencies, those settings can + be added to <filename>xorg.conf.new</filename> + under the <literal>"Monitor"</literal> section:</para> + + <programlisting>Section "Monitor" + Identifier "Monitor0" + VendorName "Monitor Vendor" + ModelName "Monitor Model" + HorizSync 30-107 + VertRefresh 48-120 +EndSection</programlisting> + + <para>Most monitors support sync frequency autodetection, making + manual entry of these values unnecessary. For the few + monitors that do not support autodetection, avoid potential + damage by only entering values provided by the + manufacturer.</para> + + <para>X allows DPMS (Energy Star) features to be used with capable + monitors. The &man.xset.1; program controls the time-outs and can force + standby, suspend, or off modes. If you wish to enable DPMS features + for your monitor, you must add the following line to the monitor + section:</para> + + <programlisting> + Option "DPMS"</programlisting> + + <indexterm> + <primary><filename>xorg.conf</filename></primary> + </indexterm> + + <para>While the <filename>xorg.conf.new</filename> + configuration file is still open in an editor, select + the default resolution and color depth desired. This is + defined in the <literal>"Screen"</literal> section:</para> + + <programlisting>Section "Screen" + Identifier "Screen0" + Device "Card0" + Monitor "Monitor0" + DefaultDepth 24 + SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1024x768" + EndSubSection +EndSection</programlisting> + + <para>The <literal>DefaultDepth</literal> keyword describes + the color depth to run at by default. This can be overridden + with the <option>-depth</option> command line switch to + &man.Xorg.1;. + The <literal>Modes</literal> keyword + describes the resolution to run at for the given color depth. + Note that only VESA standard modes are supported as defined by + the target system's graphics hardware. + In the example above, the default color depth is twenty-four + bits per pixel. At this color depth, the accepted resolution is + 1024 by 768 + pixels.</para> + + <para>Finally, write the configuration file and test it using + the test mode given above.</para> + + <note> + <para>One of the tools available to assist you during + troubleshooting process are the X11 log files, which contain + information on each device that the X11 server attaches to. + <application>&xorg;</application> log file names are in the format + of <filename>/var/log/Xorg.0.log</filename>. The exact name + of the log can vary from <filename>Xorg.0.log</filename> to + <filename>Xorg.8.log</filename> and so forth.</para> + </note> + + <para>If all is well, the configuration + file needs to be installed in a common location where + &man.Xorg.1; can find it. + This is typically <filename>/etc/X11/xorg.conf</filename> or + <filename>/usr/local/etc/X11/xorg.conf</filename>.</para> + + <screen>&prompt.root; <userinput>cp xorg.conf.new /etc/X11/xorg.conf</userinput></screen> + + <para>The X11 configuration process is now + complete. <application>&xorg;</application> may be now + started with the &man.startx.1; utility. + The X11 server may also be started with the use of + &man.xdm.1;.</para> + </sect2> + + <sect2> + <title>Advanced Configuration Topics</title> + + <sect3> + <title>Configuration with &intel; <literal>i810</literal> Graphics Chipsets</title> + + <indexterm><primary>Intel i810 graphic chipset</primary></indexterm> + + <para>Configuration with &intel; i810 integrated chipsets + requires the <devicename>agpgart</devicename> + AGP programming interface for X11 + to drive the card. See the &man.agp.4; driver manual page + for more information.</para> + + <para>This will allow configuration of the hardware as any other + graphics board. Note on systems without the &man.agp.4; + driver compiled in the kernel, trying to load the module + with &man.kldload.8; will not work. This driver has to be + in the kernel at boot time through being compiled in or + using <filename>/boot/loader.conf</filename>.</para> + </sect3> + + <sect3> + <title>Adding a Widescreen Flatpanel to the Mix</title> + + <indexterm><primary>widescreen flatpanel configuration</primary></indexterm> + + <para>This section assumes a bit of advanced configuration knowledge. + If attempts to use the standard configuration tools above have not + resulted in a working configuration, there is information enough + in the log files to be of use in getting the setup working. + Use of a text editor will be necessary.</para> + + <para>Current widescreen (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, et.al.) + formats support 16:10 and 10:9 formats or aspect ratios that can + be problematic. Examples of some common screen resolutions for + 16:10 aspect ratios are:</para> + + <itemizedlist> + <listitem><para>2560x1600</para></listitem> + <listitem><para>1920x1200</para></listitem> + <listitem><para>1680x1050</para></listitem> + <listitem><para>1440x900</para></listitem> + <listitem><para>1280x800</para></listitem> + </itemizedlist> + + <para>At some point, it will be as easy as adding one of these + resolutions as a possible <literal>Mode</literal> in the <literal>Section + "Screen"</literal> as such:</para> + + <programlisting>Section "Screen" +Identifier "Screen0" +Device "Card0" +Monitor "Monitor0" +DefaultDepth 24 +SubSection "Display" + Viewport 0 0 + Depth 24 + Modes "1680x1050" +EndSubSection +EndSection</programlisting> + + <para><application>&xorg;</application> is smart enough to pull the + resolution information from the widescreen via I2C/DDC information + so it knows what the monitor can handle as far as frequencies + and resolutions.</para> + + <para>If those <literal>ModeLines</literal> do not exist in the drivers, + one might need to give <application>&xorg;</application> a little hint. + Using <filename>/var/log/Xorg.0.log</filename> one can extract + enough information to manually create a <literal>ModeLine</literal> that + will work. Simply look for information resembling this:</para> + + <programlisting>(II) MGA(0): Supported additional Video Mode: +(II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm +(II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 +(II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 +(II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz</programlisting> + + <para>This information is called EDID information. Creating a + <literal>ModeLine</literal> from this is just a matter of putting the + numbers in the correct order:</para> + + <programlisting>ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings></programlisting> + + <para>So that the <literal>ModeLine</literal> in <literal>Section "Monitor"</literal> + for this example would look like this:</para> + + <programlisting>Section "Monitor" +Identifier "Monitor1" +VendorName "Bigname" +ModelName "BestModel" +ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 +Option "DPMS" +EndSection</programlisting> + + <para>Now having completed these simple editing steps, X should start + on your new widescreen monitor.</para> + </sect3> + </sect2> + </sect1> + + <sect1 id="x-fonts"> + <sect1info> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Contributed by </contrib> + </author> + </authorgroup> + </sect1info> + <title>Using Fonts in X11</title> + + <sect2 id="type1"> + <title>Type1 Fonts</title> + <para>The default fonts that ship with + X11 are less than ideal for typical + desktop publishing applications. Large presentation fonts show up + jagged and unprofessional looking, and small fonts in + <application>&netscape;</application> are almost completely unintelligible. + However, there are several free, high quality Type1 (&postscript;) fonts + available which can be readily used + with X11. For instance, the URW font collection + (<filename role="package">x11-fonts/urwfonts</filename>) includes + high quality versions of standard type1 fonts (<trademark class="registered">Times Roman</trademark>, + <trademark class="registered">Helvetica</trademark>, <trademark class="registered">Palatino</trademark> and others). The Freefonts collection + (<filename role="package">x11-fonts/freefonts</filename>) includes + many more fonts, but most of them are intended for use in + graphics software such as the <application>Gimp</application>, and are not + complete enough to serve as screen fonts. In addition, + X11 can be configured to use + &truetype; fonts with a minimum of effort. For more details on + this, see the &man.X.7; manual page or the + <link linkend="truetype">section on &truetype; fonts</link>.</para> + + <para>To install the above Type1 font collections from the + Ports Collection, run the following commands:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11-fonts/urwfonts</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>And likewise with the freefont or other collections. To have the X + server detect these fonts, add an appropriate line to the + X server configuration file (<filename>/etc/X11/xorg.conf</filename>), + which reads:</para> + + <programlisting>FontPath "/usr/local/lib/X11/fonts/URW/"</programlisting> + + <para>Alternatively, at the command line in the X session + run:</para> + + <screen>&prompt.user; <userinput>xset fp+ /usr/local/lib/X11/fonts/URW</userinput> +&prompt.user; <userinput>xset fp rehash</userinput></screen> + + <para>This will work but will be lost when the X session is closed, + unless it is added to the startup file (<filename>~/.xinitrc</filename> + for a normal <command>startx</command> session, + or <filename>~/.xsession</filename> when logging in through a + graphical login manager like <application>XDM</application>). + A third way is to use the new + <filename>/usr/local/etc/fonts/local.conf</filename> file: see the + section on <link linkend="antialias">anti-aliasing</link>.</para> + </sect2> + + <sect2 id="truetype"> + <title>&truetype; Fonts</title> + + <indexterm><primary>TrueType Fonts</primary></indexterm> + <indexterm><primary>fonts</primary> + <secondary>TrueType</secondary> + </indexterm> + + <para><application>&xorg;</application> has built in support + for rendering &truetype; fonts. There are two different modules + that can enable this functionality. The freetype module is used + in this example because it is more consistent with the other font + rendering back-ends. To enable the freetype module just add the + following line to the <literal>"Module"</literal> section of the + <filename>/etc/X11/xorg.conf</filename> file.</para> + + <programlisting>Load "freetype"</programlisting> + + <para>Now make a directory for the &truetype; fonts (for example, + <filename>/usr/local/lib/X11/fonts/TrueType</filename>) + and copy all of the &truetype; fonts into this directory. Keep in + mind that &truetype; fonts cannot be directly taken from a + &macintosh;; they must be in &unix;/&ms-dos;/&windows; format for use by + X11. Once the files have been + copied into this directory, use + <application>ttmkfdir</application> to create a + <filename>fonts.dir</filename> file, so that the X font renderer + knows that these new files have been installed. + <command>ttmkfdir</command> is available from the FreeBSD + Ports Collection as + <filename role="package">x11-fonts/ttmkfdir</filename>.</para> + + <screen>&prompt.root; <userinput>cd /usr/local/lib/X11/fonts/TrueType</userinput> +&prompt.root; <userinput>ttmkfdir -o fonts.dir</userinput></screen> + + <para>Now add the &truetype; directory to the font + path. This is just the same as described above for <link + linkend="type1">Type1</link> fonts, that is, use</para> + + <screen>&prompt.user; <userinput>xset fp+ /usr/local/lib/X11/fonts/TrueType</userinput> +&prompt.user; <userinput>xset fp rehash</userinput></screen> + + <para>or add a <literal>FontPath</literal> line to the + <filename>xorg.conf</filename> file.</para> + + <para>That's it. Now <application>&netscape;</application>, + <application>Gimp</application>, + <application>&staroffice;</application>, and all of the other X + applications should now recognize the installed &truetype; + fonts. Extremely small fonts (as with text in a high resolution + display on a web page) and extremely large fonts (within + <application>&staroffice;</application>) will look much better + now.</para> + </sect2> + + <sect2 id="antialias"> + <sect2info> + <authorgroup> + <author> + <firstname>Joe Marcus</firstname> + <surname>Clarke</surname> + <contrib>Updated by </contrib> + <!-- May 2003 --> + </author> + </authorgroup> + </sect2info> + <title>Anti-Aliased Fonts</title> + + <indexterm><primary>anti-aliased fonts</primary></indexterm> + <indexterm><primary>fonts</primary> + <secondary>anti-aliased</secondary></indexterm> + + <para>All fonts in X11 that are found + in <filename>/usr/local/lib/X11/fonts/</filename> and + <filename>~/.fonts/</filename> are automatically + made available for anti-aliasing to Xft-aware applications. + Most recent applications are Xft-aware, including + <application>KDE</application>, <application>GNOME</application>, and + <application>Firefox</application>.</para> + + <para>In order to control which fonts are anti-aliased, or to + configure anti-aliasing properties, create (or edit, if it + already exists) the file + <filename>/usr/local/etc/fonts/local.conf</filename>. Several + advanced features of the Xft font system can be tuned using + this file; this section describes only some simple + possibilities. For more details, please see + &man.fonts-conf.5;.</para> + + <indexterm><primary>XML</primary></indexterm> + + <para>This file must be in XML format. Pay careful attention to + case, and make sure all tags are properly closed. The file + begins with the usual XML header followed by a DOCTYPE + definition, and then the <literal><fontconfig></literal> tag:</para> + + <programlisting> + <?xml version="1.0"?> + <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> + <fontconfig> + </programlisting> + + <para>As previously stated, all fonts in + <filename>/usr/local/lib/X11/fonts/</filename> as well as + <filename>~/.fonts/</filename> are already made available to + Xft-aware applications. If you wish to add another directory + outside of these two directory trees, add a line similar to the + following to + <filename>/usr/local/etc/fonts/local.conf</filename>:</para> + + <programlisting><dir>/path/to/my/fonts</dir></programlisting> + + <para>After adding new fonts, and especially new font directories, + you should run the following command to rebuild the font + caches:</para> + + <screen>&prompt.root; <userinput>fc-cache -f</userinput></screen> + + <para>Anti-aliasing makes borders slightly fuzzy, which makes very + small text more readable and removes <quote>staircases</quote> from + large text, but can cause eyestrain if applied to normal text. To + exclude font sizes smaller than 14 point from anti-aliasing, include + these lines:</para> + + <programlisting> <match target="font"> + <test name="size" compare="less"> + <double>14</double> + </test> + <edit name="antialias" mode="assign"> + <bool>false</bool> + </edit> + </match> + <match target="font"> + <test name="pixelsize" compare="less" qual="any"> + <double>14</double> + </test> + <edit mode="assign" name="antialias"> + <bool>false</bool> + </edit> + </match></programlisting> + + <indexterm><primary>fonts</primary> + <secondary>spacing</secondary></indexterm> + + <para>Spacing for some monospaced fonts may also be inappropriate + with anti-aliasing. This seems to be an issue with + <application>KDE</application>, in particular. One possible fix for + this is to force the spacing for such fonts to be 100. Add the + following lines:</para> + + <programlisting> <match target="pattern" name="family"> + <test qual="any" name="family"> + <string>fixed</string> + </test> + <edit name="family" mode="assign"> + <string>mono</string> + </edit> + </match> + <match target="pattern" name="family"> + <test qual="any" name="family"> + <string>console</string> + </test> + <edit name="family" mode="assign"> + <string>mono</string> + </edit> + </match></programlisting> + + <para>(this aliases the other common names for fixed fonts as + <literal>"mono"</literal>), and then add:</para> + + <programlisting> <match target="pattern" name="family"> + <test qual="any" name="family"> + <string>mono</string> + </test> + <edit name="spacing" mode="assign"> + <int>100</int> + </edit> + </match> </programlisting> + + <para>Certain fonts, such as Helvetica, may have a problem when + anti-aliased. Usually this manifests itself as a font that + seems cut in half vertically. At worst, it may cause + applications to + crash. To avoid this, consider adding the following to + <filename>local.conf</filename>:</para> + + <programlisting> <match target="pattern" name="family"> + <test qual="any" name="family"> + <string>Helvetica</string> + </test> + <edit name="family" mode="assign"> + <string>sans-serif</string> + </edit> + </match> </programlisting> + + <para>Once you have finished editing + <filename>local.conf</filename> make sure you end the file + with the <literal></fontconfig></literal> tag. Not doing this will cause + your changes to be ignored.</para> + + <para>Finally, users can add their own settings via their personal + <filename>.fonts.conf</filename> files. To do this, each user should + simply create a <filename>~/.fonts.conf</filename>. This file must + also be in XML format.</para> + + <indexterm><primary>LCD screen</primary></indexterm> + <indexterm><primary>Fonts</primary> + <secondary>LCD screen</secondary></indexterm> + + <para>One last point: with an LCD screen, sub-pixel sampling may be + desired. This basically treats the (horizontally separated) + red, green and blue components separately to improve the horizontal + resolution; the results can be dramatic. To enable this, add the + line somewhere in the <filename>local.conf</filename> file:</para> + + <programlisting> + <match target="font"> + <test qual="all" name="rgba"> + <const>unknown</const> + </test> + <edit name="rgba" mode="assign"> + <const>rgb</const> + </edit> + </match> + </programlisting> + + <note> + <para>Depending on the sort of display, + <literal>rgb</literal> may need to be changed to <literal>bgr</literal>, + <literal>vrgb</literal> or <literal>vbgr</literal>: experiment and + see which works best.</para> + </note> + </sect2> + </sect1> + + <sect1 id="x-xdm"> + <sect1info> + <authorgroup> + <author> + <firstname>Seth</firstname> + <surname>Kingsley</surname> + <contrib>Contributed by </contrib> + </author> + </authorgroup> + </sect1info> + <title>The X Display Manager</title> + <sect2> + <title>Overview</title> + + <indexterm><primary>X Display Manager</primary></indexterm> + <para>The X Display Manager (<application>XDM</application>) is + an optional part of the X Window System that is used for login + session management. This is useful for several types of + situations, including minimal <quote>X Terminals</quote>, + desktops, and large network display + servers. Since the X Window System is network and protocol + independent, there are a wide variety of possible configurations + for running X clients and servers on different machines + connected by a network. <application>XDM</application> provides + a graphical interface for choosing which display server to + connect to, and entering authorization information such as a + login and password combination.</para> + + <para>Think of <application>XDM</application> as + providing the same functionality to the user as the + &man.getty.8; utility (see <xref linkend="term-config"/> for + details). That is, it performs system logins to the display + being connected to and then runs a session manager on behalf of + the user (usually an X window + manager). <application>XDM</application> then waits for this + program to exit, signaling that the user is done and should be + logged out of the display. At this point, + <application>XDM</application> can display the login and display + chooser screens for the next user to login.</para> + </sect2> + + <sect2> + <title>Using XDM</title> + + <para>To start using <application>XDM</application>, install the + <filename role="package">x11/xdm</filename> port (it is not + installed by default in recent versions of + <application>&xorg;</application>). + The <application>XDM</application> daemon program may then be + found in <filename>/usr/local/bin/xdm</filename>. This program + can be run at any time as <username>root</username> and it will + start managing the X display on the local machine. If + <application>XDM</application> is to be run every + time the machine boots up, a convenient way to do this is by + adding an entry to <filename>/etc/ttys</filename>. For more + information about the format and usage of this file, see <xref + linkend="term-etcttys"/>. There is a line in the default + <filename>/etc/ttys</filename> file for running the + <application>XDM</application> daemon on a virtual terminal:</para> + + <screen>ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure</screen> + + <para>By default this entry is disabled; in order to enable it + change field 5 from <literal>off</literal> to + <literal>on</literal> and restart &man.init.8; using the + directions in <xref linkend="term-hup"/>. The first field, the + name of the terminal this program will manage, is + <literal>ttyv8</literal>. This means that + <application>XDM</application> will start running on the 9th + virtual terminal.</para> + </sect2> + + <sect2> + <title>Configuring XDM</title> + + <para>The <application>XDM</application> configuration directory + is located in <filename>/usr/local/lib/X11/xdm</filename>. In + this directory there are several files used to change the + behavior and appearance of + <application>XDM</application>. Typically these files will + be found:</para> + + <informaltable frame="none" pgwide="1"> + <tgroup cols="2"> + <thead> + <row> + <entry>File</entry> + <entry>Description</entry> + </row> + </thead> + + <tbody> + <row> + <entry><filename>Xaccess</filename></entry> + <entry>Client authorization ruleset.</entry> + </row> + + <row> + <entry><filename>Xresources</filename></entry> + <entry>Default X resource values.</entry> + </row> + + <row> + <entry><filename>Xservers</filename></entry> + <entry>List of remote and local displays to manage.</entry> + </row> + + <row> + <entry><filename>Xsession</filename></entry> + <entry>Default session script for logins.</entry> + </row> + + <row> + <entry><filename>Xsetup_</filename>*</entry> + <entry>Script to launch applications before the login + interface.</entry> + </row> + + <row> + <entry><filename>xdm-config</filename></entry> + <entry>Global configuration for all displays running on + this machine.</entry> + </row> + + <row> + <entry><filename>xdm-errors</filename></entry> + <entry>Errors generated by the server program.</entry> + </row> + + <row> + <entry><filename>xdm-pid</filename></entry> + <entry>The process ID of the currently running XDM.</entry> + </row> + </tbody> + </tgroup> + </informaltable> + + <para>Also in this directory are a few scripts and programs used + to set up the desktop when <application>XDM</application> is + running. The purpose of each of these files will be briefly + described. The exact syntax and usage of all of these files is + described in &man.xdm.1;.</para> + + <para>The default configuration is a simple rectangular login + window with the hostname of the machine displayed at the top in + a large font and <quote>Login:</quote> and + <quote>Password:</quote> prompts below. This is a good starting + point for changing the look and feel of + <application>XDM</application> screens.</para> + + <sect3> + <title>Xaccess</title> + + <para>The protocol for connecting to + <application>XDM</application>-controlled displays is called + the X Display Manager Connection Protocol (XDMCP). This file + is a ruleset for controlling XDMCP connections from remote + machines. It is ignored unless the <filename>xdm-config</filename> + is changed to listen for remote connections. By default, it does + not allow any clients to connect.</para> + </sect3> + + <sect3> + <title>Xresources</title> + <para>This is an application-defaults file for the display + chooser and login screens. In it, the appearance + of the login program can be modified. The format is identical + to the app-defaults file described in the + X11 documentation.</para> + </sect3> + + <sect3> + <title>Xservers</title> + <para>This is a list of the remote displays the chooser should + provide as choices.</para> + </sect3> + + <sect3> + <title>Xsession</title> + <para>This is the default session script for + <application>XDM</application> to run after a user has logged + in. Normally each user will have a customized session script + in <filename>~/.xsession</filename> that overrides this + script.</para> + </sect3> + + <sect3> + <title>Xsetup_*</title> + <para>These will be run automatically before displaying the + chooser or login interfaces. There is a script for each + display being used, named <filename>Xsetup_</filename> followed + by the local display number (for instance + <filename>Xsetup_0</filename>). Typically these scripts will + run one or two programs in the background such as + <command>xconsole</command>.</para> + </sect3> + + <sect3> + <title>xdm-config</title> + <para>This contains settings in the form of app-defaults + that are applicable to every display that this installation + manages.</para> + </sect3> + + <sect3> + <title>xdm-errors</title> + <para>This contains the output of the X servers that + <application>XDM</application> is trying to run. If a display + that <application>XDM</application> is trying to start hangs + for some reason, this is a good place to look for error + messages. These messages are also written to the user's + <filename>~/.xsession-errors</filename> file on a per-session + basis.</para> + </sect3> + </sect2> + + <sect2> + <title>Running a Network Display Server</title> + + <para>In order for other clients to connect to the display + server, you must edit the access control rules and enable the connection + listener. By default these are set to conservative values. + To make <application>XDM</application> listen for connections, + first comment out a line in the <filename>xdm-config</filename> + file:</para> + + <screen>! SECURITY: do not listen for XDMCP or Chooser requests +! Comment out this line if you want to manage X terminals with xdm +DisplayManager.requestPort: 0</screen> + + <para>and then restart <application>XDM</application>. Remember that + comments in app-defaults files begin with a <quote>!</quote> + character, not the usual <quote>#</quote>. More strict + access controls may be desired — look at the example + entries in <filename>Xaccess</filename>, and refer to the + &man.xdm.1; manual page for further information.</para> + </sect2> + + <sect2> + <title>Replacements for XDM</title> + + <para>Several replacements for the default + <application>XDM</application> program exist. One of them, + <application>KDM</application> (bundled with + <application>KDE</application>) is described later in this + chapter. The <application>KDM</application> display manager offers many visual + improvements and cosmetic frills, as well as the + functionality to allow users to choose their window manager + of choice at login time.</para> + </sect2> + </sect1> + + <sect1 id="x11-wm"> + <sect1info> + <authorgroup> + <author> + <firstname>Valentino</firstname> + <surname>Vaschetto</surname> + <contrib>Contributed by </contrib> + </author> + <!-- June 2001 --> + </authorgroup> + </sect1info> + + <title>Desktop Environments</title> + + <para>This section describes the different desktop environments + available for X on FreeBSD. A <quote>desktop environment</quote> + can mean anything ranging from a simple window manager to a + complete suite of desktop applications, such as + <application>KDE</application> or <application>GNOME</application>.</para> + + <sect2 id="x11-wm-gnome"> + <title>GNOME</title> + + <sect3 id="x11-wm-gnome-about"> + <title>About GNOME</title> + + <indexterm><primary>GNOME</primary></indexterm> + <para><application>GNOME</application> is a user-friendly + desktop environment that enables users to easily use and + configure their computers. <application>GNOME</application> + includes a panel (for starting applications and displaying + status), a desktop (where data and applications can be + placed), a set of standard desktop tools and applications, and + a set of conventions that make it easy for applications to + cooperate and be consistent with each other. Users of other + operating systems or environments should feel right at home + using the powerful graphics-driven environment that + <application>GNOME</application> provides. More + information regarding <application>GNOME</application> on + FreeBSD can be found on the <ulink + url="http://www.FreeBSD.org/gnome">FreeBSD GNOME + Project</ulink>'s web site. The web site also contains fairly + comprehensive FAQs about installing, configuring, and managing + <application>GNOME</application>.</para> + </sect3> + + <sect3 id="x11-wm-gnome-install"> + <title>Installing GNOME</title> + + <para>The software can be easily installed from a package or the + Ports Collection:</para> + + <para>To install the <application>GNOME</application> package + from the network, simply type:</para> + + <screen>&prompt.root; <userinput>pkg_add -r gnome2</userinput></screen> + + <para>To build <application>GNOME</application> from source, use + the ports tree:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11/gnome2</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>For proper operation, <application>GNOME</application> requires + the <filename>/proc</filename> filesystem to be mounted. Add</para> + + <programlisting>proc /proc procfs rw 0 0</programlisting> + + <para>to <filename>/etc/fstab</filename> to mount + &man.procfs.5; automatically during + startup.</para> + + <para>Once <application>GNOME</application> is installed, + the X server must be told to start + <application>GNOME</application> instead of a default window + manager.</para> + + <para>The easiest way to start + <application>GNOME</application> is with + <application>GDM</application>, the GNOME Display Manager. + <application>GDM</application> is installed as part + of the <application>GNOME</application> desktop, although + it is disabled by default. It can be enabled by adding this + line to <filename>/etc/rc.conf</filename>:</para> + + <programlisting>gdm_enable="YES"</programlisting> + + <para>Once you have rebooted, + <application>GDM</application> will start automatically.</para> + + <para>It is often desirable to start all + <application>GNOME</application> services together with + <application>GDM</application>. To achieve this, add the + following line to <filename>/etc/rc.conf</filename>:</para> + + <programlisting>gnome_enable="YES"</programlisting> + + <para><application>GNOME</application> may also be started + from the command-line by properly configuring a file named + <filename>.xinitrc</filename>. + If a custom <filename>.xinitrc</filename> is already in + place, simply replace the line that starts the current window + manager with one that starts + <application>/usr/local/bin/gnome-session</application> instead. + If nothing special has been done to the configuration file, + then it is enough simply to type:</para> + + <screen>&prompt.user; <userinput>echo "/usr/local/bin/gnome-session" > ~/.xinitrc</userinput></screen> + + <para>Next, type <command>startx</command>, and the + <application>GNOME</application> desktop environment will be + started.</para> + + <note><para>If an older display manager, like + <application>XDM</application>, is being used, this will not work. + Instead, create an executable <filename>.xsession</filename> + file with the same command in it. To do this, edit the file + and replace the existing window manager command with + <application>/usr/local/bin/gnome-session</application>: + </para></note> + + <screen>&prompt.user; <userinput>echo "#!/bin/sh" > ~/.xsession</userinput> +&prompt.user; <userinput>echo "/usr/local/bin/gnome-session" >> ~/.xsession</userinput> +&prompt.user; <userinput>chmod +x ~/.xsession</userinput></screen> + + <para>Yet another option is to configure the display manager to + allow choosing the window manager at login time; the section on + <link linkend="x11-wm-kde-details">KDE details</link> + explains how to do this for <application>KDM</application>, the + display manager of <application>KDE</application>.</para> + </sect3> + </sect2> + + <sect2 id="x11-wm-kde"> + <title>KDE</title> + + <indexterm><primary>KDE</primary></indexterm> + <sect3 id="x11-wm-kde-about"> + <title>About KDE</title> + + <para><application>KDE</application> is an easy to use + contemporary desktop environment. Some of the things that + <application>KDE</application> brings to the user are:</para> + + <itemizedlist> + <listitem> + <para>A beautiful contemporary desktop</para> + </listitem> + + <listitem> + <para>A desktop exhibiting complete network transparency</para> + </listitem> + + <listitem> + <para>An integrated help system allowing for convenient, + consistent access to help on the use of the + <application>KDE</application> desktop and its + applications</para> + </listitem> + + <listitem> + <para>Consistent look and feel of all + <application>KDE</application> applications</para> + </listitem> + + <listitem> + <para>Standardized menu and toolbars, keybindings, color-schemes, + etc.</para> + </listitem> + + <listitem> + <para>Internationalization: <application>KDE</application> + is available in more than 55 languages</para> + </listitem> + + <listitem> + <para>Centralized, consistent, dialog-driven desktop + configuration</para> + </listitem> + + <listitem> + <para>A great number of useful + <application>KDE</application> applications</para> + </listitem> + </itemizedlist> + + <para><application>KDE</application> comes with a web browser called + <application>Konqueror</application>, which is + a solid competitor to other existing web browsers on &unix; + systems. More information on <application>KDE</application> + can be found on the <ulink url="http://www.kde.org/">KDE + website</ulink>. For FreeBSD specific information and + resources on <application>KDE</application>, consult + the <ulink url="http://freebsd.kde.org/">KDE/FreeBSD + initiative</ulink>'s website.</para> + + <para>There are two versions of <application>KDE</application> + available on FreeBSD. Version 3 has been around for a long + time, and is still available in the Ports Collection though + it's now unmaintained and partially broken. Version 4 is + punctually updated and is the default choice for + <application>KDE</application> users. They can even be + installed side by side.</para> + </sect3> + + <sect3 id="x11-wm-kde-install"> + <title>Installing KDE</title> + + <para>Just as with <application>GNOME</application> or any + other desktop environment, the software can be easily installed + from a package or the Ports Collection:</para> + + <para>To install the <application>KDE 3</application> package + from the network, type:</para> + + <screen>&prompt.root; <userinput>pkg_add -r kde</userinput></screen> + + <para>To install the <application>KDE 4</application> package + from the network, type:</para> + + <screen>&prompt.root; <userinput>pkg_add -r kde4</userinput></screen> + + <para>&man.pkg.add.1; will automatically fetch the latest version + of the application.</para> + + <para>To build <application>KDE 3</application> from source, + use the ports tree:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11/kde3</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>To build <application>KDE 4</application> from source, + use the ports tree:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11/kde4</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>After <application>KDE</application> has been installed, + the X server must be told to launch this application + instead of the default window manager. This is accomplished + by editing the <filename>.xinitrc</filename> file:</para> + + <para>For <application>KDE 3</application>:</para> + + <screen>&prompt.user; <userinput>echo "exec startkde" > ~/.xinitrc</userinput></screen> + + <para>For <application>KDE 4</application>:</para> + + <screen>&prompt.user; <userinput>echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc</userinput></screen> + + <para>Now, whenever the X Window System is invoked with + <command>startx</command>, + <application>KDE</application> will be the desktop.</para> + + <para>If a display manager such as + <application>XDM</application> is being used, the + configuration is slightly different. Edit the + <filename>.xsession</filename> file instead. Instructions + for <application>KDM</application> are described later in + this chapter.</para> + </sect3> + </sect2> + + <sect2 id="x11-wm-kde-details"> + <title>More Details on KDE</title> + + <para>Now that <application>KDE</application> is installed on + the system, most things can be discovered through the + help pages, or just by pointing and clicking at various menus. + &windows; or &mac; users will feel quite at home.</para> + + <para>The best reference for <application>KDE</application> is + the on-line documentation. <application>KDE</application> + comes with its own web browser, + <application>Konqueror</application>, dozens of useful + applications, and extensive documentation. The remainder of + this section discusses the technical items that are + difficult to learn by random exploration.</para> + + <sect3 id="x11-wm-kde-kdm"> + <title>The KDE Display Manager</title> + + <indexterm><primary>KDE</primary> + <secondary>display manager</secondary></indexterm> + <para>An administrator of a multi-user system may wish to have + a graphical login screen to welcome users. + <link linkend="x-xdm">XDM</link> can be + used, as described earlier. However, + <application>KDE</application> includes an + alternative, <application>KDM</application>, which is designed + to look more attractive and include more login-time options. + In particular, users can easily choose (via a menu) which + desktop environment (<application>KDE</application>, + <application>GNOME</application>, or something else) to run + after logging on.</para> + + <para>To enable <application>KDM</application>, different files + need to be edited depending on the version of + <application>KDE</application>.</para> + + <para>For <application>KDE 3</application>, the <literal>ttyv8</literal> + entry in <filename>/etc/ttys</filename> has to be adapted as + follows:</para> + + <programlisting>ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure</programlisting> + + <para>For <application>KDE 4</application>, you have to mount + &man.procfs.5; and add the following line to + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>kdm4_enable="YES"</programlisting> + </sect3> + + </sect2> + + <sect2 id="x11-wm-xfce"> + <title>Xfce</title> + <sect3 id="x11-wm-xfce-about"> + <title>About Xfce</title> + + <para><application>Xfce</application> is a desktop environment + based on the GTK+ + toolkit used by <application>GNOME</application>, but is much + more lightweight and meant for those who want a simple, + efficient desktop which is nevertheless easy to use and + configure. Visually, it looks very much like + <application>CDE</application>, found on commercial &unix; + systems. Some of <application>Xfce</application>'s features + are:</para> + + <itemizedlist> + <listitem> + <para>A simple, easy-to-handle desktop</para> + </listitem> + + <listitem> + <para>Fully configurable via mouse, with drag and + drop, etc.</para> + </listitem> + + <listitem> + <para>Main panel similar to <application>CDE</application>, with + menus, applets and applications launchers</para> + </listitem> + + <listitem> + <para>Integrated window manager, file manager, sound manager, + <application>GNOME</application> compliance module, and more</para> + </listitem> + + <listitem> + <para>Themeable (since it uses GTK+)</para> + </listitem> + + <listitem> + <para>Fast, light and efficient: ideal for older/slower machines + or machines with memory limitations</para> + </listitem> + </itemizedlist> + + <para>More information on <application>Xfce</application> + can be found on the <ulink url="http://www.xfce.org/">Xfce + website</ulink>.</para> + </sect3> + + <sect3 id="x11-wm-xfce-install"> + <title>Installing Xfce</title> + + <para>A binary package for <application>Xfce</application> + exists (at the time of writing). To install, simply type:</para> + + <screen>&prompt.root; <userinput>pkg_add -r xfce4</userinput></screen> + + <para>Alternatively, to build from source, use the + Ports Collection:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/x11-wm/xfce4</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>Now, tell the X server to launch + <application>Xfce</application> the next time X is started. + Simply type this:</para> + + <screen>&prompt.user; <userinput>echo "/usr/local/bin/startxfce4" > ~/.xinitrc</userinput></screen> + + <para>The next time X is started, + <application>Xfce</application> will be the desktop. + As before, if a display manager like + <application>XDM</application> is being used, create an + <filename>.xsession</filename>, as described in the + section on <link linkend="x11-wm-gnome">GNOME</link>, but + with the <filename>/usr/local/bin/startxfce4</filename> + command; or, configure the display manager to allow + choosing a desktop at login time, as explained in + the section on <link linkend="x11-wm-kde-kdm">kdm</link>.</para> + </sect3> + </sect2> + </sect1> + +</chapter> |