Tag Archives: how-to

Pidgin Has No Sound In Ubuntu Gutsy Gibbon

For some reason, Pidgin, which is included in Ubuntu 7.10 Gutsy Gibbon, has no notification sounds even though other applications do play properly. Whether I selected Automatic or ALSA as the output method, no sounds would play. Here’s how I fixed it.

  1. In Pidgin, select Preferences from the Tools menu (or press Ctrl+P)
  2. Click on the Sounds tab
  3. In the Method drop down list, select Command
  4. In the Sound command text box, enter the following: aplay %s
  5. Select an event with an assigned sound from the Sound Events list
  6. Click the Test button. You should now hear the notification sound
  7. Click the Close button

Aplay is the command-line ALSA sound player. I tested it on the command line and it played audio files just fine. So, it also works in Pidgin.

Syntax Errors Running sh Scripts on Ubuntu

Normally, I install programs from the Ubuntu repositories but today I needed to install a VPN client from a tarball using a shell script. When I ran the included install.sh file, I got a couple syntax errors:

install.sh: 22: function: not found
install.sh: 24: Syntax error: “}” unexpected

Looking inside the script, I saw that it runs /bin/sh. Nothing unusual there. Well, it turns out that on Ubuntu, sh is a symlink to dash. Apparently, since the Edgy version of Ubuntu, sh has been pointing to dash and causing various compatibility problems with custom scripts meant for sh. I’m running Gutsy so my sh points to dash as well.

Two quick ways to fix the problem is to either change #!/bin/sh in the script file to #!/bin/bash (which I did) or change the symlink for /bin/sh to point to bash instead of dash. I may opt for the latter but the former worked just fine to get my VPN client installed.

Monitor Linux Exit Codes on the Command Line

As you may already know, when programs end in Linux they return a value to the shell known as an exit or error code. It’s often a zero when everything is OK and a positive or negative number when something goes wrong (the actual definition is program-dependent). Normally, this value is used by scripts to know if a command failed so that it can act accordingly. However, as a power user, it’s good to know about this value as well.

The most common way to determine what exit code was returned by a command is to output the contents of the special shell variable ‘?’ to the console. This is accomplished as follows:

echo $?

For example,

~$ date
Wed Nov 13 21:24:07 PST 2007
~$ echo $?
0
~$ _

Here, I ran the date command which displayed the current system date/time. Then, by echoing the ‘?’ variable, I see that the date command exited with a code of zero indicating that everything was fine. Contrast this with the following:

~$ ls foo
ls: foo: No such file or directory
~$ echo $?
2
~$ _

According to the man page for the ls command, the exit codes are defined as “Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.” Since there was no file or directory named ‘foo’, the ls command returned an exit code of two to indicate “serious trouble”.

OK, so what if you always want to be able to tell what the exit code of a command is without having to always remember to echo it to the console? Well, you can add the value to the command prompt. Simply insert the string ‘$?’ wherever you like in your existing prompt string (PS1, PS2, PS3 and/or PS4).

My original PS1 was

‘u:w$ ‘

which looks like,

peter:~$ _

So, I added ‘:E$?’ between the user name (u) and colon and exported the new string to PS1.

export PS1=’u:E$?:w$ ‘

Now, my prompt looks like,

peter:E0:~$ _

I added the ‘E’ character to remind me that this is an error/exit code but you can leave it off. Going back to the ls example, let’s see what happens with the new prompt.

peter:E0:~$ ls foo
ls: foo: No such file or directory
peter:E2:~$ _

As you can see, my new prompt makes the exit code 2 plainly visible. I no longer have to bother to type the echo command and I can even check previous exit codes in the backscroll buffer. You can’t do that with the echo command since the ‘?’ shell variable is overwritten after every command.

Got more cool Linux tricks? Share them in the comments.

Fixed White Borders in Compiz Fusion

As I mentioned the other day, I upgraded one of my systems from Kubuntu Feisty Fawn to Gutsy Gibbon and had to fix some quirks with Compiz Fusion. Another anomaly I had was the appearance of wide white borders around application menus as well as the K-Menu in KDE. It appeared as though the menu shadows weren’t being rendered properly.

Fortunately, the fix for that was quite easy. Instead of the default KDE window decorator, gtk-window-decorator, use Emerald. The package can be found in Adept. After installing it, run emerald –replace to turn it on without having to log out. To adjust settings and customize the window decorations, go to Settings in the K-Menu and run Emerald Theme Manager.

So far, I’m liking Compiz Fusion. It hasn’t crashed and it’s very fast. I don’t notice any performance penalty as compared to using the regular 2D desktop. Granted, the 3D animations are just eye candy but they’re fun.

Test Live CDs via Virtualization with VirtualBox

Last month, I posted about the free VirtualBox virtualization software and how you can use it to run various operating systems on Windows, Linux and Mac OS X (Intel CPU version) computers. Virtualization is also handy for quick and painless operating system evaluation purposes.

There are many Live CDs available today spanning a plethora of distributions of Linux, some Unices and you can even create your own Windows live CD. However, using them usually requires burning the ISO to a CD or DVD. Although media is cheap these days, it’s still a waste to burn discs just to try out things you may never continue using.

With VirtualBox, you don’t have to burn any discs to try things out. Simply follow these steps:

  1. Download the ISO file for the operating system you want to run. Verify from the description/help files/documentation that it is a bootable image (i.e. doesn’t require a boot floppy).
  2. Start VirtualBox and create a new virtual machine with enough memory for the operating system you’re going to try out.
  3. There’s no need to create a virtual hard drive for this machine if you’re using a Live CD/DVD since everything will run in memory. However, if it is an installation disc, then you will need to create a virtual hard drive large enough to install the operating system.
  4. Assign the ISO file to the virtual CD-ROM drive of the virtual machine.
  5. Start the new virtual machine.

Not only does this method reduce waste by avoiding the creation of plastic coasters (wasted CD/DVD media), it boots faster than a CD/DVD drive and your computer system is isolated from anything that may go wrong in the operating system you’re trying out.

So, now you’re all set to go play. Report back on the cool new operating systems you find.