Add searchable input controls and display profile editing
This commit is contained in:
1 parent
78ce1ed590
commit
a2be421974
24 files changed
+3426
-249
No files matched your search
@@ -1,5 +1,7 @@
|
||||
# Input
|
||||
|
||||
Settings separates **Keyboard**, **Mouse** and **Touchpad**. In Keyboard, search installed XKB layouts and variants by their localized name or code; each layout has its own variant. Add, remove or reorder layouts without editing comma-separated configuration strings. The layout-switching menu changes only `grp:*` options and preserves other XKB options. Catalog loading runs in the background and uses `XKB_CONFIG_ROOT/rules/evdev.lst` when set, otherwise `/usr/share/X11/xkb/rules/evdev.lst`.
|
||||
|
||||
| `input` key | Type | Default | Meaning |
|
||||
| --- | --- | --- | --- |
|
||||
| `focus-follows-mouse` | boolean | `false` | Focus visible windows under the pointer without raising them or scrolling; click or use keyboard focus to reveal a window |
|
||||
@@ -25,7 +27,7 @@ The touchpad keys `tap`, `natural-scroll` and `disable-while-typing` default to
|
||||
`true`. Set `disable-while-mouse-connected #true` to pause a built-in touchpad
|
||||
while an external mouse is connected. It defaults to `false` and uses libinput's
|
||||
external-mouse policy on supported touchpads, including when a mouse is plugged
|
||||
in or removed during the session. The toggle is also in **Settings → Keyboard & mouse**.
|
||||
in or removed during the session. The toggle is also in **Settings → Touchpad**.
|
||||
These device settings apply to DRM sessions; nested previews use the host's
|
||||
physical input settings.
|
||||
|
||||
@@ -67,8 +69,8 @@ by other monitors and stop at the first/last workspace. Short or cancelled navig
|
||||
swipes slide back; diagonal swipes do not navigate. Navigation pauses while locked, during
|
||||
window grabs, or when an application inhibits shortcuts.
|
||||
|
||||
Assign swipes in **Settings → Keyboard & mouse → Shortcuts** using the same actions and arguments as
|
||||
keyboard bindings. Choose a "Customize swipe" button to add an override. The
|
||||
Assign swipes in **Settings → Shortcuts** using the same actions and arguments as
|
||||
keyboard bindings. Use **Customize gestures** from Touchpad, then choose a gesture and action in the shortcut editor. The
|
||||
gesture keys are `Swipe3Up`, `Swipe3Down`, `Swipe3Left`, and `Swipe3Right`; 4 or 5
|
||||
fingers are also supported. Changes reload live:
|
||||
|
||||
@@ -85,7 +87,7 @@ keyboard modifiers or physical key matching. The trigger is automatically
|
||||
recognized from its name. Gesture navigation uses native touchpad events in a
|
||||
hardware session.
|
||||
|
||||
Adjust recognition distance in **Settings → Keyboard & mouse**, or with
|
||||
Adjust recognition distance in **Settings → Touchpad**, or with
|
||||
`swipe-threshold 80` under `input.touchpad` (integer 16–1000 logical pixels).
|
||||
|
||||
## Mouse bindings
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Displays
|
||||
|
||||
**Settings → Displays** shows the current arrangement, live resolution, refresh rate, scale and connection status. Save the current desktop as a named profile, rename or remove profiles, and configure resolution, refresh policy, scale, rotation/reflection and logical pixel position for each output. Unique hardware identities are preferred over connector names; identical monitors fall back to their current connectors. The arrangement diagram selects outputs but does not drag them.
|
||||
|
||||
Hardware changes use the compositor confirmation timeout. **Keep changes** accepts them; **Revert changes** restores the previous runtime arrangement and the display configuration captured before the first edit. **Restore previous display configuration** remains available for the source configuration after an automatic runtime rollback. Other settings and their comments are preserved. Nested sessions show the host-managed output and save configuration only; test physical modes and positioning in a standalone session.
|
||||
|
||||
## Color temperature
|
||||
|
||||
Night light warms the display using its hardware gamma ramp. It is off by default.
|
||||
|
||||
@@ -9,6 +9,7 @@ to `0` disables every path that can read the screen, including the built-in
|
||||
screenshot command, not just the Wayland protocol. A session launched by hand
|
||||
rather than through `ferese-session` needs `FERESE_ENABLE_SCREENCOPY=1` in its
|
||||
environment for screenshots to work.
|
||||
Settings checks the actual Wayland registry before offering shortcut recording. With shortcut inhibition disabled, use its modifier buttons and searchable key menu. Enabling the launch-time flag requires starting a new Ferese session.
|
||||
Text input is available by default; Ctrl+Alt+Escape releases an active shortcut
|
||||
inhibitor. Use `feresectl --help` for runtime control commands.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
| `status` key | Type | Default | Meaning |
|
||||
| --- | --- | --- | --- |
|
||||
| `keybinding-guide` | boolean | `true` | Show the active shortcut guide at login until disabled in Settings → Keyboard & mouse → Shortcuts. |
|
||||
| `keybinding-guide` | boolean | `true` | Show the active shortcut guide at login until disabled in Settings → Shortcuts. |
|
||||
| `low-battery-threshold` | integer 0–100 | `20` | Warning-color threshold |
|
||||
| `settings-command` | argument array | `["ferese-settings"]` | Settings launcher; `[]` hides the action |
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Ferese Graphite 视觉方案
|
||||
|
||||
- 文档版本:1.6
|
||||
- 文档版本:1.7
|
||||
- 整理日期:2026-10-28
|
||||
- 视觉基线:`1e34ec4`、`9908dde`、`3264659`、`6671960`、`81b9970`;本版修正活动窗口的应用图标来源。
|
||||
- 视觉基线:`1e34ec4`、`9908dde`、`3264659`、`6671960`、`81b9970`;本版增加搜索选择、快捷键编辑及显示器配置流程。
|
||||
- 适用范围:Ferese 设置、Shell 共享控件、锁屏与原生 Rime 候选界面的主题协同。
|
||||
|
||||
## 1. 视觉目标
|
||||
@@ -135,7 +135,7 @@ Appearance 作为全部设置的入口,内容按实际功能分组:
|
||||
| --- | --- |
|
||||
| 快速访问 | 常规、全部配置 |
|
||||
| 桌面 | 主题、壁纸、面板与 Shell、托盘图标 |
|
||||
| 交互 | 窗口、键盘与鼠标、辅助功能 |
|
||||
| 交互 | 窗口、键盘、鼠标、触控板、快捷键、辅助功能 |
|
||||
| 系统 | 显示器、连接、通知、日历、锁屏、登录启动项 |
|
||||
|
||||
总览使用等宽卡片,文字区域占用弹性空间,箭头在卡片末端对齐。
|
||||
@@ -158,7 +158,11 @@ Appearance 作为全部设置的入口,内容按实际功能分组:
|
||||
| 常规 | 界面 |
|
||||
| 日历 | 日期显示、日本祝日、自定义节假日 |
|
||||
| 窗口 | 工作区与布局、间距与圆角、焦点与窗口效果 |
|
||||
| 键盘与鼠标 | 键盘布局、按键重复、鼠标、触控板 |
|
||||
| 键盘 | 键盘布局与变体、布局切换、按键重复 |
|
||||
| 鼠标 | 鼠标行为、滚轮与指针 |
|
||||
| 触控板 | 触控板行为、指针与手势 |
|
||||
| 面板与 Shell | 面板布局与项目、Shell 圆角与材质,分为两个子页 |
|
||||
| 显示器 | 当前排列、配置档、输出设置 |
|
||||
| 主题 | 配色与强调色、表面与透明度、字体与排版;自动外观按需展开 |
|
||||
| 辅助功能 | 视觉辅助、动画 |
|
||||
| 通知 | 通知行为、通知时长 |
|
||||
@@ -166,9 +170,25 @@ Appearance 作为全部设置的入口,内容按实际功能分组:
|
||||
| 托盘图标 | 应用托盘、应用图标、面板状态图标 |
|
||||
| 快捷键 | 快捷键指南、自定义快捷键 |
|
||||
|
||||
显示器、连接和面板编辑器延续各自已有的功能分区;登录启动项按应用组织。窗口效果预览放入对应分组,高度收至 84 px,避免独占页首的大块空间。
|
||||
连接和面板编辑器保留各自的功能分区;登录启动项按应用组织。窗口效果预览放入对应分组,高度收至 84 px,避免独占页首的大块空间。
|
||||
|
||||
### 6.2 留白与窗口操作
|
||||
### 6.2 搜索选择与快速绑定
|
||||
|
||||
- 键盘布局、变体与布局切换组合键使用可搜索菜单,显示本地化名称及 XKB 代码。变体列表随所属布局更新;多布局新增、删除和上移时保持布局与变体一一对应,不要求填写逗号分隔字符串。
|
||||
- 菜单高度随过滤结果收缩,超出可用视口后滚动,避免固定高度产生大片空白。菜单与输入框使用现有石墨灰配色、MiSans 和 5 px 圆角。
|
||||
- 快捷键独立入口提供新增、编辑、删除、搜索及当前快捷键指南。编辑时先选择组合键,再搜索动作,并按动作展示方向、工作区、模式或程序参数。
|
||||
- 录入前检测会话是否提供快捷键屏蔽协议;只有收到屏蔽确认后才提示按键。Esc、失焦、离开页面或超时结束录入。不支持的会话直接提供修饰键按钮和按键菜单,避免误触原有快捷键。
|
||||
- 手势从触控板页进入同一快捷键编辑器。自定义组合键覆盖会话级绑定;编辑过程中明确保留物理位置匹配与字符匹配的区别。
|
||||
|
||||
### 6.3 显示器与面板结构
|
||||
|
||||
- 显示器页先呈现当前输出排列,再提供配置档和所选输出设置。排列图支持负坐标、旋转与不同缩放,点击显示器进行选择;图示表达当前状态,数值设置表达所选配置档。
|
||||
- 当前布局可保存为配置档;提供重命名、删除与启用操作。输出按硬件身份匹配,同型号身份重复时使用当前接口,避免将接口名固定解释为物理位置。
|
||||
- 分辨率与刷新率继续采用硬件提供的选项;缩放、旋转/反射、逻辑像素位置在同一输出分组中调整。至少保留一个已连接输出,禁用开关以草稿和实时状态共同判断。
|
||||
- 硬件变更保留确认和自动回退。主动回退时仅还原显示器配置片段;自动回退后仍可恢复原配置文件,避免重载时再次套用错误布局。嵌套预览明确提示物理输出由宿主管理。
|
||||
- 面板子页管理几何、布局、项目与拖动编排;Shell 子页集中圆角、材质与不透明度,并链接托盘、日历和通知。移除无字段的空分组。
|
||||
|
||||
### 6.4 留白与窗口操作
|
||||
|
||||
- 双击页面顶部、底部、左右边缘及超宽窗口外侧的留白,切换最大化与还原;标题区域和侧栏未被控件占用的区域同样支持。
|
||||
- 在上述区域移动指针超过拖动阈值后开始拖窗,单击不立即拖动。
|
||||
@@ -303,13 +323,13 @@ status {
|
||||
|
||||
| 验证项 | 结果 |
|
||||
| --- | --- |
|
||||
| 设置测试 | 128 项通过,10 项可选检查默认跳过 |
|
||||
| 设置测试 | 140 项通过,11 项可选检查默认跳过 |
|
||||
| 滚动渲染专项 | 额外运行 1 项通过,覆盖 WGPU / tiny-skia 与两种主题配置 |
|
||||
| 配置测试 | 51 项单元测试及 11 项集成测试通过 |
|
||||
| 配置测试 | 52 项单元测试及 11 项集成测试通过 |
|
||||
| 共享主题 / 面板 / Shell | 34 / 69 / 256 项通过 |
|
||||
| 布局检查 | 覆盖 480–1800 px 窗口宽度 |
|
||||
| 原生预览 | 已检查深浅外观及 631 px 窄窗口 |
|
||||
| 导航居中 | 全部 16 项;包含独立滚动条通道检查 |
|
||||
| 导航居中 | 全部 19 项;包含独立滚动条通道检查 |
|
||||
| Rime | 原生输入、候选、翻页、主题变化与进程恢复通过 |
|
||||
| 边缘双击 | 原生预览内 1272 px 最大化与 631 px 还原双向切换通过,配置内容不变 |
|
||||
| 导航抽屉 | 已移除关闭按钮,外侧点击和 Esc 关闭均检查通过 |
|
||||
@@ -320,8 +340,14 @@ status {
|
||||
| 通知标记 | 独立预览中创建并移除测试通知,检查白色与透明状态,点击区域宽度保持不变 |
|
||||
| 原生主题预览 | 检查配对颜色、透明外角和选中标记图层顺序;保留比例与键盘导航 |
|
||||
| 后台 schema | 将查询人为延迟 2 秒,窗口提前显示载入状态;结果完成后显示选项,查询只执行一次;覆盖失败重试与最新配置接续 |
|
||||
| 布局与变体菜单 | 原生搜索 `de` 与 `nodead`,选择德语及无死键变体,写回配置并经 compositor 校验通过 |
|
||||
| 快捷键编辑 | 原生录入 `Super+Q`、中文搜索动作并保存停用覆盖;窗口保持运行。Esc 取消后窗口快捷键恢复;480 px 编辑器可用 |
|
||||
| 录入能力检测 | 分别检查关闭与启用快捷键屏蔽协议的隔离会话;前者展示菜单选择,后者收到屏蔽确认后录入 |
|
||||
| 显示配置 | 原生创建、校验、重命名与恢复配置档通过;恢复后保留键盘和快捷键设置。身份重复与禁用保护由模型测试覆盖 |
|
||||
| 面板与 Shell | 原生检查分开的面板/Shell 子页,统一分组标题、页脚和面板样式翻译 |
|
||||
| 本轮分类渲染 | WGPU、2 倍缩放下渲染 21 页共 378 帧,覆盖 631 / 1272 px;未变更实际显示器 |
|
||||
|
||||
滚动渲染专项记录沿用前版 `9908dde`;边缘双击与窄窗口抽屉本轮再次检查通过。本版原生检查使用独立嵌套预览,保留原预览中的应用;没有重新执行关机、挂起或切换实际桌面会话。主机显示器、默认应用关联和 GNOME 输入源配置与开始时一致。
|
||||
滚动渲染专项记录沿用前版 `9908dde`;边缘双击与窄窗口抽屉本轮再次检查通过。本版原生检查使用独立嵌套预览,保留原预览中的 SOUP 和设置进程;没有重新执行关机、挂起或切换实际桌面会话。本轮没有切换主机显示器、默认应用关联或 GNOME 输入源。真实多屏模式切换、确认超时和驱动应用仍需在独立硬件会话复核;嵌套预览与模型测试不能代替这些检查。
|
||||
|
||||
### 性能采样
|
||||
|
||||
@@ -387,3 +413,16 @@ status {
|
||||
| 布局及对齐回归检查 | `shell/ferese-settings/src/scroll_tests.rs` |
|
||||
|
||||
前版记录保存在 `.artifacts/visual-reference-20261028/` 与 `.artifacts/settings-density-20261028/`;本版日历、函数编辑器和通知标记的记录保存在 `.artifacts/time-hub-20261028/`。这些本机验收资料不随仓库分发。
|
||||
|
||||
本版搜索选择与快捷绑定的验收记录位于 `.artifacts/settings-controls-20261028/`,包含原生截图、配置写回结果及 21 页渲染记录。
|
||||
|
||||
本版新增实现:
|
||||
|
||||
| 功能 | 位置 |
|
||||
| --- | --- |
|
||||
| XKB 目录、变体、布局切换 | `shell/ferese-settings/src/keyboard_controls.rs` |
|
||||
| 搜索选择器 | `shell/ferese-settings/src/selection.rs` |
|
||||
| 快捷键录入、菜单与保存 | `shell/ferese-settings/src/shortcut_controls.rs` |
|
||||
| 显示器排列图 | `shell/ferese-settings/src/display_map.rs` |
|
||||
| 显示配置档与回退 | `shell/ferese-settings/src/display_controls.rs`、`displays_ui.rs` |
|
||||
| 保留其他配置的片段恢复 | `crates/ferese-config/src/document.rs` |
|
||||
+7
-1
@@ -1,11 +1,17 @@
|
||||
# Shortcuts and gestures
|
||||
|
||||
`Super` is usually the Windows key. These are the built-in defaults. Open
|
||||
**Settings → Keyboard & mouse → Shortcuts** to change bindings and gestures or disable the login
|
||||
**Settings → Shortcuts** to change bindings and gestures or disable the login
|
||||
guide. Your saved bindings can override these defaults.
|
||||
The [example config](../packaging/config.kdl) adds the app, media and arrow-key
|
||||
shortcuts listed below.
|
||||
|
||||
## Edit bindings in Settings
|
||||
|
||||
Choose **Add shortcut**, record the combination, then search for an action. Recording temporarily inhibits Ferese shortcuts after the compositor confirms the inhibition; Escape, focus loss, leaving the page or the 15-second timeout releases it. A key menu with modifier buttons is also available for combinations reserved by a host desktop. Mouse buttons, wheel directions and three-, four- or five-finger swipes use the same editor.
|
||||
|
||||
The editor provides action-specific arguments and an application command field. Commands are parsed into an argument vector; no shell is invoked. Adding an existing custom combination updates that binding; editing another binding into a duplicate reports a conflict. Changes apply globally. A physical-key binding retains its matching mode when only its action changes; recording or choosing a new key switches to key-label matching.
|
||||
|
||||
## Launcher
|
||||
|
||||
**Super + Space** opens the launcher. Type to search, press **Tab** to accept
|
||||
|
||||
Reference in new issue
Block a user