52 lines
1.5 KiB
Nix
52 lines
1.5 KiB
Nix
{
|
|
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;
|
|
type = "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" ];
|
|
};
|
|
|
|
};
|
|
}
|