running this by you: Application Launch Detection for Gnome




hi

I was involved in email discussions at the end of last year on this subject with
Peter Astrand (author of Xalf), Owen, Havoc and others on some gnome-aliases.
Some issues that arose in providing a solution for visual feedback for 
application launching were:
- problems of using a solution involving LD_PRELOAD  
- problems of a solution involving the patching of Xlib mapping functions
- desirability of establishing a common protocol that will work for both gnome 		
  and non gnome apps
  
Ideas put forward included:
- setting a new property on top level window of gnome applications.
  _NET_WM_PID was discussed but this leads to problems when starting
  apps via a script.
- using the root window's _WIN_CLIENT_LIST property to monitor for
  new windows, and then checking if this new property has been set on
  the app.

With these issues/suggestions in mind I did some experimenting and came up with 
the attached 'prototype'.
1.  Visual feedback is controlled by an ORBit server (called feedback-server),
    and client (feedback-client).
2.  feedback-client acts as a binary wrapper around the app to be launched.
    - It sets an environmental variable (DESKTOP_LAUNCH_ID) with a unique value.
    - It then invokes a remote method to start the visual feedback for this app.
      (At the moment this is the tasklist window hacked from the Xalf code, but
       by implementing a pluggable interface here could have customised
       visual feedback). A compliance flag indicates whether this is a gnome
       application or not.
    -  feedback-client then invokes a remote oneway method (monitorWindows()) 
       to monitor the root window for any changes in the _WIN_CLIENT_LIST        
       property (ie addition of new window).
    - feedback-client then forks and execs the app to be launched.
3.  The gdk library has been edited so that if the DESKTOP_LAUNCH_ID has been
    set then the property _NET_WM_LAUNCH_ID is set on the toplevel window of
    the gtk app.
4.  Once the remote method monitorWindows() detects the new window, it checks
    for the _NET_WM_LAUNCH_ID property and stops the appropriate feedback.
    If the new window does not have the _NET_WM_LAUNCH_ID set, and if the 
    feedback was started for a non-gnome app (ie compliance flag not set), 
    then the feedback is stopped (similar to Xalf's mappingmode).
    In this way the framework supports applications using a toolkit that
    supports the DESKTOP_LAUNCH_ID property and the _NET_WM_LAUNCH_ID property.
    It also has a default solution for other apps.
    
    
The attached code is a basic prototype designed as a proof of concept of the 
framework. Some of the technology is new to me so the prototype is far from 
perfect. In particular, I had some problems integrating it with OAF, so I 
resorted to writing an ior to a file :-(. This means you have to manually start 
the feedback-server each time. But as I said, I was just concentrating on 
investigating the framework.

I would very much appreciate some feedback/discussion on this.
       
To set up prototype:
- unzip and untar tarball as usual
- run configure and make as usual
- locate attached library in a directory and create a link as follows:
  $mv libgdk-1.2.so.0.5.3 /mydir
  #chmod 755 /mydir/libgdk-1.2.so.0.5.3
  #ln -s /mydir/libgdk-1.2.so.0.5.3 /mydir/libgdk-1.2.so.0
  (NOTE:  is the gtk+-1.2.8 linux library 
         libgdk-1.2.so.0.5.4 is the solaris library)
  
To run:

1. Have the tasklist applet running on your front panel

2. server
OAF code is not working, so need to manually start feedback-server
$cd visual-feedback/src
$./feedback-server

3. start app
$export LD_LIBRARY_PATH=/mydir:$LD_LIBRARY_PATH
$export INSTALL_DIR=/opt/GNOME-debug (or whatever non-default location you use)
$cd visual-feedback/src
$./feedback-client gcalc (or any gnome app)

Repeat using netscape (ie non-gnome) 
(NOTE: feedback-server will need to be restarted each time)

  
many thanks
Mary       
       
       


~ I speak for myself, not for my employer ~
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mary Dwyer
Desktop Applications & Middleware Grp
Sun Microsystems Ireland
Tel: +353-1-8199222 (xt 19222)
Fax: +353-1-8199078
email: mary dwyer ireland sun com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Attachment: Feedback-0.1.tar.gz
Description: Feedback-0.1.tar.gz

Attachment: libgdk-1.2.so.0.5.3.gz
Description: libgdk-1.2.so.0.5.3.gz

Attachment: libgdk-1.2.so.0.5.4.gz
Description: libgdk-1.2.so.0.5.4.gz



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