Check out my first novel, midnight's simulacra!

Xorg hell

From dankwiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
XKCD weighs in, 2011-10-12

Ahhh, XFree86/Xorg. What a steaming pile of FUBAR it's been. Things are rapidly getting better, though (unfortunately, the framebuffer kernel layer now seems to be rotting slightly -- there's no intention, from what I can tell, to support Intel 965 for instance). I use Intel 965 video extensively, and have for some time -- info within might only be applicable to that card, and of course all of this may vary based on your Debian setup.

Good links

Keyboards

  • Disable NumLock/CapsLock entirely via xmodmap -e "keycode # = """.
    • Replace # with the scancode (use xev and look for keycode)

Terminology

  • Display: An X server, made up of one or more screens
  • Screen: A display area for an X server, made up of one or more outputs, having the name hostname:displaynumber.screennumber
    • hostname should be left blank for local displays
  • Monitor: An output/port to a physical display device, having a resolution and a position within a screen
    • LVDS: Integrated LCD (digital, differential signaling)
    • TMDS: DVI, HDMI (digital, differential signaling)
    • VGA: HD-15 (3-row DE-15) (analog)
    • S-Video: Mini-DIN 4 (analog)
  • crtc? pipe?

Diagnostics/Control

  • xdpyinfo(1) - X server information
    • Use the -ext extensionName option for extension-specific info (-ext all for all)
  • xvinfo(1) - X-Video extension information
  • glxinfo(1) - OpenGL implementation information (via GLX)
  • glewinfo(1) - OpenGL extension information
  • visualinfo(1) - OpenGL visual info
  • xrandr(1) RandR (X Resize, Rotate and Reflect) extension information and control (operates on Monitors)
  • xprop(1) Window and font property information (select window with mouseclick, -id or -name)
  • fbset(1) Framebuffer information and control (use -i to get more (basic) info)
  • xdriinfo(1) DRI (Direct Rendering Infrastructure) driver information for all screens
    • xdriinfo nscreens for screen count, xdriinfo driver screenno for drivers
    • xdriinfo option drivername/screenno for detailed configuration (as set using driconf(1))
  • xbacklight(1) device backlight information and control
  • xprop(1), xwininfo(1) display information about X objects specified via command line or mouse click

Sample Output

All output is from an i965 on a 64-bit Core 2 Duo machine.

Multiple Monitors

  • Xinerama, though venerable, is no longer the preferred methodology; XRandR has your back.
  • Four modes: clone, span mode, extended desktop, multiseat
    • Clone: same image on each monitor (good for presentations etc)
    • Span mode: Stretch desktop of resolution 2M+N across two monitors of resolutions M and N
    • Extended desktop: Disjoint desktops of resolution M and N on monitors of resolutions M and N
    • Multiseat: Two distinct displays/inputs/users
  • http://wiki.debian.org/XStrikeForce/HowToRandR12 seems up-to-date and useful

Configuration

  • These days, the less in your xorg.conf, the (likely, almost certain) better
  • Most necessary modules are these days automatically loaded or builtin
  • xrandr obsoletes most monitor setup requirements, so long as DDC/EDID work

See Also