81 lines
2.4 KiB
Nix
81 lines
2.4 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;
|
|
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" ];
|
|
# };
|
|
|
|
};
|
|
}
|