Hacky hack to make rofi-rbw typing less insane

There is some unknown interaction between `wtype` and `fcitx5`
that prevents the keyboard from being usable after wtype exits,
until fcitx5 restarts. Therefore a workaround is to use `ydotool`
to type the secrets instead.

However `ydotool` assumes an ANSI layout, which we cannot specifically
set up with niri just yet. So instead we set up a hack, to temporarily
disable fcitx & set Niri layout to ANSI right before invoking ydotool,
and reverting once it's complete.
This commit is contained in:
Natsu Kagami 2025-04-04 13:47:12 +02:00
parent 3e905fbf8f
commit 1de42e1a89
Signed by: nki
GPG key ID: 55A032EB38B49ADB
3 changed files with 28 additions and 8 deletions

View file

@ -18,6 +18,14 @@ let
xwayland-display = ":0";
# Override for lack of per-keyboard layout
ydotool-en = pkgs.writeScriptBin "ydotool" ''
#!/usr/bin/env sh
niri msg action switch-layout 1 && fcitx5-remote -c # us
${lib.getExe pkgs.ydotool} "$@"
niri msg action switch-layout 0 # ja
'';
in
{
options.programs.my-niri = {
@ -77,6 +85,7 @@ in
};
config = lib.mkIf cfg.enable {
home.packages = [ ydotool-en ];
programs.my-niri.workspaces = {
# Default workspaces, always there
"01" = {
@ -158,7 +167,7 @@ in
XDG_MENU_PREFIX = "plasma-";
};
input.keyboard.xkb = {
layout = "jp";
layout = "jp,us";
};
input.touchpad = lib.mkIf cfg.enableLaptop {
tap = true;