From 42beae4b0a3dca663efcbad55a7d03b0b87336eb Mon Sep 17 00:00:00 2001 From: js0ny Date: Thu, 20 Nov 2025 20:12:29 +0000 Subject: [PATCH] fcitx: Use TemariVirus/fcitx-ini2nix --- nixcfgs/users/js0ny/programs/fcitx.nix | 281 +++++++++++++++++++++++++ nixcfgs/users/js0ny/programs/rime.nix | 16 +- 2 files changed, 282 insertions(+), 15 deletions(-) create mode 100644 nixcfgs/users/js0ny/programs/fcitx.nix diff --git a/nixcfgs/users/js0ny/programs/fcitx.nix b/nixcfgs/users/js0ny/programs/fcitx.nix new file mode 100644 index 0000000..338c140 --- /dev/null +++ b/nixcfgs/users/js0ny/programs/fcitx.nix @@ -0,0 +1,281 @@ +{pkgs, ...}: { + # Use: https://github.com/TemariVirus/fcitx-ini2nix + i18n.inputMethod = { + enable = true; + type = "fcitx5"; + fcitx5 = { + waylandFrontend = true; + addons = with pkgs; [ + fcitx5-rime + kdePackages.fcitx5-configtool + kdePackages.fcitx5-qt + fcitx5-gtk + qt6Packages.fcitx5-chinese-addons + ]; + settings = { + "inputMethod" = { + "Groups/0" = { + # Group Name + "Name" = ''Default''; + # Layout + "Default Layout" = ''us''; + # Default Input Method + "DefaultIM" = ''keyboard-us''; + }; + "Groups/0/Items/0" = { + # Name + "Name" = ''rime''; + # Layout + "Layout" = ''''; + }; + "Groups/0/Items/1" = { + # Name + "Name" = ''keyboard-us''; + # Layout + "Layout" = ''''; + }; + "GroupOrder" = { + "0" = ''Default''; + }; + }; + "globalOptions" = { + "Hotkey" = { + # Enumerate when holding modifier of Toggle key + "EnumerateWithTriggerKeys" = ''True''; + # Temporarily Toggle Input Method + "AltTriggerKeys" = ''''; + # Skip first input method while enumerating + "EnumerateSkipFirst" = ''False''; + # Enumerate Input Method Group Forward + "EnumerateGroupForwardKeys" = ''''; + # Enumerate Input Method Group Backward + "EnumerateGroupBackwardKeys" = ''''; + # Time limit in milliseconds for triggering modifier key shortcuts + "ModifierOnlyKeyTimeout" = ''250''; + }; + "Hotkey/TriggerKeys" = { + "0" = ''Zenkaku_Hankaku''; + "1" = ''Hangul''; + }; + "Hotkey/ActivateKeys" = { + "0" = ''Hangul_Hanja''; + }; + "Hotkey/DeactivateKeys" = { + "0" = ''Hangul_Romaja''; + }; + "Hotkey/EnumerateForwardKeys" = { + "0" = ''Super+space''; + }; + "Hotkey/EnumerateBackwardKeys" = { + "0" = ''Shift+Super+space''; + }; + "Hotkey/PrevPage" = { + "0" = ''Up''; + }; + "Hotkey/NextPage" = { + "0" = ''Down''; + }; + "Hotkey/PrevCandidate" = { + "0" = ''Shift+Tab''; + }; + "Hotkey/NextCandidate" = { + "0" = ''Tab''; + }; + "Hotkey/TogglePreedit" = { + "0" = ''Control+Alt+P''; + }; + "Behavior" = { + # Active By Default + "ActiveByDefault" = ''False''; + # Reset state on Focus In + "resetStateWhenFocusIn" = ''No''; + # Share Input State + "ShareInputState" = ''No''; + # Show preedit in application + "PreeditEnabledByDefault" = ''True''; + # Show Input Method Information when switch input method + "ShowInputMethodInformation" = ''True''; + # Show Input Method Information when changing focus + "showInputMethodInformationWhenFocusIn" = ''False''; + # Show compact input method information + "CompactInputMethodInformation" = ''True''; + # Show first input method information + "ShowFirstInputMethodInformation" = ''True''; + # Default page size + "DefaultPageSize" = ''5''; + # Override XKB Option + "OverrideXkbOption" = ''False''; + # Custom XKB Option + "CustomXkbOption" = ''''; + # Force Enabled Addons + "EnabledAddons" = ''''; + # Force Disabled Addons + "DisabledAddons" = ''''; + # Preload input method to be used by default + "PreloadInputMethod" = ''True''; + # Allow input method in the password field + "AllowInputMethodForPassword" = ''False''; + # Show preedit text when typing password + "ShowPreeditForPassword" = ''False''; + # Interval of saving user data in minutes + "AutoSavePeriod" = ''30''; + }; + }; + "addons" = { + "clipboard" = { + "globalSection" = { + # Trigger Key + "TriggerKey" = ''''; + # Paste Primary + "PastePrimaryKey" = ''''; + # Number of entries + "Number of entries" = ''5''; + # Do not show password from password managers + "IgnorePasswordFromPasswordManager" = ''False''; + # Display passwords as plain text + "ShowPassword" = ''False''; + # Seconds before clearing password + "ClearPasswordAfter" = ''30''; + }; + }; + "kimpanel" = { + "globalSection" = { + # Prefer Text Icon + "PreferTextIcon" = ''False''; + }; + }; + "cloudpinyin" = { + "globalSection" = { + # Toggle Key + "Toggle Key" = ''''; + # Minimum Pinyin Length + "MinimumPinyinLength" = ''4''; + # Backend + "Backend" = ''GoogleCN''; + # Proxy + "Proxy" = ''''; + }; + }; + "wayland" = { + "globalSection" = { + # Allow Overriding System XKB Settings (Only support KDE5+ and GNOME) + "Allow Overriding System XKB Settings" = ''True''; + }; + }; + "waylandim" = { + "globalSection" = { + # Detect current running application (Need restart) + "DetectApplication" = ''True''; + # Forward key event instead of commiting text if it is not handled + "PreferKeyEvent" = ''True''; + # Keep virtual keyboard object for V2 Protocol (Need restart) + "PersistentVirtualKeyboard" = ''False''; + }; + }; + "rime" = { + "globalSection" = { + # Preedit Mode + "PreeditMode" = ''"Do not show"''; + # Shared Input State + "InputState" = ''All''; + # Fix embedded preedit cursor at the beginning of the preedit + "PreeditCursorPositionAtBeginning" = ''True''; + # Action when switching input method + "SwitchInputMethodBehavior" = ''"Commit commit preview"''; + # Deploy + "Deploy" = ''''; + # Synchronize + "Synchronize" = ''''; + }; + }; + "classicui" = { + "globalSection" = { + # Vertical Candidate List + "Vertical Candidate List" = ''True''; + # Use mouse wheel to go to prev or next page + "WheelForPaging" = ''True''; + # Font + "Font" = ''"LXGW WenKai Medium 14"''; + # Menu Font + "MenuFont" = ''"LXGW WenKai 14"''; + # Tray Font + "TrayFont" = ''"Sans Bold 10"''; + # Tray Label Outline Color + "TrayOutlineColor" = ''''; #000000 + # Tray Label Text Color + "TrayTextColor" = ''''; #ffffff + # Prefer Text Icon + "PreferTextIcon" = ''False''; + # Show Layout Name In Icon + "ShowLayoutNameInIcon" = ''True''; + # Use input method language to display text + "UseInputMethodLanguageToDisplayText" = ''True''; + # Theme + "Theme" = ''plasma''; + # Dark Theme + "DarkTheme" = ''plasma''; + # Follow system light/dark color scheme + "UseDarkTheme" = ''True''; + # Follow system accent color if it is supported by theme and desktop + "UseAccentColor" = ''True''; + # Use Per Screen DPI on X11 + "PerScreenDPI" = ''False''; + # Force font DPI on Wayland + "ForceWaylandDPI" = ''0''; + # Enable fractional scale under Wayland + "EnableFractionalScale" = ''True''; + }; + }; + "quickphrase" = { + "globalSection" = { + # Trigger Key + "TriggerKey" = ''''; + # Choose key modifier + "Choose Modifier" = ''None''; + # Enable Spell check + "Spell" = ''True''; + # Fallback Spell check language + "FallbackSpellLanguage" = ''en''; + }; + }; + "punctuation" = { + "globalSection" = { + # Toggle key + "Hotkey" = ''''; + # Half width punctuation after latin letter or number + "HalfWidthPuncAfterLetterOrNumber" = ''True''; + # Type paired punctuations together (e.g. Quote) + "TypePairedPunctuationsTogether" = ''False''; + # Enabled + "Enabled" = ''True''; + }; + }; + "chttrans" = { + "globalSection" = { + # Translate engine + "Engine" = ''OpenCC''; + # Enabled Input Methods + "EnabledIM" = ''''; + # OpenCC profile for Simplified to Traditional + "OpenCCS2TProfile" = ''default''; + # OpenCC profile for Traditional to Simplified + "OpenCCT2SProfile" = ''default''; + }; + "sections" = { + "Hotkey" = { + "0" = ''Control+Shift+F''; + }; + }; + }; + "notifications" = { + "globalSection" = { + # Hidden Notifications + "HiddenNotifications" = ''''; + }; + }; + }; + }; + }; + }; + catppuccin.fcitx5.enable = false; +} diff --git a/nixcfgs/users/js0ny/programs/rime.nix b/nixcfgs/users/js0ny/programs/rime.nix index e783161..f5bf58e 100644 --- a/nixcfgs/users/js0ny/programs/rime.nix +++ b/nixcfgs/users/js0ny/programs/rime.nix @@ -87,21 +87,7 @@ then "Library/Rime" else ".local/share/fcitx5/rime"; in { - i18n.inputMethod = { - enable = true; - type = "fcitx5"; - fcitx5 = { - waylandFrontend = true; - addons = with pkgs; [ - fcitx5-rime - kdePackages.fcitx5-configtool - kdePackages.fcitx5-qt - fcitx5-gtk - qt6Packages.fcitx5-chinese-addons - ]; - }; - }; - catppuccin.fcitx5.enable = false; + imports = [./fcitx.nix]; home.file.${rimePath} = { source = rimeConfigFiltered; recursive = true;