My favourite GNU/Linux programs

You'll find a lot of console programs here. I like the console because it is faster and I can access it remotely with ssh. You can also access your desktop remotely with vnc but that's sluggish.


  1. Detachable window manager for console: screen
  2. All purpose editor: vim
  3. Console mail client: mutt
  4. Console MP3 player: cplay
  5. Console web browser: links
  6. Image viewer: zgv

Detachable window manager for console: screen

Screen let's you run multiple programs on one console. Even cooler is that you can "detach" and "reattach" a screen session. This means that you can log in and out of a system and your programs will still be running, and you can access them from different locations. Some keys to control screen:

Inside screen:
Ctrl-a c        create a new screen window
Ctrl-a space    switch to next screen window
Ctrl-a d        detach screen

From bash:
screen -r       attach a session that is currently detached
screen -x       attach a session that is already attached

All purpose editor: vim

Vim stands for Vi IMproved. Vi is a very old editor. Some keys:

INSERT      press to enter insert mode, another time to enter replace mode.
            In this mode you can type text.
ESC         leave insert/replace mode. In this mode you can do the following:
b, w        previous/next word.
dd          cut/delete line
yy, p       copy, paste line
V           enter visual mode, make a selection with the cursor keys and press
            enter. copy it with y or delete with d.
ZZ or :w [filename] save file
:q          quit
:n          go to next file (when editing multiple files, for example vi *sh)
/[regex]ENTER   search for regex. press 'n' to search for the next occurrence.
:%s/regex/text/g    search for regex and replace it with text
:u          undo
:red        redo
:![command] runs a command, e.g. to compile your project or to run latex

A short note about this 'holy war'. Some people swear by emacs. My reason for not using emacs is that I think vim is quicker for me because I don't have to press three keys at once (no shift meta controls). As long as I don't forget the above keys I can be really quick with vim. Emacs is also a very large program, and in my opinion it's not in the Unix spirit of being good at one thing and stopping there (emacs is, aside from being an editor, also a mail client, web browser, news reader, operating system etc).

Console mail client: mutt

Mutt is a mail client. It doesn't need much explanation, just use 'q' to go back/quit and use the arrow keys to select things.

c       open mailbox
m       compose message
r       reply
f       forward
d       delete message
s       save message to different mailbox
q       previous menu/quit

Console MP3 player: cplay

This is a console frontend for various sound players. It plays mp3, ogg, wav et cetera and you can add new file types if you're not afraid of tinkering with the source (in python). What I like about it is its simplicity and straightforwardness.

There's a file list and a play list. You switch between these by pressing TAB (this is much quicker than with most other players like winamp or xmms which require you to go through tedious Load File dialogs, looking for the right directories etc.).

You can add a file, directory or m3u play list to the play list by pressing "a". You can start playing a song by pressing enter (either in play list or file list). That's all you need to know. Press "h" to get help on other commands.

Since cplay no longer seems to be developed, I maintain a fork of it with some modifications to support more file formats, and additional features. The following file formats are supported with my additions:

The fork is available here: cplay ('chmod 755 cplay' after downloading, place it in /usr/local/bin to make it available system-wide)

Console web browser: links

Text browsers are faster than graphical browsers. Normally you control them just with the keyboard. Press esc to get to the menu. You can select a link or go to the next page by pressing the up and down arrows. You follow a link by pressing enter, go back by pressing left.

Images are of course not supported but most other things are supported, like frames, forms and stylesheets. My shell scripts gg, ggl and lyr are handy for quick access to google from the console (entering gg foobar would open up links and search for foobar on google).

Image viewer: zgv

This image viewer uses SVGAlib and doesn't need Xorg (although there's a version called xzgv that runs in X). It's faster than most viewers. It supports many formats like JPEG and PNG. Thumbnail view and slide shows are also possible.