Re: 3rd party application integration guidelines - how to be a good shell citizen?



On 24 April 2011 23:39, Holger Berndt <berndth gmx de> wrote:
> Switching to another application is not exactly what I had in
> mind to get rid of the application. I still have the old application
> window around, I see it partially occluded behind non-maximized
> windows, I have it cluttering the Alt+Tab application switcher,
> the application overview and so on. It appears as visual clutter, and
> somewhat contradicts the otherwise distration-free design of the shell.

The distraction-free design argument kind of makes sense here, yes.

> I think it would make sense to have a special design for applications
> that users want to keep launched as long as they are logged in
> (because they perform some important background task or keep
> communication channels open), but only interact with once in a while.

But here, I don't think gnome-shell itself can offer you much more.
What we actually need is just better designed applications.

Applications that don't need to deal with live resources should just
serialize their state to storage in such a way that the user can close
the window at any time (even by mistake) but quickly launch it again
and be at the *exact* same point where they were at the time the
window as closed. A good example would be a text editor always coming
back with all the files you previously had opened, the correct tab
selected, the buffer scrolled to the point where it was left,
"unsaved" buffer modifications, etc.

For applications that deal with live resources such as mail clients,
they could be designed to be run "headless" i.e. when you close the
window, the view (as in MVC) process goes away but the model (again,
as in MVC) process remains running and able to make notifications,
etc. We have GDBus which should make this class of applications easier
to make and soon even easier with David Zeuthen's gdbus-codegen tool
in glib[1].

</hand-wavy-mail>

Rui

[1] http://git.gnome.org/browse/glib/log/?h=gdbus-codegen


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