From ArchWiki
Revision as of 17:01, 15 April 2009 by Airman99 (talk | contribs) (→‎Without xorg.conf: grammatical corrections)
Jump to navigation Jump to search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end



Xorg is the public, open-source implementation of the X11 X Window System. (See the X.org Wikipedia Article or X.org for details.) Basically, if you want a GUI atop Arch, you will want xorg.

Installing Xorg

Before beginning, make sure you do the following:

  1. Make sure that pacman is configured and refreshed.
  2. If you are running another X server you can close it now. ctrl+alt+backspace
  3. Make a note about third-party drivers (e.g., nVidia or ATI drivers).

First let us install the complete 'xorg' group:

# pacman -S xorg

The default 'vesa' driver is merely a fallback (not accelerated and doesn't support many resolutions), so you will need a proper video driver too. You can type this command to list all the video drivers available:

# pacman -Ss xf86-video

(However, if you have a nvidia card, you may install the package "nvidia" instead, if you don't mind proprietary drivers)

Look for the appropriate driver for your card and install it with pacman -S. To check your card, if hwd is installed, run:

hwd -s

or run :

lspci | grep "VGA"

If Xorg installed OK, it's time to make xorg.conf

Configuring xorg

Before you can run xorg, you need to configure it so that it knows about your graphics card, monitor, mouse and keyboard. There are several methods of automating the process:

Without xorg.conf

The latest Xorg does a good job at detecting all your hardware with the help of HAL. So using an xorg.conf is optional now. Even if you need one, it is better to start with no xorg.conf and then add sections you need.

Since xorg depends on hal, install hal if you haven't done it yet

pacman -S hal

Add hal to DAEMONS array of rc.conf

start hal

/etc/rc.d/hal  start

Then try starting X


If it is not detecting proprietary drivers like nvidia, add a minimalistic xorg.conf like the following

Section "ServerLayout"
   Identifier     "Layout0"
   Screen      0  "Screen0" 0 0

Section "Files"
   FontPath "/usr/share/fonts/local/"

Section "Device"
   Identifier     "Device0"
   Driver         "nvidia"
   VendorName     "NVIDIA Corporation"
   BoardName      "GeForce Go 7300"

Section "Screen"
   Identifier     "Screen0"
   Device         "Device0"


Template:Box Note

Perhaps the easiest way of getting Xorg up and running quickly is to use hwd, a tool written by users in the Arch Linux community. It's basically a hardware-detection tool that has multiple uses, one of which is setting up an X server. Fortunately, hwd is much more streamlined than xorgconf and doesn't require any input at all.

First, install the hwd package:

# pacman -S hwd

Now simply run the following command as root to generate a default xorg.conf file:

# hwd -xa

This will overwrite any existing /etc/X11/xorg.conf file with a practical set of defaults, based on what hwd detected for your hardware.

Alternatively, you can generate a sample Xorg config (/etc/X11/xorg.conf.hwd) without overwriting your existing settings. To do so, run hwd with the -x flag instead:

# hwd -x

Sample result:


Your sample file(s) ready, rename 'xorg.conf'.
If unsure first try 'vesa' (default).

To use the sample config(s), you must manually rename it. Sample:

# mv /etc/X11/xorg.conf.vesa /etc/X11/xorg.conf

AD: In my experience hwd creates XF86Config-4 file and if there is not xorg.conf present Xorg uses it automatically.


(works on xorg-server version < 1.6 [1])

To start up xorgconfig:

# xorgconfig


# xorgcfg -textmode

These will generate a new xorg.conf.

Answer the questions, and the program will make the file for you. This program is not really good but it's a start, and you can fill in special stuff manually afterwards.

Xorg -configure

You can also use

# Xorg -configure


# X -configure

The command automatically generate a default xorg.conf.new file in the current directory. You can check it by:

# X -config ./xorg.conf.new

and copy it as /etc/X11/xorg.conf .


nVidia users can also use

# nvidia-xconfig

when they have official nvidia drivers installed.

Comment the line

 Load           "type1"

in the Module section since recent versions of xorg-server do not include the type1 font module (completely replaced by freetype).

Editing xorg.conf

You may wish to edit the config after it's been generated. To open in your favourite text-editor, such as Vim (you need root privileges):

# vim /etc/X11/xorg.conf

or use Xorg (xorg-server version < 1.6) Configuration toolkit:

# xorgcfg -textmode

Monitor Settings

Depending on your hardware, Xorg may fail to detect your monitor capabilities correctly, or you may simply wish to use a lower resolution than your monitor is capable of. You might want to look up the following values in your monitor's manual before setting them. The following settings are specified in the Monitor section:

Horizontal Sync

HorizSync 28-64

Refresh Rate

VertRefresh 60

The following are specified in the Screen section:

Color Depth

Depth 24


Modes "1280x1024" "1024x768" "800x600"

Multi-monitor setups

The easiest way to achieve a working multi-monitor setup is using xrandr after X starts. First, run (from any account):

xrandr -q

This will list all your available video outputs, with some information about them. Assume your output names are VGA-0, DVI-0 and S-video. Then, to merge screens connected to DVI-0 and VGA-0 outputs, you just need to run:

xrandr --output DVI-0 --right-of VGA-0

If this command works for you, just add it to your xinitrc file.

Keyboard Settings

Xorg may fail to detect your keyboard correctly. This might give problems with your keyboard layout or keyboard model not being set correctly.

To see a full list of keyboard models, layouts, variants and options, open:


Input hotplugging with xorg-server 1.5

Normally xorg-server 1.5 tries to configure your keyboard using the new xf86-input-evdev driver (which in turn uses dbus and HAL) instead of using your configuration settings in xorg.conf. This may result in an undesired auto-configured keyboard layout. The fastest workaround is to disable the hotplugging mechanism by adding the following section to your xorg.conf:

Section "ServerFlags"
    Option "AutoAddDevices" "False"

Template:Box Note

For more information see Xorg input hotplugging.

Keyboard Layout

Template:Box Note

To change the keyboard layout, use the XkbLayout option in the keyboard InputDevice section. For example, if you have a keyboard with English layout:

Option "XkbLayout" "gb"

To be able to easily switch keyboard layouts, for example between a US and a Swedish layout use this instead:

Option "XkbLayout" "us, se"
Option "XkbOptions" "grp:caps_toggle"

This makes your Caps Lock key switch between the different layouts. This is mainly useful if you run don't run a Desktop Environment which takes care of keyboard layouts for you.

Keyboard Model

To change the keyboard model, use the XkbModel option in the keyboard InputDevice section. For example, if you have a Microsoft Wireless Multimedia Keyboard:

Option "XkbModel" "microsoftmult"

Problem with your Apple Keyboard?

More information can be found here.

Display Size/DPI

In order to get correct sizing for fonts, the display size must be set for your desired DPI.

First thing you may try is Xorg autodetection of display size and DPI settings with DDC.
In /etc/X11/xorg.conf :

Section "Module"
# support for Data Display Channel. Allows to query the monitor capabilities via the video card
Load  "ddc"
# serial bus over which you speak the ddc protocol to get info from the monitor
Load "i2c"
Section Screen
DefaultColorDepth 24
SubSection "Display"
 Depth     24
 Modes "1280x1024" "1152x864" "1024x768" "800x600" "640x480"

And do not write any Modeline or DisplaySize settings. Sometimes it works fine, otherwise you need to set up it manualy

One way to set it up is to pass an argument directly to the X (Xorg) binary.
In /etc/X11/xinit/xserverrc add the "-dpi 96" part as follows:

exec /usr/bin/X -nolisten tcp -dpi 96

Alternatively, going back to the /etc/X11/xorg.conf file, in the section "Monitor" put in your display size in mm:

Section "Monitor"
 DisplaySize 336 252 # 96 DPI @ 1280x960

The formula for calculating the DisplaySize values is Width (in inches) x 25.4 / DPI and Height (in inches) x 25.4 / DPI. If you're running Xorg with a resolution of 1024x768 and want a DPI of 96, use 1024 x 25.4 / 96 and 768 x 25.4 / 96. Round numbers down. (xorg.conf expects width/height specifications to be given in milimeters. There are 25.4 milimeters per inch, thus the need to multiply by 25.4)

# calc: (x|y)pixels * 25.4 / dpi
# DisplaySize 168 126 # 96 DPI @ 640x480
# DisplaySize 210 157 # 96 DPI @ 800x600
# DisplaySize 269 201 # 96 DPI @ 1024x768
# DisplaySize 302 227 # 96 DPI @ 1152x864
# DisplaySize 336 252 # 96 DPI @ 1280x960
# DisplaySize 336 210 # 96 DPI @ 1280x800 (non 4:3 aspect)
# DisplaySize 339 271 # 96 DPI @ 1280x1024 (non 4:3 aspect)
# DisplaySize 370 277 # 96 DPI @ 1400x1050
# DisplaySize 380 238 # 96 DPI @ 1440x900 (non 4:3 aspect)
# DisplaySize 420 315 # 96 DPI @ 1600x1200
# DisplaySize 444 277 # 96 DPI @ 1680x1050 (non 4:3 aspect)
# DisplaySize 506 315 # 96 DPI @ 1920x1200 (non 4:3 aspect)

In case X ignores your DisplaySize setting (known bug) add the following line in the Device section.

  Option   "NoDDC" "true"

For nVidia drivers you may have to disable automatic detection of DPI to set it manually. There is also an easier way to set DPI on these cards. Either or both of the following lines can be set in the device section for your nVidia card.

  Option   "UseEdidDpi" "false"
  Option   "DPI" "96 x 96"

If X still ignores your DPI settings, and you have an RandR compliant video driver, you can use

xrandr --dpi 96

to manually set the DPI. You can add that command to your .xinitrc to have the DPI settings applied when you start X manually, and if you are using a display manager, like KDM, you can add it to your display manager's X statup file. For KDM, that would be somewhere like /usr/share/config/kdm/Xstartup.

Results can be checked by issuing the following command, which should return 96x96 dots per inch if you set DPI @ 96.

$ xdpyinfo | grep -B1 dot

Proprietary Drivers

If you wish to use third-party graphics drivers, do check that the X server runs OK first. Xorg should run smoothly without official drivers, which are typically needed only for advanced features such as 3D-accelerated rendering for games, dual-screen setups, and TV-out. Refer to the NVIDIA and ATI wikis for help with driver installation.


There some tips for setting up fonts in Xorg Font Configuration.

Sample Xorg.conf Files

Anyone who has an Xorg.conf file written up that works, go ahead and post a link to it here for others to look at! Please don't inline the entire conf file; upload it somewhere else and link. Thanks!

Running Xorg

This is done simply by typing:

$ startx


$ xinit

The default X environment is rather bare, and you will typically seek to install window managers or desktop environments to supplement X.

To test the config file you have created:

$ X -config <your config file>

If a problem occurs, then view the log at /var/log/Xorg.0.log. Be on the lookout for any lines beginning with (EE) which represent errors, and also (WW) which are warnings that could indicate other issues.

*Please Note* Using startx or xinit requires a ~/.xinitrc file, so that X knows what to run when it starts. Your best option is to copy /etc/skel/.xinitrc to your home directory and edit it. Comment out the 'exec' lines you don't want, and add or uncomment one for the WM you want to use. If you are using GNOME it is best to start GNOME through gdm to avoid HAL permission problems.

In addition, you can also install twm and xterm (via pacman), which will be used as a fallback if ~/.xinitrc does not exist (as stated in /etc/X11/xinit/xinitrc).

X startup (/usr/bin/startx) tweaking

For X's option reference see

$ man Xserver

The following options have to be appended to the variable "defaultserverargs" in the /usr/bin/startx file:

  • prevent X from listening on tcp:
-nolisten tcp

Note: this seems to be the default option now in /etc/X11/xinit/xserverrc

  • getting rid of the gray weave pattern while X is starting and let X set a black root window:

Note: there seems to be no need for that in recent releases of Xorg.

  • enable deferred glyph loading for 16 bit fonts:
-deferglyphs 16

Note: If you start X with kdm, the startx script does not seem to be executed. X options must be appended to the variable "ServerArgsLocal" or "ServerCmd" in the /usr/share/config/kdm/kdmrc file. By default kdm options are

  ServerArgsLocal=-nolisten tcp

Changes with modular Xorg

Most Common Packages

Make sure you install drivers for mouse, keyboard and videocard. For mouse and keyboard, xf86-input-keyboard and xf86-input-mouse should get installed. Other xf86-input-* packages are available for different input devices.

For the videocard, find out which driver is required and install the right xf86-video-* package. ATI and Nvidia users may wish to install the non-free drivers for their hardware instead (NVIDIA, ATI).

To install all drivers in one run, the xorg-input-drivers and xorg-video-drivers are available.

OpenGL 3D Acceleration

X.Org 7.0 on Arch Linux uses a modular design for mesa, the OpenGL rendering system. Several implementations are available:

  • libgl-dri: Open-source DRI OpenGL implementation. Falls back to software rendering when no DRI driver is installed
  • some other driver providing libGL (ati, nvidia)

When pacman installs an application that needs mesa, it will install one of these packages. To be sure about the right library for your setup, install the library you want prior to installing Xorg. Installing the right package afterwards is also possible, though this gives some dependency errors sometimes, which can be ignored with the -d switch.

Glxgears and Glxinfo

These apps are included in the mesa package.

Changed paths (and configuration)

See this entry for additional upgrade info: http://www.archlinux.org/blog/2006/01/02/how-to-upgrade-xorg/

Modular X.Org 7 installs everything in /usr, where the older versions installed in /usr/X11R6. Several configuration files need updates:

  • /etc/X11/xorg.conf
    • Fontpaths live in /usr/share/fonts now
    • RGB database is in /usr/share/X11/rgb
    • module path is /usr/lib/xorg/modules

Also note that some X configuration tools might stop working. The easiest way to configure X.org is by installing the correct driver packages and running Xorg -configure, which results in a /root/xorg.conf.new which only needs modification in the resolutions, mouse configuration and keyboard layouts.

Some packages have hard-coded references to /usr/X11R6. These packages need fixing. In the meantime, look what packages install files in /usr/X11R6, uninstall those, make a symlink from /usr to /usr/X11R6 and reinstall the affected packages. Another option is to move the contents of /usr/X11R6 to /usr and make the symlink.

Or you can just add a second module path via ModulePath "/usr/X11R6/lib/modules" This works e.g. for Nvidia 76.76


Xorg "can't see" the resolutions your monitor supports

I found myself in a situation where if I used one of my monitors (a gnr ts902), Xorg would only present me with the options 640x480 and 320x480 which of course was less than I desired. After a lot of research I found through read-edid (in AUR) that part of my EDID was corrupt and so I could only read my HorizSync with read-edid. This fortunately was enough and after adding the right HorizSync line to the xorg.conf's Monitor section (I didn't have to add VertRefresh) I restarted X to see the right resolution :)

note: I'm not sure if

Option "ModeValidation" "NoEdidModes"
Option   "UseEdid" "false"

in Device section of xorg.conf are needed as well; too lazy now to test without them :)

Keyboard Problems

Auto-generated xorg.conf files may cause you problems. If you cannot get to tty1 by holding CTRL-ALT and pressing F1 or cannot get the £ sign for gb people, check to see if the following entries are in your /etc/X11/xorg.conf:

Option "XkbLayout"  "uk"         #"uk" is not a real layout, look in /usr/share/X11/xkb/symbols/ for a list of real ones.
                                 #Try "gb" if you want a UK keyboard layout
Option "XkbRules"   "xfree86"    #this should be "xorg"
Option "XkbVariant" "nodeadkeys" #This line is also known to cause the problems described, try commenting it out.

To switch between layouts with Alt+Shift:

Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"

A Quick Fix for the Bitstream-Vera Conflict

If you see a message that ttf-bitstream-vera conflicts with xorg:

  1. Exit the pacman session by answering no.
  2. Run pacman -Rd xorg
  3. Run pacman -Syu
  4. Run pacman -S xorg
  5. Update your paths in /etc/X11/xorg.conf

A Quick Fix for file conflicts in /usr/include

If you see messages about file conflicts in /usr/include/X11 and /usr/include/GL:

  1. Run rm /usr/include/{GL,X11}
  2. Run pacman -Su

The symlinked directories removed by this operation are replaced by real directories in the new xorg package, causing these file conflicts to appear.

libgl-dri conflicts

(Note below, that nvidia-legacy has been replaced by nvidia-71xx or nvidia-96xx. See here for further details of which driver to use.)

If you get a message similar to:

:: libgl-dri conflicts with nvidia-legacy. Remove nvidia-legacy? [Y/n]

this is due to the multiple OpenGL implementations explained in the OpenGL section above - pacman is attempting to install libgl-dri to satisfy this dependency, but also trying to upgrade your existing video driver, and they conflict. To solve, try:

  • Updating your video driver before a full system update:
# pacman -S nvidia-legacy
# pacman -Syu

Or, if that doesn't work,

  • Remove your existing video driver, do the update, then reinstall your driver:
# pacman -Rd nvidia-legacy
# pacman -Syu
# pacman -S nvidia-legacy
:: nvidia-legacy conflicts with libgl-dri. Remove libgl-dri? [Y/n] Y

Mouse wheel not working

The "Auto" protocol doesn't seem to work properly in Xorg 7 any more. In the InputDevice section for your mouse, change:

Option         "Protocol" "auto"


Option         "Protocol" "IMPS/2"


Option         "Protocol" "ExplorerPS/2"

Extra mouse buttons not working

USB Mice users should read Get_All_Mouse_Buttons_Working.

Intellimouse (ExplorerPS/2) users might find their scroll and side buttons aren't behaving as they used to. Previously xorg.conf needed:

Option      "Buttons" "7"
Option      "ZAxisMapping" "6 7"

and users also had to run xmodmap to get the side buttons working with a command like:

xmodmap -e "pointer = 1 2 3 6 7 4 5"

Now xmodmap is no longer required. Instead, make xorg.conf look like this:

Option      "Buttons" "5"
Option      "ZAxisMapping" "4 5"
Option      "ButtonMapping" "1 2 3 6 7"

and the side buttons on a 7-button Intellimouse will work like they used to, without needing to run xmodmap.

Keyboard problems

Some keyboard layouts have changed. I wondered why:

  • I wasn't able to Ctrl+Alt+Fx to switch to console
  • I wasn't able to use layouts

The problem was that the sk_qwerty layout doesn't exist anymore. I had to replace

Option         "XkbLayout" "us,sk_qwerty"


Option         "XkbLayout" "us,sk"
Option         "XkbVariant" ",qwerty"

Another thing to look for if your keyboard isn't properly functioning is the XkbRules option:
You'll need to change

Option         "XkbRules" "xfree86"


Option         "XkbRules" "xorg"

AltGR (Compose Key) not working properly

If, after the update, you can't use the AltGr key as expected any more, try adding this to your keyboard section:

Option      "XkbOptions" "compose:ralt"

This is not the correct way to activate the AltGr Key on a German keyboard (for example, to use the '|' and '@' keys on German keyboards). Just choose a valid keyboard variant for it to work again, for example (the example is for a German keyboard):

Option      "XkbLayout" "de"
Option      "XkbVariant" "nodeadkeys"

The solutions above don't work on an Italian keyboard. To activate the AltGr key on an Italian keyboard make sure you have the following lines set up properly:

 Driver          "kbd"
 Option          "XkbRules"      "xorg"
 Option          "XkbVariant"    ""

This might still not be enough for a swedish keyboard. Try the above, but with lv3 instead of compose. (Thank you wyvern!) That is:

 Option "XkbLayout" "se"
 Option "XkbVariant" "nodeadkeys"
 Option "XkbOptions" "lv3:ralt_switch"

Can't set qwerty layouts using the setxkbmap command

After the update, there aren't qwerty layouts as for example sk_qwerty. If you want to switch your present keyboard layout to any qwerty keyboard layout use this command:

$ setxkbmap NAME_OF_THE_LAYOUT qwerty

e.g.: for sk_qwerty use:

$ setxkbmap sk qwerty

After the update, trying the above command I had this message "Error loading new keyboard description". I find out that the xserver doesn't have the rights to write, execute, read in the directory /var/tmp So give the permissions to that directory. Restart the xserver and you will have your deadkeys back! Don't believe? Try out the code e.g.: it layout

$ setxkbmap -layout it

Setup French Canadian (old ca_enhanced) layout

With disabled hotplugging

Since the new Xorg changed the way it deals with keyboards, the following method will only work if you disable "hotplugging" : http://wiki.archlinux.org/index.php/Xorg_input_hotplugging

With Xorg7, "ca_enhanced" is no more. You have to do a little trick to get the same layout that you are used to: Switch the old:

       Option          "XkbLayout"     "ca_enhanced"


       Option          "XkbLayout"     "ca"
       Option          "XkbVariant"    "fr"

It will be similar with other layout, I presume. You can refer to Gentoo HowTo there: http://www.gentoo.org/proj/en/desktop/x/x11/modular-x-howto.xml


I use a workaround so that I don't have to manually change the HAL fdi policies, as this is the new way of dealing with keymaps with the new Xorg. I use "setxkbmap" : http://wiki.archlinux.org/index.php/Xorg_input_hotplugging#Using_setxkbmap

Change the X keyboard layout to french canadian with this command:

#setxkbmap ca -variant fr

To make it change automatically, you can try this:

Created the file


and added this to it:

[Desktop Entry]
Name=Keymap French Canadian
Exec=setxkbmap ca -variant fr

It works at least for XFCE4 and LXDE.

Missing libraries

  • Help! I get an error message running my favourite app saying "libXsomething" doesn't exist!

In most cases, all you need to do is take the name of the library (eg libXau.so.1), convert it all to lowercase, remove the extension, and pacman for it:

# pacman -S libxau

This will install the library you're missing, and all will be well again!

Some packages fail to build and complain about missing X11 includes

Just reinstall the packages xproto and libx11, even if they are already installed.

Unable to load font '(null)'

  • Some programs don't work and say unable to load font `(null)'.

These packages would like some extra fonts. Some programs only work with bitmap fonts. Two major packages with bitmap fonts are available, xorg-fonts-75dpi and xorg-fonts-100dpi. You don't need both; one should be enough. To find out which one would be better in your case, try this:

$ xdpyinfo | grep resolution

and grab what is closer to you (75 or 100 instead of XX)

# pacman -S xorg-fonts-XXdpi

After updating to xorg-server 1.5, KDE4 Konsole crashes and/or systray icons disappear on right click


Option "BackingStore" "True"


Option "BackingStore" "False"

in /etc/X11/xorg.conf.

Updating from testing version to extra (missing files)

If you've updated from Xorg 7 in testing to Xorg 7 in extra and are finding that many files seem to be missing (including startx, /usr/share/X11/rgb.txt, and others), you may have lost many files due to the xorg-clients package splitting from a single package into many smaller sub packages.

You need to reinstall all the packages that are dependencies of xorg-clients:

# pacman -S xorg-apps xorg-font-utils xorg-res-utils xorg-server-utils \
          xorg-twm xorg-utils xorg-xauth xorg-xdm xorg-xfs xorg-xfwp \
          xorg-xinit xorg-xkb-utils xorg-xsm

This should fix the problem.

Problem with MIME types in various desktop environments

If you noticed icons missing and can't click-open files in desktop environments, add the following lines to /etc/profile or your preferred init script and reboot.


DRI stops working with Matrox cards

If you use a Matrox card and DRI stops working after upgrading to xorg7, try adding the line

Option "OldDmaInit" "On"

to the Device section that references the video card in xorg.conf.

Cannot start any clients under Xephyr

The client connections are rejected by the X server's security mechanism, you can find a complete explanation and solution in [2].

Cannot start X clients as root using "su"

If you're getting "Client is not authorized to connect to server", try adding the line

 session        optional        pam_xauth.so

to the file /etc/pam.d/su. pam_xauth will properly set environment variables and handle xauth keys.

Ctrl-Alt-Backspace doesn't exit X

New xorg disables zapping with Ctrl-Alt-Backspace by default. You can enable it by adding the following lines to xorg.conf

 Section "ServerFlags"
       Option	"DontZap" "false"


See also:

External Links