Repository navigation
Conversation
1. Add dde/treeland-dock-unstable-v1.xml: treeland_dock_manager_v1 turns a wlr-layer-shell surface into a managed dock that reports the user's visibility mode (always_visible / smart_hide / always_hidden), the output policy deciding which outputs arm the edge wake-up strip, per-interaction hold objects that block automatic hiding, and forced visibility for conditions the compositor cannot observe such as the launcher 2. The compositor owns the show/hide animation, edge wake-up, the smart-hide overlap watch, the multitask-view override and the reserved area derived from the mode; it keeps the surface mapped and hides it by moving it out of the output, and events report the target visibility with its reason plus the output whose edge the pointer touched 3. Register the protocol in CMakeLists and add it to both dde READMEs 4. Protocol only: dde-shell and the Treeland implementation are separate changes, so both sides keep their migration point Log: New privileged dock protocol lets the compositor own dock show/hide animation, edge wake-up, smart-hide overlap and reserved area Influence: 1. Install the package and verify the new XML lands in the treeland-protocols data dir and both dde READMEs list it 2. Run wayland-scanner client-header, server-header, private-code and public-code on the new XML to confirm it parses 3. Reconfigure cmake and confirm the build succeeds with the updated DDE file list 4. Check the generated headers expose get_dock, visibility, edge_wake and the hold object without warnings feat: 新增 treeland-dock-unstable-v1 协议 1. 新增 dde/treeland-dock-unstable-v1.xml:treeland_dock_manager_v1 把一个 wlr-layer-shell surface 转为受管 Dock,客户端上报用户显示模式 (always_visible / smart_hide / always_hidden)、决定哪些输出装边缘唤出 条带的输出策略、阻止自动隐藏的逐交互 hold 对象,以及合成器无法观测的 强制显示(如启动器) 2. 显隐动画、边缘唤出、智能隐藏重叠监控、多任务视图覆盖与按模式推导的预留 区域均由合成器负责;surface 始终保持 mapped,隐藏时移出输出而非取消映射; 事件上报目标可见状态及其原因,以及指针触边的输出 3. 在 CMakeLists 中注册该协议,并加入 dde 下中英文 README 4. 本提交只含协议:dde-shell 与 Treeland 的实现是后续独立改动,双方都保留 迁移点 Log: 新增特权 Dock 协议,显隐动画、边缘唤出、智能隐藏重叠与预留区域交由 合成器统一负责 Influence: 1. 安装软件包,确认新 XML 出现在 treeland-protocols 数据目录,且中英文 dde README 均已列出 2. 对新 XML 分别运行 wayland-scanner 的 client-header、server-header、 private-code 与 public-code 模式,确认解析通过 3. 重新执行 cmake 配置并构建,确认更新后的 DDE 文件列表构建成功 4. 检查生成的 header 中 get_dock、visibility、edge_wake 与 hold 对象齐全 且无告警 Multica Issue: WM-934
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: deepin-wm The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's GuideThis protocol-only PR adds an experimental treeland-dock-unstable-v1 interface that lets the compositor centrally manage Dock visibility, animation, edge wake-up, overlap behavior, multitask overrides, and reserved space while the shell continues to own Dock content and reports client-observable state such as modes, holds, forced visibility, and output policy. Sequence diagram for Dock edge wake-up across outputssequenceDiagram
actor User
participant Compositor
participant Shell
participant DockSurface
User->>Compositor: Pointer touches armed edge
Compositor-->>Shell: edge_wake(output)
Shell->>DockSurface: Move surface to touched output
Compositor->>DockSurface: Start compositor-managed reveal animation
Compositor-->>Shell: visibility(visible, edge_wake)
State diagram for compositor Dock visibility decisionsstateDiagram-v2
[*] --> ModeBaseline
ModeBaseline --> Visible: forced visibility or multitask view
ModeBaseline --> Visible: edge wake
ModeBaseline --> Hidden: always_hidden
ModeBaseline --> Hidden: fullscreen or window overlap
Hidden --> Visible: edge wake
Hidden --> Visible: forced visibility or multitask view
Hidden --> Visible: hold cancels hide trigger
Visible --> Hidden: fullscreen or window overlap
Visible --> ModeBaseline: hold released
Visible --> ModeBaseline: forced visibility cleared
Visible --> ModeBaseline: multitask view exits
Hidden --> ModeBaseline: forced visibility cleared
Hidden --> ModeBaseline: multitask view exits
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
解决什么问题
Dock(任务栏)的整体显隐动画、边缘唤出、智能隐藏重叠判断与预留区域目前由 dde-shell 自己完成,与合成器负责的窗口最大化/还原、全屏退出、多任务视图、输出配置变化等动画互相竞争,容易出现空缺、跳变和双方重复控制。
本 PR 只新增协议定义,把上述整体行为交给合成器统一决策与执行;dde-shell 继续绘制 Dock 内容,并通过协议上报合成器无法自行获知的信息。
改了哪些地方
dde/treeland-dock-unstable-v1.xmltreeland_dock_manager_v1:get_dock(id, surface, mode, policy)把一个已有的 wlr-layer-shell surface 转为受管 Dock,already_dock_surface/invalid_surface/invalid_mode/invalid_output_policy为创建期错误treeland_dock_v1set_visibility_mode(always_visible / smart_hide / always_hidden)、set_output_policy(primary_only / any_output,只决定哪些输出装边缘唤出条带)、get_hold(每个交互一个 hold 对象,拒绝自动隐藏但不主动显示)、set_forced_visibility(按 reason 逐个设置/清除,如启动器)visibility(visible, reason)只在目标可见状态变化时下发并说明原因;edge_wake(output)每次指针触边都下发,与目标状态是否变化无关,客户端据此决定是否迁屏output_conflict:同一输出上出现第二个受管 Dock 时按协议错误处理treeland_dock_hold_v1:hold 的生命周期对象CMakeLists.txt:在TREELAND_PROTOCOL_DDE_XML_FILES末尾追加该 XMLdde/README.md/dde/README.zh_CN.md:各追加一行接口表为什么这么改
edge_wake只报告指针触了哪个输出;output_policy是保住Show_In_Primary现有语义的最小手段。验证
./check-protocol-xml.sh全仓通过(唯一告警是既有文件deprecated/treeland-shortcut-manager-v2.xml:291的历史问题)wayland-scanner的 client-header / server-header / private-code / public-code 均可生成issue: WM-934
Summary by Sourcery
Introduce an experimental protocol that lets the compositor centrally coordinate dock visibility and reserved space while the client continues to render dock content and report client-only state.
New Features:
Enhancements:
Build:
Documentation: