ibus: add module
This commit is contained in:
parent
67de98ae6e
commit
ed922f2ddf
|
@ -22,13 +22,13 @@ let
|
|||
'';
|
||||
|
||||
in {
|
||||
imports = [ ./fcitx5.nix ./hime.nix ./kime.nix ./nabi.nix ./uim.nix ];
|
||||
imports = [ ./fcitx5.nix ./hime.nix ./kime.nix ./nabi.nix ./uim.nix ./ibus.nix ];
|
||||
|
||||
options.i18n = {
|
||||
inputMethod = {
|
||||
enabled = mkOption {
|
||||
type = types.nullOr
|
||||
(types.enum [ "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" ]);
|
||||
(types.enum [ "fcitx" "fcitx5" "nabi" "uim" "hime" "kime" "ibus" ]);
|
||||
default = null;
|
||||
example = "fcitx5";
|
||||
description = ''
|
||||
|
@ -58,6 +58,9 @@ in {
|
|||
|
||||
`kime`
|
||||
: A Korean IME.
|
||||
|
||||
`ibus`
|
||||
: The intelligent input bus.
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
67
modules/i18n/input-method/ibus.nix
Normal file
67
modules/i18n/input-method/ibus.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
im = config.i18n.inputMethod;
|
||||
cfg = im.ibus;
|
||||
impanel = optionalString (cfg.panel != null) "--panel=${cfg.panel}";
|
||||
ibusPackage = pkgs.ibus-with-plugins.override { inherit (cfg) engines; };
|
||||
in
|
||||
{
|
||||
options = {
|
||||
i18n.inputMethod.ibus = {
|
||||
engines = mkOption {
|
||||
type = with types; listOf ibusEngine;
|
||||
default = [ ];
|
||||
example = literalExpression "with pkgs.ibus-engines; [ mozc hangul ]";
|
||||
description = ''
|
||||
Enabled IBus engines.
|
||||
'';
|
||||
};
|
||||
};
|
||||
panel = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
example = literalExpression ''"''${pkgs.plasma5Packages.plasma-desktop}/libexec/kimpanel-ibus-panel"'';
|
||||
description = ''
|
||||
Replace the IBus panel with another panel.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (im.enabled == "ibus") {
|
||||
i18n.inputMethod.package = ibusPackage;
|
||||
|
||||
home.sessionVariables = {
|
||||
GLFW_IM_MODULE = "ibus";
|
||||
GTK_IM_MODULE = "ibus";
|
||||
QT_IM_MODULE = "ibus";
|
||||
XMODIFIERS = "@im=ibus";
|
||||
};
|
||||
|
||||
# Without dconf enabled it is impossible to use IBus
|
||||
programs.dconf.enable = true;
|
||||
|
||||
programs.dconf.packages = [ ibusPackage ];
|
||||
|
||||
services.dbus.packages = [ ibusPackage ];
|
||||
|
||||
xdg.portal.extraPortals = mkIf config.xdg.portal.enable [
|
||||
ibusPackage
|
||||
];
|
||||
|
||||
systemd.user.services.ibus-daemon = {
|
||||
Unit = {
|
||||
Description = "IBus input method editor";
|
||||
PartOf = [ "graphical-session.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${ibusPackage}/bin/ibus-daemon --replace --xim ${impanel}";
|
||||
ExecReload = "${ibusPackage}/bin/ibus restart";
|
||||
ExecStop = "${ibusPackage}/bin/ibus exit";
|
||||
};
|
||||
Install.WantedBy = [ "graphical-session.target" ];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue