This page is a mirror of the original article at RatedPC.com, please visit RatedPC.com for the latest update version. 
 
  RatedPC.com  
Home News Articles Reviews Contact Review Locator Links Downloads Forum Login
Linux On Desktop
Posted on: 6/26/2002 1:48:03 PM by Reza Pakdel - rpakdel@ratedpc.com

Purpose of ArticleThe Tux

Before I start, I would like to note that this is not a spoon feeding article. I am not here to tell you how to install Linux or teach you how to use it in a step-by-step manner. This article is the collection of experiences I have gained in my time using Linux. It is also to encourage you to try Linux and use it in your everyday life.

Linux and its History

Linux is an Operating System (OS). An OS is a piece of software by itself which allows programs and users to interact with their computer hardware in a transparent way. This means that users and programs do not have to worry about dealing with the computer hardware directly. Windows and Unix are OSes (albeit very different), but Microsoft Word is not. An OS consist of a core component, called the kernel, and other components which provide additional features (e.g. filesystem) which may be included in the kernel. Linux was created by Linus Torvalds when he was a student and the University of Helsinki [1]:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since April, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things). I've currently ported bash(1.08) and gcc(1.40),and
things seem to work.This implies that I'll get something practical within a
few months, andI'd like to know what features most people would want. Any
suggestions are welcome, but I won't promise I'll implement them :-)
Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multithreaded Fs
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's
all I have :-(.

Obviously Linus had no idea how his pet project will revolutionize PC computing. Linux version 0.01 was released on May 14th, 1991. It had no networking support, ran only on 386 compatible processors and had extremely limited PC device driver support. It had a primitive memory management subsystem and only supported the Minix filesystem. Linux 1.0 was released on March 14th, 1994 and had some networking support, a new filesystem, virtual memory and supported more PC hardware such as floppy-disk, CD-ROM, sound cards, a range of mice, and international keyboards. Version 1.0 also allowed a primitive loading and unloading of kernel modules. Kernel modules are like plug-ins and provide additional functionality to the kernel. While version 1.1 was being worked on, several patches and bug fixes to version 1.0 were released. This method of releasing new versions while fixing bugs of older versions has become how the Linux kernel development team work. Those Linux kernels ending with an odd minor-version number such as 1.1, 1.3, 2.1 and 2.5 are development versions while those even numbered kernels (2.2, 2.4) are stable, production kernels. In March 1995, version 1.2 was released. This version included PCI hardware bus architecture. Its range of hardware support was increased and its networking was improved. Finally, in June 1996, Linux version 2.0 was released with support for Alpha, Sparc, MIPS and Motorola 68000 CPUs. Other improvements included memory and process management as well as network subsystems. Since then, more time was spent on standardizing, stabilizing and improving the efficiency of the kernel rather than adding functionality [2].

Now, Linux is really just the minimal subsystem (kernel) and may or may not be useful by itself depending on your needs. It is possible to modify Linux so it runs on a special hardware (e.g. router) which has a processor, some memory and a few network connections. Linux can be perfectly used for gaming consoles (e.g. the PS2). It is also possible to run applications on top of the Linux base to create a full Desktop system. This is where Linux Distributions come in. Taking a look at http://www.distrowatch.com you will see that there are lot of different Linux Distributions. You should know that there is a substantial difference between Linux and a Distribution; however, the two names are used often interchangeably. Hence, from here forth, when I say Linux, I really mean a Linux Distribution.

Why Linux?

Now you may say, "Hold on Reza, my computer already comes with an OS and I'm perfectly happy with it. Why should I bother with Linux?" Well, that is a good question. Perhaps your PC is already running a version of Microsoft Windows or MacOS and you are able to do everything you want to with it. I am not telling you to ditch your current OS and switch to Linux. However, I am telling you that there are other choices available. Maybe you are tired or bored of your current OS. Maybe your current OS doesn't offer you all the freedom that you would like to have. Perhaps your OS has trouble running on your PC or is just sluggish on that 200Mhz Pentium. Finally, you may have heard a lot about Linux and you are curious to try it, but you are not sure about it yet.

Linux is a stable, efficient, and extremely flexible OS. Its great flexibility brings with itself a lot of complexity; everything in Linux is configurable. While this is great for power users, new users are easily frustrated by having to configure every application before they can use it. In a sense, not everybody has the time and patience to configure every aspect of their OS--that's why distributions (distros) have been made, where everything is already preset for users. With so many different distros, it is easy to find one that you feel most comfortable with. Once you are comfortable using Linux, you can take that distro and modify it to your needs and wants.

Recently some retail stores are selling PCs pre-installed with one of the more popular and easy to use Linux distributions (e.g. Mandrake) and once you take home one of these babies, some of you might wonder how to use it, specially if you come from MacOS or Windows worlds.

Another important factor why you may want to try Linux is that it is free. Yes, free as in you do not pay for it. This is great for students, home users and businesses as they can save a lot of money by not having to buy Linux or pay license fees for it. However, before you decide to run off and switch all your office network into Linux stations, you should consider that there are still other expenses, such as maintenance and time investment on learning a new desktop environment. Linux is not just about free (as in free beer) software, but also about free speech (more on that later).

Finally, if you are a computer enthusiast or in the computer industry, knowing Linux is a must. Not just because it makes you look more intelligent, but also because chicks dig Linux nerds. Seriously, though, learning Linux by using it will help you understand computers in any related field, be it software or hardware.

Why Penguin?

If you have looked around the web, you may have noticed that Linux has a penguin mascot. After some search on the web I found the following explanation of the Linux penguin [5]:

From: Linus Torvalds

Ok, short version: I've always liked penguins, and when I was in Canberra a few years ago we went to the local zoo with Andrew Tridgell (of samba fame). There they had a ferocious penguin that bit me and infected me with a little known disease called penguinitis. Penguinitis makes you stay awake at nights just thinking about penguins and feeling great love towards them. So when Linux needed a mascot, the first thing that came into my mind was this picture of the majestic penguin, and the rest is history.

Slightly more accurate version: Yes, I was bitten by a penguin, but it wasn't actually very ferocious. It was really just a pigmy penguin about 6 inches tall or something, and it was more of a timid nibble ("is this finger a see before me a small fish, or what?"). Even so, I like penguins a lot.

More down-to-earth version: All the other logos were too boring - I wasn't looking for the "Linux Corporate Image", I was looking for something _fun_ and sympathetic to associate with Linux. A slightly fat penguin that sits down after having had a great meal fits the bill perfectly.

Final comment: Don't take the penguin too seriously. It's supposed to be kind of goofy and fun, that's the whole point. Linux is supposed to be goofy and fun (it's also the best operating system out there, but it's goofy and fun at the same time!).

Open Source Movement

The Open Source Definition

The following is an extraction from the Open Source Definition [opensource.org].

Free Redistribution

The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

Source Code The program must include source code, and must allow distribution in source code as well as compiled form. Where some form of a product is not distributed with source code, there must be a well-publicized means of obtaining the source code for no more than a reasonable reproduction cost–preferably, downloading via the Internet without charge. Deliberately obfuscated source code is not allowed.
Derived Works   

The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

Integrity of The Author's Source Code The license may require derived works to carry a different name or version number from the original software.
No Discrimination Against Persons or Groups

The license must not discriminate against any person or group of persons.        

No Discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a specific field of endeavor.

Distribution of License

The rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.

License Must Not Be Specific to a Product The rights attached to the program must not depend on the program's being part of a particular software distribution
The License Must Not Restrict Other Software The license must not place restrictions on other software that is distributed along with the licensed software

So what does this mean?

The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.

The Free Software Definition

Here an extraction from gnu.org page:

'Free software' is a matter of liberty, not price. To understand the concept, you should think of 'free' as in 'free speech' not as in 'free beer.' Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:

  • The freedom to run the program, for any purpose (freedom 0).
  • The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (freedom 2).
  • The freedom to improve the program, and release your improvements to the public, so that the whole community benefits. (freedom 3). Access to the source code is a precondition for this.

A program is free software if users have all of these freedoms. Thus, you should be free to redistribute copies, either with or without modifications, either gratis or charging a fee for distribution, to anyone anywhere. Being free to do these things means (among other things) that you do not have to ask or pay for permission.

When talking about free software, it is best to avoid using terms like 'give away' or 'for free', because those terms imply that the issue is about price, not freedom.

Requirements

So what do you need to get your hands wet with Linux? First, time, patience and a strong will to learn. Remember, good things come to those who wait. Don't expect to become a guru in 6 months. Linux is just so much more complex than either Windows or MacOS. But don't be scared, the force will be with you. Knowing this, you will need a Linux Distribution. Now, I could write pages and pages why one distro is better than the other. In fact, books can be written on each distro. Linux distros are like ice-cream; while all are almost the same thing, each is unique in its own way. You really have to taste each and find the one you are most comfortable with. Take a look at http://www.distrowatch.com. There are some major distros and some minor releases. The major releases have the benefit of supporting a wider range of hardware devices. Of the major releases, RedHat is good for business users, specially that they have great business solutions in addition to their RedHat distro. However, RedHat does not contain a lot of configuration tools, making it not very newbie friendly. Mandrake and Suse are great for beginners, as they include a lot of utilities that allow you to change options with point and clicks and stay away from configuration files. Both distros perform great in business environments as well. Debian is for the power user; however, it has a very advanced and easy-to-use software package management system. If you ask my opinion, I'd say start with Mandrake and then move to Debian once you have enough experience with Linux. I myself have been toying with Linux for almost 2 years, getting to use it seriously only for the past 8 months or so. I started with RedHat and had to suffer through setting a lot of things by hand. Eventually I installed Mandrake.

In terms of hardware, anything from 486 would work, but if you are new to Linux, I would recommend more recent hardware as it is better supported and will have less havoc on the way. If you really want to take advantage of all the eye-candy that Linux graphics systems offer, then a PIII with 512MB ram is recommended. While I have been running just fine with a 3GB hard drive, to really enjoy Linux, at least a 6GB drive is recommended. Use a 7200rpm drive if you have one available as it will make Linux much faster. If you have an nVidia video card, you are in luck for you will have full hardware acceleration using the nVidia drivers. Most other cards are supported via XFree86, which is the piece of software that gives you X, the application which displays the GUI system. Most Sound Blaster compatible cards are also supported. USB 1.1, parallel and serial connection are all supported. If you have Internet keyboards (with those fancy buttons for Back, Forward, Mail, etc.) then you may get them to work after installation. Most printers are also supported, but scanner support is still flaky. There is a generic driver set, but somebody must have already written specific drivers for the scanner if you would like to use it. If you have a good brand scanner (Cannon, Epson, HP) then your scanner is more likely supported than names like Plustek (my 7 year old 300dpi scanner).

There is one little issue with winmodems. Most brand name computers come with winmodems. If you custom built your PC and the modem was very cheap, then it is most likely a winmodem. Winmodems have a simple circuitry and do not have a controller of their own and use the computer resources to function. While this is not good for older systems--as they need every CPU cycle they can use--newer systems have minimal impact from winmodems. Now, since winmodems need to access the computer resources, they need specific operating system drivers in order to function properly. There has been substantial work to get these winmodems to work under Linux and http://www.linmodems.org is the place to visit if your distro does not already come with proper drivers for your winmodem (oh the irony: you need Internet access to download drivers for the winmodem). I would recommend a hardware modem if you are still using dial-up for Internet access.

As long as we are talking about Windows dependent hardware, let me say that nowadays a lot of manufacturers make cheap hardware by removing their controllers, making them dependent on the operating system and computer resources to perform their tasks. One example is the number of cheap laser printers showing up in the market. If the box says Windows only, I do not recommend it. This is not because I have anything against Windows, but because such a product will steal all your RAM and CPU resources to function. I have seen such products from Brother (1000, 1200 models) and HP (Lj1000).

Finally, a three button mouse is highly recommended. If you do not have one, you can set it to emulate three buttons when you press both left and right buttons.

Installation

There are a lot of articles on the web on how to install Linux. My word of advice, if you have no previous experience, make sure you have at least one day to spend on installation. The installation process takes between 10 to 30 minutes depending on your system and amount of packages you decide to install, but the new user will need to take more time to make correct decisions for each option. Get acquainted to the installer and read through the help guides and install manuals [mandrakelinux.com]. It's not that installing Linux is hard, it's just different. If you think it is just a matter of clicking Next/Ok/Yes, then you are in for a shock. Yes, some distros may be installed like this. However, Linux gives you choices from the start and you better take advantage of that. You can select how many software packages you would like to have installed with your OS (be aware, going through each package one-by-one may take a few hours as there are usually more than 1000 packages available, but you can select groups of packages). You can select to install some peripheral drivers, like printers, during installation as well. In new distros, you can even download software updates during installation. I'll try to give out some of the tips and pointers I wish I knew the first time I was installing Linux. I learned them, the hard way (i.e. erasing my Windows partition by mistake).

Linux defines your hard drives and its partitions as following:

Primary Master (c:) hda
Primary Master, Logical Partition (c:) hda1
Primary Master, Extended Partition 1 (d:) hda5
Primary Master, Extended Partition 2 (e:) hda6
Secondary Master hdb

You will need at least two partitions: First, a Swap partition which should be as large as the amount of RAM you have installed on your PC. Next, you need a mount point (the '/' or root directory). While these are necessary, I highly recommend creating a 3rd /home partition. This is where your user directory will be created. This way, if you manage to ruin your installation, your personal files will stay intact during the next installation (isn't that just lovely). Give each person who wants to use your computer at least 1GB if you have the space. However, leave at least 3GB free for the '/' partition. If you have extra drives around, you can put the swap partition, /tmp and /var directories on those for slight speed improvements.

You may have become confused here. So I'll explain a bit about the Linux file hierarchy. Like Windows and MacOS, Linux has folders and files. Actually, in the Linux filesystem, everything is a file. Even your hardware components are a bunch of files (look in /dev directory). So your hard drive is a file called hda or something similar to that (IDE drives, look in help files for SCSI drives). In order to use the drive, you 'mount' it (look in /mnt directory). From here on, you let Linux take care of using the drive. Now, folders residing on different drives can be mounted on the same filesystem. Actually, they don't even need to be the same filesystem. Linux will happily interact with FAT32 and NTFS partitions. Imagine, your /homedirectory is on a FAT32 drive while /tmp is NTFS /var is ext2 (Linux Extended Filesystem). More confused? Let's take a look at an image [3]:

Partitions

Here you see two, a master (hda) and a slave (hdb), drives on the primary IDE connection. hdb is divided into 3 partitions, /, /home and the Swap partition. You don't have to put the Swap partition on the same drive. Your /home partition does not need to be Journalized FS, it can be FAT as well. clear? Not yet? Some graphical installations have a Wizard or auto allocate button. Don't just close your eyes and press it hoping for a correct result, but they usually pick out good partitions for you.

Now, in the above picture you see three Linux filesystems. Swap is for the swap partition. Ext2 is the original Linux filesystem (remember, Linux supported the Minix filesystem, but that was very limited, so they extended it and called it Extended File System, then it was updated to Ext2), but it has been improved so it can recover from computer crashes more gracefully. The Journalized filesystems (ReiserFS, Ext3) are a bit slower, but much more secure than Ext2 filesystem. There are some articles comparing ReiserFS and Ext3, in short, Ext3 stores more metadata (data about data) and is more secure, yet slower than ReiserFS. I have no preference, either of them are fine.

Partitioning your drive is by far the most complex task in installing Linux. However, once you know what you need to do, it only takes 30 seconds to setup.

Moving on, before installation is complete, you need to create some users for your computer. Now, Linux is quite different from your MacOS (9 or below) or Windows (Me or below) as it is a true multi-user OS. Linux needs at least 2 users; one root and one normal user. The root user is the all mighty powerful god mode user. Root user is for administration and configuration of the system. You should be very (I mean very) careful when you are in root mode. Running applications in root mode is also dangerous. The normal user is really a weakling compared to the root user and chances that a user ruins a complete installation is pretty slim.

Finally, if you are given the chance of creating a rescue (boot) disk, please do so as it will become handy later on.

Graphical User Interface (GUI)

Before I go on telling you all about the wonderful GUIs that are available for Linux, I need to explain how graphics work on Linux. X is the application that provides graphics in Linux. X is a client-server application. This means there is a X client running which provides graphics data. The X server interprets those data into actual graphics. Designing X in this way gives great advantages: The server does not necessarily need to run on the same machine, or even platform as the client. The server can be on a remote location, a Windows or MacOS or even a web browser plug-in (check out this article [linuxworld.com] for more detailed description of X). In order to draw the widgets (text boxes, buttons, scroll bars, etc...) developers have access to a few toolkits; QT, GTK and TCL/TK to name a few. Finally, a window manager is used to handle the windows placement and widgets. There are a wide variety of window managers; KDE, Gnome, IceWM, Enlightenment, Window Maker, Fvwm, and Fluxbox to name a few. Some of these window managers are written with some of the toolkits available, so they integrate better with their applications. For example, KDE is written using the QT toolkit and Gnome is written the GTK library. The beauty of all of this is that you can mix and match: run Konqueror (QT application) on Gnome (GTK library) or run Galeon (GTK library) on IceWM (written in C++). The downside is that applications written with one library do not necessarily interact nicely with applications written using other libraries.

While you generally do not have a choice on which X application to run (there are a few commercial ones as well as Xfree86), nor do you get to choose your widget library (unless you are a developer), you get to choose which window manager to run. From here on, I will let you play around with different window managers yourself until you find one that you like most:

K Desktop Environment (KDE) and GnomeGnome Logo

KDE uses the QT library and even comes with an Integrated Development Environment (IDE, similar to Visual Studio). KDE will give you the most Windows like environment, making transition from a Windows Desktop very easy. There are also a large number of themes and icons available for it. Just take a look at http://www.kde-look.org to see for yourself. The downside is that it is fairly resource hungry and will bring even a mediocre machine (Duron 750, 256DDR) to its knees specially after a couple hours of use.

Gnome uses the GTK library and is slightly less resource hogging than KDE. Still, a high-end system will make using Gnome much more enjoyable. I recently upgraded to 512DDR memory and now Gnome runs smoothly on my Duron 750 system. Themes for Gnome can be obtained from http://themes.freshmeat.net (as well as other window managers).

Both KDE and Gnome are fairly configurable and come with configuration programs. One can spend ours just setting the large number of options each window manager provides. I would recommend you to leave that for later as the default settings are fairly usable.

KDE Control Centre
KDE Control Centre

IceWM, WindowMaker, Fluxbox/Blackbox, FVWM

These window managers are less advanced than either KDE or Gnome, yet they are lighting fast and have small memory footprint. Out of these, IceWM is the most Windows like window manager with the Start menu and taskbar. These window managers also have different themes available for them. One of the beauties of these skinable window managers is that creating your own theme and look just requires some artistry and knowing where to copy the files (mostly in a /themes directory). While Fluxbox and Blackbox (essentially the same window managers, but Blackbox is not being developed anymore and is replaced by Fluxbox) have a minimal theme which is just perfect for remotely accessing your computer.

This screenshot shows IceWM running many applications. I made the theme myself. You may be wondering where the Close, Minimize and Maximize buttons are. When the mouse enters a window, the buttons appear on the top right corner. As you can see I like minimalist themes where the window manager stays out of way and let me concentrate on my work.

So many apps
So many windows. From top left going clockwise, the gimp, gtop,  ghostview, gnome-terminal, gqview, Acrobat Reader, lyx, galeon, konqueror, OpenOffice.org, and in the center, mozilla composer

Keyboard & Mouse

On Windows or MacOS, most users are used to a set of keyboard and mouse shortcuts which makes them more productive in their everyday use. Linux has similar accessibility options, but they may not necessary be the same as the other operating systems.

Perhaps the most useful shortcut is the middle mouse button on your mouse. In Linux, highlighting a piece of text is equivalent to copying it. So you don't need to highlight and then CTRL-C the text. In order to paste that highlighted text, simply middle click where you would like the text be pasted. The left, right and mouse wheel on the mouse act very similar to Windows environment. Try them out on different window managers.

There are a few important keyboard shortcuts you might want to remember:

CTRL-ALT-Backspace Restart the X server
CTRL-ALT-KEYPAD+ Go up a screen resolution
CTRL-ALT-KEYPAD- Go down a screen resolution
CTRL-ALT-F1 Switch to first virtual console
CTRL-ALT-F7 Switch to first GUI
CTRL-ALT-F8 Switch to second GUI
CTRL-ALT-Delete This combination does not work on all window managers, on some, it brings up a menu

You perhaps won't need to use the CTRL-ALT-F1/F7/F8 combination for a while. However, if you do need a situation where you need text mode only (say, you managed to ruin your mouse configuration and you can't get to a terminal to run the mouse configuration utility) then these will come handy. Once finished, CTRL-ALT-F7 will get you back to the GUI.

Basic Command Line

Since you are going to need to know how to use the command line at some point, here is a very basic reference table. In order to try them, open a terminal and type them in the shell and see the results.

Command Description
pwd find out what the current directory is. In Linux, everything is relative to the root '/' directory.
ls list files in current directory. ls -la will list all files line by line.
cd <directory name> change current directory to <directory name>, use '.' for current directory and '..' for the parent directory
mkdir <directory name> make a new directory with name <directory name>
rm <filename> remove file <filename> (does not remove directories)
rm -r <directory name> recurse into directory <directory name> and remove all files
rmdir <directory name> remove a directory <directory name>
mv/cp <name> <to>
move/copy directory or file <name> to <to>.
mv <oldname> <newname>
rename file or folder <oldname> to <newname>
su <username> substitute current user with <username>, leave <username> blank for root user.
whoami find out who are you logged in as
./<executable> run file <executable>
chmod +x <name> make <name> executable for current user, use '-' instead of '+' to have reverse effect. To allow directory browsing, they must be exec.
chmod +r <name>/chmod +w <name> make <name> readable/writeable for current user (use '-' instead of '+' to have reverse effect)
chown <user> <name> change ownership of file or folder <name> to user <user>
man <command> get the manual for command or program <command>. Use -k option to search for keyword
tar xvfz <filename.tar.gz> decompress a gzipped tar (tape archive).
tar cvfz <filename.tar.gz> <folder> gzip and tar all files in folder <folder> and save the file as <filename.tar.gz>
<TAB> pressing tab after typing a few character of a word will either complete the word if it is unique or give you a list of words with same prefix.
./configure ; make process to compile a source. If configure is successful, the code is compiled.
make install after compilation is complete, make install will install the program. You must be root to do this.

This is definitely not a complete guide, however, you can easily find many command line guides and references on the web.

Fonts

After playing around with Linux and the different window managers, you may notice something ugly; your fonts. There are very few of them and some just look horrible. Well, this is because TrueType fonts (specially those found in Windows [microsoft.com]) are not installed by default because of licensing and copyright restrictions. TrueType fonts were originally developed by Apple computers, and aimed to address some of the limitations of Adobe's Type1 as well as to include some new displaying techniques. Microsoft, which had also been looking for a font format for its Windows OS, licensed this technology from Apple and continued improving it [4].

You will need to download and install the TrueType fonts manually. If you are using Mandrake, simply run drakfont in root mode, and if you are dual booting, simply select 'install fonts', otherwise, you need to download them from http://keithp.com/~keithp/truetype.tar.gz and decompress them into a directory and point drakfont to that directory. If you are using any other distro, check out http://home.c2i.net/dark/linux.html#ttf or http://linux.org.mt/article/ttfonts for further instructions how to install the TrueType fonts.

Once you have the TrueType fonts installed you will notice that some of them they are still very ugly. Again, because of license restrictions, the bytecode interpreter which is responsible for rendering the fonts nicely is disabled. To enable them, visit http://elektron.its.tudelft.nl/~rbos36/mdkfreetype2.html and make sure you read all of it.

Finally, if you have an LCD, you may want to enable cleartype [microsoft.com] or sub-pixel [grc.com] rendering. Visit http://jmason.org/howto/subpixel.html for more information. Personally I find that process makes my fonts too blurry and I have disabled them.

Font Selection

Office Productivity

Once all the installation hassle has been put away, let's put Linux to some use. I will start with office productivity. While there are already a few different office productivity packages, what would be most important to you is compatibility with Microsoft Office as it is the dominant Office package in the market. In my use of different office packages, I found OpenOffice.org [openoffice.org] not only very sophisticated and complete, but also most compatible with Microsoft Office documents. Another very good Office package is KOffice which is still in development and is not as mature as OpenOffice.org. Lastly, lyx is the one and only professional desktop publishing software you will find on Linux. Lyx approaches desktop publishing from a different angle. It is WYSIWYM rather than WYSIWYG (What You See Is What You Mean rather than What You See Is What You Get).

OpenOffice.orgOpenOffice.org

When installing OpenOffice.org on Linux, remember to use the -net option (./setup -net) which will install OpenOffice.org in a common location. Then, for each user go to where you installed OpenOffice.org and run setup again (this time just ./setup). This will install the required components (about 10MB) on your home directory and you are ready to use it. Finally, use spadmin (where you installed OpenOffice.org in your home directory) to add your TrueType fonts which you downloaded earlier to OpenOffice.org. Fonts are a bit shaky in OpenOffice.org. While some show even with anti-aliasing, other fonts (like Times New Roman) are truly ugly. I am not sure if there is a fix for it, but I tried a few things unsuccessfully. Once of great features of OpenOffice.org is its complete help system. Each section is explained well with screenshots on how to perform a task.

OpenOffice.org: Writer

I have been using OpenOffice.org for about 6 months now, and my coworkers always send me their documents in Microsoft Word .doc format. I have always been able to open these file (albeit they have simple formatting) and edit them and save then back as .doc file. None of my coworkers have actually noticed anything different, so MS Word compatibility is fairly good, although I have had crashes with very complex formatted files. There are some cut-and-pasting problems from and to other applications so I usually copy my text into Emacs (no formatting) and paste it into Writer.

On a side note, because of the different toolkits Linux application developers can use to create widgets, there are a lot of problems with cut-and-pasting between  Linux applications. Still, there has been much improvement as developers are trying to achieve a standard.

OpenOffice Writer  
OpenOffice.org Writer editing a Microsoft Word XP document

OpenOffice.org: Spreadsheet

While the Windows version of OpenOffice.org has all sorts of cool names for the different applications in OpenOffice.org, I couldn't find any names on Linux. Opening OpenOffice.org will start Writer and from there you can start the other applications. I don't use spreadsheet applications a whole lot myself, so my interaction with OpenOffice.org spreadsheet was almost nill. On the other hand I have been developing an accounting software using excel for a few restaurants for a couple years now. I decided to test OpenOffice.org spreadsheet by inputting some data, making some tables, formulas and macros and finally opening a fairly complex Excel document with macros and buttons.

If you have used Excel, you will find OpenOffice.org spreadsheet very similar. There is a large collection of built-in functions for accounting purposes. Creating a new chart is definitely easier than Excel. I could never get the rows and columns correct in Excel, but the wizard in OpenOffice.org spreadsheet easily let me identify where each data should go and provided me with a complete preview. Thanks to tight integration with other components of OpenOffice.org, once you have created a drawing in spreadsheet, you can apply all sorts of effects and formats to it. In fact, you can add drawing and formulas and even Java applets within your spreadsheet document. While playing around with spreadsheet I noticed a whole gob of features for data handling. For example the DataPilot allows you to easily specify your data from within spreadsheet or other external data source and then visually define where in the table each data should go. There are a lot of other features which are beyond the scope of this article, so I let you ponder at them for yourself.

Spreadsheet
OpenOffice.org spreadsheet: On left, a complex Excel document with buttons (not shown) and macros. On right, a simple data table with a chart.

OpenOffice.org: Presentation

Open up OpenOffice.org presentation and you are given a choice creating a blank presentation or choose from a list of templates. However, you won't find any built-in templates. They are available in the Sun's StartOffice which is the commercial version of OpenOffice.org (same code, more features). Still, creating a new slides is fairly easy as OpenOffice.org gives allows you to visually select the kind of slides you would like to create:

OpenOffice.org Presentation Slide Layout
OpenOffice.org Presentation: Selecting a slide layout

Because of the way OpenOffice.org components are integrated into each other, it is very easy to create a presentation with graphics, charts and spreadsheet components. But how well does Presentation handle Microsoft PowerPoint documents? Almost very good. I imported a few PowerPoint presentations, out of them, 1 crashed OpenOffice.org while the other two worked fairly well with some fonts problems:

OpenOffice.org Presentation PowerPoint Import
OpenOffice.org Presentation PowerPoint Import: Click on Image for a full view.

OpenOffice.org: Drawing

My favourite component of OpenOffice.org is Drawing. I have never used any other office drawing application which is as easy and intuitive as OpenOffice.org Drawing. Creating shapes and connecting them together to create flowchart and diagrams is an effortless task. What I appreciate is the many built-in shapes and the many ways I can modify and enhance them.

OpenOffice.org Drawing
OpenOffice.org: Creating diagrams with embedded spreadsheet

Other Office Programs

KOffice

KOffice is integrated into KDE and consist of the following packages: KWord, KSpread, KPresenter, Kivio, Kugar and KChart. KWord is not as mature and complete as OpenOffice.org. By the time I was writing this section of the article, KOffice 1.2-beta2 has been released which has a lot of improvements over the version that comes with Mandrake 8.2. However, I haven't managed to download and install it yet. I have become too attached to OpenOffice.org, to the point that I don't see the need of having KOffice installed on my machine.

KWord is your average word processor which support MS Word files as well. I have had less luck getting to open complicated Office documents with KWord. If you don't need MS Office compatibility, then KWord is a great word processor. Kivio is similar to MS Visio. It is good for producing diagrams and flowcharts. However, the Kivio that is shipped with KOffice has only a few shapes built-in. Additional stencils (template shapes) are not free and you have to purchase them from theKompany.com.

The following screenshots present the different components of KOffice:

KOffice Workspace
KOffice Workspace

KWord
KWord

KSpread
KSpread

KPresent
KPresent

Kivio
Kivio

To compensate for the lack of stencils in Kivio, you can use Dia to create fairly complex diagrams.

Dia

Dia is a great diagram drawing program. It already comes with quite a few shapes built into it. It is also possible to download plug-ins for it. It looks and behaves a lot like GIMP, so if you have learned GIMP, then creating diagrams in Dia is a breeze. Here is an example:

Dia

LaTeX and Lyx

Now for something completely different. When you are creating a professional letter how much time do you concentrate on how the document looks and how much time do you spend on the content? While a document should look professional and good, its content should be your priority, specially if you are dealing with scientific or technical material. For this, a whole set of other applications have been made. LaTeX is a document preparation system for high-quality typesetting. It is most often used for medium-to-large technical or scientific documents, but it can be used for almost any form of publishing. According to the LaTeX Project website [6], LaTeX is not a word processor! Instead, LaTeX encourages authors not to worry too much about the appearance of their documents, but to concentrate on getting the right content. How is this done? Rather than telling the program how to display your text, you give the program hints on what you are writing and according to that, the application automatically selects the correct and best looking formatting for you.

LaTeX contains features for:

  • Typesetting journal articles, technical reports, books, and slide presentations.
  • Control over large documents containing sectioning, cross-references, tables and figures.
  • Typesetting of complex mathematical formulae.
  • Automatic generation of bibliographies and indexes.
  • Multi-lingual typesetting.
  • Inclusion of artwork.
  • Using PostScript or Metafont fonts. 

Great you say, where is this awesome software and why is it not so popular? Well, LaTeX is a typesetting Language, to create something like:

Cartesian closed categories and the price of eggs
Jane Doe
September 1994
Hello world!

You have to write this, latex the document processor that you are writing an article with title 'Cartesian...', the author is 'Jane Doe', it is written on 'Sep...' and then the document:

\documentclass{article}
\title{Cartesian closed categories and the price of eggs}
\author{Jane Doe}
\date{September 1994}
\begin{document}
\maketitle
Hello world!
\end{document}

Ouch you say, this is harsh. I agree and trust me, writing your school project like this is no fun. Enter lyx, a WYSIWYM (What You See Is What You Mean) document processor. Lyx is really a LaTeX processor with a GUI front-end. Let's take a look at it:

lyx

This is my research project written entirely in lyx? This may look ugly here, but once you have created your document you can tell lyx to export it to HTML, Postscript or PDF format:

lyx

Nice, eh? That's not even half of it. Lyx allows you to create indices, bibliographies, footnotes, table of contents and other fancy stuff so easily that it makes writing projects actually fun (in a sick way, of course). Table of contents is created automatically as you create sections and subsections and is updated as the page numbers change. To insert a footnote, you simply create a footnote beside the word you would like explained and put your text in it. The footnote is, again, magically created when you export the document. To create a bibliography, you create each citation at the bottom of page first. Then, when you are writing the article, you simply insert a cross-reference from a selection box. For example, if you take a look at the previous screenshot of lyx, you see lyx hoppe in the middle of the text. Now take a look at the output in the image above, you see a [2]. Let's see the Reference section of the document:

lyx reference

As you can see, I did not have to think which number the reference was, lyx automatically took care of it for me. If you export the document in HTML, lyx also links footnotes and citations to the actual text. Lastly, creating those complex mathematical formulas is very easy using the math panel:

Lyx Math Panel

There is one limitation to lyx. It does not have all the features of LaTeX built in the GUI. While the document processor understands them, you may not find a function or character in the GUI. However, lyx is great for everyday use, for those special characters one can always use a cheat sheet [fi.uib.no].

HTML Editing

It is possible to export HTML documents from OpenOffice.org or lyx, and while the selection is not as much as that of the Windows counterpart, there are some good HTML editing applications on Linux. Unfortunately you won't find any sophisticated WYSIWYG HTML editor similar to Dreamweaver or even Microsoft FrontPage available natively for Linux. Mozilla composer is by far the most easy to use graphical editor, but it is pretty primitive. I am writing this article completely in Mozilla Composer, but then our website has a fairly advanced content management; all I have to do is to tell the application where the HTML file is and it automatically loads the rest (the menus, ads).

You may think not having advanced WYSIWYG web development software is a disadvantage. This is true for the beginner and learning user, however, intermediate and advanced web developers prefer to edit the source. WYSIWYG applications do not generally create clean code (take a look at the source from Microsoft FrontPage) which causes browsers to choke when rendering. Scripting, like JavaScript, Jscript and VBscript cannot be done in a graphical user interface anyways. A pro web developer can use a simple text editor to develop nice looking and advanced pages. While you could use Emacs to develop your webpages, I recommend use Bluefish which eases some of coding:

Bluefish

A little update: Once I finished the article on Mozilla, I needed to take it apart and also add CSS (Cascading Style Sheet) tags to it. I also found that mozilla does not like <p> tags and hence I had to go through the whole article and create them myself. I did most of this on Bluefish and Emacs.

Producing PDF or PostScript documents

Once you created your document, you might want to convert it to PDF so everybody else on any other OS/platform can read it. PDF stands for Portable Document and can be viewed with Adobe Acrobat or similar PDF reader software which is available for virtually any OS and platform. PDF is really an evolution from PostScript document format. While people on Linux and MacOS X can easily view PostScript documents, Windows people will have to download and install GhostScript PostScript Viewer. On the other hand, on Linux, once you create a PostScript document, you can easily convert it into PDF format using ps2pdf program (if it is not installed, look on your distribution CD or download it).

Almost all program on Linux are capable for producing PostScript output. Most of the times, you select File -> Print and there you select 'Print to File' and give a name to the file (e.g. output.ps) and hit Print. Once you have the PostScript document, you can view it using either ghostview or kghostview. As an example, I printed this article from Mozilla Composer:

Mozilla Print Screen
Printing a file in PostScript

Here is the produced file in ghostview:

Ghostview
Viewing a PostScript file in ghostview

And finally converted the file to PDF using ps2pdf. I zoomed in the document in Adobe Acrobat reader so you can see that the fonts stay intact:

Adobe Acrobat Reader
The result in Adobe Acrobat

Another useful program is a2ps. A2ps stands for Any To PostScript and converts documents from any format (well, a lot of them) to PostScript and applies appropriate formatting to it. By default a2ps sends the document to your printer (as it is really a print utility), but you can easily redirect the output to a file with the '-o' option:

a2ps main.cpp -o main.ps

a2ps output
Output of a2ps form source, click on image for full view

It is also possible to change the layout that a2ps produces. I personally find the default settings just exactly what I need, so I haven't touched it. A note about a2ps: If you have an HP Deskjet printer or OfficeJet All-in-One then you should edit /etc/a2ps-site.cfg and set the output to Letterdj:

...
#################################################################
# 1)    System dependent parameters                             #
#################################################################

# Default encoding
Options: --encoding=latin1

# Default medium
Options: --medium=Letterdj

#################################################################
# 2)    Your printers                                           #
#################################################################
...

As a last example, I fed the output of ps2pdf from above into a2ps, now I have nice 2-page-in-1 PostScript or PDF document:

a2ps a PostScript document
2-page-in-1 using a2ps

Internet & Communication

E-mail

It is now time for for everyone's favourite: E-mail. There are many different e-mail programs on Linux and once again you really have to play around with all of them until you find the one flavour you like. You can send an e-mail right from the command line (mail), choose from many text based programs (pine, mutt, etc...) or choose one of the many graphical applications (KMail, Evolution, Mozilla Mail, Sylpheed). Sylpheed is the one e-mail client that I found most useful, feature rich and easy to use. Well, Evolution is also very nice, but it is resource hogging and I do not have a lot of patient when checking my mail (did she write me?). With every new release, Sylpheed is becoming more like Microsoft Outlook Express. Setting a new account is as easy as setting your mail server, e-mail, username and password and off you go. While Sylpheed incorporates an addressbook (which is compatible with other addressbook programs) and allows advanced filtering features, like filtering the e-mail on the server so to save bandwidth, it is the only program I have encountered that allows me to delete my messages from the server after a certain number of days. I am a very mobile person and sometimes I need to access my older e-mails remotely. Other e-mail programs either do not delete the messages from the server, or they leave it until the inbox becomes full and the sever stops accepting incoming mail. Sylpheed allows users to specify after how many days the messages from the server should be deleted. Sylpheed also has a newsreader and newsposter built into it.

An interesting version of Sylpheed is Sylpheed-claws. Sylpheed-claws is the bleeding edge of Sylpheed where new features (like Spellchecker and PGP encryption currently) are implemented and tested. You are free to download either version, however while Sylpheed-claws has more features, it also may contain bugs.

Sylpheed
Sylpheed has a familiar interface and is loaded with features

Internet Browser

Until recently, the only decent Internet browser available to Linux was Netscape 4 which wasn't decent at all. For its own time, Netscape 4 used to be great browser. However, when it comes to new, feature rich websites, it chokes and either takes a long time to render the page or just crashes. Thank goodness there has been a lot of movement in the Internet browser market for Linux. The recently released Mozilla 1.0 (or even Mozilla 1.1a) is truly an evolution in web browsers, not only for Linux, but also for all other platforms. Mozilla packs a large number of nice features which are truly a must have nowadays. Tabbed browsing, pop-up/pop-under ad blocker, HTML pipelining and 128-bit encryption are a few significant features of Mozilla. Mozilla also has a very fast rendering engine, called the Gecko. The downside of Mozilla? Resource hungry. Specially the Mozilla GUI toolkit is slow even on a decent machine (Athlon 1.4Ghz, 256DDR). Enter Galeon, a browser with all the features of Mozilla, but with the GTK toolkit (Gnome). Galeon also has additional features that make surfing the web much more enjoyable. Galeon features smart bookmarks and history bookmarks which keeps bookmarks of websites most visited. While the Google Toolbar [toolbar.google.com] is only available on Internet Explorer on Windows, Galeon has a similar feature which allows easy web searches as well as Dictionary and a few other website (like freshmeat and rpmfind) searches. Galeon does not have the composer, e-mail, news and chat programs that Mozilla has and hence it has a much smaller footprint compared to Mozilla. Galeon even has a "quick start" feature which allows a process to run and load Galeon in the background when you login. This way, when you actually want to use it, Galeon pops up quickly. Internet Explorer does the same hack (i.e. quick nasty fix) which is why it always seems like IE loads very fast on Windows. Galeon may still appear to be rather memory hungry, but that is the Gecko engine to blame. Internet Explorer is very forgiving toward lazy developers who make buggy websites, so it has less trouble showing all kinds of pages. Nowadays, there are many badly coded websites on the web and the developers of the Gecko engine had no choice but to make sure those pages render properly. For that, the Gecko engine has many routines which try to work their way around bugs which makes it just bloated and resource hogging.

Mozilla 1.1a
Mozilla 1.1a with the Orbit theme

Galeon
Galeon has neat toolbar features which allow easy Google or Dictionary searches

While Mozilla is a full featured browser with e-mail and newsgroup clients and Galeon is a lean and mean browser, Konqueror acts as a file manager and web browser integrated together. You will notice that Konqueror behaves a lot like Explorer in Windows. While you can browse your local or remote files, browse compressed files, preview multimedia files, you can also open a website right in konqueror. Konqueror uses its own HTML engine, khtml, but there is also experimental support for Gecko. Konqueror supports Netscape plug-ins, JavaScript and Java. One of nice features of Konqueror is multiple window browsing. Konqueror also integrates tools like Cervisia and diff which make developer's life easier.

konqueror
Konqueror file browser, web browser and terminal emulator all in one window.

Another browser worth mentioning is the Opera browser. Opera features worth mentioning Opera is light, and fast rendering engine, Netscape plug-ins support, tabbed browsing and skinable interface. The free version of Opera is ad sponsored (an ad runs on upper right corner of screen).

Opera Browser
Opera browser

Instant Messaging and Chat

The good news is that you won't be missing your online friends if you use any of the above Instant Messaging (IM) programs. The nice thing is that there are more than one client from which you can choose to use, so are not stuck with MSN Messenger, ICQ 20002, YMessenger or AIM. There are even some programs which support multiple clients, you log in one and automatically you are logged in all the others.

GnomeICU Yahoo! Messenger
GAIM Everybuddy

From left, GnomeICU ICQ client, Yahoo! Messenger, Gnome AIM, and Everybuddy universal messenger

There are a few applications available for IRC (Internet Relay Chat). If you had read my article before, I had recommended KVirc. However, some readers recommended a few other programs and finally I had the time to sit and actually use each. Out of the croud, I found xchat actually be the easiest of the clients. KVirc is nice, but xchat has a more MIRC look and feel to it. BitchX, a popular IRC client is also available on Linux.

xchat
Xchat IRC client

xchat
Xchat IRC client channels window

xchat
Xchat IRC client preferences

File Transfer

Perhaps you need to transfer some files from office or school. On any OS or platform, you would need some sort of file transfer program to do so. One of the more popular applications is FTP (File Transport Protocol) which allows one to log into another machine and transfer files between the two machine. Gftp (Gnome FTP) has all the features and facilities one would need for file transfers. It is easy to setup and also supports bookmarks for easy access in the future:

gftp
gftp with the Gnome AquaX theme

Remote Access

I have already covered most of Linux remote access abilities in this article. For the impatient, you need to be running the OpenSSH server and you need some sort of ssh client to log into your machine through command line. TightVNC consists of a server and client which allow you to visually access your machine from even a web browser.

Viruses, Worms, Hackers and other Low Lifers

You may have wondered if a Linux box can get infected with viruses and worms from e-mail and Internet. Currently the answer is no. However, this does not mean Linux is completely safe. For the virus to do any significant damage to your system, it must have root access. Getting root access is not an easy task as your passwords are encrypted almost one way and retrieving them is fairly hard (well, not hard, but very time consuming) . However, a virus may be able to exploit a vulnerability in an application and gain root access. Still, it is possible for a virus to wipe off your home directory (so regular backups are still a must). Fortunately, there have been only a very few number of viruses written for Linux, and even those were created purposely to demonstrate that even Linux is still vulnerable to viruses as the worst sense of security is a false sense of security.

Internet worms are generally scripts that run a sequence of commands and execute certain applications. Linux has very powerful scripting languages and it is also possible to create Internet worms for Linux. However, the worm may be severely limited if it does not gain root execution access. For a script to work, somebody must run it. Outlook Express on Windows has become the source of Internet worms as it has features which allow a script to run itself without the user's permission. Fortunately, there aren't any e-mail programs that allow this on Linux.

So, for now at least, you are fairly well protected against viruses and worms, but what about hackers? A hacker's sole purpose is to gain access to your machine and either steal information from it, or perform illegal activity (e.g. hacking important corporate or government computers) with it. After all, when was the last time somebody broke forcefully into your house for a good cause? You are most vulnerable to hackers if you are running servers like web-servers, ftp-servers or even network servers (Samba, OpenSSH). If you do run any of them, you should constantly check out the website of the software vendor and look for security patches. Thankfully, Linux does come with firewall software which can be configured to stop illegal network activity. Major Linux distributions already come with a standard firewall software which is easy to setup. There are also a few firewall software projects under development.

Multimedia

Graphics

So you have an artistic edge and want to make some graphics on Linux, but there is no Adobe Photoshop. Don't worry, GIMP (Gnome Image Manipulation Program) has got you covered. All the graphics you see on this article has been captured or edited with the GIMP. The windows manager themes I have made are also done in the GIMP. While learning GIMP may be difficult for the beginner, if you already know how to use Photoshop, you would quickly feel at home with the GIMP.

the GIMP
Image editing using the GIMP

Those who have a large collection of photos will really appreciate Gqview which performs pretty much like ACDSee on Windows allowing you to browse thumbnails or create slideshows:

Gqview
Browsing MyPictures folder with Gqview skinned with another Gnome theme

Sound

If you have a Sound Blaster compatible sound card, your distribution has already installed the drivers for your sound card and you are ready to listen to your wonderful collection of Britany Spears songs. Xmms (X Multimedia System) is the equivalent Winamp you would find on Windows. Just like its Windows counterpart, it has plug-in support. One of the more interesting of these plug-ins is Xosd (X On Screen Display). Take a look for yourself:

xmms
Xmms with Xosd

Of course if you absolutely despise the Xmms (Winamp) look, you can enable the k-jofol plug-in, importing other skins for Xmms:

Xmms with Kjofol skin
Xmms with the K-jofol skin

Grip is a CD player, CD audio ripper (copies CD audio digitally to your computer), and audio compression utility. It has CDDB feature which allows the CD track names be grabbed from the Internet. Grip is in reality a front-end GUI to audio management programs like cdparanoia and bladeenc. You can select to either just rip the CD tracks or to encode them into mp3 or ogg format. It is really the only application you would need to digitally backup your CDs.

Grip
Grip


Grip Encoding
Grip ripping and encoding a CD

Video

Watching videos on Linux is no different than watching them on either Windows or MacOS. However, there are a few issues which may limit your video watching enjoyment. Videos are compressed using a wide variety of codecs. DivX is an example of a video codec. While some of these codecs are open to anybody to use them, some other ones are propietary and you are not allowed to use them without a license. Now, Microsoft and Apple have dealt with a lot of these license issues and hence media players on these machine have most of them included in them. This is why it seems like Windows Media Player can play anything you throw at it.

Xine, AviPlay and X-Movie are a few of the available video players on Linux. I personally prefer Xine as it is easy to use and looks very good with themes. After loading Xine, you will soon realize that you are limited to playing only avi and mpeg movies. This is because of the license issues I noted above. It is possible to download other Windows codecs. If you are using Mandrake, you can get additional codecs for Xine from here [ftp.ibiblio.org].

Xine
Xine showing the Matrix (Image is reduced in quality)

CD Burning

Once again, there are a few CD burning programs with different interfaces, each unique in its own way, for Linux. Most of these application are not easy to use by any sense. The truth is that there are only a couple of CD burning programs available for Linux, all of which work in command line only. The rest are front-end GUIs to these programs, so it is just a matter of finding the application that has the best graphical user interface. After trying every single CD burning application, I found e-roaster to be the easiest and most feature rich. E-roaster allows easy compilation of a music CD from a combination of mp3s, waves or even ogg files. It also allows easy burning of data CDs and ISOs. There is a disk copy feature, but I have not used it yet. If you are using Mandrake 8.2, you will need to upgrade e-roaster to the latest version as the one shipped with version 8.2 is horribly buggy.

eroaster
Using e-roaster to burn a CD

File sharing

I am not a lot into file sharing. I am not here to give a lesson, but I believe that people should be accredited for the work they do (unless they voluntarily do not want to). I personally do not download mp3s, however, I am always listening to music online through one of shoutcast [shoutcast.com] channels. To listen to a channel, simply download the file and open it using Xmms. You can set your browser to open the file using /usr/bin/xmms (use xmms -e with Galeon) command.

You will be able to tap into one or more of the popular file sharing networks using the many different clients available online. I do not have a lot of experience with these programs, however I found two programs which seem to be easier to use and provide the most features: Knapster and gtk-gnutella.

Knapster allows you to connect to a Napster network and share your files with the people on that server. There a lot of servers, but I had some trouble connecting to the larger ones as they are busy.

knapster
File sharing via knapster.

Gtk-gnutella allows you to connect to the Gnutella network. It is fairly simple to use and has some nice filtering features:

gtk-gnutella
Gtk-gnutella with its advanced filtering feature.

Desktop management

File Manager

On Windows and MacOS users either use Explorer or the Finder to manage your files and Desktop. On Linux, file managers are not necessarily embedded into the the window manager application and you are free to choose from a few available ones. The downside is that there aren't really any full fledged high performance, feature rich and easy to use file managers. Konqueror on KDE is the best filemanager on Linux, but it is very slow, specially starting it up. I am not sure why there hasn't been enough development in this area of Linux, but personally, I find the command line the fastest and most sophisticated file manager. By the time Konqueror has started up (even if I'm on KDE, it's even slower if you are using another window manager) I have performed the task I wanted to in command line. Nautilus is another window manager and comes with the Gnome Desktop. Nautilus is just as slow as Konqueror and yet it does not have all the advanced features of it.

Nautilus
Nautilus filemanager

A very promising file manager is Rox-filer. While currently it has still a clunky feel to it and the icons look very ugly, its speed is just astonishing. A welcome feature is directory pop-up; move a file over a folder and hold it for a short time and Rox-filer will open that directory for you. This is similar to MacOS file manager.

Rox-filer
Rox-filer

Archiving

Archiving files on Linux is very easily. You can pack a whole bunch of files together using tar (Tape Archive). Let's take a look at some examples:

tar
listing content of a directory

In order to create a tar file, you use the tar c, to tell tar to verbose what it is using, you use tar cv and to tell tar to create an archive with a specific name you usr tar cvf <filename>:

tar
Creating a tape archive

In order to compress the tape archive using gzip, we simply call tar xvfz <filename>. Remember that you need to specify which files you would like to include in the archive. If a directory is included, the content of that directory are also included. In order to decompress a gzipped tar file, simply call tar xvfz <filename.tar.gz>.

There are also graphical archival programs similar to Winzip on Linux. Ark can create tar, tar.gz, tar.bz2, zip, xpi, lzh, rar and some other compressed archives:

Ark
Creating a zip archive with Ark

If you have a lot of CDs with a lot of programs backed up on them, you know about the frustrations of having to search those CDs for a specific program or file. One Either has to spend the time and make a file listing for each CD and print it or go through each CD one by one until the file is found. CD cataloging programs come to rescue and they are available on every operating system. I have been looking for a good CD cataloging program on Windows, but the only decent one that has good cataloging features is not free. You will be happy to know Linux has an excellent easy to use CD cataloging program called GTKtalog:

cd-catalogue

Mother of all applications: Emacs

In 5 years of using Unix and 2 years of using Linux, I have seen many different applications for *nix. Yet, there is one single application that has always been there for me. In thick and thin, in up and down, in sleepless nights of coding, playing tetris...

Emacs is your run of the mill file editor. Emacs is actually a very simple text editor with advanced plug-in capability. Emacs uses Lisp for its configuration management. Lisp is an actual programming language (to be correct, it is a scripting language. Lisp does not get compiled into an executable, but it is interpreted as it is run). Now, there is a zillion different plug-ins for Emacs making it the most powerful text editor on planet. A nice feature of Emacs is that it works in text mode only as well as graphics mode.

You might wonder why you would ever need a text mode only editor? Imagine you are stuck in the middle of a Sahara. The sun is shinning at 90 degrees on your head and there is no sight of any life anywhere you look. The only thing you have is a dumb text only terminal and a keyboard. Now, you want to edit the source of that tetris game you have been working for such a long time, or maybe even e-mail somebody to come and rescue you. Now, if you didn't have Emacs, or if it didn't work in text mode only, you would probably die alone in that Sahara. (We have had too many of these discussions during those long sleepless kernel hacking nights in school).

Emacs can be used for all your text editing uses, but keep in mind, Emacs is not a word processor. Emacs supports virtually every single programming language in the world. Here is a list of Emacs features that I am aware of (and there is so many that I don't even know about):

  • Multiple Document Interface (well, buffers)
  • Indent and syntax highlight a lot of different files
  • remotely browse directories and open and edit files
  • run command lines (shell)
  • compare files
  • Speedbar
  • built-in games like tetris
  • Lisp (Scheme) interpreter
  • CVS
  • E-mail and Newsgroup support
  • Advanced search and replace
  • Compiler and debugger interface
  • Spell Checker
  • Calendar

Because Emacs is so wonderful, it does not use your generic normal keyboard shortcuts. This is why perhaps Emacs is not for the beginning user. However, once you are starting to sink into editing configuration files or source code editing, you will find that Emacs has the answer to all your questions. Here is a short list of Emacs shortcuts and tips:

CTRL-x CTRL-f Open/Create a file
CTRL-x CTRL-s Save file
CTRL-x CTRL-c Quit
CTRL-s Incremental search
CTRL-SHIFT-- Undo (ctrl-shift-minus)
CTRL-a Jump to beginning of line
CTRL-e Jump to end of line
CTRL-k Kill line from cursor
CTRL-w Cut highlighted region
SHIFT-INSERT Paste
Esc x Activate minibuffer
Esc % Search and replace
Esc g Goto a line


The Emacs menu system is not quite perfect. While it is much more complete on newer version, it still does not show all of Emacs features. The best way to find if Emacs has a specific feature you want is to use the minibuffer. Activate it by pressing Esc x. Then type a few letters of what you want and hit Tab to let Emacs give you a list of available keywords. If you want to change a setting and you are not sure what variable it is, use descrive-variable and press enter and then the variable. Again, hitting tab will give you a list of available words. As an example, Emacs does not support wheel-mouse by default. However, somebody has already written a plug-in and all you have to do is enable it in Emacs:

First, describe-variable 'mouse'+ tab gave me this:

Click on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:
mouse-avoidance-mode             mouse-buffer-menu-maxlen
mouse-buffer-menu-mode-groups    mouse-buffer-menu-mode-mult
mouse-drag-overlay               mouse-last-region-beg
mouse-last-region-end            mouse-last-region-tick
mouse-leave-buffer-hook          mouse-position-function
mouse-region-delete-keys         mouse-save-then-kill-posn
mouse-scroll-delay               mouse-scroll-min-lines
mouse-secondary-click-count      mouse-secondary-overlay
mouse-secondary-start            mouse-selection-click-count
mouse-selection-click-count-buffer
mouse-wheel-down-button          mouse-wheel-follow-mouse
mouse-wheel-mode                 mouse-wheel-mode-hook
mouse-wheel-scroll-amount        mouse-wheel-up-button

I narrowed it by typing 'mouse-wheel' + tab:

Click on a completion to select it.
In this buffer, type RET to select the completion near point.

Possible completions are:

mouse-wheel-down-button         mouse-wheel-follow-mouse
mouse-wheel-mode                mouse-wheel-mode-hook
mouse-wheel-scroll-amount       mouse-wheel-up-button

and finally mouse-wheel-mode gave me this:

mouse-wheel-mode's value is t

Documentation:
Non-nil if Mouse-Wheel mode is enabled. See the command `mouse-wheel-mode' for a description of this minor-mode. Setting this variable directly does not take effect; use either M-x customize or the function `mouse-wheel-mode'.
You can customize this variable.

Defined in `mwheel'.

From here, you can either middle-click on customize or simply enable the minibuffer and type mouse-wheel-mode and hit enter. Easy.
Of course, reading the Emacs manual helps a lot.

Here are some samples of Emacs features:

Emacs Speedbar #1
Emacs Speedbar #2
Emacs with Speedbar and directory browser

Emacs Compilation
Compiling source with Emacs, middle click on the error line and it jumps to the error in source.

Emacs Tetris
Editing an HTML file and NOT being very productive...(and sucking at tetris)

Emacs No X
Emacs in text mode only remotely browsing a directory (yes, some of us are that sick)





Links

Of course, without the help of the Linux community, learning Linux will be much much harder than it is. The following table is a list of links I have collected in the past 2 years in some random order. If you would like to see a link added, e-mail me at hr_pakdel@yahoo.ca with the subject 'Linux Links' and the link and maybe even a description. I will add it if I see it fit (i.e. I will evaluate the page):

Link
Description
http://home.c2i.net/dark/linux.html
http://www.linuxnewbie.org
Linux for beginners, contains good guides
Linux for newbies, click on 'nhf' for guides
http://loll.sourceforge.net/linux/links
Loads of Linux Links (the names says it all!)
http://www.tldp.org
The Linux Documentation Project, a large collection of HOWTOs and guides
http://www.dsl.org/cookbook
The Linux Cookbook, Tips and Techniques for Everyday Use
http://www.desktoplinux.com
News and articles regarding Linux on the desktop. Their directory contains many good links to guides
http://www.linuxgazette.com
A lot of useful intermediate to advanced guides
http://www.gnu.org/fun/humor.html
Gnu funnies section, developers' jokes
http://forums.itrc.hp.com/cm/FamilyHome/1,,118,00.html
HP Linux support forum, ask all your questions here if you are installing on an HP system
http://freshmeat.net
http://sal.kachinatech.com
http://home.xnet.com/~blatura/linapps.shtml
http://www.linuxapps.com
http://apps.kde.com
http://www.sweetcode.org
http://www.gnu.org/directory
Linux Applications, themes and some articles
Scientific Applications on Linux
Linux Applications and Utilities Page
Linux Applications
KDE Applications
Interesting Applications
Free Software Directory
http://www.kde-look.org
http://themes.freshmeat.net
http://sunshineinabag.co.uk
http://jimmac.musichall.cz
http://tigert.gimp.org
KDE related themes and icons
Freshmeat's themes section (all window managers)
Gnome themes (not complete, freshmeat has more themes)
Jimmac's page (Gnome themes and GIMP tutorials)
GIMP related stuff
http://lhd.zdnet.com
http://www.linuxprinting.org
Linux Hardware Database
Go here if your printer is not supported with your current distro
http://www.ozetechnology.com
Some tutorials and a list of useful applications
http://www.pclinuxonline.com
News and very good downloads (Texstar's)
http://linux.box.sk
Links to a lot of thing, mostly security related
http://www.linuxgames.com
http://happypenguin.org
Linux Games
The Linux Game Tome
http://www.mandrakeuser.org
Mandrake User Community, make sure you visit the DocSection
http://www.winehq.com
http://www.linuxgames.com/wine
Wine (Wine Is Not an Emulator) allows Windows programs to run on Linux
Windows Games that work under Wine
http://www.osnews.com
OS related news
http://www.penguinmagazine.com
Penguin Magazine, old, but contains a few important intermediate to advanced guides


Conclusion

What you just saw was just a small collection of applications available on Linux. Is Linux ready for the desktop? That is still a hard question to answer. Major distributions like Mandrake and Suse have paved a lot of complexities that Linux has. Still, as you did notice from beginning of this article, the initial setup is still bumpy. Another problem that frustrates a lot of users is the lack of coherency between Linux applications. Copying and pasting does not work flawlessly between all applications. Standardizing Linux GUIs will definitely help all Linux users.

My friends and family have no problem using my Linux box as configured by me which is heavily tweaked. My system is dual booted, but Windows only exist to satisfy my fraging needs. There is a big delusion that using Linux is hard and will make you incompatible with the rest of the world. I have been using Linux seriously for almost a year and I'm still compatible with everybody else. I wrote this article to show that using Linux is at least as easy as Windows and MacOS.

I hope you have enjoyed the article and it has encouraged you to at least try it out when you get a chance to.

Reference*

[1] http://ragib.hypermart.net/linux/

[2] Silberschatz, Galvin. Operating System Concepts.

[3] http://www.mandrakelinux.com

[4] http://linux.org.mt/article/ttfonts

[5] http://sjbaker.org/tux/index.html

[6] http://www.latex-project.org

[7] http://www.freeos.com/articles/3007

* This is by no means a properly formatted Reference section. Please see this page [bialik.netaxis.qc.ca] for a proper style of writing a Reference**.

** Yes, I am too lazy to format the Reference section properly.

FAQ

Why is the installation guide incomplete?

I could have written a Linux installation guide, but then there are already so many of them on the web. I definitely recommend a good book for Linux newbies. I'm an not aware of any, so it is up to you to find one.

Why wasn't program X included in your list?

There are two reasons why I haven't included a certain application. First, I may not be aware of it. I will happily include the application if you send an e-mail to hr_pakdel@yahoo.ca with subject 'Linux Application' and a link and a reason what makes this program great for desktop. If I see it fit, I will write a short description and include screenshots of it. Secondly, I only listed those applications that are useful for the desktop. When I say "useful" I also mean robust. Mr. Project is a great task management application, but the stock version which came with my Mandrake 8.2 install would crash X server every time I added a resource. Hence, Mr. Project is not included. When I say "useful" I also mean easy to use. Vi is a great minimalist editor, but its user interface is frustrating at best, so it was not included.

Why is there less content at the end of the article than the beginning?

Initial setup of Linux is perhaps the most time consuming. Once everything is the way you like it, all you have to do is open an application and use it. There really isn't much I can talk about applications that just work the way they should. Some other applications are fairly unique to *nix environment (lyx) and users of other platforms need a bit more explanation to learn about it.

Are you writing this article to diss Microsoft and Apple?

No, I have nothing against Microsoft or Apple. I may not agree with some of the business decisions they had made or make, but that does not prevent me from using their products. Windows 2000 and XP and MacOS X are great operating systems for the PC. I still use Windows XP Pro for my gaming purposes and I envy Mac people for their awesome MacOSX (which is a Unix variation by the way).

I just enjoy Linux more because I understand it. I have studied computers in extend and I understand terms like preemption, CPU scheduling, virtual memory, segmentation fault, inodes and other jargon like that. At every moment, I know exactly why my system is behaving the way it is and I love that. It's like you feeling your heartbeat and knowing that your heart is in great condition.

I also believe in freedom and I find that Linux gives me a greater opportunity to exercise that freedom.

Will you help me if I have a Linux question?

Absolutely, as long as my time and knowledge permit, I will answer all questions directed to hr_pakdel@yahoo.ca with the subject title 'Linux Question'.

Reader Submitted Questions

Is it possible for Windows programs to run on Linux in any way, shape or form?

Well, this is a tough question to answer. WINE (Wine is not an Emulator) [winehq.com] is a project that aims to provide an environment in which a Windows program can run with or without actually installing Windows. Wine has some built-in libraries and is being improved at a pretty good rate. Installing WINE is not an easy task. I've attempted it a few times. It works on basic programs like Notepad and Calculator. Another problem is that almost 10% of all Windows programs access custom drivers (VxDs) that operate on system level. As VxDs thus need equal privilege as the operating system itself, Linux won't run them and the application will produce an error, but given a very good Wine package or quite some experience, you can get even very complicated programs to run with some luck, e.g. Photoshop 6 or Internet Explorer or AutoCAD. I would suggest you take a look at WINE application database [appdb.codeweavers.com] to see if the application you need works under WINE. (Thank you Andreas for the correction and the tip)

The only time I got a Windows program to really run perfectly, was when I had Windows 98 installed on another partition. This time, I told WINE to simply look in C:\Windows\System (/mnt/hdb) for any libraries it needs. I was able to get even Internet Explorer running.

CodeWeavers [codeweavers.com] is a company that is trying to put WINE to some real use. They have been able to get Windows Media Player, Quicktime and a few other windows plug-ins to work. Actually, their product is nearly flawless. They also have been able to get MS Office to work. However, their products are not free (which is why I did not include them in the article).

Lindows [lindows.com] is a new Linux distro which aims to include WINE (actually variation of it). They used to claim that you will be able to run almost all Windows applications on Lindows, but they have backed off from that claim.

To be honest, the best OS to run Windows applications is Windows itself. Now, there is one way to do exactly that. VMware[vmware.com] is a sort of PC emulator which works fairly efficiently. It is not free, but it works perfectly (no 3D acceleration though). You run VMware, then install Windows and then install your applications.

There is one last way to run a Windows application on Linux environment. Take a look at my article [ratedpc.com] regarding VNC. If you have an extra PC and a hub or a router, you can run VNC server on the Windows machine and then run a client on Linux and run the program through that. You will have some lag, nevertheless, it works. If you have two minitors, you can put them side by side, and run x2vnc [hubbe.net]. When x2vnc is running, if you move your mouse to the right corner of the screen, it will jump to the VNC server you have specified and take over its mouse and keyboard. So you can use both Linux and Windows with one keyboard and mouse.

Does Linux support TV cards at all and is there any TV viewing software available?

I do not have a TV card, so I have not tried installing it. However, I did a search on the web to see what comes up:

"A TV Tuner card has three important components. The tuner chip is used to "listen" to a specific broadcast frequency. Most cards have major problems tuning weak signals, especially when an antenna is the input source. A video decodechip processes the incoming signal and processes the broadcast format (PAL/NTSC/SECAM) and pushes it to an overlay area of the main video card. The overlay area is a part of the video memory which is directly written onto by the TV tuner to display the TV channel. Finally a sound decoder chip, processes the audio signals and can additionally decode Stereo/Dolby signals before feeding it to the speakers." [7]

Some more search revealed that an API (Application Proramming Interface) for TV cards has been developed which allows TV-Card softwares easily use the TV Cards:

"It all started with the bttv driver many years ago. The very first bttv releases had some private BTTV_* ioctls to control the hardware. Late in the 2.1.x cycle Alan Cox stepped in with the idea to create a common API for that kind of hardware.video4linux was born. The idea is great. But it turned out later that the actual implementation has a number of flaws. Basically the API was desiged too much along the lines of the existing bttv driver. Bill Dirks started working on a new API, known asv4l2 these days. It fixes a number of design bugs and will (hopefully) replace the old video4linux API some day." [8]

As for the software, there are a few of them. xawtv [bytesex.org] and KwinTV [kwintv.org] seem to be the popular ones. Here is a screenshot of KwinTV from the KwinTV website:

kwinTV

For further information and installation guides, I'd recommend you to check out these links:

Once again, for those of you who have a better solution, please let me know.

Is there a PDF or printer friendly version of this article?

I have put together all of pages of the article into one page and posted it as page 21. Also, you may download and print a PDF version (zip compressed) of the article. A note that I created it by printing a PostScript file from Mozilla. Unfortunately, some images look odd and I do not have control over that.

I would like to ask you to only download the files if you really need to print them. This site is run by a group of volunteers. We are allocated a bandwidth quota and anything additional will come out of our pockets. I appreciate your consideration.

These files were updated on July 18th, 2002

Linux On Desktop normal
http://www.ratedpc.com/sourcefiles/articles/linuxOnDesktop/linuxOnDesktop.zip
Linux On Desktop 2 page in 1
http://www.ratedpc.com/sourcefiles/articles/linuxOnDesktop/linuxOnDesktop2in1.zip

top

1