Re: RFC: FULLSCREEN_MONITORS property



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




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