> Mind-boggling: yes. Lunatic: not necessarily :)

Yay!

>
> If I'm understanding you properly, the user should have no concept of
> services or processes. There is a single list of all applications,
> whether they are running with a window, running as a service, or not
> running at all.
> When the user clicks on an application which is not running, or
> running as a service, then the control window for that application
> opens on top. When all of an application's windows are closed, then
> the process closes (as long as no services are running). If a service
> is running as well, it is responsible for garbage-collecting itself
> when it is no longer doing anything (ie when rhythmbox is no longer
> playing music). When a service process exits like this, the UI
> shouldn't change at all - the user shouldn't even know.

Indeed! I'm glad to know I made sense :)

I think declaring a model for interaction with applications and
windows, like this (or this, even; that would make _me_ happy at
least) would go a long way since we really don't have one right now. I
want to think of a window as a view. Now Close would mean "disappear
that view", Minimize means "make that view really small" and Maximize
means "make that view really big," and importantly that meaning should
never, ever vary. The resource being viewed is just there.

>
> The only question I have right now about this model is the action
> which occurs when an app with a window already open is clicked on in
> the list. In the current windowing model, you can focus the existing
> window (via the task bar) or open a second window (via the menu). With
> the integrated application list, how do we nicely handle both of these
> use cases?
>
> Cheers,
> Evan

This is something I think gnome-shell handles pretty well. If you
click an application with open windows, it knows, so it focuses those
windows on its own. Right clicking gives you an option to create a new
window. (Personally, I would like a little + button to one corner of
the icon so it isn't a secondary operation). As I understand it,
upcoming stuff will make that kind of behaviour slightly adjustable
per application.

Existing applications use libunique, and I think it's an okay
approach. So, right now if I have Rhythmbox running in the background
and I want to choose a new playlist, I can head to
Applications›Rhythmbox and the existing window is instantly focused.
It's just like opening a fresh instance, as if Rhythmbox's main window
really is in a different process from what plays the music (like the
Telepathy stack). However, this particular job is a loopy mess under
the hood!

 * Application sets up with DBus for the single purpose of watching
for new instances trying to launch.
 * New instance of application is opened, sees the old one, does
something. Hopefully it tells the existing instance that the user has
declared interest in using it, but we never really know.
 * In the ideal case, the existing instance of the application either
creates a new window in the current workspace (good!) or raises the
old window. It's that latter case which breaks my heart: if you aren't
in the same workspace as the old window, it never shows up. It sets
the Urgent window hint and a tiny little item in the window list
appears. Now, in the ideal case, the user journeys to the other side
of his 37" screen, clicks that OTHER thing for no apparent reason, and
finally sees his window... but he's sent to the wrong workspace!

Gnome Shell makes that mess completely the window manager's
responsibility (and the window manager is quite comfortable managing
windows), so there is no likely point of failure.
Not ideal, though, since it doesn't cover everything (at least not
yet). Maybe we just really need a more reliable way for applications
to control their own windows. (Sorry, I just realized I've been
throwing around the words "application", "process" and "resource"
almost interchangeably. Hopefully this isn't completely nonsense at
this point).

Alas, there is still the issue that, if you had the Rhythmbox
controller window open and focused somewhere and it pretends to open
another by moving that old window to view, your old window is no
longer where you left it…
As for some apps supporting multiple views, err, windows, I think it
makes sense: you can only have one view per _resource_, so for Abiword
that resource is a single document and, if I recall correctly, it
correctly enforces that policy. Most things do. Thankfully for us,
it's just really hard for an application to manage multiple windows
that refer to the same thing. And it (should be) pointless, too.
Every time you choose Rhythmbox from the Applications menu, you're
opening a controller for a single resource: the music service (which
doesn't actually exist, but makes a fine imaginary construct). So, its
behaviour of only allowing one controller is quite consistent!

Oh, my tea is ready!

Bye :)
Dylan

-- 
Ubuntu-devel-discuss mailing list
Ubuntu-devel-discuss@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss

Reply via email to