桌面全部动效时长、曲线、弹簧参数与交互行为的最终规格。动效参数由 wmshell/QML 侧与 compositord 材质过渡共用,两端数值必须一致,以本文档为准。
动效 token
| token |
值 |
用途 |
| duration.instant |
100ms |
悬停着色、按压反馈 |
| duration.fast |
200ms |
菜单展开、指示点变化 |
| duration.normal |
300ms |
面板滑入、窗口切换动画 |
| duration.slow |
600ms |
主题深浅切换(全 token 连续插值) |
| curve.standard |
cubic-bezier(0.2, 0, 0, 1) |
一般过渡 |
| curve.emphasized |
cubic-bezier(0.3, 0, 0, 1) |
面板、主题、窗口动画 |
| spring.dock-zoom |
stiffness 420 / damping 26 |
Dock 图标邻近放大 |
| spring.window-snap |
stiffness 380 / damping 30 |
窗口最大化/恢复、对齐吸附 |
Dock
- 悬浮玻璃岛,水平居中;图标 44px、间距 8px,规格见 visual-language.md。
- 邻近放大:指针 80px(dock.zoom-radius)范围内图标放大,最大 1.35×,按指针距离高斯衰减影响邻居,弹簧 spring.dock-zoom。
- 点击行为:未运行则启动;有窗口则聚焦最近的窗口;窗口全部最小化则恢复并聚焦。
- 运行中应用图标下方 4px 指示点,聚焦窗口应用为 8px 长条。
- 启动器:Dock 末位 ⊕ 图标,打开全屏应用网格(scrim 压暗 + 玻璃图标格,Super 同效)。
顶部状态条
| 区域 |
位置 |
行为 |
| 状态区 |
左段 |
网络/音量/电池聚合图标;点击下拉快捷中心(Wi-Fi、蓝牙、音量滑杆、亮度滑杆) |
| 时钟 |
中段 |
时间与日期;点击展开通知中心 + 日历 |
| 托盘 |
右段 |
后台应用托盘图标 |
| 电源 |
右段末 |
点击弹出锁屏/重启/关机菜单 |
窗口操作(Soke Window Manager 策略)
| 操作 |
规格 |
| 拖动 |
按住标题栏拖动;拖至屏幕上缘停留 400ms 预览最大化,松手落位,下拉即恢复 |
| 缩放 |
八向边缘热区 6px;最小窗口 320×200 |
| 最大化/恢复 |
双击标题栏,或 Super+↑ / Super+↓,弹簧 spring.window-snap |
| 控制圆点 |
右上三枚 12px 玻璃圆珠:关闭、最小化、最大化;悬停 200ms 内着色(关闭 #E5484D、最小化 #F5A524、最大化 #46A758),着色与点击热区同步,无需等待 |
| 聚焦 |
点击聚焦并置顶;「焦点跟随指针」为设置可选项,默认关闭 |
| 工作区 |
4 个固定工作区;Super+Ctrl+←/→ 或三指横滑切换;窗口可指定固定在某工作区 |
| 边缘对齐 |
拖动至左/右缘停留 400ms 预览半屏平铺,松手落位 |
| 手势 |
动作 |
| 三指横滑 |
切换工作区,桌面随位移跟手,松手按位移过半判定 |
| 两指滚动 |
内容滚动 |
| 捏合 |
映射 Ctrl+滚轮(缩放) |
快捷键
| 键 |
动作 |
| Super |
启动器 |
| Super+D |
显示桌面 |
| Super+↑ / ↓ |
窗口最大化 / 恢复 |
| Alt+Tab |
窗口切换(按聚焦时间倒序) |
| Super+Ctrl+← / → |
切换工作区 |
| Ctrl+Alt+T |
终端 |
| PrtSc |
截图工具(第二期实现) |
通知
- 位置:屏幕右上角、顶部状态条下方滑入(400ms,curve.emphasized)。
- 卡片:玻璃材质(高级别),应用图标 + 标题 + 正文两行截断 + 操作按钮至多 2 个。
- 停留 5s 后自动收入通知中心;鼠标悬停暂停计时。
- 通知中心:点击时钟区域展开,含日历与历史通知,逐条清除与全部清除。
- 勿扰:通知中心内一键开关;开启后仅记录不弹出。
- 同一应用连续通知合并计数,卡片顶部显示 ×N。
主题切换
深/浅档切换时,全部色彩与材质 token 在 float 域逐帧连续插值 600ms(duration.slow),无闪屏、无档位跳变;判定与滞回机制见 visual-language.md。