The Command-Line Office

Live your life on the command-line, this week we take a look at a suite of command-line office tools and utilities.

Updated: This article received a little bit of extra attention and comments which brought some great suggestions and alternatives. I’ve tested a few of them out and included additions below, also check out the comments for even more. Thanks everyone!

Basics

First, a gentle introduction, word processing is a bit of a no-brainer on the command-line. You have the trusty favorites of vim and emacs as well as the gentler nano editor. For spell checking files on the command-line, use aspell.

I create all of my documents in Markdown which is a nice plain text format which can easily be convert to HTML using pandoc utility. Plain text is simple, easy to work with and future proof – I won’t ever have to worry if I have an app that can read it.

Keep track of your todo items using Todo.txt a system development by Gina Trapani. A simple way that uses plain text files to track todo lists and a todo.sh script to manage it all. Now extended to mobile and available for numerous languages and platforms.

Another great command-line todo manager is Task Warrior which has a little bit richer set of features and more add-ons and third party apps which can view and manipulate, see the tools section. I like vit which is a curses based front-end.

Presentations

My favorite tool for building presentations is the ultimate converter app, pandoc. Pandoc is as mentioend above is a utility to convert file formats, some of the export formats include various HTML presentations. Formats supported: Slidy, reveal.js, Slideous, S5, or DZSlides. So you can create your slides in markdown and output a presentation.

If you want a more pure command-line experience, there is terminal power point which is a ruby script which displays the slides within the command-line. Unfortuntaely, as with all ruby scripts for me, I couldn’t finagle dependencies and versions to get it working. Your mileage may vary.

Spreadsheeting

The days of Lotus notes on the terminal are not quite over, ok its not Lotus 1-2-3 but you can still do some spreadsheeting in the terminal using the spreadsheet calculator sc. The sc program provides the familiar grid spreadsheet with vim bindings and basic calculations and functionality.

More tools and resources exist for charting and graphics, the most popular being gnuplot but matplotlib for Python is gaining popularity with the recent data science revival

If you just want to do some quick calculations, check out bc, a standard precision calculator installed on most distributions, or typically I’ll just use the Python REPL or even the newer iPython. iPython is pretty nice because it always stores the results in an array that you can access.

Calendaring

remind is a nice reminder utility, which you can use to remind you of various dates, for example birthdays. It has a powerful scripting language which allows for just about any date formatting/calculation. See LifeHacker article for more.

If you are looking for a little more from your terminal calendar, check out calcurse. Calcurse is a curses based calendar and task manager with customizable interface and suppots iCal and more formats, closer to an Outlook replacement.

As always, if you just need a month calendar, just do a quick cal on the command-line.

Apps & Utilities

For password management, I now use pass command-line tool. Pass uses simple gpg-encrypted files and far quicker and easier to use, though no browser integration. Combined with BitTorrent Sync makes for a nice synchronized password system, also it uses just basic files so you can have multiline text.

If you are looking for a command-line RSS reader, check out Canto and
Newsbeuter which claims to be the mutt of RSS readers.

Twitter, may or may not be part of the new office suite, but anything with a command-line client is a win in my book, check out python twitter tools (ptt)

A bit of a coincidence, my company just released a open source command-line tool for Cloudup, which allows uploading files, photos and more to share online quickly. Ping me if you want an invite, I know some people.

20 thoughts on “The Command-Line Office

  1. I really like this list, and I will definitely have a closer look at ‘pass’. On OSX’s homebrew does not have sc (for maximum convenience) and compiling it via pkgsrc failed. I will have to try it when I have access to a linux box some time.
    I wonder, in your research on this article have you come across an address book tool for the CLI environent? Along with mail (you have not mentioned mutt and mail clients in general) IMHO it would round up a complete office suite.
    Looks like there are address book programs for integration into mutt, will have to do more research myself.
    Thanks for posting Marcus

  2. Solid article. It’s funny that you mention emacs because it pretty much can cover everything here. I think the presentation stuff can be done with latex/text and … I can’t remember what the package is called (though HTML is easier to deal with)

  3. Thank you for this awesome list of tools. I live in the command line from my iPad to my linux VPS, and this had several tools I needed and didn’t have a command line version of.

    I’ll have to try your tool, it looks like a convenient way for me to get data from my box to somewhere iOS can grab it for me to use in another tool

  4. Good point, web mail is so popular I kinda skimmed over it, also most people who would use Mutt, kinda know about Mutt since there are so few alternatives. Pine, anyone?

    Address book is a good one, that is something that is a pain to bring up a browser just to get. I’ll have to look around, let me know if you find one.

  5. No mention of the excellent mpd and its frontend ncmpcpp for listening to music? I’m far from a command-line-only kind of a guy, but the daemon and curses interface are too useful to pass up.

  6. Some good tools here, certainly. Allow me to also point out that Emacs is great for almost all of these tasks! To-do lists? org-mode. Presentations? org-mode + org-reveal produces reveal.js presentations. Spreadsheeting? org-mode, and calc. Calendaring? org-mode. You can also read newsfeeds, interact with twitter, and work with “pass” directly from Emacs. :-)

  7. For twitter i can also recommend having a look at either Ttytter or Turses. I like Turses best, it’s a twitter client with a curses interface.

    For the writers out there there is also WordGrinder, which is simple and have great export functions for different file formats.

  8. Another plug: a command line tool to get a URL for a file – https://wsend.net

    Contact me if you want to work together as these two seem similar to the tool you’re working on as well. Excited to make the contact

  9. For spreadsheets, sc seems really perfect but it doesn’t have the Undo feature. If you make a mistake, you have to close your file and start all over again. Such a shame… Does anyone use sc anyway? How do you deal with this problem?
    (the github issue for this missing feature is here: https://github.com/msharov/sc/issues/5)

    I’m going to try teapot instead (http://kmandla.wordpress.com/2010/08/11/how-to-use-teapot-like-a-pro/), but it hasn’t been maintained since 2012.

    Unfortunately, I couldn’t fund any CLI spreadsheet which is still actively maintained. Anyone?

Comments are closed.