Skip to content

New package: fcitx5-lotus-3.4.0 - #61742

Open
0353618151hao-png wants to merge 1 commit into
void-linux:masterfrom
0353618151hao-png:fcitx5-lotus
Open

New package: fcitx5-lotus-3.4.0#61742
0353618151hao-png wants to merge 1 commit into
void-linux:masterfrom
0353618151hao-png:fcitx5-lotus

Conversation

@0353618151hao-png

Copy link
Copy Markdown

Testing: Built and tested on glibc x86_64.

@0353618151hao-png

Copy link
Copy Markdown
Author

Sorry for the mess and noise in the commit history earlier! I've cleaned it all up into a single commit containing only fcitx5-lotus. Thank you for your patience!

@0353618151hao-png

0353618151hao-png commented Jul 31, 2026

Copy link
Copy Markdown
Author

Package description:
fcitx5-lotus is a Vietnamese input method engine for Fcitx5, focusing on a non-preedit (direct typing) experience.

Technical notes:
-The package creates a '_uinput_proxy' system user. This is because the engine uses a background daemon to access '/dev/uinput' for simulating keyboard events (to achieve the 'non-preedit' typing). This follows the principle of least privilege, running the daemon under a dedicated user instead of root.
-The flag '-DINSTALL_RUNIT=ON' is used to install the runit service scripts required for Void Linux.
-'acl' is included in depends because the post-install script uses 'setfacl' to grant the '_uinput_proxy' user access to '/dev/uinput'.
-'python3' is listed in hostmakedepends because the build system uses it at configure time (find_package(Python3)) and at install time (byte-compiling the settings GUI Python files).
-Upstream uses the generic username 'uinput_proxy' in its runit service and udev rules. Since Void Linux convention requires system users to have an underscore prefix, 'post_patch()' is used to sed-replace 'uinput_proxy' with '_uinput_proxy' in 'misc/fcitx5-lotus.runit' and 'misc/99-lotus.rules' before build (The 'post_patch()' sed-replacement is a temporary workaround.).
-Systemd service file and sysusers.d config are removed in 'post_install()' as they are not needed on Void.
-The settings GUI is split into a subpackage 'fcitx5-lotus-settings' to avoid pulling Python/Qt dependencies into the main package, since headless or terminal-only users may not need the GUI.
-bamboo-core is fetched as a separate distfile (Git submodule) and placed into the source tree via 'post_extract()'.
-bamboo-core is written in Golang, which is why 'go' is listed in hostmakedepends. The build process compiles bamboo-core from source before building fcitx5-lotus itself.

Notes from the Maintainer:
-If this package is merged, I plan to submit a request to upstream to make the proxy username configurable (e.g. via a CMake variable like 'UINPUT_PROXY_USER'), so that the 'post_patch()' workaround will no longer be necessary.

@0353618151hao-png
0353618151hao-png force-pushed the fcitx5-lotus branch 5 times, most recently from b15768f to c44d95c Compare July 31, 2026 10:41
@0353618151hao-png
0353618151hao-png marked this pull request as draft July 31, 2026 11:51
@0353618151hao-png
0353618151hao-png marked this pull request as ready for review July 31, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-package This PR adds a new package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants