Xorg supports most common video cards, keyboards, and pointing devices.
Video cards, monitors, and input devices are
automatically detected and do not require any manual
configuration. Do not create
or run a
-configure step unless automatic
If Xorg has been used on this computer before, move or remove any existing configuration files:
mv /etc/X11/xorg.conf ~/xorg.conf.etc
mv /usr/local/etc/X11/xorg.conf ~/xorg.conf.localetc
Add the user who will run Xorg to the
wheelgroup to enable 3D acceleration when available. To add user
jruto whichever group is available:
pw groupmod video -m
jru|| pw groupmod wheel -m
The TWM window manager is included by default. It is started when Xorg starts:
/dev/dri is needed to allow
3D acceleration on video cards. It is usually simplest to add
the user who will be running X to either the
Here, pw(8) is used to add user
slurms to the
video group, or to the
wheel group if there is no
pw groupmod video -m
slurms|| pw groupmod wheel -m
When the computer switches from displaying the console to a higher screen resolution for X, it must set the video output mode. Recent versions of Xorg use a system inside the kernel to do these mode changes more efficiently. Older versions of FreeBSD use sc(4), which is not aware of the KMS system. The end result is that after closing X, the system console is blank, even though it is still working. The newer vt(4) console avoids this problem.
Add this line to
to enable vt(4):
Manual configuration is usually not necessary. Please do not manually create configuration files unless autoconfiguration does not work.
Xorg looks in several
directories for configuration files.
/usr/local/etc/X11/ is the recommended
directory for these files on FreeBSD. Using this directory
helps keep application files separate from operating system
Storing configuration files in the legacy
/etc/X11/ still works. However, this
mixes application files with the base FreeBSD files and is not
It is easier to use multiple files that each configure a
specific setting than the traditional single
xorg.conf. These files are stored in
xorg.conf.d/ subdirectory of the
main configuration file directory. The full path is
Examples of these files are shown later in this section.
The traditional single
still works, but is neither as clear nor as flexible as
multiple files in the
3D acceleration is supported on most Intel graphics up to Ivy Bridge (HD Graphics 2500, 4000, and P4000), including Iron Lake (HD Graphics) and Sandy Bridge (HD Graphics 2000).
For reference, see https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units.
- AMD Radeon
2D and 3D acceleration is supported on Radeon cards up to and including the HD6000 series.
For reference, see https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units.
Several NVIDIA drivers are available in the
x11category of the Ports Collection. Install the driver that matches the video card.
For reference, see https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units.
- Hybrid Combination Graphics
Some notebook computers add additional graphics processing units to those built into the chipset or processor. Optimus combines Intel and NVIDIA hardware. Switchable Graphics or Hybrid Graphics are a combination of an Intel or AMD processor and an AMD Radeon GPU.
Implementations of these hybrid graphics systems vary, and Xorg on FreeBSD is not able to drive all versions of them.
Some computers provide a BIOS option to disable one of the graphics adapters or select a discrete mode which can be used with one of the standard video card drivers. For example, it is sometimes possible to disable the NVIDIA GPU in an Optimus system. The Intel video can then be used with an Intel driver.
BIOS settings depend on the model of computer. In some situations, both GPUs can be left enabled, but creating a configuration file that only uses the main GPU in the
Devicesection is enough to make such a system functional.
- Other Video Cards
Drivers for some less-common video cards can be found in the
x11-driversdirectory of the Ports Collection.
Cards that are not supported by a specific driver might still be usable with the x11-drivers/xf86-video-vesa driver. This driver is installed by x11/xorg. It can also be installed manually as x11-drivers/xf86-video-vesa. Xorg attempts to use this driver when a specific driver is not found for the video card.
x11-drivers/xf86-video-scfb is a similar nonspecialized video driver that works on many UEFI and ARM computers.
- Setting the Video Driver in a File
To set the Intel driver in a configuration file:Example5.1.Select Intel Video Driver in a File
Section "Device" Identifier "Card0" Driver "intel" # BusID "PCI:1:0:0" EndSection
If more than one video card is present, the
BusIDidentifier can be uncommented and set to select the desired card. A list of video card bus IDs can be displayed with
pciconf -lv | grep -B3 display.
To set the Radeon driver in a configuration file:Example5.2.Select Radeon Video Driver in a File
Section "Device" Identifier "Card0" Driver "radeon" EndSection
To set the VESA driver in a configuration file:Example5.3.Select VESA Video Driver in a File
Section "Device" Identifier "Card0" Driver "vesa" EndSection
To set the
scfbdriver for use with a UEFI or ARM computer:Example5.4.Select
scfbVideo Driver in a File
Section "Device" Identifier "Card0" Driver "scfb" EndSection
Almost all monitors support the Extended Display Identification Data standard (EDID). Xorg uses EDID to communicate with the monitor and detect the supported resolutions and refresh rates. Then it selects the most appropriate combination of settings to use with that monitor.
Other resolutions supported by the monitor can be chosen by setting the desired resolution in configuration files, or after the X server has been started with xrandr(1).
- Using xrandr(1)
Run xrandr(1) without any parameters to see a list of video outputs and detected monitor modes:
xrandrScreen 0: minimum 320 x 200, current 3000 x 1920, maximum 8192 x 8192 DVI-0 connected primary 1920x1200+1080+0 (normal left inverted right x axis y axis) 495mm x 310mm 1920x1200 59.95*+ 1600x1200 60.00 1280x1024 85.02 75.02 60.02 1280x960 60.00 1152x864 75.00 1024x768 85.00 75.08 70.07 60.00 832x624 74.55 800x600 75.00 60.32 640x480 75.00 60.00 720x400 70.08 DisplayPort-0 disconnected (normal left inverted right x axis y axis) HDMI-0 disconnected (normal left inverted right x axis y axis)
This shows that the
DVI-0output is being used to display a screen resolution of 1920x1200 pixels at a refresh rate of about 60 Hz. Monitors are not attached to the
Any of the other display modes can be selected with xrandr(1). For example, to switch to 1280x1024 at 60 Hz:
xrandr --mode 1280x1024 --rate 60
A common task is using the external video output on a notebook computer for a video projector.
The type and quantity of output connectors varies between devices, and the name given to each output varies from driver to driver. What one driver calls
HDMI-1, another might call
HDMI1. So the first step is to run xrandr(1) to list all the available outputs:
xrandrScreen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 1366x768 60.04*+ 1024x768 60.00 800x600 60.32 56.25 640x480 59.94 VGA1 connected (normal left inverted right x axis y axis) 1280x1024 60.02 + 75.02 1280x960 60.00 1152x864 75.00 1024x768 75.08 70.07 60.00 832x624 74.55 800x600 72.19 75.00 60.32 56.25 640x480 75.00 72.81 66.67 60.00 720x400 70.08 HDMI1 disconnected (normal left inverted right x axis y axis) DP1 disconnected (normal left inverted right x axis y axis)
Four outputs were found: the built-in panel
LVDS1, and external
The projector has been connected to the
VGA1output. xrandr(1) is now used to set that output to the native resolution of the projector and add the additional space to the right side of the desktop:
xrandr --output VGA1 --auto --right-of LVDS1
--autochooses the resolution and refresh rate detected by EDID. If the resolution is not correctly detected, a fixed value can be given with
--modeinstead of the
--autostatement. For example, most projectors can be used with a 1024x768 resolution, which is set with
xrandr(1) is often run from
.xinitrcto set the appropriate mode when X starts.
- Setting Monitor Resolution in a File
To set a screen resolution of 1024x768 in a configuration file:Example5.5.Set Screen Resolution in a File
Section "Screen" Identifier "Screen0" Device "Card0" SubSection "Display" Modes "1024x768" EndSubSection EndSection
The few monitors that do not have EDID can be configured by setting
VertRefreshto the range of frequencies supported by the monitor.Example5.6.Manually Setting Monitor Frequencies
Section "Monitor" Identifier "Monitor0" HorizSync 30-83 # kHz VertRefresh 50-76 # Hz EndSection
- Keyboard Layout
The standardized location of keys on a keyboard is called a layout. Layouts and other adjustable parameters are listed in xkeyboard-config(7).
A United States layout is the default. To select an alternate layout, set the
XkbVariantoptions in an
InputClass. This will be applied to all input devices that match the class.
This example selects a French keyboard layout with the
ossvariant.Example5.7.Setting a Keyboard Layout
Section "InputClass" Identifier "KeyboardDefaults" Driver "keyboard" MatchIsKeyboard "on" Option "XkbLayout" "fr" Option "XkbVariant" "oss" EndSectionExample5.8.Setting Multiple Keyboard Layouts
Set United States, Spanish, and Ukrainian keyboard layouts. Cycle through these layouts by pressing Alt+Shift. x11/xxkb or x11/sbxkb can be used for improved layout switching control and current layout indicators.
Section "InputClass" Identifier "All Keyboards" MatchIsKeyboard "yes" Option "XkbLayout" "us, es, ua" EndSection
- Closing Xorg From the Keyboard
X can be closed with a combination of keys. By default, that key combination is not set because it conflicts with keyboard commands for some applications. Enabling this option requires changes to the keyboard
InputDevicesection:Example5.9.Enabling Keyboard Exit from X
Section "InputClass" Identifier "KeyboardDefaults" Driver "keyboard" MatchIsKeyboard "on" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection
Many mouse parameters can be adjusted with configuration options. See mousedrv(4) for a full list.
- Mouse Buttons
The number of buttons on a mouse can be set in the mouse
xorg.conf. To set the number of buttons to 7:Example5.10.Setting the Number of Mouse Buttons
Section "InputDevice" Identifier "Mouse0" Option "Buttons" "7" EndSection
In some cases, Xorg autoconfiguration does not work with particular hardware, or a different configuration is desired. For these cases, a custom configuration file can be created.
Do not create manual configuration files unless required. Unnecessary manual configuration can prevent proper operation.
A configuration file can be generated by Xorg based on the detected hardware. This file is often a useful starting point for custom configurations.
The configuration file is saved to
/root/xorg.conf.new. Make any changes
desired, then test that file with:
Xorg -config /root/xorg.conf.new
After the new configuration has been adjusted and tested,
it can be split into smaller files in the normal location,