Musings of an anonymous geek

June 13, 2005

vimOS: the perfect operating system

Filed under: Technology — m0j0 @ 9:54 pm

Imagine an operating system that does away with the whole notion of a desktop. Why do we need this whole metaphoric thing applied to our computers, anyway? Sure, I can see why it existed before: we needed a metaphor so that we could teach the world, by analogy, how to think about computing. But now, there have been so many achievements in technology in general that we should be able to go in new directions and bring the masses along with us.

OK, I understand that’s asking too much. Bill and Steve have purposely kept us all stupid to keep costs down or something, so without the notion of a desktop, the masses are Lost In Space. Linux has pretty much followed suit, going along with these metaphors as a means of attracting the masses away from the other platforms. In the end, there’s a ton of innovation going on on the desktop, but no innovative thought that is applied to how to interact with a computer ever seems to make it to the end user. For myself, I’m slightly more advanced, and have decided that the ultimate interface for me would be the Vim interface. A “VimOS”. Read on and I’ll explain what I mean to those who know what Vim is.

What if the graphics were really, truly irrelevant? Have ’em any way you want ’em. Doesn’t matter. Start button? Fine. Task bar? Whatever. It can be there or not in VimOS, because to get work done in this dream of dreams, you only need to understand two concepts: command mode, and insert mode.

If you think about it, the only two things you do with a computer is feed it commands, and feed it input. To open your word processor, you feed the computer a command. No, really – you do. Clicking an icon is, in fact, feeding the computer a command. It should be noted here that, technically, you’ve fed a computer a command because you wish to “change context”. Instead of staring into space or looking at your email, you now wish to work with the word processor. The word processor will now be given “focus”. So, to summarize, you feed a command to a computer to change contexts. There’s other stuff you feed commands to a computer for, but on the desktop, this is probably the most common reason.

Next up, there’s the feeding of input. Browser address bar, web forms, email, word processor, they’re all bound to one rule that is pretty much inescapable: they aren’t very useful without some input from you. That’s where the term “interactive” comes from. You “interact” with programs. You didn’t know this. All you knew was that there was “a whole new dimension” being brought to the desktop. It’s ok. We’ve all been there.

Now that we’ve broken that down, it should be easy to see (for those who have worked with Vim at all), that these two functions map directly to the Vim modes “command” and “insert”. The observant will also note that I’ve left some things unaddressed. On we go.

One of the things that people like about Windows (if they use it) or the Mac (if they use it) or even Linux (ditto), is that, to their brain, it’s predictable. It fits their brain in some way. This perception of consistency comes from the fact that some rather large percentage of the applications in each environment exhibit the exact same features, in almost the exact same way. Every word processor I’ve ever seen has a “File->Save” thing. In fact, so do most other applications. Most of them also have an “Options” thing going on, where you can configure parts of how you want that application to react to certain “stimuli”. In short, it is more the exception than the rule that an application takes a command (the selecting of a menu item, for example), that *no* other application takes. It certainly, definitely, inarguably happens – yes. Absolutely. But the majority of the commands one application takes are likely to show up in another. So what?

So just assign them all, across all of the applications, to the same keystroke! In my dream OS, hitting “Esc” followed by “s” would save the current document in the application currently in focus. A better example, though, is the preferences thing. Applications like to put these in different places. Mozilla has “Edit->Preferences”. OpenOffice has something like “Tools->Options” or something. Whatever. Hitting “Esc” followed by “p” would tell the application currently in focus to pop up its preferences dialog.

You can all see where I’m going with this. But why? Because I can’t think of anything more consistent, quite honestly. No more clicking around menus (or finding the menus for that matter) to find preferences, help, “send as email”, and so on. It turns some things around, I guess. This relegates the mouse to mundane tasks like selecting text and clicking links. It also implies that there’s a consistent set of functions at the OS level that act upon the applications, instead of the application parsing input from the user and then making an API call.

Well, I’ve probably given you all more than enough to flame me, or come up with a really sick configuration file for your keyboard shortcuts.

1 Comment »

  1. I don’t think we should do away with icons altogether, but we need to travel back a bit and make the OS more “Command Friendly” rather than just “User Friendly”, which does away with user control more often than not.

    The perfect OS would have a “Command Bar” or CB at the bottom of the screen visible at all times. Perhaps beneath a small “Dock” as you would find in OS X where the start bar usually sits in Windows. A much smaller version of a dock, with a much smaller set of icons.


    [insert command here : ]
    … Or similar configuration.

    The CB (a bit like the “Awesome Bar” in Firefox 3 that does URL, bookmark and web searching in one) will accept any and all computer related input. You should be able to perform any and all activities within the computer using the CB including interacting with open windows.

    I.E. Open up your default word processor window with a blank document called “Demofile” in the /home directory.

    edit /home/Demofile \wp

    Where \wp is your window marker.

    You should then be able to indepently access this newly open word processor window from withing the CB itself.

    \wp Demofile $p

    Pastes what you have in the clipboard into the “Demofile” word processor window.

    Or read from a series of files and paste the content into the “Demofile” window

    edit /home/myfile /home/myfile2 $y \wp Demofile $p

    …And so on…

    The word processor program itself may be a very fancy one with text formatting, hyperlinks, columns and all that other stuff you would find in other desktop publishing suites. But it should still be accessible from the command line.

    Similarly, you should be able to send an email from the CB with a prepared message written in your word processor as well and attach something along the way.

    The format could be email [address] [subject] [message] [attachments]

    email -s Here’s my dog -m /home/myletter -a /home/mypics/dog.png

    Or email with a simple message, where hitting “Esc” after -m puts you into “multiline” mode and hitting “Esc” again, brings you back into command mode.

    email -s Here’s my dog -m He looks just like me! 😉 -a /home/mypics/doc.png

    In theory, your desktop should still look the same as an ordinary workspace. The perfect OS should use Openbox or similarly lightweight window manager. Perhaps with an underlying core resembling OpenBSD. Something locked down and extremely resistant to intrusion, yet simple and functional.

    This is technically possible right now since Vim handles memory streams very well and sending and recieving commands into Vim sessions should be a triviality. A Vim session can run in the background as an “input handler” when the computer starts.

    Oh BTW…
    In terms of text editing, Emacs is sill better 😉

    Comment by eksith — July 24, 2009 @ 2:10 pm | Reply

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at

%d bloggers like this: