Begone Caps Lock and Other Great Keyboard Hacks - page 2

Begone, Vile Caps Lock!

Figuring Out Commands

The tricky bit with xbindkeys-config is knowing the correct application launching commands. The simplest command is the program's name with no options, like kate or gimp or firefox. (Shame on Linux distributions and desktop environments that obscure the real application names - users will not faint at the sight of useful information.) Anything that works on the command line will work in xbindkeys-config. For launching graphical applications with rootly powers, or as any other user, you need gksu or kdesu. Using one of these gives you a graphical login window, like Figure 2.

gksu is a graphical front-end to both su and sudo. Just to add to the fun and confusion, so is gksudo. Making it even more fun is Ubuntu makes gksu behave like gksudo. So let's talk about this first.

Ubuntu, sudo, and Root

su is "switch to a different user". sudo is "execute a single command as another user, as configured in the /etc/sudoers file." Ubuntu's clever use of sudo is one of those "d'oh! Why didn't someone think of this years ago!" deals. Users who need occasional root privileges are simply added to the admin group. sudo protects the root password and logs all activity. Ubuntu doesn't even create a root login during installation. But you really need a root login for a number of reasons: some commands do not know how to handle it when sudo asks for a password, and it's more convenient when you have a lot of administrative chores to perform. Probably the most important reason to have a root login is the Ext2/3 filesystem reserves 5% of the filesystem for the root user. This gives you enough room to manuever and to rescue the system when some user process goes nuts and fills up your hard drive.

How do you make a root login on Ubuntu and all of its Buntu cousins? Easy, with sudo:

sudo is typically compiled with a 15-minute timeout, which means you can run a number of sudo commands without re-entering your password in that time. You can this change per-user or per-group by editing /etc/sudoers, which must be done with visudo:

$ sudo visudo
$ Defaults:carla timestamp_timeout=30

Close and save with Ctrl-X and Y.
-1 makes it infinite. Don't do this, for obvious security reasons.

Because Ubuntu makes gksu and gksudo both behave like sudo, how do you configure xbindkeys to run a command as "real" root? Use the -w switch, like this:

$ gksu -w kate

You can cancel the sudo timeout with this command:

$ sudo -k

This is helpful when you're testing your commands and they get stuck in sudo mode.

kdesu

kdesu is a front-end to su, and by default switches to the "real" root user. So you need a root login on your system to use kdesu, like this:

$ kdesu kate

You may also switch to any user that you know the password for:

$ kdesu -u pinball kate

Come back next week to learn more about using xbindkeys with lots of nice examples, and a quick tour of KeyTouch for additional useful customizations to your multimedia keyboard.