Feb 282011
 

Following up on my previous post, NeonLicht suggested I try out the Ion window manager. Being a big fan of alternative window managers etc, I decided to give it a whirl. Turns out that the most current version of Ion, Ion3 has been branched and reborn as the Notion window manager. After some general use I’ve come to the conclusion that while it’s not for everyone, it’s a terrifically interesting and forward-facing implementation of a window manager. Also, providing you’re willing to compile the source from git (instructions after the jump), the setup for an ideal programmer’s desktop becomes rather simplified from my last post. Read on for all the detailed info.


Compilation and Installation
First you’ll want to checkout the project from git. Create a nice working directory, then execute a

git clone git://notion.git.sourceforge.net/gitroot/notion/notion 
in said directory. This will check out the Notion source code. This comes with a nice writeup on how to install. For other Ubuntu/Debian users, it basically boils down to a quick 4-step install.

  1. Install Prerequisites
  2. Edit system.mk
  3. Compile and install
  4. Create an Entry for GDM

Installing Prerequisites
As per the instructions on the Notion Wiki, you’re going to need to install and compile some prerequisites for Notion. If you’ve done this for Ion, you should be used to the process by now. First, install the prerequisite libraries from apt with sudo apt-get install lua5.1 liblua5.1-0-dev libx11-dev libxext-dev libsm-dev gettext

Next, you’re going to need to pull the git libraries for libtu and libextl. In the same Notion project director you created above, execute the following 2 git checkout commands. git clone git://notion.git.sourceforge.net/gitroot/notion/libtu
and
git clone git://notion.git.sourceforge.net/gitroot/notion/libextl
These check out the libtu and libextl libraries, needed by Notion (and Ion3).

Edit System.mk
Edit the system.mk file that came with Notion, and uncomment the 4 Debian/Ubuntu LUA_ variables starting on line 74. You’ll also need to edit the system.mk file that came with the lbiexl library above, and uncomment the 4 Debian/Ubuntu LUA_ variables starting on line 62.

Compile and Install
First, compile and install libtu and libextl with the usual make && sudo make install . Once these have finished installing, you are free to proceed with the main Notion compilation.
Compile and install Notion with make && sudo make install

Adding An Entry to GDM
For those of you coming from Ubuntu/Debian and are using a GDM type login manager, you’ll want a selectable entry when you login. Edit a file named /usr/share/xsessions/notion.desktop, and paste the following text within.


[Desktop Entry]
Encoding=UTF-8
Name=Notion
Comment=This session logs you into Notion
Exec=notion
Icon=
Type=Application

Day to Day Usage
There are a few things that a typical Gnome desktop user may find confusing or irritating when they first startup Notion. First, if you’re not attached to NetworkManager, I recommend installing WICD. It’s a terrific network manager and runs without the need for a taskbar.
For those needing to start quickly, remember the F2, F9, and F12 keys. F2 opens a terminal into a current frame, and F12 opens the main menu at the bottom of the screen (much like vim or emacs). Frames are set locations which programs open into, in a tabbed fashion (like Chromium or Firefox). You can resize these frames with alt+right-click, though once you have a nice desktop full of frame positions this shouldn’t be a common operation. Multiple pressings of F12 will cycle through the standard menu options, and the F12 run… menu allows for automatic terminal completion of actual commands. Configuration and menu entries are controlled via text files ala Fluxbox. Workspaces as a concept still remain, though they are created on the fly. Create a new workspace with F9, which you can use to tab through all available workspaces. You can also directly switch between workspaces with alt->#, where # is the workspace number. Finally, if you’re constantly switching between terminals and leaving some open in screen windows etc, it’d be handy if your bash history was constantly updating. Just edit your .bashrc and append PROMPT_COMMAND="history -a; history -n" This has the added effect of enabling you to keep a window with a running log of all your shell activity for each window using tail -f ~/.bash_history

For those following the previous article, you can setup the same programmer’s background near instantly as follows.

  1. Split the Left Frame Vertically. I like to use alt + right-click to resize the windows to about the 75% mark
  2. Split the Right Frame Vertically
  3. Split the Top Right Frame Horizontally
  4. Attach Terminal (F2) to the Top Left Frame
  5. Attach Terminal (F2) to the Bottom Left Frame
  6. Attach Terminal (F2) to the Bottom Right Frame
  7. Attach gedit (F12->run…->gedit) to the Center Right Frame
  8. Attach conky (F12->run…->conky) to the Right Right Frame

And that’s it! Ideally, you should never really need to use the mouse for window manager operations, though typical browser and gedit copy/pasting causes me to relapse often. Now get coding!

Share

  10 Responses to “A Programmer’s Window Manger – Testing the Notion Window Manager”

  1. Hello Hunter!

    That was fast! I’ve been intending to try NotIon or AnIon to move from ion3 for some time, but I’ve been too lazy to do it, since it wasn’t packaged for Debian GNU/Linux and didn’t want to mess around compiling dependencies. But after reading your article (well, actually while reading it) I’ve compiled NotIon following your simple instructions and now I’m running it instead of Ion3. Very nice! Doesn’t your desktop look much better now? And doesn’t it fell much, much, much lighter and faster?

    As I said yesterday, I don’t want the window manager to get in my way, and I don’t want it to take any space at all. Therefore I do a couple of things with (Not)Ion: first, I get rid of the status bar (I already have a clock and can have a system load monitor if I want to in one of the frames) by copying the file /usr/local/etc/notion/cfg_defaults.lua to ~/.notion/ and commenting out line number 12 (–dopath(“mod_statusbar”)). Second, I get rid of the space wasteful frame bars. For that, I press Alt-F3 to execute the following Lua code: _:set_mode(’tiled-alt’). And then I’m done, having a great desktop with no wasted space at all. I hope you and/or your readers like it.

    Happy coding!

  2. Hey NeonLicht,

    Good advice! I actually disabled mod_statusbar myself after trying (and hating) the regular menu mod. I like the disabled frame bars too. I find myself using F3 to run everything anyway, and alt+# for Desktops. Glad you’re liking NotIon too, from the looks of their activity pages they could use some good word of mouth. Thanks for the good info!

    /H

  3. Wow, ion, a blast from the past. I used it for a while years ago, and got away from it for no particular reason. I think I got lazy dealing with internationalization and multi-lingualization problems, most of which became no-issues with every new Gnome release. Gotta try building NotIon and give it a whirl.

  4. Your instructions for modifying the system.mk files don’t appear to correspond anymore – can you elaborate on what each line was that needed to be commented out?

  5. Hey Luke,

    I’m actually on a plane right now, but in the version of the system.mk file I had there were 4 lines prefaced with a commented out statement that read // Ubuntu/Debian Settings . If they are no longer in there its possible they removed the need to uncomment them by default. If not, I can send you a system.mk when I land. Best of luck!
    /H

  6. Hi again – if you could provide the modified files that would be helpful. I can get libextl and libtu to install without modifying the files, however notion dies with this: http://pastie.org/1979362

    which makes me think one of the libraries didn’t install properly afterall.

    Will be good when a deb comes out for notion.

    Luke

  7. Hey Luke,

    Are you sure that libxext-dev installed ok during the prerequisites install step? It looks like its missing one of the executables.

  8. FYI the correct variables for ubuntu oneiric:

    # To skip auto-detection of lua uncomment this and edit the variables below to
    # suit your installation of lua.
    LUA_MANUAL=1

    # Default to paths and names that should work for a build installed from the
    # official Lua 5.1 source tarball.
    LUA_DIR=/usr
    LUA_LIBS=-L$(LUA_DIR)/lib -llua5.1
    LUA_INCLUDES = -I$(LUA_DIR)/include
    LUA=$(LUA_DIR)/bin/lua
    LUAC=$(LUA_DIR)/bin/luac

  9. That akward moment when you are forced to use floating window managers again…. and all becomes a mess.

    Ion it’s not a WM… it’s a lifestyle :D

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>