Computer working environments are pretty similar to the species on this planet. One can see ancient species, that have survived millions of years, living along some fairly-recent ones like humans. The ancient of working environments would be the famed CLI (Command Line Interface) that uses typed text to communicate with the computer, while the modern, today, is the GUI (Graphical User Interface) where there are buttons, windows, mouse pointers and clicks.
There is, surprisingly, a heated debate between each interface’s supporters. CLI pundits are usually vocal and so determined in such debates. They argue that CLI’s are more direct, powerful, safer, cleaner and more reliable than GUI’s. They suggest that using a CLI is simply like the text-chatting that we do all the time. Of course, I would say: yes, but it’s like chatting to a very strict English teacher: zero-tolerance to all mistakes in grammar and spelling. Elsewhere, GUI users (the most of us) don’t even imagine how it is possible that a CLI can be better than all these nice buttons, colourful icons and easy-to-follow informative boxes. CLI can be very intimidating for new users.
All operating systems started with a command line environment, but all have ended up with nice and intuitive graphical interfaces. They differ, however, in how they’ve treated their old foe. Windows, on one hand, has reduced the CLI to be the last resort in a rescue mission, in addition to supporting what some users may need it for. On the other hand, Linux has preserved the full functionality of the CLI, or, more precisely, maintained the CLI as the primary working environment. In Linux world, GUI is no more than an application – a “front end” for non-experienced users to do what Linux gurus normally do from the command prompt.
However, enthusiastic Linux developers around the globe have been adding more and more functionality to the Linux GUI. System shells like Gnome, KDE or Xfce have been improving by the day and have reached a high level of maturity. Applications have already made a very smooth transition into the GUI territory, and, with some exceptions, system configuration tools have also made tangible progress in this regard.
All that said, it is only fair to say that the command line is still the standard in Linux, and most users will run into it sooner or later, especially when things go wrong. Many still see this as the main obstacle against widespread use of Linux systems; and many Linux distributions try to incorporate more graphical elements to make things easier for inexperienced users. However, there are thousands of community-developed GUI tools and applications that cannot be officially included in a Linux distribution (because it would be a massive effort). They usually sit in add-on repositories on the web, like the “universe” repository in Ubuntu. The only problem is recognising the good, the bad and the useless amid such a huge number of packages. This, by the way, highlights a major problem in the Linux GUI sphere: inconsistency. It not exclusive to Linux, though. No-one can say that all Windows software are good; but thanks to the long and large use of Microsoft’s products and the maturity in Windows GUI, users have enough knowledge to overcome such a problem.
In my personal opinion, Linux GUI capabilities are also undermined by thousands of guides, how-to’s and troubleshooting pages that are available on the web. Most of them are written by advanced Linux users who favour the CLI and therefore excessively use it in their explanations (besides, it’s easier to include a text than a screen shot). In doing so, they unintentionally obscure Linux GUI’s capacity, and give a false impression that Linux usage depends on good command line knowledge.
In the remainder of this article, I’ll try to list some useful GUI tools in Ubuntu Linux, side-by-side with their CLI roots. Unfortunately, I won’t be able to explain how to use them, but I suppose that such information can be found somewhere else.
Application Management (Install/Remove/Update software):
- GUI: Synaptic Package Manager, Gdebi (Package Installer), Adept, Update Manager.
CLI: dpkg is the base package. Apt and aptitude are CLI front-ends.
- GUI: software-properties-gtk (Software Sources)
CLI: apt-cdrom, apt-key and other front-ends to edit /etc/apt/sources.list and GPG keys.
- GUI: gtkorphan (Remove Orphaned Packages)
- CLI: deborphan
- GUI: Ubuntu-tweak, gtweakui, Nautilus Actions, gconf-editor (Configuration Editor)
- CLI: GConf is the base package; gconftool is the CLI front-end.
- GUI: d4x (Download for X), wxDownload Fast, MultiGet, FileZilla, Deluge and Transmission
- CLI: wget and ftp are base backages; lftp, bittorrent are CLI clients.
- GUI: Network Manager, Network Tools, Network Manager Applet.
- CLI: several base packages and several CLI configuration tools.
- GUI: Gnome-PPP, kppp.
- CLI: pppconfig is the base configuration package, wvdial is a CLI dialer.
- GUI: Firestarter, Firhol, Gnome-lokkit
- CLI: iptables is the base package; ufw (embedded in Ubuntu 8.04) and lokkit are CLI front-ends.
Remote Access clients:
- GUI: Vinage (Remote Desktop Viewer), VNCviewer, tsclient (Terminal Server Client)
- CLI: Several back-end protocols: VNC, RDP, SSH and Telnet; many CLI clients: putty-tools, rdesktop, openSSH client and many more.
- GUI: Gedit (Text Editor), Mousepad and many more.
- CLI: nano and vim among others.
- GUI: file-roller (Archive Manager)
- CLI: tar, bzip2, zip, rar, p7zip
Disk Partitioning Tools:
- GUI: Gparted (Partition Editor)
- CLI: Parted
- GUI: Compiz Settings Manager, Simple CCSM, fusion-icon (Compiz-Fusion Icon).
- CLI: compiz, xserver-xorg are base packages, configurations are stored in editable text files and may write to GCong as back-end.
- GUI: Hardinfo (System Profiler and Benchmark), Sysinfo
- CLI: lshw, cpuid, facter
- GUI: Avidemux, kino, pitivi, LiVES and many DVD rippers/creators.
- CLI: GStreamer and Ffmpeg are important base packages, CLI front-ends include mjpegtools, mencoder, transcode, x264 and several more.
Audio format conversion:
- GUI: SoundConverter, oggconvert, aacplusenc among others.
- CLI: lame, sox, faac, flac and vorbis-tools.
- GUI: ClamTK
- CLI: ClamAV
- GUI: fontmatrix, FontyPyhton
- CLI: defoma, fontconfig
- GUI: Startup Manager
- GUI: bum (Boot-Up Manager)
- GUI: DisplayConfig-gtk (Screen and Grpahic Preferences), Gnome Control-Center
CLI: xserver-xorg is the base package, with editable xorg.conf settings file.
- GUI: System Monitor
- GUI: QGRUBEditor
CLI: GRUB boot loader
- GUI: gmountsio (mount CD/DVD iso images)
CLI: The back-end is mount -o loop -t iso9660
- GUI: gksu (To grant administrative privileges for GTK+ applications)
- CLI: su, sudo
I’m aware that my list is insufficient, but there could be a couple of things that might interest you. If you are a Linux newbie and you feel intimidated by all those ultra-sensitive commands that you find whenever you search the web for help, try to look for the GUI alternative. Most likely there will be one. Finally, I personally think that even though CLI will always be a *nix trademark, simple users will find satisfying and sufficient alternatives that make Linux user experience smooth and gentle.