First xdg-utils beta release
William Jon McCann
mccann at jhu.edu
Fri Jul 7 21:48:28 EEST 2006
Hi Waldo and others,
It was a pleasure talking with you at GUADEC last week. I am glad that
we share the goal of providing a sensible and desktop neutral API for
developers to use.
Here are some of my initial thoughts regarding the xdg-screensaver part
of the xdg-utils.
I have two primary concerns with the approach:
1. That the scripts will interfere with or undermine the
acceptance of the org.freedesktop.ScreenSaver DBUS API.
2. That the technique currently used by xdg-screensaver is less
than optimal.
The problem with 1. is that since we are trying to define some kind of
"standard" it may not behoove us to have more than one.
For 2., there are a number of problems with the way the script API is
designed.
* It takes a window-id argument
Just ugly for a generic API. Potentially X11 specific. Requires
a X11 connection. Potential issues with formatting. What if the
application uses a sequence of different windows instead of one?
* It needs to write a file into $HOME
$HOME may not exist or be writable when the screen is locked
(think about automounting and expired credentials). $HOME may be shared
between systems (eg. NFS) so the filename must include both hostname and
display information. It currently only uses display information. I
think there are also robustness issues with using a state/lock file like
this.
* Read the [sic] "Bugss" section of the header in the script
So, those are problems.
* It uses the suspend/resume terminology instead of inhibit
I think suspend/resume is overused and too easily confused with
other types of functionality related to power management.
* There doesn't seem to be any distinction between activating and
locking explicitly
It is necessary to make this distinction.
* It seems to imply that the screensaver implementation uses
MIT-SCREEN-SAVER
As far as I know there is currently no screensaver that uses it.
I am looking into it (after discussing some of the limitations with
Keith Packard last week) but even if it does get used at some point it:
a) isn't used now b) won't be exposed through the g-s API
The problem with it not being used right now is that "working
right now" seems to be the primary goal of the xdg-utils set.
* It unconditionally uses xset before using higher level APIs
It seems to try to set DPMS settings and stuff using xset. This
should be done by the screensaver implementation or not at all. It
potentially interferes with things like PowerManager.
So, I think the current implementation of xdg-screensaver is not what we
should recommend people use. That said, if we don't have philosophical
reasons (ie. concern #1 above) for not using a command-line approach I
think we can fix the above problems by using something that simply wraps
around gnome-screensaver-command. The gnome-screensaver-command itself
is just a convenience around the DBUS API.
In CVS HEAD I added a feature last week that allows the
gnome-screensaver-command to inhibit the screensaver by calling the
Inhibit DBUS method and then blocking so it won't leave the session bus
until the gnome-screensaver-command is killed. I think this is a better
way of tracking lifecycle than watching an X window id.
example:
gnome-screensaver-command --inhibit \
--application-name="FooPlayer" \
--reason="Playing in fullscreen mode" &
[do something]
kill %1
What do you think?
Thanks,
Jon
More information about the xdg
mailing list