If you're going to game under X, it's crucial that you know a bit about X. The "X Window User HOWTO", and especially "man XF86Config" are required reading. Don't short change yourself; read them. They have an extremely high "information to space" ratio. Many problems can be fixed easily if you know your way around XF86Config (or XF86Config-4).
Whether you're trying to diagnose an X problem or requesting help from a mailing list or Usenet newsgroup, you'll want to have as much information available as possible. These are a set of tools you can use to obtain that information.
One of the best diagnostic tools and sources of information about your X system is probeonly output. To use it, kill X if it's already running and from a console, type:
X -probeonly 2> X.out |
Yes, that's a single dash; so much for standards. The output of X goes to stderr, so we have to redirect stderr with "2>" to a file named X.out. This file will have almost everything there is to know about your X system. It's crucial that you know the difference between the various markers you'll see in probeonly output:
(--) probed (**) from config file (==) default setting (++) from command line (!!) notice (II) informational (WW) warning (EE) error (??) unknown. |
Here's an example of some information I gleaned from my output:
I'm running at 16 bpp color:
(**) TDFX(0): Depth 16, (--) framebuffer bpp 16 |
X has detected what my videocard chipset and videoram are:
(--) Chipset 3dfx Voodoo5 found (--) TDFX(0): VideoRAM: 32768 kByte Mapping 65536 kByte |
xvidtune is your friend when your X screen is shifted a little bit too far to the right, or if the vertical length is too small to fit on your monitor. However, it's a great diagnostic tool also. It'll give you:
the hsync/vsync range specified in your XF86Config file
the 4 horizontal and 4 vertical numbers which defines your videomode (the 1st horizontal/vertical numbers gives the screen resolution). These 8 numbers will tell you which modeline your X uses. See the XFree86 Video Timings Howto for more information. Note that explicit modelines are no longer necessary, since XFree 4.0.1 and up computes modetimings automatically based on your monitor's and video card's capabilities. However, there may be times when you'll want to play around with mode timings, like for weird hardware or if want to tweak your display.
the "dot clock" your videocard is running at.
xwininfo tells you all sorts of information about X windows. And actually, your "background" or "root" window is considered a window too. So when xwininfo asks you to click on the window you want the information on, click on your background. It'll tell you things like screen and window resolution, color depth, window gravity state (which gives a hint to the window manager about where to place new windows), backing store usage and more.
When playing a game under X, you should consider starting X without a window manager (WM). Heavyweight WMs, like Enlightenment, or full-blown desktop environments like GNOME or KDE, may produce a noticeable slow down. Even lightweight WMs, like twm, rob your CPU of clock cycles (and in twm's case, even full screen games will have a frame around the window). Running a game without a WM or DE depends on how you access X. If you usually log in to a Virtual Console and start X with "startx" try the following:
Modify ~/.xinitrc, which tells X what to run upon starting. Here is what my .xinitrc looks like:
#quake3 +set r_gldriver libGR.so.1 #exec ut #lsdldoom -server 2 #exec tribes2 exec /usr/bin/enlightenment |
You'll usually see a window or desktop manager being executed from this file (GNOME or KDE). Comment out the lines containing the WM or desktop manager with a pound sign (#) and place your game on a new line with any command line arguments you want to pass. If the game is not located in your $PATH, give its full path name.
If you log directly into X using gdm, then things are a little different. These instructions are for gdm 2.4 or greater. They *may* work with kde, but I cannot say for certain.
First, check your gdm.conf (usually in /etc/X11/gdm or /etc/gdm) file for a line that says begins "SessionDesktopDir=blah". One of the directories listed as options should be "/usr/share/xsessions", and is the directory which will be used in this example. As root, change to the "/usr/share/xsessions" directory and take a look at its contents. It should contain some .desktop files, each corresponding to an entry you'll see in gdm's Session menu, e.g gnome.desktop, enlightenment.destop. This example will show you how to log in to Doom3. Copy any of the desktop files to "doom3.desktop" and open the new file in your favourite text editor. The file will be full of alternative languages, so cut out everything you don't want and make the file look like this:
[Desktop Entry] Encoding=UTF-8 Name=DOOM III Comment=iD's Doom III #if game is not in path, remember to put the full path here Exec=/usr/games/doom3/doom3 # no icon yet, only the top three are currently used Icon= Type=Application |
Save the file and log out of your window manager. At the gdm login screen, you should now see "DOOM III" as an option in "Sessions". Naturally you can add a .desktop file for each game you have installed