{ pkgs, config, lib, ... }: with lib; let cfg = config.xyno.desktop.ibus; in { options.xyno.desktop.ibus.enable = mkEnableOption "enable ibus input daemon thing"; options.xyno.desktop.ibus.wantedBy = mkOption { type = types.str; default = "niri.service"; }; config = mkIf cfg.enable { services.libinput.enable = true; # just... enable ibus as input method and maybe now we have consistent unicode input everywhere # fuck qt tbh i18n.inputMethod = { enable = true; package = pkgs.ibus; # ibus.engines = with pkgs.ibus-engines; [ uniemoji ]; }; # home-manager.sharedModules = [ # ( # { lib, ... }: # { # dconf.settings = { # "org/gnome/desktop/input-sources" = { # sources = [ # (lib.hm.gvariant.mkTuple [ # "xkb" # "us" # ]) # (lib.hm.gvariant.mkTuple [ # "ibus" # "libpinyin" # ]) # (lib.hm.gvariant.mkTuple [ # "ibus" # "mozc-jp" # ]) # ]; # }; # }; # } # ) # ]; systemd.user.services."org.freedesktop.IBus.session.generic".wantedBy = [ cfg.wantedBy ]; systemd.packages = [ pkgs.ibus ]; # systemd.user.services.ibus = # let # ibusPackage = config.i18n.inputMethod.package; # in # assert hasPrefix "ibus-with-plugins" ibusPackage.name; # { # # panel is weird... # # default is ${ibusPackage}/libexec/ibus-ui-gtk3 which works but sends a notification that it's misconfigured # # wayland support can be enabled with --enable-wayland-im but that segfaults (possible due to zwp_input_method_v1 not being available?) # script = '' # exec ${ibusPackage}/bin/ibus-daemon --xim --replace --panel '${ibusPackage}/libexec/ibus-ui-gtk3' # ''; # serviceConfig = { # Type = "dbus"; # BusName = "org.freedesktop.IBus"; # Restart = "on-abnormal"; # }; # unitConfig = { # CollectMode = "inactive-or-failed"; # }; # # yeah we hardcoding this now, fuck it # wantedBy = [ cfg.wantedBy ]; # partOf = [ "graphical-session.target" ]; # }; }; }