K.Mandla's blog of Linux experiences

More terminal programs you should be using … like a pro

As I feared, I’m a bit preoccupied with my impending move, and as a result, I haven’t been able to keep all the notes here I’d like. I’ll have to glaze over the last few console programs I wanted to mention, and leave it to you to investigate them fully.

I should mention that none of these are linked to Ubuntu in particular; I’ve given links to the Ubuntu package search pages but these are probably available — if not already installed — in every distro.

alsamixer

You already have alsamixer installed on your computer; you probably just don’t know it’s there. 😀

alsamixer does everything most graphical volume controls do, and does it just as well. It handles setting the volume, controlling 3D switches, CD audio volume and line-in ports just like the graphical versions you’re used to. Key controls are a simple combination of left and right arrow keys, up and down keys and the M button to mute a channel. Simple, clean and effective.

The lovely part of alsamixer is that you don’t have to wrangle with the amixer terminal commands to set the volume on your rig. And it runs on a fraction of the space, with no need for a particular desktop environment to work. It’s a natural born utility. 🙂

htop

I mention htop a lot, and that’s because I use it a lot. It’s much more attractive than the conventional top program, and much more functional. It also has a much more intuitive interface than top. And all those “much mores” should be enough to get you to at least take a look at it.

htop does everything you need from a system monitor, plus has an exceptionally lightweight profile of its own. You don’t need a horde of Gnome underpinnings just to get a glimpse at what’s running in your computer’s little world. And since it has that easy-to-decode interface, it’s ideal for managing the workload or troubleshooting hung processes. Every now and again my fans start to spin interminably, and htop is the place I go first. … No ps aux or any of those cryptic tree commands. Show me the htop.

If you’re working on a flaky system, htop can run from a tty and you’re one keypress away from a system profile. It’s particularly useful on machines with occasional quirks, or hard-to-catch flickers of incompatibility. And if a process is irritating you or has stuck around longer than intended, you get the entire array of kill options within two keypresses. Power, speed and efficiency, thy name is htop.

mc

If you remember computers as far back as the late 1980s, you might remember how Peter Norton came to prominence with the three-floppy (was it three?) Norton Utilities suite. There were a lot of cool tools in that pack, but the best were the speed disk defragmenter (mostly because it was fun to watch), and the Norton Commander, which suddenly made file management a breeze.

Old-timers will rejoice at that screenshot. Two-panel file management, with options for a quick-view, syntax-colored file preview, file info, filesystem tree, and a mess of other features. Opens tar, bz2, gz and some other compressed packages like folders and has implicit shell access as well. mc reads mouse input without gpm, handles transparent X terminal emulators and can access smb and ftp directly.

For sheer speed and power, it’s hard to top such a mature, full-featured and well-rounded file access utility, and after using it for a week or so, you’ll wonder why you put up with sluggish, incomplete graphical file managers that only do a fraction of what mc does natively. This is one of those programs that has so many options and so many possibilities that I really do it a disservice my glazing over it like this. But alas, this is how it has to be. Perhaps in the future. … 😀

mutt

I mention mutt as an obligatory nod to e-mail control via the terminal interface.

Unfortunately, I haven’t used mutt much because almost all my e-mail is done through gmail, and I didn’t have much luck on a mutt-gmail interaction. Perhaps it’s possible to get the two to coexist, but it’s much easier for me to just check via elinks than to configure mutt for three or four e-mails per day.

mutt seems to be the e-mail wrangler of choice for terminal devotees though. I can recall screenshots as far back as the earliest days of my Ubuntu experience that invariably show mutt running in a transparent terminal window. If you need something that will connect to an e-mail account but doesn’t take up much space, this might be what you’re looking for.

irssi

Along the same lines, I don’t chat much, so irssi is an option, even if it’s not something I used much.

Ah, the lovely sparseness of a terminal program.

I installed and configured irssi a few months ago after I found Elizabeth Bevilacqua’s excellent irssi tutorial on the Ubuntu-women wiki, and it worked just as well as XChat or any other chat program I had ever tried. But chatting isn’t really for me — it’s very distracting, and I’m easily distracted as it is. So while irssi is what I would use if I chatted, I try not to chat at all. 😕

On the other hand I know there are people who thrive on chat access, and irssi will do it on the most ancient and decrepit hardware you can find. Drag out that 386; if it will run Ubuntu, my money says it will handle irssi.

raggle

raggle is the coolest terminal program I ever wished I had more use for. If you need a feed reader, raggle is the champ. If you want something to poll for Jamendo releases on that 166Mhz machine while playing the newest tunes, raggle is your hero. If you want something to run in an terminal emulator just to watch a feed or two without bogging down your machine, raggle is your new best friend.

raggle is clean, easy on the eyes and has a help screen that will get you started within minutes. raggle lets you run your computer without devoting it to a heavyweight feed aggregator with a lot of frills you don’t need. raggle is fast, raggle is light, raggle does a lot with a little … so much you’ll wonder what the heck you were doing with those others.

My only complaint about raggle — and maybe you can help me figure this one out — is that it doesn’t seem to offer an option for a specific browser for opening links. So when I want to jump straight to a page that I see in the feed, it invariably grabs Swiftfox, when I’d rather it spawned an instance of elinks. I understand that there’s a RAGGLE_BROWSER environment variable, but as I understand it, that’s just the path to a legitimate browser option … when what I want is a command line so I can spawn elinks in a urxvt terminal of certain dimensions and with certain options. …

That’s a pretty minor point though, and not one I’d really harp about. Outside of that, raggle does a beautiful job of reducing a feed aggregator to its essence, then building up from there. It hasn’t been updated in a while, but it doesn’t seem to lack much — so that’s not a fault at all. Definitely check this one out … I give it two very big thumbs up. 😉

Edit, 2009-12-14: Raggle fell out of development quite a long time ago, and the application doesn’t work for me with newer versions of ruby. If you find yourself having the same problem, consider snownews.

rxvt-unicode

I know, it’s not a terminal program, it’s a terminal emulator, so it shouldn’t count. But I have to mention it. I’ve tried all the terminals and all the emulators, and urxvt is just my favorite. Pseudo-transparency, support for expanded character sets, fade effects on focus shifts, xft fonts … and it’s the best looking one out there.

I know it’s technically slower than some others, but I’m willing to sacrifice a sliver of speed when it can handle a few other options that aterm (which is ugly) or xterm (which is ugly) or some others (which are ugly) don’t. I am I being hypocritical? Maybe. You use xterm regularly for a day or two, and then we’ll see who’s happier.

One tip: urxvt handles almost all its options through the .Xdefaults file, which means you don’t need a mile-long startup command to get the basic look you want. Default fonts, pixelmap inheritance, dimensions and other effects are set in that file, if you want. Command line options override those, so you can have transparency set by default, then turn it off for things like an htop instance. Play around with it.

twin

Not “twin,” but “tee-win.” twin is a windowing system that runs under a terminal environment. Think about that for a second, and realize that everything I’ve listed here or in the previous howtos can run under a completely X-free environment. That means rtorrent, cplay, elinks, oleo and everything else on this page can run in tty window, with each program in a funny little floating terminal window of its own, overlapping and behaving just like a graphical environment, but not.

Once you’ve tried it, you might forgo X altogether on your Thinkpad 760XD, and just run everything I’ve told you about with the twin layer. It’s faster, just as useful and it does everything you want without the X burden. (One last tip: set your framebuffer resolution to give yourself more screen space, or twin becomes a little crowded. 😉 )

cmatrix

Last, but not least: cmatrix. cmatrix does nothing. It has no viable function, has very little use, but it’s a heckuva lot of fun to mess with.

Try starting it with cmatrix -sabl -u 2 and it will behave like a screensaver, and run until it gets a keypress. …

Which means, if you run an autologin executable on a spare tty, then set your bash profile to start cmatrix whenever that tty is opened. …

Which means, if you have that running as a rudimentary screensaver, you can jump straight to that tty, press a key, send your terminal command, finish, then press CTRL+D to log out …

Which means it will log out, log back in and start cmatrix all over again, waiting for the next time it’s needed. It’s a gimmick, but kind of fun. You can jump to that screen just as a walkaway screensaver, and jump back to X when you’re ready. It’s a lot lighter than the xscreensaver or gnome-screensaver packages, and does much the same thing.

Now if only I could figure out how to trigger it after a terminal is left unattended after three minutes, I’ll be happy. 😀

sorry, which of these terminal programs are “pro” tools? rofl, sounds more to me like “waste time with useless programs you can do without” or “user” tools

great post dude! well done!! more proof that linux users prefer messing about with silly little tools than doing real work 😀 (I’m using fedora core 6 right now to post this before anyone thinks to reply with anything stupid).

try again when you’ve got something more substantive, like awk, sed, or other bash pro tool posts

You know, this is another instance I’ve run across where someone says that newsbeuter supports atom feeds.

No it doesn’t.

Not only does it not support atom feeds, nowhere on the website does the author even *claim* that the program supports atom feeds.

What the changelog (0.4) *does* claim to do is support snownews scripts that will convert atom feeds into (crippled) RSS feeds… just like snownews does!

Just for shits-n-grins, I just fed newsbeuter the atom feed for Mark Pilgrim’s site. If you know anything about Mr.Pilgrim, you’ll know that he’s very attentive about the quality of his feeds, yet newsbeuter results:

for making cmatrix run after a default timeout:
edit .screenrc at the bottom, (or anywhere) put this in there:
blankerprg asciiquarium
idle 300 blanker
replacing asciiquarium with the cmatrix command you want to run.
all my Xshells run screen -DRR instead of bash.
its nice. you may have to quote your ‘cmatrix’ command. apps i like on the console: screen mp3c, naim, emacs, zgv, elinks in vesa so it does pics too, epic, utorrent, and others that some of those depend on (lame bladeenc cdparanoia) oh yeah, and cdrecord, been loving that for years. thanks joerg!

“Now if only I could figure out how to trigger it after a terminal is left unattended after three minutes, I’ll be happy. ”

First of I was thinking to use TMOUT to play the trick but failed. I would like to know whether can the keyboard hooked, if possible, I can code in my own matrix terminal screen saver for that purpose 😛

Very cool article. You mentioned a lot of the programs I already use, though htop I didn’t know about.

One program I like to use in addition to alsamixer is rexima. It’s no alsamixer replacement, but it’s very basic and very easy to adjust your volume in a snap.

You said you’ve used a lot of terminal apps/emulators; have you tried mrxvt? If you have I’d like to hear your thoughts on it since you seem to know your stuff. Without any research at all, it seems that mrxvt is very similar to urxvt except that it supports tabs. I’m sure there’s more to it, though.

I downloaded cmatrix from the synaptic package installer, and opened it with the terminal using “cmatrix”. It opened the program but directly on the terminal instead of on the screen. then i tried putting “cmatrix -sabl -u 2” but it proceeded to do the same thing, except this time it would stop showing the animation. does anyone know what i can do to make it come out on the desktop, and not on the terminal menu?

JaiZ: That’s the normal behavior — cmatrix is intended to run as a terminal application, so it won’t behave like a “screensaver” in the conventional sense.

On the other hand, you could start a borderless terminal session, set it to a fully transparent background, then force it to the bottom layer of your desktop and run cmatrix there. It wouldn’t be absolutely perfect that way, but it would work.

I too wanted Raggle to use a specific browser – links-graphics rather than plain old links – and have got it to do so. After a bit of messing about with a sample config file (~/.raggle/config.rb) I downloaded that gave me no end of syntax errors, I ended up with the following stripped-version, which in its entirety reads:

I use screen anyway, and have .screenrc set up to invoke Raggle. I guess the important section for your purposes is the last one. It’s probably clear what’s going on, but if not, I set the ‘browser’ variable to the path to my browser of choice, and added the necessary flags – in my case ‘-g’ to get the graphics mode in links – in separate single quotes, before the ‘%s’ which calls the URL in question. Don’t forget the commas.

vifm is a lightweight alternative to mc and should appeal to any vi-jockies out there. Its executable is about one-seventh the size of mc, probably because it doesn’t have as many builtin functions. Instead it uses the traditional vi method of invoking external programs.

The only thing I don’t like about it is the default colorscheme. The first thing I do after installing it is to change the borders/frame to the same black used in the panels. Next I start adding marks for my favorite directories and “ex” commands for my favorite utilities.

If there’s something mc can do that vifm cannot, I haven’t found it. So it’s probably not anything I need. 🙂

I have tried raggle and snownews but they have some serious disadvantages: keeping the xml and parsing it each time is plain stupid, no one does that – it KILLS the disk each time you start the application, I have 170 feeds, it takes minutes of hard disk activity to start. Also not supporting UTF-8 is a big thing, I read Russian, Bulgarian and Hebrew feeds, I need the UTF.

Then I moved to newsbeuter. It has extensive configuration options, integration with bloglines, google reader (I don’t use it bug I have tried it and it works perfectly, only too slow to update all feeds (as I mentioned I have lots of them)). It can invoke external applications on links, it supports podcasts (audio and video feeds), it has query language, it supports external commands for grabbing the feeds (so you can use wget to get your feed with particular cookies file/proxy settings for protected feeds for example), it has ‘killfile’ options, it supports macros, it has filters… All in all it is a very powerful application, combining ideas from email clients, scripting languages, news readers and web into console interface application.

How I use it:

First of all – I set the browser to bash script instead of an actual browser, the script then tries to figure out what the link holds and act accordingly: feh for images, elinks for html, clive for flash video links, mplayer for video/audio links, swfdec for regular flash. There are time when posts are simply better and faster viewed with graphical browser – then I use the macro language:
macro o set browser “surf %u 2>/dev/null 1>/dev/null &” ; open-in-browser ; set browser “browse.sh %u”
Surf is the simplest and smallest webkit based browser I know of.

I also use the query language to define group of news (grouping is essential to me because of the large number of feeds I follow).

It keeps the feed entries in sqlite db, vacuuming it from time to time helps speed things up.