- Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Sponsored Links

Latest News
  General News
  Press Releases
  Off Topic

Back to files

Ion dock module
Copyright (c) Tom Payne 2003
Copyright (c) Per Olofsson 2003

by Tom Payne <>
based on code by Per Olofsson <>


        This module provides a dock for the Ion window manager. It is designed
        to work with ion-devel-20031211.

        - supports most dockapps
        - configurable layout
        - configurable dockapp order
        - supports shaped dockapps
        - uses ion-devel's drawing engine




  1. Edit Makefile to ensure TOPDIR points to your top-level ion source directory with a that matches the version of ion installed on your system.
  2. Run make.
  3. Either run (as root)

    # make install or (as yourself),

    $ mkdir -p ~/.ion2/lib $ cp .libs/dock.* ~/.ion2/lib

  4. Copy the configuration files to your ~/.ion2 directory:

    $ cp dock.lua dock-draw.lua ~/.ion2 Edit dock.lua and dock-draw.lua to suit your preferences.

  5. Add load_module("dock") to ~/.ion2/ion.lua.
  6. Add include("dock-draw.lua") near the end of ~/.ion2/draw.lua, before gr_refresh().
  7. (Re)start ion-devel.


See the comments in dock.lua dock-draw.lua.


        Not all dockapps dock. This is because dockapps use a variety of methods
        to signal that they are dockapps and ion-devel-dock doesn't yet
        recognise all of them. If your favourite dockapp does not work then
        please inform the author (email address at top of file).

        The following dockapps are known to have problems:

        - gkrellm2 can have the wrong shape if it is started after the dock
          module is loaded.

        - wmxmms needs a winprop{...}. See the example dock.lua. ion-devel
          complains: Client window "wmxmms" has broken transient_for hint.
          ("Extended WM hints" multi-parent brain damage?).


        If you would like to help improve ion-devel-dock then the following
        notes might be useful.

        You should use folding in your editor when you edit/view the source
        code. The code follows ion's coding standards, but there are many more
        folds. VIM and Emacs both support folding.

        Dockapps use a variety of methods to signal to the window manager that
        they are a dockapp. ion-devel automatically detects some (see
        manage_clientwin() in ioncore/clientwin.c), and ion-devel-dock detects
        some others (see dock_clientwin_is_dockapp() in dock.c).  Adding more
        dockapp types will require editing these functions and possibly writing
        type-specific management code.

        The dock should really implement region_save_to_file()/region_load() to
        maintain state over a restart and session management. However, over
        restart a new dock will also be created by dock.lua, meaning that there
        will be multiple docks on the same screen. The solution is probably to
        automatically create docks as they are required, with dock.lua
        specifying the default configuration of new docks but not actually
        creating any docks.

        As far as I can tell the gkrellm2 problem is a race condition and the
        sequence of events is as follows:
        1. gkrellm2 starts and gets added to the dock with is initial geom.
        2. gkrellm2 grows as it loads plugins.
        3. ion-devel-dock allocates more space to gkrellm2 and requests
           gkrellm2's new shape, but gkrellm2 reports its old shape.
        4. Further requests to gkrellm2 return is new (actual) shape, but by
            now it's too late...
        Any assistance in fixing this bug would be much appreciated.


        Tom Payne <>
        Per Olofsson <>


        This program is licensed under the terms of the Lesser General Public
        License (LGPL) version 2.1. See the file COPYING for details.

Sponsored Links

Discussion Groups
  Networking / Security

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 All rights reserved.