Check out my first novel, midnight's simulacra!

Xorg hell

From dankwiki
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