RFC: FULLSCREEN_MONITORS property

View: New views
19 Messages — Rating Filter:   Alert me  

RFC: FULLSCREEN_MONITORS property

by David Trowbridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some of you may have noticed my cry for help on planet gnome
(http://david.navi.cx/blog/?p=131).  After spending some more time
getting particularly frustrated trying to work around individual
window manager implementations, I finally worked up the courage to try
implementing this as a hint.  Kudos to the metacity developers for
having a slightly-more-documented-than-usual codebase.

My preliminary implementation is at
http://bugzilla.gnome.org/show_bug.cgi?id=414476

I'm writing here to solicit comments on my chosen implementation.
What I've done is to create a new hint, which I'd personally name
_NET_WM_FULLSCREEN_MONITORS (though I honestly don't care what it's
called), which has a list of integers.  These correspond to the screen
numbers in a xinerama configuration.  The window manager is expected
to place a window over the union of these screens.  On a two-head
system, specifying [0,1] would give a single window across the entire
desktop area.  On a three-head system, it would cover two of the three
heads.  Setting a single screen index will place the window on that
screen, regardless of where the window's saved coordinates are.

This property has no effect if the window is not fullscreen.  If a
window goes fullscreen without this hint, it works exactly as before.

As I stated in the bug report with the patch, I'd love to get a
standard agreed upon in the next month or so, to ensure that I can
turn on conditional support for this so our capabilities improve as
people upgrade to new WM releases.  It's highly likely that after WS6
is released, we'd be able to get some developer resources towards
implementing this for a number of other popular window managers, since
it really improves our fullscreen experience (in case people have
concerns about implementation).

-David
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Havoc Pennington :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Here are a bunch of questions ;-)

First, a background point. Owen and I had a long thread with Kevin
Martin a couple years ago (which was in private mail I think,
unfortunately). Anyway, the claim I was making then was that Xinerama is
overloaded to mean at least two things:

  a) "I have one big monitor that happens to be made up of multiple LCD
    panels / CRTs" - e.g. a video wall, is the extreme case
  b) "I have two monitors and wish to be able to move windows between
    them" - most commonly a plain dual-head or triple-head setup

When we talk about "Xinerama support" in the window manager and widget
toolkit, normally it means to act as if Xinerama is case b). That is,
the WM will do things like interpret FULLSCREEN as for only one monitor;
put DOCK windows on only one monitor; maximize to only one monitor; and
so forth.

All of this "Xinerama support" is busted if we are really in case a).

Anyway, my claim at the time was that X should just claim to have a
single monitor in case a), that is, apps have no interest in the
Xinerama info in case a), because the multiple monitors are really a
hardware implementation detail and not of interest. But at the very
least, we might want some kind of global property (set by e.g. the
desktop environment) that would tell the WM and the toolkit to ignore
Xinerama.

So second, why does FULLSCREEN go to only one monitor; it's because
we're in case b), "Xinerama support," and assuming that the two monitors
are supposed to be more or less separate. Common use-cases here include
having a status display such as a bunch of stock tickers or server
status readouts on one monitor and having your email/etc. on the other,
or just having email/web on one and programming on the other, or whatever.

Third, what is the case with VMWare? I'm guessing VMWare is totally
weird in that it's essentially doing hardware configuration - assign one
monitor to the VM and another monitor to the host, or something? Maybe
you can walk through the rough use-case and what your configuration GUI
for this might be like.

I'm having trouble thinking of something other than VMWare that might
want the hint you proposed, is why I'm calling it weird... doesn't mean
we can't do this hint, just that we shouldn't overload it with other
user-cases that aren't the same.

Fourth, excluding VMWare, what hints are missing...
we could add _NET_WM_FULLSCREEN_ALL_MONITORS or something, but I think
that might be wrong. It might be more correct to implement a property,
to be honored by both WMs and toolkits, that essentially says "ignore
Xinerama, this is case a) not case b)" - and then the existing
_NET_WM_FULLSCREEN would cover all the monitors, and other "Xinerama
awareness" would also be disabled.

Can anyone come up with a use case (other than VMWare) that would need
to force fullscreen to all monitors in case b)?

Fifth, I guess we could complicate things by allowing combinations of a)
and b) - "these two monitors form one monitor and this third monitor is
separate"

Sixth, I can imagine wanting to switch between a) and b) depending on
context; maybe you play your flight simulator with your three monitors
as one big screen, but when doing anything else you want three separate
monitors. This quickly becomes a serious programming and UI nightmare...
perhaps the proposed hint would fix it though by providing an "escape hatch"

Finally, what is the interaction with dynamic changes... metacity
reloads the xinerama info when it gets configure notify on the root
window iirc... I think xrandr can dynamically change the xinerama info.
It seems like there's a race created with the FULLSCREEN_MONITORS
property. This may be a minor problem though.

Havoc
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Elijah Newren :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Just a few extra cents...

On 3/4/07, Havoc Pennington <hp@...> wrote:

> Here are a bunch of questions ;-)
>
> First, a background point. Owen and I had a long thread with Kevin
> Martin a couple years ago (which was in private mail I think,
> unfortunately). Anyway, the claim I was making then was that Xinerama is
> overloaded to mean at least two things:
>
>   a) "I have one big monitor that happens to be made up of multiple LCD
>     panels / CRTs" - e.g. a video wall, is the extreme case
>   b) "I have two monitors and wish to be able to move windows between
>     them" - most commonly a plain dual-head or triple-head setup

<snip some good background and questions>

> Fourth, excluding VMWare, what hints are missing...
> we could add _NET_WM_FULLSCREEN_ALL_MONITORS or something, but I think
> that might be wrong. It might be more correct to implement a property,
> to be honored by both WMs and toolkits, that essentially says "ignore
> Xinerama, this is case a) not case b)" - and then the existing
> _NET_WM_FULLSCREEN would cover all the monitors, and other "Xinerama
> awareness" would also be disabled.

Do we really want a screen global property rather than a
window-specific property?

> Can anyone come up with a use case (other than VMWare) that would need
> to force fullscreen to all monitors in case b)?

I'd like to hear the VMWare case explained too.  I think I read it on
Christian's or Phillip's blog a while ago, but no longer remember any
details.  (Note: I don't know much about VMWare, so don't assume much
in your explanation)

I thought we had some other bug reports about this, but all I could
find is: http://bugzilla.gnome.org/show_bug.cgi?id=119187 (user wants
special key for maximizing their IDE across all monitors).

We also have an orthogonal fullscreen request (which I'm mentioning
just for completeness); basically in determining which of the
conflicting hints of fullscreen and non-resizability take precedence.
(In particular, games often don't want to be resized by the user, but
want to allow requests from the application to be made fullscreen).
See http://bugzilla.gnome.org/show_bug.cgi?id=130404.

> Fifth, I guess we could complicate things by allowing combinations of a)
> and b) - "these two monitors form one monitor and this third monitor is
> separate"

David's patch does that, if I read correctly in my quick scanning of
it.  My question is: why is this useful?  Would a simpler
fullscreen-across-all-monitors hint be sufficient?

> Sixth, I can imagine wanting to switch between a) and b) depending on
> context; maybe you play your flight simulator with your three monitors
> as one big screen, but when doing anything else you want three separate
> monitors. This quickly becomes a serious programming and UI nightmare...
> perhaps the proposed hint would fix it though by providing an "escape hatch"

I can see that this would be a nightmare if the hints were global to
the screen rather than specific to each window.  I don't see any
problems with the latter, right now.  Can others think of any?


Elijah
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Philip Langdale-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Elijah Newren wrote:
>
> David's patch does that, if I read correctly in my quick scanning of
> it.  My question is: why is this useful?  Would a simpler
> fullscreen-across-all-monitors hint be sufficient?

No. The feature we're trying to enable allows you dedicate subsets
of the available monitors to the VM - anything from 1 head to
all heads and any strictly contiguous subsets (so if you have
three monitors in a row, we won't let you choose the two outside
ones but any other combination is acceptable).

Yes, there is an argument that this is something of a niche requirement,
although I do believe it has applicability for other applications, but
the key factor is that it is currently *impossible* to implement this
behaviour if the window manager is being uncooperative (short of
override-redirect - which causes so many other problems). There is literally
no combination of hints that will convince metacity to allow this to happen.
Although I think it's possible with most other window managers, when the
broken case is so ubiquitous, you can't ignore it. So, it seems that the
only way to guarantee it to be possible is to clearly define the behaviour
in the spec so that window managers can know how to support it.

--phil
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by David Trowbridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

>
> First, a background point. Owen and I had a long thread with Kevin
> Martin a couple years ago (which was in private mail I think,
> unfortunately). Anyway, the claim I was making then was that Xinerama is
> overloaded to mean at least two things:
>
>   a) "I have one big monitor that happens to be made up of multiple LCD
>     panels / CRTs" - e.g. a video wall, is the extreme case
>   b) "I have two monitors and wish to be able to move windows between
>     them" - most commonly a plain dual-head or triple-head setup
>
> When we talk about "Xinerama support" in the window manager and widget
> toolkit, normally it means to act as if Xinerama is case b). That is,
> the WM will do things like interpret FULLSCREEN as for only one monitor;
> put DOCK windows on only one monitor; maximize to only one monitor; and
> so forth.
>
> All of this "Xinerama support" is busted if we are really in case a).
>
> Anyway, my claim at the time was that X should just claim to have a
> single monitor in case a), that is, apps have no interest in the
> Xinerama info in case a), because the multiple monitors are really a
> hardware implementation detail and not of interest. But at the very
> least, we might want some kind of global property (set by e.g. the
> desktop environment) that would tell the WM and the toolkit to ignore
> Xinerama.
>
> So second, why does FULLSCREEN go to only one monitor; it's because
> we're in case b), "Xinerama support," and assuming that the two monitors
> are supposed to be more or less separate. Common use-cases here include
> having a status display such as a bunch of stock tickers or server
> status readouts on one monitor and having your email/etc. on the other,
> or just having email/web on one and programming on the other, or whatever.
>
> Third, what is the case with VMWare? I'm guessing VMWare is totally
> weird in that it's essentially doing hardware configuration - assign one
> monitor to the VM and another monitor to the host, or something? Maybe
> you can walk through the rough use-case and what your configuration GUI
> for this might be like.

Our use case is that we're exposing multiple monitors to the guest.  The most
basic case is that you have two monitors on the host, and want to go fullscreen
over both, and see two monitors in the guest.  As Phil said, we allow any
contiguous combination of monitors, so people with three heads could have a
two-headed guest on two of them, and still interact with their host on
the third.

We don't really have any configuration GUI for this.  The basic user procedure
is that they go to fullscreen on one monitor, which becomes their "primary"
monitor.  We then present a toolbar on that monitor which has a button to extend
the window onto another monitor.  Since our primary market for this product is
software dev/test, it's really handy to be able to switch between multi-monitor
layouts at the click of a button.

> I'm having trouble thinking of something other than VMWare that might
> want the hint you proposed, is why I'm calling it weird... doesn't mean
> we can't do this hint, just that we shouldn't overload it with other
> user-cases that aren't the same.
>
> Fourth, excluding VMWare, what hints are missing...
> we could add _NET_WM_FULLSCREEN_ALL_MONITORS or something, but I think
> that might be wrong. It might be more correct to implement a property,
> to be honored by both WMs and toolkits, that essentially says "ignore
> Xinerama, this is case a) not case b)" - and then the existing
> _NET_WM_FULLSCREEN would cover all the monitors, and other "Xinerama
> awareness" would also be disabled.
>
> Can anyone come up with a use case (other than VMWare) that would need
> to force fullscreen to all monitors in case b)?

As I suggested in the bug report, blender wants to go fullscreen across all
 monitors.  An all monitors hint would apply to them, but this would also work,
since it's a lower level request.  It requires a little more lifting
on the application
side, but not more than a few lines of code.  This sort of display is fairly
common in the sorts of applications you see from the graphics world, since in
a lot of cases, artists want to live completely inside their environment.

I imagine any other applications that want this would probably just want all
monitors, but people could potentially ask for a subset with devil's pie.


> Fifth, I guess we could complicate things by allowing combinations of a)
> and b) - "these two monitors form one monitor and this third monitor is
> separate"
>
> Sixth, I can imagine wanting to switch between a) and b) depending on
> context; maybe you play your flight simulator with your three monitors
> as one big screen, but when doing anything else you want three separate
> monitors. This quickly becomes a serious programming and UI nightmare...
> perhaps the proposed hint would fix it though by providing an "escape hatch"
>
> Finally, what is the interaction with dynamic changes... metacity
> reloads the xinerama info when it gets configure notify on the root
> window iirc... I think xrandr can dynamically change the xinerama info.
> It seems like there's a race created with the FULLSCREEN_MONITORS
> property. This may be a minor problem though.

There is a race.  I'm thinking it work to recompute the bounding rect
for any applicable
windows when the xinerama configuration changes.  There might be a
momentary flicker
between waiting for the application to update its requested monitors
and the window
manager updating it, but changing a xinerama configuration is fraught
with flicker anyways.

-David
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Havoc Pennington :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Elijah Newren wrote:

>> Fourth, excluding VMWare, what hints are missing...
>> we could add _NET_WM_FULLSCREEN_ALL_MONITORS or something, but I think
>> that might be wrong. It might be more correct to implement a property,
>> to be honored by both WMs and toolkits, that essentially says "ignore
>> Xinerama, this is case a) not case b)" - and then the existing
>> _NET_WM_FULLSCREEN would cover all the monitors, and other "Xinerama
>> awareness" would also be disabled.
>
> Do we really want a screen global property rather than a
> window-specific property?

We definitely need a global prop also, if I understand your question -
if I have a single virtual monitor (made up of multiple LCD panels or
CRTs) then I want all the "fullscreen" buttons and options in my desktop
and my apps to automatically go to the whole monitor.

If I have multiple monitors, then I want all apps to automatically go to
only one monitor.

This is a global config thing, and it should be configured the same
place I set up Xinerama in the first place.

App-specific hints would be only to override the default because an app
was special somehow.

Otherwise every app would need to contain xinerama config, right?

>> Sixth, I can imagine wanting to switch between a) and b) depending on
>> context; maybe you play your flight simulator with your three monitors
>> as one big screen, but when doing anything else you want three separate
>> monitors. This quickly becomes a serious programming and UI nightmare...
>> perhaps the proposed hint would fix it though by providing an "escape
>> hatch"
>
> I can see that this would be a nightmare if the hints were global to
> the screen rather than specific to each window.  I don't see any
> problems with the latter, right now.  Can others think of any?

To be honest I don't see how per-window even works - metacity, for
example, needs to globally decide whether to be "xinerama aware" - if
apps disagree on whether there are multiple conceptual monitors or just
one, then who knows what "xinerama aware" should do.

Per-window works to make exceptions, but there has to be a basic
behavior for the overall desktop... what area do windows maximize to,
what area are dialogs centered in, etc.

Exceptions to the global setting might be:
  - you want "one big monitor" for certain games or something but
    not for productivity (note this is probably a user decision,
    not something the game developer should hardcode)
  - vmware... maybe. seems to me the vmware case may be the same
    as putting your stock ticker readouts on one head and your
    applications on another; the only thing is vmware wants to
    have the config GUI for it in the vmware app itself. But
    stuff would break if for example metacity thought there
    was one big monitor, and vmware wanted to be on only one
    of them; then e.g. metacity would maximize other apps
    to cover up vmware. So vmware may want to change the global
    setup? If we had a global hint, if a user wanted vmware on
    two monitors and native host on a third, they'd just fullscreen
    vmware on the two (after globally configuring those two as one
    virtual monitor)
  - I don't understand the blender case well enough

Writing the above made me realize, FULLSCREEN_MONITORS is probably wrong
because xinerama awareness goes beyond the fullscreen hint. e.g. what
about vmware's dialogs, which monitors should the WM consider when
placing them? what about maximization? etc. So maybe the hint is just
plain MONITORS.

Thinking about the user-visible behavior of the whole desktop, I'm
wondering if we're talking about inherently global state (the monitor
arrangement and which groups are conceptually single monitors) because
the state involves interactions between a bunch of different apps and
the WM itself, and everyone has to agree at any given point in time.
(i.e. to do fullscreen across all monitors, you'd have to just nuke the
separate monitors while your app was focused)

That may not be true, I do think *most* apps have to agree at any given
point though, at least, the WM, panel, and all normal apps that don't
have their own UI for tweaking which monitors they span. "Exception"
apps may have app-specific setup that overrides, or something.

Havoc

_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by David Trowbridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

There seem to be a number of ideas interwoven throughout your last email, and
try as I might, I can't seem to compose a cogent reply inline.  I'll try to
respond to each point individually, with the hope that I'm not misunderstanding
or missing anything.


>> What should the basic behavior of the desktop be?

We currently have a well understood behavior, and I think it maps quite well to
users' expectations: each physical monitor on the host is reflected within the
xinerama configuration.  If a window exists on a monitor, it will maximize to
the bounds of that screen.  Its dialogs will appear on the same screen, etc.  As
you noted, there are just a few "exceptions to the global setting"

>> What are the exceptions?
- Games: I think this one is pretty obvious.
- VMware: This is potentially less obvious, but I think it's actually a lot like
  the games use case.  The vmware window may want to span across multiple
  monitors, but a user doesn't want that to impact any other applications they
  happen to be running.
- Blender: This was just me racking my brain for other applications which
  request that a window cover multiple monitors.  It's pretty typical in the
  graphics application space (of which blender is the only linux representative
  that I know of) to request as many pixels as possible, since in a lot of
  cases, an artist just wants to live inside that environment.

Two things strike me about all of these use cases.  First, they are all within
fullscreen mode.  This may be an accident, or it may be a useful observation.
Second, I think these cases are at their most well behaved when the applications
in question have some xinerama awareness built-in.  A flight sim would want to
draw things such that the splits between monitors didn't occur in the middle of
your altitude control.  VMware passes the monitor information through to the
guest OS to really make it look like you're not using a virtual machine.
Blender might want to add edge resistance on its internal area splits to make it
easier to lay out your workspace to fit your screens.

>> Should this be a global hint, and allow applications to change the xinerama
>> layout to suit their needs?

I think this is a huge can of worms.  What if I have a spreadsheet maximized on
screen 0, and I ask vmware to go into fullscreen across both screens 0 and 1?
Does my spreadsheet now get maximized to both heads along with it?  What happens
to my panel windows?  A lot (read: all) of applications are not written with
this sort of behavior in mind.  randr++ will force things like gnome-panel to
take it into account, but I think the chances that an application would do
something that the user didn't want are pretty high.



Back to my requirements for this -- I really, *really* don't want users to have
to think about configuring "virtual" monitors in order to do something like have
a VM across two of their three heads and still interact with their host on the
third.  Apps that want to take advantage of more than a single screen will work
best when they know about xinerama, and chances are that I, or the flight
simulator programmer, or the graphics app hacker will know better about their
individual usage of multi-monitor windows than the window manager or the user.


-David

On 3/4/07, Havoc Pennington <hp@...> wrote:

> Elijah Newren wrote:
> >> Fourth, excluding VMWare, what hints are missing...
> >> we could add _NET_WM_FULLSCREEN_ALL_MONITORS or something, but I think
> >> that might be wrong. It might be more correct to implement a property,
> >> to be honored by both WMs and toolkits, that essentially says "ignore
> >> Xinerama, this is case a) not case b)" - and then the existing
> >> _NET_WM_FULLSCREEN would cover all the monitors, and other "Xinerama
> >> awareness" would also be disabled.
> >
> > Do we really want a screen global property rather than a
> > window-specific property?
>
> We definitely need a global prop also, if I understand your question -
> if I have a single virtual monitor (made up of multiple LCD panels or
> CRTs) then I want all the "fullscreen" buttons and options in my desktop
> and my apps to automatically go to the whole monitor.
>
> If I have multiple monitors, then I want all apps to automatically go to
> only one monitor.
>
> This is a global config thing, and it should be configured the same
> place I set up Xinerama in the first place.
>
> App-specific hints would be only to override the default because an app
> was special somehow.
>
> Otherwise every app would need to contain xinerama config, right?
>
> >> Sixth, I can imagine wanting to switch between a) and b) depending on
> >> context; maybe you play your flight simulator with your three monitors
> >> as one big screen, but when doing anything else you want three separate
> >> monitors. This quickly becomes a serious programming and UI nightmare...
> >> perhaps the proposed hint would fix it though by providing an "escape
> >> hatch"
> >
> > I can see that this would be a nightmare if the hints were global to
> > the screen rather than specific to each window.  I don't see any
> > problems with the latter, right now.  Can others think of any?
>
> To be honest I don't see how per-window even works - metacity, for
> example, needs to globally decide whether to be "xinerama aware" - if
> apps disagree on whether there are multiple conceptual monitors or just
> one, then who knows what "xinerama aware" should do.
>
> Per-window works to make exceptions, but there has to be a basic
> behavior for the overall desktop... what area do windows maximize to,
> what area are dialogs centered in, etc.
>
> Exceptions to the global setting might be:
>   - you want "one big monitor" for certain games or something but
>     not for productivity (note this is probably a user decision,
>     not something the game developer should hardcode)
>   - vmware... maybe. seems to me the vmware case may be the same
>     as putting your stock ticker readouts on one head and your
>     applications on another; the only thing is vmware wants to
>     have the config GUI for it in the vmware app itself. But
>     stuff would break if for example metacity thought there
>     was one big monitor, and vmware wanted to be on only one
>     of them; then e.g. metacity would maximize other apps
>     to cover up vmware. So vmware may want to change the global
>     setup? If we had a global hint, if a user wanted vmware on
>     two monitors and native host on a third, they'd just fullscreen
>     vmware on the two (after globally configuring those two as one
>     virtual monitor)
>   - I don't understand the blender case well enough
>
> Writing the above made me realize, FULLSCREEN_MONITORS is probably wrong
> because xinerama awareness goes beyond the fullscreen hint. e.g. what
> about vmware's dialogs, which monitors should the WM consider when
> placing them? what about maximization? etc. So maybe the hint is just
> plain MONITORS.
>
> Thinking about the user-visible behavior of the whole desktop, I'm
> wondering if we're talking about inherently global state (the monitor
> arrangement and which groups are conceptually single monitors) because
> the state involves interactions between a bunch of different apps and
> the WM itself, and everyone has to agree at any given point in time.
> (i.e. to do fullscreen across all monitors, you'd have to just nuke the
> separate monitors while your app was focused)
>
> That may not be true, I do think *most* apps have to agree at any given
> point though, at least, the WM, panel, and all normal apps that don't
> have their own UI for tweaking which monitors they span. "Exception"
> apps may have app-specific setup that overrides, or something.
>
> Havoc
>
>
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Elijah Newren :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

On 3/9/07, David Trowbridge <trowbrds@...> wrote:
<snip>
> Back to my requirements for this -- I really, *really* don't want users to have
> to think about configuring "virtual" monitors in order to do something like have
> a VM across two of their three heads and still interact with their host on the
> third.  Apps that want to take advantage of more than a single screen will work
> best when they know about xinerama, and chances are that I, or the flight
> simulator programmer, or the graphics app hacker will know better about their
> individual usage of multi-monitor windows than the window manager or the user.

So, your hint is an application specific override to the current
handling of xinerama only.  And I think I understand the basic use
cases.  Makes sense to me; I'm in favor.

Elijah
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Havoc Pennington :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Elijah Newren wrote:

> Hi,
>
> On 3/9/07, David Trowbridge <trowbrds@...> wrote:
> <snip>
>> Back to my requirements for this -- I really, *really* don't want users to have
>> to think about configuring "virtual" monitors in order to do something like have
>> a VM across two of their three heads and still interact with their host on the
>> third.  Apps that want to take advantage of more than a single screen will work
>> best when they know about xinerama, and chances are that I, or the flight
>> simulator programmer, or the graphics app hacker will know better about their
>> individual usage of multi-monitor windows than the window manager or the user.
>
> So, your hint is an application specific override to the current
> handling of xinerama only.  

Current handling of xinerama or current handling of fullscreen? e.g. if
vmware opens a dialog, should the WM center it on one monitor or across
the two vmware covers?

David, I think your comment that the app hacker knows better applies
exactly to the extent that the behavior change is only in one app. If
two apps need to coordinate, then the app hacker may know better, but
isn't in a position to implement the behavior.

It does make sense to me that certain apps (games, vmware) might say
"cover multiple monitors" where the multiple monitors are distinct
spaces (what I called "b)" originally) for all other apps. So I'd go
with Elijah and say the hint makes sense, though I'm not clear yet on
whether it should cover only fullscreen behavior or all "xinerama awareness"

I do think some of the other issues raised need addressing, but they
appear orthogonal to this hint since this hint assumes case b) and
doesn't take a position on how we distinguish a) and b)

Perhaps there's a caveat that if we add a global hint to specify case
a), this app-window-specific hint would need to match that overriden
monitor layout rather than what the Xinerama extension reports.

Hmm, another unrelated thought; is this hint really per-window or should
it be on the group leader - seems to me we'll have to effectively figure
out the xinerama request of the transient parent in order to place
dialogs, anyhow.

Havoc

_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Lubos Lunak :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Friday 09 of March 2007, Havoc Pennington wrote:

> Hi,
>
> Elijah Newren wrote:
> > Hi,
> >
> > On 3/9/07, David Trowbridge <trowbrds@...> wrote:
> > <snip>
> >
> >> Back to my requirements for this -- I really, *really* don't want users
> >> to have to think about configuring "virtual" monitors in order to do
> >> something like have a VM across two of their three heads and still
> >> interact with their host on the third.  Apps that want to take advantage
> >> of more than a single screen will work best when they know about
> >> xinerama, and chances are that I, or the flight simulator programmer, or
> >> the graphics app hacker will know better about their individual usage of
> >> multi-monitor windows than the window manager or the user.
> >
> > So, your hint is an application specific override to the current
> > handling of xinerama only.

 I think a WM setting would do as well (enabling strict geometry in KWin's
window-specific settings could do this, although I'm too lazy to try for
real :) ), but I suppose a hint apps could set would be simpler for users.
After all, if people start misusing it, I can still interpret the strict
geometry setting the other way around. So this is on okay from me too.


> Current handling of xinerama or current handling of fullscreen? e.g. if
> vmware opens a dialog, should the WM center it on one monitor or across
> the two vmware covers?

 On one, we're still talking b) and you don't want the dialog to be split
between two monitors. However this might make sense e.g. for maximization.
But allowing this flag to apply to more than just fullscreen brings up more
questions (what if I want it to apply only to fullscreen?), so I'd probably
keep this fullscreen-only until somebody asks for this. I've also already
seen requests for apps being able to ask for multiple-monitors fullscreen but
I don't remember asking for anything else.

> David, I think your comment that the app hacker knows better applies
> exactly to the extent that the behavior change is only in one app. If
> two apps need to coordinate, then the app hacker may know better, but
> isn't in a position to implement the behavior.
>
> It does make sense to me that certain apps (games, vmware) might say
> "cover multiple monitors" where the multiple monitors are distinct
> spaces (what I called "b)" originally) for all other apps.

 Why? I don't see a single reason why VMWare should be able to change how
Konqueror goes fullscreen.

> So I'd go
> with Elijah and say the hint makes sense, though I'm not clear yet on
> whether it should cover only fullscreen behavior or all "xinerama
> awareness"
>
> I do think some of the other issues raised need addressing, but they
> appear orthogonal to this hint since this hint assumes case b) and
> doesn't take a position on how we distinguish a) and b)

 And do we need to take position on a)? As you said, in such case Xinerama
settings should pretend there's no Xinerama.

> Perhaps there's a caveat that if we add a global hint to specify case
> a), this app-window-specific hint would need to match that overriden
> monitor layout rather than what the Xinerama extension reports.
>
> Hmm, another unrelated thought; is this hint really per-window or should
> it be on the group leader - seems to me we'll have to effectively figure
> out the xinerama request of the transient parent in order to place
> dialogs, anyhow.

 I'd say per-window.

--
Lubos Lunak
KDE developer
--------------------------------------------------------------
SUSE LINUX, s.r.o.   e-mail: l.lunak@... , l.lunak@...
Lihovarska 1060/12   tel: +420 284 028 972
190 00 Prague 9      fax: +420 284 028 951
Czech Republic       http//www.suse.cz
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Havoc Pennington :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Lubos Lunak wrote:
>> It does make sense to me that certain apps (games, vmware) might say
>> "cover multiple monitors" where the multiple monitors are distinct
>> spaces (what I called "b)" originally) for all other apps.
>
>  Why? I don't see a single reason why VMWare should be able to change how
> Konqueror goes fullscreen.

I think you interpreted my comment backward from what I was trying to
say, I didn't mean vmware should change the global state.

>
>> So I'd go
>> with Elijah and say the hint makes sense, though I'm not clear yet on
>> whether it should cover only fullscreen behavior or all "xinerama
>> awareness"
>>
>> I do think some of the other issues raised need addressing, but they
>> appear orthogonal to this hint since this hint assumes case b) and
>> doesn't take a position on how we distinguish a) and b)
>
>  And do we need to take position on a)? As you said, in such case Xinerama
> settings should pretend there's no Xinerama.

I think it would be better if the X server simply didn't report
xinerama, but last time we tried the X hackers couldn't be convinced, so
perhaps we need to set our own XSETTING-type global desktop property.

Havoc

_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by David Trowbridge :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

As far as I can tell, reading through this again, people seem to be
generally happy with the idea of a FULLSCREEN_MONITORS hint
per-window.  Is this actually the case, and if so, what happens next?

-David


On 3/12/07, Havoc Pennington <hp@...> wrote:

> Lubos Lunak wrote:
> >> It does make sense to me that certain apps (games, vmware) might say
> >> "cover multiple monitors" where the multiple monitors are distinct
> >> spaces (what I called "b)" originally) for all other apps.
> >
> >  Why? I don't see a single reason why VMWare should be able to change how
> > Konqueror goes fullscreen.
>
> I think you interpreted my comment backward from what I was trying to
> say, I didn't mean vmware should change the global state.
>
> >
> >> So I'd go
> >> with Elijah and say the hint makes sense, though I'm not clear yet on
> >> whether it should cover only fullscreen behavior or all "xinerama
> >> awareness"
> >>
> >> I do think some of the other issues raised need addressing, but they
> >> appear orthogonal to this hint since this hint assumes case b) and
> >> doesn't take a position on how we distinguish a) and b)
> >
> >  And do we need to take position on a)? As you said, in such case Xinerama
> > settings should pretend there's no Xinerama.
>
> I think it would be better if the X server simply didn't report
> xinerama, but last time we tried the X hackers couldn't be convinced, so
> perhaps we need to set our own XSETTING-type global desktop property.
>
> Havoc
>
> _______________________________________________
> wm-spec-list mailing list
> wm-spec-list@...
> http://mail.gnome.org/mailman/listinfo/wm-spec-list
>
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Havoc Pennington :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

David Trowbridge wrote:
> As far as I can tell, reading through this again, people seem to be
> generally happy with the idea of a FULLSCREEN_MONITORS hint
> per-window.

Reading back over it, the only thing is I'm not sure I agree with Lubos
that it should only affect FULLSCREEN.

Let's put it this way - for vmware, where do you want dialogs to open (I
know you can force-override from the app, but assuming you don't do that
and let the WM place them, over what area should they be centered)

It seems like there are xinerama considerations other than dialog
location but I'm blanking on it right now.

Oh, maximization I guess, in addition to fullscreen - should that follow
this hint?

Generally speaking the name FULLSCREEN_MONITORS just seems very not
semantic to me. That is, if I have a question about how the WM should
interpret it, I don't really know what the answer is, since I'm not sure
what this hint means about the app at a high level.

Here's another question - what happens if the user moves the app to
another monitor that isn't a FULLSCREEN_MONITOR (and the app is
fullscreen?) - metacity might allow that unless we also implement some
kind of "fullscreen lock" behavior. Well, we allow it for maximized
windows anyway, don't remember for fullscreen.

Or if the app is not fullscreen and not on a FULLSCREEN_MONITOR and it
gets fullscreened, it would warp to the FULLSCREEN_MONITOR? That seems a
little weird. Would the app generally have to keep updating the
FULLSCREEN_MONITOR to the monitor it's currently on?

Now I'm wanting to say the hint should be a client message + hint combo
like _NET_WM_STATE, i.e.
  - property sets the initial map value
  - WM updates the property after map
  - after map, app can change it via client message

> Is this actually the case, and if so, what happens next?

We need a patch to the spec DocBook, then if there are no improvements
to the exact wording, someone can commit it (I'm not sure who has commit
access these days but surely someone on the list does ;-))

In the spec text I'd be sure to cover some of the questions such as I
have in this mail since all the implementations will need to know.

We should probably then be willing to change the spec if the first
couple WMs to implement it encounter problems.

Havoc
_______________________________________________
wm-spec-list mailing list
wm-spec-list@...
http://mail.gnome.org/mailman/listinfo/wm-spec-list

Re: RFC: FULLSCREEN_MONITORS property

by Elijah Newren :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 4/10/07, Havoc Pennington <hp@...> wrote:
> David Trowbridge wrote:
> > As far as I can tell, reading through this again, people seem to be
> > generally happy with the idea of a FULLSCREEN_MONITORS hint
> > per-window.
>
> Reading back over it, the only thing is I'm not sure I agree with Lubos
> that it should only affect FULLSCREEN.
<snip and pull a line out of order>
> Oh, maximization I guess, in addition to fullscreen - should that follow
> this hint?

I've seen at least bug report requesting a similar ability for
maximization (in particular for some IDE).  I'm not sure I'd see why
to support fullscreen but not maximization with such a hint.

> Let's put it this way - for vmware, where do you want dialogs to open (I
> know you can force-override from the app, but assuming you don't do that
> and let the WM place them, over what area should they be centered)
>
> It seems like there are xinerama considerations other than dialog
> location but I'm blanking on it right now.

Actually, we already have a similar precedent that may be useful.  In
a dual-monitor xinerama system with metacity, we make desktop windows
(such as the one from nautilus) cover both monitors.  We got bug
reports when nautilus dialogs were split across xineramas.  Based on
that, I think the answer is that the FULLSCREEN_MONITORS hint (or
whatever we call it) should not be inherited by children.  Thus, the