fcitx: Use TemariVirus/fcitx-ini2nix

This commit is contained in:
js0ny 2025-11-20 20:12:29 +00:00
parent 3e00cb6173
commit 42beae4b0a
2 changed files with 282 additions and 15 deletions

View file

@ -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;
}

View file

@ -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;