running this by you: Application Launch Detection for Gnome
- From: Mary Dwyer <Mary Dwyer ireland sun com>
- To: gnome-hackers gnome org, gnome-gui-list gnome org
- Subject: running this by you: Application Launch Detection for Gnome
- Date: Mon, 5 Feb 2001 09:02:11 +0000 (GMT)
hi
I forwarded this email to these aliases last week, but the code attachments made
the mails too large to be forwarded - apologies. If you are interested in this
and would like to see the code please email me and I will forward to you the
taballs directly.
(Size of the feedback tarball is 163kb, size of gdk library tarball is 277kb)
cheers
Mary
------------- Begin Forwarded Message -------------
Date: Wed, 31 Jan 2001 17:20:50 +0000 (GMT)
From: Mary Dwyer <maryd ireserver>
Subject: running this by you: Application Launch Detection for Gnome
To: altic lysator liu se, hp redhat com, otaylor redhat com,
gnome-hackers gnome org, gnome-gui-list gnome org
Cc: maryd
Mime-Version: 1.0
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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
------------- End Forwarded Message -------------
~ 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
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]