To put it simply, Ipager is an awesome program. Whenever I use Gnome, one of the applets that’s always on my gnome-panel is the workspace-switcher applet. One of the major problems with that app is the size. Workspace-switcher is TINY and there’s no setting to change that nor will there ever be as it’s an applet made to live inside the gnome-panel.
Ever since I came back to Fluxbox (as opposed to Gnome) I always missed the workspace-switcher applet. In trying to find a viable replacement for Fluxbox aside from running an instance of the gnome-panel (which is totally do-able by the way as it’s a separate program you can call from the CLI with “gnome-panel”) I stumbled upon Ipager.
Ipager is extremely poorly documented, no longer developed (from the state of the developer’s website), and not available in any kind of binary package in the Ubuntu repositories… yea I know… it sounds pretty sketchy at this point. How could poor documentation, no binary and no support be a recipe for “Winning”? Well for one… LOOK at it! It’s a work of art! Another major plus is the fact that every single aspect of it is utterly configurable to the core. If you’ve ever gotten down configuring another desktop customization program called “conky” you will be right at home here with the exception that Ipager is not as complex.
Preparing the Ipager Source-code for Compilation:
First, download the tarball containing the source-code for Ipager. Extract the tarball to a directory of your choosing and let’s get ready to modify some files before we start to build it.
First use your favorite text editor to open up the following files:
CPPPATH = imlib2_env.Dictionary()['CPPPATH'], CCFLAGS = imlib2_env.Dictionary()['CCFLAGS'], LIBPATH = imlib2_env.Dictionary()['LIBPATH'], LIBS = imlib2_env.Dictionary()['LIBS']
CPPATH = imlib2_env.Dictionary().get('CPPATH'), CCFLAGS = imlib2_env.Dictionary().get('CCFLAGS'), LIBPATH = imlib2_env.Dictionary().get('LIBPATH'), LIBS = imlib2_env.Dictionary().get('LIBS')
Save the changes and close the files out. With the modifications in place we’re ready to start the build.
Before we build the source, we need to install a few programs. Ipager uses SCONS (which stands for “Software CONStructor”) instead of a makefile. SCONS uses python scripts instead of a makefile in the traditional sense because they are considered easier to write in most cases than a makefile. So we’ll need to install SCONS as well as another library from the Ubuntu repositories “imlib2″; also since SCONS uses python scripts, we’ll need the python wrapper for “imlib2″ let’s install those guys so we can get to the good stuff.
$sudo aptitude install scons libimlib2-dev python-kaa-imlib2
*If you don’t have “aptitude” installed then you know what to do… sudo apt-get install aptitude*
UPDATE: For Ubuntu 12.04 you’ll need to install “libxmu-dev” as well. In addition to the programs mentioned above you will need the meta-package “build-essentials” which will set you up with everything needed to compile C code.
Alright at this point keep your terminal open and surf to the directory where you extracted the Ipager source and start the build process.
$sudo scons install
Nifty, at this point Ipager should be installed and the output of “whereis ipager” should look something like this:
With Ipager installed let’s get it working now.
You’ll need to excuse me for a moment while I document the hell out of the configuration for Ipager because it is largely undocumented on the internet and this program deserves to find new-life and live on.
Extract those configuration files and let’s take a look at the file “custom1.conf”:
# Custom1.conf theme for ipager developed # by Eric from ConfigNewton.com # Space in between the workspaces icon.spacing: 10 # Standard width for workspaces icon.min_width: 160 # Width during mouseover for workspaces icon.max_width: 185 # Standard height for workspaces icon.min_height: 85 # Height during mouseover for workspaces icon.max_height: 115 icon.maximize_threshold: 0.9 # # IPager window position # as measured from the upper lefthand # corner of the screen. ipager.window.x: 850 ipager.window.y: 950 display_sticky_windows: yes display_shaded_windows: yes # # Button to switch workspaces # # # [ left | right | middle | any ] # or # set of buttons like: # left, right # middle, right # switch_workspace.button: any # # Delta (in pixels) # # when an workspace icon changes its size # IPager compare new values and previous. # If they differ less then 'zoom.recreate_icon_delta' then # IPager continues to use an old icon and just zoom it. # If the sizes differ more 'zoom.recreate_icon_delta's value, # then IPager creates a new icon picture. # it is not very efficient to create icons often. # zoom.recreate_icon_delta: 3 # Defines style of zooming icons. Should an icon spacing be expandig or # an active workspace icon lays over other (cross them)? # # [zoomAndExpand | over] # zoom.type: over display_workspace_number: yes workspace_number.color: #FFFFFF # Font Options # Ubuntu's default font directory is located at # /usr/share/fonts/truetype/... find the directory # for the font you like and use that as the value # for ttf_font_path. ttf_font is the exact filename # of the font you want to use [excluding ".ttf"] # the "/16" following is the size of the font. ttf_font_path: /usr/share/fonts/truetype/ubuntu-font-family/ ttf_font: Ubuntu-B/16 # # Background image for IPager window # uncomment this option to fill an # empty workspace with an image of # your choice #ipager.background.image: /path/to/image.png # # Colors (#RRGGBB) # ipager.background.color: ipager.border.color: workspace.background.color: workspace.border.color: #FFFFFF active_workspace.background.color: active_workspace.border.color: #FF0000 window.background.color: #20419f window.border.color: #77a6ff active_window.background.color: #22769b active_window.border.color: #aae0ff selection_color: #71d6b3 # # Option to display program icons # # # [ yes | mouseOver ] # or # leave this option commented-out # for the default behavior of "never" # display_window_icon: yes
You can see the vast number of options that Ipager is able to support, nearly every aspect of its visual appearance is configurable. Play around with it and post any cool modifications to themes or pictures in the comments.