Discussion:
Proposal: clean way of animating windows to/from system tray icons
Philipp A.
2015-09-08 08:48:40 UTC
Permalink
i don’t think that X11-only solutions make sense in 2015, with wayland
implemented in the big DEs and just waiting for a bit more polish and
testing.

and the notification area isn’t where stuff gets minimized to – that’s the
task bar. what are the advantages of deviating from this thing that *all*
applications can do, and do something else instead? are a launcher/taskbar
entry with quicklist, counter, progressbar, and dynamic interaction via
MPRIS and a independent notification icon not enough for your application?

the only similar thing i can think of is that task icons are often able to
launch programs (e.g. the printer notification icon can launch a printer
config dialog, and the update notification a system updater), so maybe it
would make sense to tell WMs where some application launched from, maybe
also generalized: clicked it in a panel menu? launched from the window menu
of another application? notification area? task bar? “WM, please create
this window with a launch animation coming from this rectangle”

best, philipp
Hello everyone,
I'm programming little "zoom" animations in XFCE to show the user in a
logical way, for example, where to click to get a window back when it
minimizes, or where a window "comes from" when it appears, if that
applies. The biggest problem with this is that there's no standard way
for the different processes (window manager, tray icon manager(s), etc)
to determine or communicate with each other where the *tray icons* are.
Taking example of the _NET_WM_ICON_GEOMETRY window property, i think
i've come up with a clean, simple, and reliable solution. Here's a
description of how i implemented this in XFCE, however i attempted to
make it as portable and non-wm-specific as possible, depending only on
X11/Xlib internals.
I'm simply using an X property on the root window of the display called
_NET_WM_TRAY_ICON_GEOMETRIES which follows a simple format. It's an
array of strings, with each string representing a tray icon, and
"mgr=systray,classname=blueman,pid=4522,x=1332,y=1,w=22,h=22"
In this example, the "mgr" field indcates that this entry was added by
the "systray" pluign. This information lets more than one "tray" process
manage the string array on a given X display (as is the case with XFCE's
"systray" (aka "notify") and "indicator" panel plugins) and also avoids
the problem where different processes would add duplicate information,
whcih would quickly saturate the string array. The "classname" field is
pretty self-explanatory, it's the class name of whatever window(s) match
up with this systray icon. The "pid" field can help in matching windows
that have nonexistent or weird class names. If it's absent or equal to
-1, then that means the PID of the process owning the icon couldn't be
determined. Finally we have the x,y,w,h screen coordinates of this tray
icon. In my implementation the fields may be read in any order, but it's
better to write them in a more consistent format such as the above.
(at least for now) If a string contains any semicolon ";" or newline
characters, these should be treated as separating the entry into several
entries.
Upon creating a new systray icon, modifying an existing one, or deleting
a systray icon, a tray manager process such as the "indicator" plugin
- choose a name that preferably describes its process name, such as
"indicator", "notify", or "systray" - this would be the "mgr" field. It
should be consistent for the entire lifespan of the tray manager process.
- grab the X server to avoid race conditions with other tray managers
- fetch the strings from the _NET_WM_TRAY_ICON_GEOMETRIES property
on the X server's root window
- *remove* all entries whose "mgr" field matches its own chosen
process name
- for each tray icon managed by this process: append a string to
the array in the above format, omitting the "pid" field or setting it to
-1 if the PID corresponding to the tray icon can't be determined, and
omitting the "classname" field or setting it to zero-length if the class
name can't be determined. If both can't be determined for a specific
entry, it's pretty useless to add that entry.
- write the string array to the _NET_WM_TRAY_ICON_GEOMETRIES
property on the X server's root window
- ungrab the X server
The window manager can then easily determine if it should perform an
animation to/from a tray icon when a window opens or closes, and if so,
what the screen coordinates of this icon are. In case both a
_NET_WM_ICON_GEOMETRY is present *and* a match in the root window's
_NET_WM_TRAY_ICON_GEOMETRIES array is found, it's up to the window
manager to determine which one should take precedence, based on factors
such as the window's class/role, whether it is itself the window's
owner, and so on. In some cases, it's also desirable to not perform the
animation, for example if there are several open windows matching the
same tray icon - in this case, we'd normally want to animate only the
last one to close.
It's also possible to setup a table of "equivalent names" for processes,
for example we'd want pavucontrol windows (the PulseAudio volume
control) to be considered as belonging to the indicator-sound-service
process if it's running.
Anyway, i've been running my implementation of this on 2 of my own
machines for a while now, and it seems to work very well.
Cheers,
- Éric "delt" Tremblay.
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
Jasper St. Pierre
2015-09-08 17:38:21 UTC
Permalink
In the Windows world, system tray icons were used for long running
applications where putting them in the taskbar was considered "too heavy",
like IM clients and music players. This was ultimately seen as a poor
design for the taskbar which has been since fixed in Windows.

I see no reason to carry this over into free desktop DEs.
Post by Philipp A.
i don’t think that X11-only solutions make sense in 2015, with wayland
implemented in the big DEs and just waiting for a bit more polish and
testing.
and the notification area isn’t where stuff gets minimized to – that’s the
task bar. what are the advantages of deviating from this thing that *all*
applications can do, and do something else instead? are a launcher/taskbar
entry with quicklist, counter, progressbar, and dynamic interaction via
MPRIS and a independent notification icon not enough for your application?
the only similar thing i can think of is that task icons are often able to
launch programs (e.g. the printer notification icon can launch a printer
config dialog, and the update notification a system updater), so maybe it
would make sense to tell WMs where some application launched from, maybe
also generalized: clicked it in a panel menu? launched from the window menu
of another application? notification area? task bar? “WM, please create
this window with a launch animation coming from this rectangle”
best, philipp
Hello everyone,
I'm programming little "zoom" animations in XFCE to show the user in a
logical way, for example, where to click to get a window back when it
minimizes, or where a window "comes from" when it appears, if that
applies. The biggest problem with this is that there's no standard way
for the different processes (window manager, tray icon manager(s), etc)
to determine or communicate with each other where the *tray icons* are.
Taking example of the _NET_WM_ICON_GEOMETRY window property, i think
i've come up with a clean, simple, and reliable solution. Here's a
description of how i implemented this in XFCE, however i attempted to
make it as portable and non-wm-specific as possible, depending only on
X11/Xlib internals.
I'm simply using an X property on the root window of the display called
_NET_WM_TRAY_ICON_GEOMETRIES which follows a simple format. It's an
array of strings, with each string representing a tray icon, and
"mgr=systray,classname=blueman,pid=4522,x=1332,y=1,w=22,h=22"
In this example, the "mgr" field indcates that this entry was added by
the "systray" pluign. This information lets more than one "tray" process
manage the string array on a given X display (as is the case with XFCE's
"systray" (aka "notify") and "indicator" panel plugins) and also avoids
the problem where different processes would add duplicate information,
whcih would quickly saturate the string array. The "classname" field is
pretty self-explanatory, it's the class name of whatever window(s) match
up with this systray icon. The "pid" field can help in matching windows
that have nonexistent or weird class names. If it's absent or equal to
-1, then that means the PID of the process owning the icon couldn't be
determined. Finally we have the x,y,w,h screen coordinates of this tray
icon. In my implementation the fields may be read in any order, but it's
better to write them in a more consistent format such as the above.
(at least for now) If a string contains any semicolon ";" or newline
characters, these should be treated as separating the entry into several
entries.
Upon creating a new systray icon, modifying an existing one, or deleting
a systray icon, a tray manager process such as the "indicator" plugin
- choose a name that preferably describes its process name, such as
"indicator", "notify", or "systray" - this would be the "mgr" field. It
should be consistent for the entire lifespan of the tray manager process.
- grab the X server to avoid race conditions with other tray managers
- fetch the strings from the _NET_WM_TRAY_ICON_GEOMETRIES property
on the X server's root window
- *remove* all entries whose "mgr" field matches its own chosen
process name
- for each tray icon managed by this process: append a string to
the array in the above format, omitting the "pid" field or setting it to
-1 if the PID corresponding to the tray icon can't be determined, and
omitting the "classname" field or setting it to zero-length if the class
name can't be determined. If both can't be determined for a specific
entry, it's pretty useless to add that entry.
- write the string array to the _NET_WM_TRAY_ICON_GEOMETRIES
property on the X server's root window
- ungrab the X server
The window manager can then easily determine if it should perform an
animation to/from a tray icon when a window opens or closes, and if so,
what the screen coordinates of this icon are. In case both a
_NET_WM_ICON_GEOMETRY is present *and* a match in the root window's
_NET_WM_TRAY_ICON_GEOMETRIES array is found, it's up to the window
manager to determine which one should take precedence, based on factors
such as the window's class/role, whether it is itself the window's
owner, and so on. In some cases, it's also desirable to not perform the
animation, for example if there are several open windows matching the
same tray icon - in this case, we'd normally want to animate only the
last one to close.
It's also possible to setup a table of "equivalent names" for processes,
for example we'd want pavucontrol windows (the PulseAudio volume
control) to be considered as belonging to the indicator-sound-service
process if it's running.
Anyway, i've been running my implementation of this on 2 of my own
machines for a while now, and it seems to work very well.
Cheers,
- Éric "delt" Tremblay.
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
Damjan Jovanovic
2015-09-08 17:43:56 UTC
Permalink
You imagine the "Windows world" to exist apart from free desktop DEs.
That's clearly not the case, as both Wine allows Windows apps to run
on free desktops, and other multi-platform frameworks that support
Windows want the same features on other desktops.
Post by Jasper St. Pierre
In the Windows world, system tray icons were used for long running
applications where putting them in the taskbar was considered "too heavy",
like IM clients and music players. This was ultimately seen as a poor design
for the taskbar which has been since fixed in Windows.
I see no reason to carry this over into free desktop DEs.
i don’t think that X11-only solutions make sense in 2015, with wayland
implemented in the big DEs and just waiting for a bit more polish and
testing.
and the notification area isn’t where stuff gets minimized to – that’s the
task bar. what are the advantages of deviating from this thing that *all*
applications can do, and do something else instead? are a launcher/taskbar
entry with quicklist, counter, progressbar, and dynamic interaction via
MPRIS and a independent notification icon not enough for your application?
the only similar thing i can think of is that task icons are often able to
launch programs (e.g. the printer notification icon can launch a printer
config dialog, and the update notification a system updater), so maybe it
would make sense to tell WMs where some application launched from, maybe
also generalized: clicked it in a panel menu? launched from the window menu
of another application? notification area? task bar? “WM, please create this
window with a launch animation coming from this rectangle”
best, philipp
Hello everyone,
I'm programming little "zoom" animations in XFCE to show the user in a
logical way, for example, where to click to get a window back when it
minimizes, or where a window "comes from" when it appears, if that
applies. The biggest problem with this is that there's no standard way
for the different processes (window manager, tray icon manager(s), etc)
to determine or communicate with each other where the *tray icons* are.
Taking example of the _NET_WM_ICON_GEOMETRY window property, i think
i've come up with a clean, simple, and reliable solution. Here's a
description of how i implemented this in XFCE, however i attempted to
make it as portable and non-wm-specific as possible, depending only on
X11/Xlib internals.
I'm simply using an X property on the root window of the display called
_NET_WM_TRAY_ICON_GEOMETRIES which follows a simple format. It's an
array of strings, with each string representing a tray icon, and
"mgr=systray,classname=blueman,pid=4522,x=1332,y=1,w=22,h=22"
In this example, the "mgr" field indcates that this entry was added by
the "systray" pluign. This information lets more than one "tray" process
manage the string array on a given X display (as is the case with XFCE's
"systray" (aka "notify") and "indicator" panel plugins) and also avoids
the problem where different processes would add duplicate information,
whcih would quickly saturate the string array. The "classname" field is
pretty self-explanatory, it's the class name of whatever window(s) match
up with this systray icon. The "pid" field can help in matching windows
that have nonexistent or weird class names. If it's absent or equal to
-1, then that means the PID of the process owning the icon couldn't be
determined. Finally we have the x,y,w,h screen coordinates of this tray
icon. In my implementation the fields may be read in any order, but it's
better to write them in a more consistent format such as the above.
(at least for now) If a string contains any semicolon ";" or newline
characters, these should be treated as separating the entry into several
entries.
Upon creating a new systray icon, modifying an existing one, or deleting
a systray icon, a tray manager process such as the "indicator" plugin
- choose a name that preferably describes its process name, such as
"indicator", "notify", or "systray" - this would be the "mgr" field. It
should be consistent for the entire lifespan of the tray manager process.
- grab the X server to avoid race conditions with other tray managers
- fetch the strings from the _NET_WM_TRAY_ICON_GEOMETRIES property
on the X server's root window
- *remove* all entries whose "mgr" field matches its own chosen
process name
- for each tray icon managed by this process: append a string to
the array in the above format, omitting the "pid" field or setting it to
-1 if the PID corresponding to the tray icon can't be determined, and
omitting the "classname" field or setting it to zero-length if the class
name can't be determined. If both can't be determined for a specific
entry, it's pretty useless to add that entry.
- write the string array to the _NET_WM_TRAY_ICON_GEOMETRIES
property on the X server's root window
- ungrab the X server
The window manager can then easily determine if it should perform an
animation to/from a tray icon when a window opens or closes, and if so,
what the screen coordinates of this icon are. In case both a
_NET_WM_ICON_GEOMETRY is present *and* a match in the root window's
_NET_WM_TRAY_ICON_GEOMETRIES array is found, it's up to the window
manager to determine which one should take precedence, based on factors
such as the window's class/role, whether it is itself the window's
owner, and so on. In some cases, it's also desirable to not perform the
animation, for example if there are several open windows matching the
same tray icon - in this case, we'd normally want to animate only the
last one to close.
It's also possible to setup a table of "equivalent names" for processes,
for example we'd want pavucontrol windows (the PulseAudio volume
control) to be considered as belonging to the indicator-sound-service
process if it's running.
Anyway, i've been running my implementation of this on 2 of my own
machines for a while now, and it seems to work very well.
Cheers,
- Éric "delt" Tremblay.
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
Jasper St. Pierre
2015-09-08 18:03:29 UTC
Permalink
As far as I'm aware, Windows does not allow minimizing to tray icon geometry
Post by Damjan Jovanovic
You imagine the "Windows world" to exist apart from free desktop DEs.
That's clearly not the case, as both Wine allows Windows apps to run
on free desktops, and other multi-platform frameworks that support
Windows want the same features on other desktops.
Post by Jasper St. Pierre
In the Windows world, system tray icons were used for long running
applications where putting them in the taskbar was considered "too
heavy",
Post by Jasper St. Pierre
like IM clients and music players. This was ultimately seen as a poor
design
Post by Jasper St. Pierre
for the taskbar which has been since fixed in Windows.
I see no reason to carry this over into free desktop DEs.
Post by Philipp A.
i don’t think that X11-only solutions make sense in 2015, with wayland
implemented in the big DEs and just waiting for a bit more polish and
testing.
and the notification area isn’t where stuff gets minimized to – that’s
the
Post by Jasper St. Pierre
Post by Philipp A.
task bar. what are the advantages of deviating from this thing that
*all*
Post by Jasper St. Pierre
Post by Philipp A.
applications can do, and do something else instead? are a
launcher/taskbar
Post by Jasper St. Pierre
Post by Philipp A.
entry with quicklist, counter, progressbar, and dynamic interaction via
MPRIS and a independent notification icon not enough for your
application?
Post by Jasper St. Pierre
Post by Philipp A.
the only similar thing i can think of is that task icons are often able
to
Post by Jasper St. Pierre
Post by Philipp A.
launch programs (e.g. the printer notification icon can launch a printer
config dialog, and the update notification a system updater), so maybe
it
Post by Jasper St. Pierre
Post by Philipp A.
would make sense to tell WMs where some application launched from, maybe
also generalized: clicked it in a panel menu? launched from the window
menu
Post by Jasper St. Pierre
Post by Philipp A.
of another application? notification area? task bar? “WM, please create
this
Post by Jasper St. Pierre
Post by Philipp A.
window with a launch animation coming from this rectangle”
best, philipp
Hello everyone,
I'm programming little "zoom" animations in XFCE to show the user in a
logical way, for example, where to click to get a window back when it
minimizes, or where a window "comes from" when it appears, if that
applies. The biggest problem with this is that there's no standard way
for the different processes (window manager, tray icon manager(s), etc)
to determine or communicate with each other where the *tray icons* are.
Taking example of the _NET_WM_ICON_GEOMETRY window property, i think
i've come up with a clean, simple, and reliable solution. Here's a
description of how i implemented this in XFCE, however i attempted to
make it as portable and non-wm-specific as possible, depending only on
X11/Xlib internals.
I'm simply using an X property on the root window of the display called
_NET_WM_TRAY_ICON_GEOMETRIES which follows a simple format. It's an
array of strings, with each string representing a tray icon, and
"mgr=systray,classname=blueman,pid=4522,x=1332,y=1,w=22,h=22"
In this example, the "mgr" field indcates that this entry was added by
the "systray" pluign. This information lets more than one "tray"
process
Post by Jasper St. Pierre
Post by Philipp A.
manage the string array on a given X display (as is the case with
XFCE's
Post by Jasper St. Pierre
Post by Philipp A.
"systray" (aka "notify") and "indicator" panel plugins) and also avoids
the problem where different processes would add duplicate information,
whcih would quickly saturate the string array. The "classname" field is
pretty self-explanatory, it's the class name of whatever window(s)
match
Post by Jasper St. Pierre
Post by Philipp A.
up with this systray icon. The "pid" field can help in matching windows
that have nonexistent or weird class names. If it's absent or equal to
-1, then that means the PID of the process owning the icon couldn't be
determined. Finally we have the x,y,w,h screen coordinates of this tray
icon. In my implementation the fields may be read in any order, but
it's
Post by Jasper St. Pierre
Post by Philipp A.
better to write them in a more consistent format such as the above.
(at least for now) If a string contains any semicolon ";" or newline
characters, these should be treated as separating the entry into
several
Post by Jasper St. Pierre
Post by Philipp A.
entries.
Upon creating a new systray icon, modifying an existing one, or
deleting
Post by Jasper St. Pierre
Post by Philipp A.
a systray icon, a tray manager process such as the "indicator" plugin
- choose a name that preferably describes its process name, such
as
Post by Jasper St. Pierre
Post by Philipp A.
"indicator", "notify", or "systray" - this would be the "mgr" field. It
should be consistent for the entire lifespan of the tray manager
process.
Post by Jasper St. Pierre
Post by Philipp A.
- grab the X server to avoid race conditions with other tray managers
- fetch the strings from the _NET_WM_TRAY_ICON_GEOMETRIES property
on the X server's root window
- *remove* all entries whose "mgr" field matches its own chosen
process name
- for each tray icon managed by this process: append a string to
the array in the above format, omitting the "pid" field or setting it
to
Post by Jasper St. Pierre
Post by Philipp A.
-1 if the PID corresponding to the tray icon can't be determined, and
omitting the "classname" field or setting it to zero-length if the
class
Post by Jasper St. Pierre
Post by Philipp A.
name can't be determined. If both can't be determined for a specific
entry, it's pretty useless to add that entry.
- write the string array to the _NET_WM_TRAY_ICON_GEOMETRIES
property on the X server's root window
- ungrab the X server
The window manager can then easily determine if it should perform an
animation to/from a tray icon when a window opens or closes, and if so,
what the screen coordinates of this icon are. In case both a
_NET_WM_ICON_GEOMETRY is present *and* a match in the root window's
_NET_WM_TRAY_ICON_GEOMETRIES array is found, it's up to the window
manager to determine which one should take precedence, based on factors
such as the window's class/role, whether it is itself the window's
owner, and so on. In some cases, it's also desirable to not perform the
animation, for example if there are several open windows matching the
same tray icon - in this case, we'd normally want to animate only the
last one to close.
It's also possible to setup a table of "equivalent names" for
processes,
Post by Jasper St. Pierre
Post by Philipp A.
for example we'd want pavucontrol windows (the PulseAudio volume
control) to be considered as belonging to the indicator-sound-service
process if it's running.
Anyway, i've been running my implementation of this on 2 of my own
machines for a while now, and it seems to work very well.
Cheers,
- Éric "delt" Tremblay.
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
Eike Hein
2015-09-08 19:00:32 UTC
Permalink
My proposal doesn't change that, or the way it works. It simply adds
information that lets the window manager know where these icons are, so
that it can do an "open" or "close" animation to/from this icon when
appropriate - for example, if you close your IM client and the process
is still running and it has a tray icon. Or if a process that has a tray
icon (such as your IM client) decides to suddenly pop up a window. In
such cases, the "tray" icon, or "indicator" icon, "notify" icon,
whatever you call it, if it exists, should be used instead of
_NET_WM_ICON_GEOMETRY. This is why i developed this solution.
Tray icons are not delegates for specific windows. KDE apps don't
minimize to the tray (though some will keep running and display a
status notifier item in the tray area even when all windows are
closed).



Cheers,
Eike
Pekka Paalanen
2015-09-09 06:29:04 UTC
Permalink
On Tue, 08 Sep 2015 13:51:48 -0400
As for wayland, i don't know enough about it, but i would imagine it
would be trivial to adapt this simple mechanism to wayland.
Hi,

well, there are a few of fundamental issues:

1. Wayland/desktop does not have a global coordinate system visible to apps.

2. Wayland does not have global identifiers for any client resources.

3. Wayland does not have a generic client-to-client communication
mechanism, that is, there are no generic properties or anything you
could abuse as IPC.

The first issue is a feature designed on purpose which we've fought
hard to keep.

The second issue is also a deliberate design, though there are cases
where it will be useful to explicitly create a handle for a wl_surface
or such, pass it to another process, and let that new process use it as
a reference to e.g. tell the compositor who spawned it. This protocol
extension is still to be designed.

The third issue is on purpose too. Client-to-client communications that
do not *absolutely require* specifically the display server to enforce
anything should not go through the display server. Besides, due issue
#2, there is no way a client could reference another client or its
resource at will to begin with. (Client actually means a connection,
that is, a wl_display instance; similar Xlib's Display created by
XOpenDisplay.)

There is also no such concept as "grab the server". You have to design
protocol extensions to be race-free from the start.

Regardless of whether your idea is a good one or not, in Wayland you
would somehow let the compositor know of the relationship between the
objects you want to associate, and then the compositor will just do the
right thing. Passing coordinates will not work on Wayland/desktop,
because clients cannot know where things are.


Thanks,
pq

PS. display server = compositor = window manager, all in one.
Philipp A.
2015-09-09 07:50:28 UTC
Permalink
Éric, what I said is also in line with Jasper’s comment:

In the Windows world, system tray icons were used for long running
applications where putting them in the taskbar was considered “too heavy”,
like IM clients and music players. This was ultimately seen as a poor
design for the taskbar which has been since fixed in Windows.

but this model is a classical server/client thing:

- your system update notifier checks if there are updates and allows you
to launch an (independent) updater
- your torrent downloader downloads torrents in the background and
allows you to lauch a GUI to interact with the queue (maybe it allows
multiple different clients)
- the CUPS server interacts with your printers. a notification icon
allows you to see the status of running jobs and to launch a print queue
application and printer config dialog

and your music player doesn’t need anything in the notification area
because that’s what MPRIS is for.

all of those aren’t cases where the client you open “goes to” the
notification area once you close the window. you simply close some GUI
interacting with the server/daemon running in the background which is
represented by the notification area icon.

best, philipp
​
Post by Pekka Paalanen
On Tue, 08 Sep 2015 13:51:48 -0400
As for wayland, i don't know enough about it, but i would imagine it
would be trivial to adapt this simple mechanism to wayland.
Hi,
1. Wayland/desktop does not have a global coordinate system visible to apps.
2. Wayland does not have global identifiers for any client resources.
3. Wayland does not have a generic client-to-client communication
mechanism, that is, there are no generic properties or anything you
could abuse as IPC.
The first issue is a feature designed on purpose which we've fought
hard to keep.
The second issue is also a deliberate design, though there are cases
where it will be useful to explicitly create a handle for a wl_surface
or such, pass it to another process, and let that new process use it as
a reference to e.g. tell the compositor who spawned it. This protocol
extension is still to be designed.
The third issue is on purpose too. Client-to-client communications that
do not *absolutely require* specifically the display server to enforce
anything should not go through the display server. Besides, due issue
#2, there is no way a client could reference another client or its
resource at will to begin with. (Client actually means a connection,
that is, a wl_display instance; similar Xlib's Display created by
XOpenDisplay.)
There is also no such concept as "grab the server". You have to design
protocol extensions to be race-free from the start.
Regardless of whether your idea is a good one or not, in Wayland you
would somehow let the compositor know of the relationship between the
objects you want to associate, and then the compositor will just do the
right thing. Passing coordinates will not work on Wayland/desktop,
because clients cannot know where things are.
Thanks,
pq
PS. display server = compositor = window manager, all in one.
_______________________________________________
xdg mailing list
http://lists.freedesktop.org/mailman/listinfo/xdg
Loading...