Feb. 17, 2011, 2:46 a.m.
posted by char
Fine-Tuning Your Display Configuration
Fedora's Anaconda installer detects and configures most display hardware optimally. However, there are some situations where it's necessary to override the default configuration to set up a desired display resolution and color depth.
How Do I Do That?
If you have a working graphical display, you can start this program by selecting SystemAdministrationDisplay from the panel menus (System SettingsDisplay in KDE). You'll need to enter the root password when prompted.
If you don't have a working graphical display, or you've booted into character mode (see Lab 4.5, "Using Runlevels"), you can start this program from the command line:
$ system-config-display You are attempting to run "system-config-display" which requires administrative privileges, but more information is needed in order to do so. Password for root: secret
The graphical display will be started in a very basic mode so that the graphical configuration dialog can be displayed.
Whether started from the menu or the command line, the window shown in Figure will be displayed.
This dialog has three tabs:
Once you have selected the desired configuration, click OK. The new configuration will take effect the next time you start the graphical user interface.
How Does It Work?
system-config-display changes the X server configuration file, /etc/X11/xorg.conf. If necessary, it creates an entirely new file. Most of the information for this file is determined from the hardware by probing.
The xorg.conf file is a plain-text file and can be edited by hand (see Lab 4.4, "Basic Text Editing Using vi"). Be sure to make a backup copy before making any changes. You can find a detailed description of the configuration options in xorg.conf's manpage (see Lab 4.2, "Accessing Online Documentation"):
$ man xorg.conf
The file is divided into sections, each of which looks like this:
Section "SectionName" Configuration Directives EndSection
The most commonly used sections in this file are shown in Figure.
Here is a typical xorg.conf file:
Section "ServerLayout" Identifier "single head configuration" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Synaptics" "CorePointer" InputDevice "Mouse0" "AlwaysCore" EndSection Section "Files" FontPath "unix/:7100" EndSection Section "Module" Load "glx" Load "dri" Load "synaptics" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Device" "/dev/input/mice" Option "Protocol" "IMPS/2" Option "ZAxisMapping" "4 5" # Scrollwheel support Option "Emulate3Buttons" "yes" # L+R buttons count as middle EndSection Section "InputDevice" Identifier "Synaptics" # Laptop touchpad Driver "synaptics" Option "Device" "/dev/input/mice" Option "Protocol" "auto-dev" Option "Emulate3Buttons" "yes" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" # Just for reference ModelName "LCD Panel 1400x1050" # Just for reference HorizSync 31.5 - 90.0 # Horiz. sync in kHz VertRefresh 59.0 - 75.0 # Vert. refresh in Hz Option "dpms" # Enables power management EndSection Section "Device" Identifier "Videocard0" Driver "nv" VendorName "Videocard vendor" # Just for reference BoardName "nVidia Corporation NV34M [GeForce FX Go5200]" # Ditto EndSection Section "Screen" Identifier "Screen0" Device "Videocard0" # Associates the video card Monitor "Monitor0" # with this monitor DefaultDepth 24 # Default is 24-bit colour SubSection "Display" Viewport 0 0 # "0 0" is almost always used Depth 24 # This section used by default Modes "1400x1050" "1280x1024" "1024x768" "800x600" "640x480" # Change modes with Ctrl-Alt-+/- EndSubSection # This next SubSection is not selected by default (because of the # DefaultDepth line in the previous section). However, it would be used if the # -depth option was specified on the X server command line, # overriding the DefaultDepth setting. SubSection "Display" Viewport 0 0 Depth 16 # Because default is 24-bit, Modes "800x600" "640x480" # ...this will usually be ignored EndSubSection EndSection Section "DRI" # Configures DRI devices... Group 0 # Root (user ID 0) owns them Mode 0666 # Readable/writable by all EndSection Section "Extensions" Option "Composite" "Enabled" # Enables transparency, etc. EndSection
To change the default color depth, edit the DefaultDepth line in the Screen section (make sure that a SubSection for that depth exists in the Screen section of the file). Values that work with most video cards include 8, 16, and 24 bits; the number of colors available is 2depth.
Similarly, the default resolution is controlled by the Modes entry in SubSection "Display" with the same Depth as DefaultDepth.
For example, to change the configuration in this example from a 24-bit (16-million-color) to 16 bit (65,536 color) depth, and to change the resolution to 800x600, change the DefaultDepth to 16 and then change the Modes line in the SubSection for 16-bit color:
Section "Screen" Identifier "Screen0" Device "Videocard0" # Associates the video card Monitor "Monitor0" # with this monitor DefaultDepth 16 # Default is 16-bit colour SubSection "Display" Viewport 0 0 # "0 0" is almost always used Depth 24 # This section used by default Modes "1400x1050" "1280x1024" "1024x768" "800x600" "640x480" # Change modes with Ctrl-Alt-+/- EndSubSection SubSection "Display" Viewport 0 0 Depth 16 Modes "800x600" EndSubSection EndSection
The Composite extension, enabled in the Extensions section of the file, powers the use of advanced visual effects, including transparency. Not all video drivers support Composite.
...per-user display resolution settings?
The GNOME menu option SystemPreferencesScreen Resolution sets the default resolution and refresh rate for a particular user (in KDE, select Control Center from the panel menu, then click on Display under Peripherals; be sure to select the checkbox labeled "Apply settings on KDE startup").
The system-wide resolution setting will be used for the user login display; individual user settings will take effect after the user logs in. The color depth can't be set this way because the architecture of the X Window System requires the color depth to be a system-wide setting.
...creating the xorg.conf file without using system-config-display?
The X server itself is capable of generating a reasonable xorg.conf file, which you can then fine-tune by manually editing it:
# X -configure :1
# ln -s /dev/input/mice /dev/mouse
You can then test the new configuration:
$ X -config /root/xorg.conf.new
This will present a blank display with an X-shaped mouse pointer. If the display looks right and you can move the pointer with your mouse, then go ahead and install this new configuration file as the default configuration:
# mv /root/X11/xorg.conf /root/X11/xorg.conf.backup # mv /root/xorg.conf.new /etc/X11/xorg.conf
You can fine-tune this configuration either manually or by using tools such as system-config-display.
...using multiple mice and keyboards with one display?
The default X server configuration will work with all USB pointer devices and keyboards plugged into the system. The devices will work in parallel; for example, if you have two mice, moving either one will move the onscreen pointer, and if you have two keyboards, typing on either will send characters to the display.
Most keyboards will be detected as soon as they are plugged in, but other keyboards will be detected only when the system starts. For example, I have a secondary French Canadian USB keyboard and a USB calculator/numeric keypad; the French Canadian keyboard is detected as soon as it is plugged in, but the numeric keypad must be plugged in during boot in order to be detected properly. Special features of advanced pointers (such as touchpads) will not be configured automatically unless those devices are plugged in when system-config-display is run.
...a nonstandard monitor, such as a widescreen laptop display?
In most cases, these displays can be probed automatically using VESA standard protocols. If not, edit /etc/X11/xorg.conf, find the Monitor section, and enter the HorizSync (horizontal scan frequency) and VertRefresh (vertical scan/refresh frequency) values specified in your monitor documentation:
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Unknown Monitor" HorizSync 32.00 - 72.0 # Horiz. sync in kHz VertRefresh 58.0 - 62.0 # Vert. refresh in Hz EndSection
Next, edit the default resolution to match your hardware:
Section "Screen" Identifier "Screen0" Device "Videocard0 Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x800" EndSubSection EndSection
Where Can I Learn More?