{ options, config, lib, pkgs, namespace, ... }: with lib; with lib.${namespace}; let cfg = config.${namespace}.desktop.components.fcitx5; desktop = config.${namespace}.desktop; in { options.${namespace}.desktop.components.fcitx5 = with types; { enable = mkEnableOption "fcitx5"; }; config = mkIf cfg.enable { i18n.inputMethod = { enable = true; type = "fcitx5"; fcitx5 = { addons = with pkgs; [ fcitx5-mozc ]; settings = { globalOptions = { "Hotkey/TriggerKeys" = { "0" = "Scroll_Lock"; }; Behavior = { ActiveByDefault = "True"; # `true` outputs lowercase "true" # resetStateWhenFocusIn = "All"; ShareInputState = "All"; }; }; inputMethod = { GroupOrder."0" = "Default"; "Groups/0" = { Name = "Default"; "Default Layout" = "us"; DefaultIM = "keyboard-us"; }; "Groups/0/Items/0".Name = "mozc"; "Groups/0/Items/1".Name = "keyboard-us"; }; addons = { classicui.globalSection.Theme = "nix-theme"; }; }; themes = { "nix-theme".theme = let c = desktop.theme.colors; in { "Metadata" = { Name = "nix-theme"; Author = "CartConnoisseur"; Description = "Theme generated by NixOS"; Version = 1; }; "InputPanel" = { NormalColor = "#${c.fg}"; HighlightColor = "#${c.fg}"; HighlightBackgroundColor = "#00000000"; HighlightCandidateColor = "#${c.bg}"; FullWidthHighlight = true; PageButtonAlignment = "Last Candidate"; }; "InputPanel/Background" = { Color = "#${c.bg}"; BorderColor = "#${c.fg1}"; BorderWidth = 2; }; # "InputPanel/Background/Margin" = { # Left = 10; # Right = 10; # Top = 10; # Bottom = 10; # }; "InputPanel/Highlight" = { Color = "#${c.fg}"; BorderWidth = 0; }; "InputPanel/Highlight/Margin" = { Left = 2; Right = 2; Top = 2; Bottom = 2; }; "InputPanel/ContentMargin" = { Left = 2; Right = 2; Top = 2; Bottom = 2; }; "InputPanel/TextMargin" = { Left = 5; Right = 5; Top = 5; Bottom = 5; }; }; }; }; }; home.sessionVariables = { # required for fcitx5 support in kitty GLFW_IM_MODULE = "ibus"; }; }; }