Integrate native Rime and stabilize input, output, and rendering

- Add optional modifier-only Super binding whose tap is cancelled by
  other input, focus changes, grabs, locks, and session teardown.
- Ship the native ferese-rime user service, Rime defaults, installer
  inventory, package dependencies, session environment, and docs.
- Vendor Smithay 8a27023 with the SHM texture-cache format fix and add
  GPU regressions for format changes and resize snapshots.
- Release reused CRTC owners before staging output modes, then restore
  changed outputs before former owners when a transaction fails.
- Wait for resize-capture GPU completion, expand filtered surface
  damage, and preserve IME popup origin under fractional scaling.
- Mark weekends like holidays in both calendar layouts.
This commit is contained in:
aria committed 2026-10-30 03:13:43 +09:00
1 parent a2be421974
commit 993bc0f88f
391 files changed
+130908 -76

No files matched your search

+19
View File
@@ -18,6 +18,25 @@ Keys use XKB keysyms (`Enter`, letters, `[`/`]`) or physical XKB names (`AD06`).
A binding replaces the same normalized chord/match mode. Duplicate bindings are
invalid. A disabled binding must omit `action` and `argument`.
A modifier-only `Super` binding is optional:
```kdl
binding "Super" action="toggle-launcher"
```
Either Super key triggers this action when released after an isolated press.
The original press and release still reach the focused application. Other keys,
both Super keys together, pointer movement, clicks, scrolling, gestures and touch
cancel the tap; a mouse button already held also prevents it. Existing Super
chords, including Super+Space, keep their actions. Key repeat does not retrigger
the tap. Locking, shortcut inhibition, client keyboard grabs, focus changes and
device/session teardown cancel pending taps. Native input-method grabs remain
compatible. `Logo` and `Mod4` name the same tap, so they cannot be configured as
separate bindings. Physical matching is not supported for this trigger.
Use `binding "Super" disabled=#true` to remove a configured tap. Without a tap
binding, Super keeps its existing modifier behavior.
| Actions | Argument |
| --- | --- |
| `spawn` | Name in `commands` |
+19
View File
@@ -37,6 +37,25 @@ librime 仍是 C++ 引擎,通过一个由安装头文件检查 ABI 的小型 C
## 构建与启动
### 本机日常会话安装
安装清单现包含 `ferese-rime`,Arch 包声明 `librime` 和 `rime-luna-pinyin`
依赖。公共方案与词库仍由系统包维护于 `/usr/share/rime-data`,不复制个人词库。
直接 DRM 会话默认启用原生输入法,并仅在 Ferese 会话内覆盖继承的 IBus Qt 环境。
GTK 不强制指定输入模块,由实际的原生 Wayland/X11 后端自行选择;
会话激活环境清空旧的 `GTK_IM_MODULE`,避免 XWayland 应用加载 GTK3 Wayland 模块时崩溃。
这些变量也导入该会话的 D-Bus/systemd 激活环境。嵌套预览保留原有的显式输入法启动方式。
会话在 `$XDG_DATA_HOME/ferese/rime`(默认 `~/.local/share/ferese/rime`)建立独立用户目录,
仅在 `default.custom.yaml` 不存在时安装默认简体拼音和每页九个候选的配置。
不读取、迁移或覆盖 IBus/Fcitx 的个人词库,也保留该目录内已有的用户定制。
Rime 由会话固定版本的 systemd 用户临时服务运行,异常后重启并启用十秒输入循环 watchdog;
服务名称由合成器控制套接字稳定生成,Shell 硬崩溃恢复时仅替换该会话的旧输入法实例。
会话结束时停止,输入法失败保留桌面。可用 `journalctl --user -u 'ferese-rime-session@*'`
查看日志。`FERESE_ENABLE_INPUT_METHOD=0` 可在登录前显式停用此集成。
以下预览与硬件验证记录早于此安装集成,不能代替新安装会话的验收。
需要仓库的构建依赖,以及 `librime`、`xkbcommon` 和 Wayland 开发文件。
验证环境使用系统 librime 1.17.0、GTK4 4.24.1、RTX 4090、NVIDIA 615.78.08。
Rust 工具链由仓库固定为 1.95.0。
+10 -1
View File
@@ -39,7 +39,8 @@ sudo pacman -S --needed python base-devel git curl cmake pkgconf wayland libxkbc
libinput systemd seatd mesa libdrm fontconfig freetype2 expat dbus \
desktop-file-utils foot pam clang pipewire libpipewire wireplumber polkit \
xdg-desktop-portal xdg-desktop-portal-gtk \
gstreamer gst-plugins-base gst-plugins-good gst-plugin-pipewire pipewire-pulse slurp
gstreamer gst-plugins-base gst-plugins-good gst-plugin-pipewire pipewire-pulse slurp \
librime rime-luna-pinyin
```
### Debian and Ubuntu
@@ -61,6 +62,14 @@ other distributions; check the [Smithay
dependencies](https://github.com/Smithay/smithay#system-dependencies) for equivalent
libraries.
This local fork also builds the native `ferese-rime` service. Outside Arch Linux,
install librime and its development headers plus the Rime Prelude, Luna Pinyin
and Stroke shared schemas under `/usr/share/rime-data` before building and logging
in. The Fedora and Debian/Ubuntu commands above describe the upstream desktop
dependencies and do not yet include these fork-specific Rime packages. Ferese
keeps its user dictionary separate from IBus and Fcitx; see the
[native Rime notes](development/rime-poc.md#本机日常会话安装).
### X11 support (optional)
To run X11-only applications, Ferese launches
+7
View File
@@ -24,6 +24,13 @@ current workspace. Power off, restart and logout also require **Alt + Enter**.
Run `feresectl launcher toggle` to open or close it from a script.
To also toggle the launcher by pressing and releasing Super alone, add
`binding "Super" action="toggle-launcher"` to your configuration. The action runs
on release; using another key, the pointer or a held mouse button cancels it, so
Super+Space and Super+mouse combinations continue to work. See
[modifier-only bindings](configuration/bindings.md) for input ownership and
cancellation behavior.
## Move and resize with the mouse
| Action | Result |