Re: application should automatically inherit X screen?



On Sat, 2009-10-10 at 00:58 +0800, Leszek Koltunski wrote:
> Hello,
> 
> I have a dual screen setup ( no xinerama, just 2 X screens ) and for a
> long time I have been seeing the following bugs: if, being on the
> secondary screen, I try to launch an application, its window would pop
> up in the primary X screen
>
> I have been bugging Gnome about that and recently I stumbled upon a bug:

Launching is unrelated to the rest of the stuff discussed here...
launching is a question of setting the right DISPLAY environment
variable for the child to point it to a particular screen.

There are GDK functions to help with that that I'm pretty sure the panel
uses but I don't know the default of the policy it applies.

> https://bugzilla.gnome.org/show_bug.cgi?id=583452
> 
> which suggests ( more specifically, Matt Keenan's patch in there) that
> each GTK application has to explicitly call 
> 
> gtk_window_set_screen() 
> 
> in order to inherit the X screen from its parent and thus be multihead
> aware. ( I guess it the application does not call this, it will always
> pop up in screen 0 ? Sorry, I have little experience with GTK)
> 
> I just checked my Ubuntu 9.10 Beta setup and it turns out that the
> following:
> 
> - tomboy
> - mail-notification
> - policykit-gnome ( its authentication dialog )
> - parts of gnome-panel
> - indicator applet
> 
> suffer from this bug. Furthermore, other important parts of Gnome ( like
> the gnome-mixer in the bug above ) have only recently been fixed. 
> 
> Now, the question: couldn't GTK+ automatically figure this one out? 
> If it does not, we will keep stumbling upon application whose developers
> forgot about this since most of them do not run a dual screen setup...

I think already GTK+ does everything can do automatically - if it knows
the relationship between two windows the screen is inherited. (On
particular if you create a dialog and pass in the parent dialog.)
The panel and panel applets are a hard case (partly because of the
out-of-process nature of panel applets), so there's a lot of specific
set_screen() calls in there.

And probably lots of missing ones - because nobody tests separate
screens.

- Owen




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