ratpoison-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RP] Re: Ratpoison Under Gnome


From: Ross Patterson
Subject: [RP] Re: Ratpoison Under Gnome
Date: Sat, 12 Mar 2011 22:40:12 -0800
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1.50 (gnu/linux)

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 <address@hidden> 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]