COSMIC workspace v2
此协议扩展了 `ext-workspace-v1`,添加了额外的请求和事件。
每当创建新的 ext workspace 时,调用者应调用 `get_cosmic_workspace`。
get_cosmic_workspace(cosmic_workspace: new_id<zcosmic_workspace_handle_v2>, workspace: object<ext_workspace_handle_v1>)
参数 | 类型 | 描述 |
|---|---|---|
| cosmic_workspace | new_id<zcosmic_workspace_handle_v2> | |
| workspace | object<ext_workspace_handle_v1> |
为现有的 `ext_workspace_handle_v1` 请求 `zcosmic_workspace_handle_v2` 扩展对象。
如果 `ext_workspace_handle_v1` 已存在 `zcosmic_workspace_handle_v2`,这将引发 `workspace_exists` 协议错误。
destroy()
当客户端不再使用 `zcosmic_workspace_manager_v2` 时应调用此请求。
error { workspace_exists }
参数 | 值 | 描述 |
|---|---|---|
| workspace_exists | 0 | ext_workspace_handle_v1 已存在 zcosmic_workspace_handle_v2 |
zcosmic_workspace_handle_v2 对象表示一个处理一组表面的工作区。
每个工作区有一个名称,通过 name 事件传达给客户端;一个状态列表,通过 state 事件传达给客户端;以及可选的一组坐标,通过 coordinates 事件传达给客户端。客户端可以请求合成器激活或停用工作区。
每个工作区只能属于单个工作区组。根据合成器策略,不同工作区组中可能存在同名的工作区,但这些工作区仍然是独立的(例如其中一个可能是活动的而另一个不是)。
destroy()
当客户端不再使用 `zcosmic_workspace_handle_v1` 时应调用此请求。
set_tiling_state(state: uint<zcosmic_workspace_handle_v2.tiling_state>)
参数 | 类型 | 描述 |
|---|---|---|
| state | uint<zcosmic_workspace_handle_v2.tiling_state> | the new tiling state of the workspace |
请求更改此工作区的平铺状态。
不保证工作区实际会更改其平铺状态。
move_before(other_workspace: object<ext_workspace_handle_v1>, axis: uint)
参数 | 类型 | 描述 |
|---|---|---|
| other_workspace | object<ext_workspace_handle_v1> | |
| axis | uint |
沿给定轴将工作区移动到另一个工作区之前。
`other_workspace` 可以在同一工作区组上,也可以在不同的组上。如果是不同的组,工作区也将移动到该组。
`axis` 应是 `other_workspace` 所在工作区组坐标中的有效索引。工作区将在目标组上定位,使该分量的坐标小于 `other_workspace` 分量的值。确切的坐标值,或其他工作区如何移动以适应此工作区,未指定。
如果 `axis` 无效或合成器无法移动工作区,此请求将被忽略。
不保证工作区实际会被移动。
move_after(other_workspace: object<ext_workspace_handle_v1>, axis: uint)
参数 | 类型 | 描述 |
|---|---|---|
| other_workspace | object<ext_workspace_handle_v1> | |
| axis | uint |
沿给定轴将工作区移动到另一个工作区之后。
参见 `move_before`。
capabilities(capabilities: uint<zcosmic_workspace_handle_v2.workspace_capabilities>)
参数 | 类型 | 描述 |
|---|---|---|
| capabilities | uint<zcosmic_workspace_handle_v2.workspace_capabilities> | capabilities |
此事件通告合成器支持的功能。如果不支持某个功能,客户端应隐藏或禁用暴露此功能的 UI 元素。例如,如果合成器不支持删除工作区,则不应显示触发删除请求的按钮。
合成器将忽略它不支持的请求。例如,不支持删除的合成器将忽略删除请求。
合成器必须在创建 `zcosmic_workspace_handle_v2` 后发送此事件一次。当功能发生变化时,合成器必须再次发送此事件。
tiling_state(state: uint<zcosmic_workspace_handle_v2.tiling_state>)
参数 | 类型 | 描述 |
|---|---|---|
| state | uint<zcosmic_workspace_handle_v2.tiling_state> |
此事件在 zcosmic_workspace_handle_v2 创建后立即发出,每次工作区平铺状态更改时也会发出,无论是由于合成器操作还是此协议中的请求。
state(state: uint<zcosmic_workspace_handle_v2.state>)
参数 | 类型 | 描述 |
|---|---|---|
| state | uint<zcosmic_workspace_handle_v2.state> |
此事件在 zcosmic_workspace_handle_v2 创建后立即发出,每次工作区状态更改时也会发出,无论是由于合成器操作还是此协议中的请求。
workspace_capabilities { rename, set_tiling_state, pin, move }
参数 | 值 | 描述 |
|---|---|---|
| rename | 1 | 重命名请求可用 |
| set_tiling_state | 2 | set_tiling_state 请求可用 |
| pin起始版本 2 | 3 | pin 和 unpin 请求可用 |
| move起始版本 2 | 4 | move_before 和 move_after 请求可用 |
tiling_state { floating_only, tiling_enabled }
参数 | 值 | 描述 |
|---|---|---|
| floating_only | 0 | 工作区没有活动的平铺属性 |
| tiling_enabled | 1 | 工作区已启用平铺行为 |
state { pinned }
参数 | 值 | 描述 |
|---|---|---|
| pinned | 1 | 工作区已固定 |
合成器支持
Cage | COSMIC | GameScope | Hyprland | Jay | KWin | Labwc | Louvre | Mir | Muffin | Mutter | niri | phoc | river | Sway | Treeland | Wayfire | Weston | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| zcosmic_workspace_manager_v2 | x | 2 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
Copyright
Copyright © 2025 System76
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.