wlr foreign toplevel management
此协议的目的是通过向任务栏和 Dock 提供已打开应用的列表,并允许它们请求对这些应用执行某些操作(如最大化等),从而实现任务栏和 Dock 的创建。
客户端绑定 zwlr_foreign_toplevel_manager_v1 后,每个已打开的 toplevel 窗口都将通过 toplevel 事件发送。
stop()
表示客户端不再希望接收新 toplevel 的事件。但合成器可能会继续发出 toplevel_created 事件,直到发出 finished 事件。
客户端在此请求之后不得再发送任何请求。
toplevel(toplevel: new_id<zwlr_foreign_toplevel_handle_v1>)
参数 | 类型 | 描述 |
|---|---|---|
| toplevel | new_id<zwlr_foreign_toplevel_handle_v1> |
每当创建新的 toplevel 窗口时,都会发出此事件。它针对所有 toplevel 发出,无论创建它们的应用是什么。
toplevel 的所有初始详情(标题、app_id、状态等)将在此事件之后通过 zwlr_foreign_toplevel_handle_v1 中的相应事件立即发送。
finished()
此事件表示合成器已完成向 zwlr_foreign_toplevel_manager_v1 发送事件。服务器将在发送此请求后立即销毁该对象,因此它将变为无效,客户端应释放与其关联的所有资源。
zwlr_foreign_toplevel_handle_v1 对象代表一个已打开的 toplevel 窗口。每个应用可以有多个已打开的 toplevel。
每个 toplevel 都有一个它可见的输出列表,通过 output_enter 和 output_leave 事件传递给客户端。
set_maximized()
请求最大化 toplevel。如果最大化状态实际发生变化,将通过 state 事件指示。
unset_maximized()
请求取消最大化 toplevel。如果最大化状态实际发生变化,将通过 state 事件指示。
set_minimized()
请求最小化 toplevel。如果最小化状态实际发生变化,将通过 state 事件指示。
unset_minimized()
请求取消最小化 toplevel。如果最小化状态实际发生变化,将通过 state 事件指示。
请求在给定 seat 上激活此 toplevel。不保证 toplevel 会被实际激活。
close()
向 toplevel 发送关闭自身的请求。合成器通常会使用特定于 shell 的方法来执行此请求,例如发送 xdg_toplevel.close 事件。但这不保证 toplevel 会被实际销毁。如果并且当这种情况发生时,将发出 zwlr_foreign_toplevel_handle_v1.closed 事件。
此请求中指定的表面矩形对应于使用此协议的应用代表给定 toplevel 的位置。合成器可以将其用作某些操作(如最小化)的提示。但客户端不需要设置此值,在这种情况下合成器可以自由决定默认值。
如果客户端指定了多个矩形,则只考虑最后一个。
尺寸以表面局部坐标给出。 设置 width=height=0 将移除已设置的矩形。
destroy()
销毁 zwlr_foreign_toplevel_handle_v1 对象。
此请求应在客户端不再使用该 toplevel 时或在 closed 事件之后调用,以完成对象的销毁。
请求在给定输出上将 toplevel 设为全屏。如果全屏状态和/或 toplevel 可见的输出实际发生变化,将通过 state 和 output_enter/leave 事件指示。
output 参数只是对合成器的提示。此外,如果 output 为 NULL,合成器应决定在哪个输出上将 toplevel 设为全屏(如果有的话)。
unset_fullscreen()
请求取消 toplevel 的全屏状态。如果全屏状态实际发生变化,将通过 state 事件指示。
每当 toplevel 在给定输出上变为可见时,都会发出此事件。一个 toplevel 可能在多个输出上可见。
每当 toplevel 在给定输出上不再可见时,都会发出此事件。保证在此之前已发出具有相同输出的 output_enter 事件。
state(state: array)
参数 | 类型 | 描述 |
|---|---|---|
| state | array |
此事件在 zlw_foreign_toplevel_handle_v1 创建后立即发出,以及每次 toplevel 状态发生变化时发出,无论是由于合成器操作还是此协议中的请求。
done()
此事件在 toplevel 状态的所有更改发送完毕后发出。
这允许将 zwlr_foreign_toplevel_handle_v1 属性的更改视为原子操作,即使它们通过多个事件发生。
closed()
此事件表示 toplevel 已被销毁。保证不会再有此 zwlr_foreign_toplevel_handle_v1 的任何事件。toplevel 本身变为惰性,因此除 destroy 请求外,任何请求都将被忽略。
parent(parent: object<zwlr_foreign_toplevel_handle_v1>)
参数 | 类型 | 描述 |
|---|---|---|
| parent | object<zwlr_foreign_toplevel_handle_v1>允许为空 |
每当 toplevel 的父级发生变化时,都会发出此事件。
当父级句柄被客户端销毁时,不会发出事件。
state { maximized, minimized, activated, fullscreen }
参数 | 值 | 描述 |
|---|---|---|
| maximized | 0 | toplevel 已最大化 |
| minimized | 1 | toplevel 已最小化 |
| activated | 2 | toplevel 处于活动状态 |
| fullscreen起始版本 2 | 3 | toplevel 已全屏 |
toplevel 可以具有的不同状态。这些状态与 xdg-toplevel 中定义的同名状态具有相同含义。
合成器支持
Cage | COSMIC | GameScope | Hyprland | Jay | KWin | Labwc | Louvre | Mir | Muffin | Mutter | niri | phoc | river | Sway | Treeland | Wayfire | Weston | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| zwlr_foreign_toplevel_manager_v1 | x | x | x | 3 | 3 | x | 3 | 3 | 2 | x | x | 3 | 3 | 3 | 3 | 3 | 3 | x |
Copyright
Copyright © 2018 Ilia Bozhinov
Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the copyright holders not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The copyright holders make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.