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:
1 parent
a2be421974
commit
993bc0f88f
391 files changed
+130908
-76
No files matched your search
@@ -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` |
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
|
||||
Reference in new issue
Block a user