Re: Ratpoison Under Gnome

Ross Patterson <[email protected]>
Newsgroups gmane.comp.window-managers.ratpoison.devel
Message-ID <[email protected]>
I forgot to mention, the wiki appears to be down, at least as linked to
from http://www.nongnu.org/ratpoison/.  I'll post this there just as
soon as I know where to do so.  :-)

Ross

Ross Patterson <[email protected]> writes:

> I just wrote a blog post about my current best solution to integrating
> Gnome and Ratpoison: http://rpatterson.net/blog/ratpoison-under-gnome
>
> As a keyboard junkie, I've been using and loving `ratpoison
> <http://www.nongnu.org/ratpoison/>`_ for many years now.  Many
> ratpoison users use ratpoison as a part of ditching a desktop manager,
> such as Gnome, altogether.  For my part, however, I want the desktop
> integration: notifications, volume management, and using software
> whose only exposed interface is through the system tray.  My interest
> in ratpoison is driving the 99% of my computer usage which is
> application interaction.  In those cases I want to be able to
> completely ignore the desktop knowing I can use it smoothly for that
> 1% of the time I want it.
>
> Over my years of using ratpoison, I've resorted to some truly horrific
> hacks to try and approximate this goal.  I've tried stalonetray and
> trayer.  I've written ugly wrapper scripts that waited a while before
> killing metacity and starting ratpoison.  I couldn't figure why I
> couldn't just let gnome-panel and nautilus (in the case of Ubuntu
> Desktop) or netbook-launcher-efl (in the case of Ubuntu Netbook) live
> in peace alongside ratpoison.  Finally, I decided to dig into how
> Gnome does session startup and to try to get at the root of it.
>
> The first hurdle was getting Gnome to use ratpoison as it's window
> manager.  Gnome consults the
> /desktop/gnome/session/required_components/windowmanager gconf key to
> decide what window manager to use.  In the case of Ubuntu Netbook
> Edition 2D, you can't set this gconf key without first unlocking it
> since UNE locks down a bunch of configurability.  So the first order
> of business under UNE is to unlock the key.  As root, edit
> /var/lib/gconf/une-efl.mandatory/%gconf-tree.xml and remove the
> "<entry name="windowmanager"..." under the same path for the key in
> the XML <dir> elements, it's towards the top.
>
> Next we have to tell Gnome to accept ratpoison as a provider of the
> "windowmanager" required component.  To do this, as root, copy
> /usr/share/applications/metacity.desktop to
> /usr/share/applications/ratpoison.desktop and in the new file replace,
> case insensitive, all occurrences of "metacity" with "ratpoison".
>
> At this point you must log out and log back in so gdm will restart and
> gconf will see the changes.  Now you can, as your normal user, set the
> key to ratpoison using gconf-editor or the following command line::
>
>     $ gconftool-2 --type string --set /desktop/gnome/session/required_components/windowmanager ratpoison
>
> Now that Gnome will use ratpoison as it's window manager, we need to
> tell ratpoison to leave gnome-panel and nautilus/netbook-launcher-efl
> (Gnome/UNE 2D) windows alone.  Tell ratpoison not to manage those
> windows by adding the following to your normal user's ~/.ratpoisonrc::
>
>     unmanage Top Expanded Edge Panel
>     unmanage Bottom Expanded Edge Panel
>     unmanage Netbook Launcher EFL
>     unmanage Netbook Launcher
>     unmanage x-nautilus-desktop
>
> Now we get into the part where somewhat less ugly hacks than my
> previous solutions, but still ugly hacks are required.  Firstly, the
> gnome-panel and nautilus/netbook-launcher-efl (Gnome/UNE 2D) windows
> need to be opened *after* ratpoison has already fired up.  Otherwise,
> ratpoison mangles the windows.  Secondly, we need to make sure
> gnome-panel starts up *last* so that it will appear on top of the
> unmanaged windows.  Gnome has discussed setting up startup
> dependencies, which is the right solution to this, but it's not there
> yet at least as far as I could tell.
>
> Without such dependencies, the hacks required are so ugly, I suggest
> using gnome-session-properties ("Startup Applicatons" in the Gnome
> Sytem Preferences menu) instead of ~/.ratpoisonrc to do your
> app startup to solve the first problem.  If ratpoison isn't opening
> your apps, it starts up lightning fast when set as the gnome window
> manager and window mangling isn't an issue at least for me.
>
> The second issue, getting gnome-panel to startup after
> nautilus/netbook-launcher-efl, still requires an ugly hack, at least
> as far as I could tell.  Make sure ~/bin is on your normal user's
> PATH, the default in recent Ubuntus at least.  Then add a wrapper
> around gnome-panel so that it waits for nautilus/netbook-launcher-efl
> to start before it does by adding an executable ~/bin/gnome-panel with
> the following contents::
>
>     #! /bin/bash
>     set -x
>     IFS='
>     '
>     
>     command=${0##*/}
>     
>     # Find the next path for command
>     for path in $( which -a $command )
>     do
>         if [ $next ]
>         then
>             break
>         elif [ $path == $0 ]
>         then
>             next=1
>         fi
>     done
>     
>     # Determine command dependencies
>     case $DESKTOP_SESSION in
>         gnome)
>             depends_name="nautilus"
>             ;;
>         une-efl)
>             depends_name="netbook-launcher-efl"
>             ;;
>         *)
>             exec $path "$@"
>             ;;
>     esac
>     
>     # Wait for the dependency to start
>     while [ 1 ]
>     do
>         # check for the process, if present continue
>         ps -C "$depends_name" -o pid,user | grep $USER && break || sleep 1
>     done
>     
>     # pause for window initialization
>     sleep 1
>     
>     # Start the real command
>     exec $path "$@"
>
> Now you should be able to log out of Gnome and back in, ratpoison will
> startup and tell you so immediately.  Sometime later,
> nautilus/netbook-launcher-efl and gnome-panel will startup as
> unmanaged windows and your gnome-session startup apps will open.  The
> windows ratpoison doesn't manage can be seen by clearing all the
> ratpoison manged windows with "C-t -".  IOW, when using ratpoison
> under gnome, "C-t -" is equivalent to switching to the desktop.
>
> This all only works under Ubuntu Netbook Edition 2D, since under 3D it
> appears everything, gnome-panel, the launcher, *everything* is
> actually all pulled into the mutter window manager used by unity.  I
> think this is fine since I don't see much point in using ratpoison
> under unity.  Under the 2D version of UNE, however, it works
> beautifully.
>
> The one hitch I've found is that since the Gnome desktop windows are
> not managed by ratpoison, many completed actions, such as completing a
> dialog, will return you back to the previous ratpoison managed
> window.  Most of the time, this is actually best for keyboard junkies
> since we tend to want to have as little to do with the desktop
> interface as possible.  It can be annoying, however, when you have
> multiple interactions to have with the desktop in a row since you have
> to keep doing "C-t -" after each operation to get back to the desktop.
>
> Since I was figuring this out as I went, I didn't do this setup in
> this on a clean install, so there may be some hitches.  Sign in via
> openid and comment if you run into problems and I'll try to cleanup
> the procedure for anyone else.
>
> Ross
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.