Compare commits

..

3 commits

Author SHA1 Message Date
1de42e1a89
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.
2025-04-04 13:57:23 +02:00
3e905fbf8f
Use a consistent version of rofi in scripts 2025-04-04 13:50:50 +02:00
a2aee73928
Update nixos-hardware 2025-04-04 13:49:52 +02:00
5 changed files with 34 additions and 14 deletions

6
flake.lock generated
View file

@ -829,11 +829,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1719007440,
"narHash": "sha256-ll9zg1P0W8cMk1Co1BOQOrICr9dDgUw+ZL3mGy5GnOg=",
"lastModified": 1741792691,
"narHash": "sha256-f0BVt1/cvA0DQ/q3rB+HY4g4tKksd03ZkzI4xehC2Ew=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "e6d40db8924c3a663e1f76e0daed09510fea51c3",
"rev": "e1f12151258b12c567f456d8248e4694e9390613",
"type": "github"
},
"original": {

View file

@ -84,15 +84,22 @@ let
"${pkgs.kdePackages.plasma-workspace}/share/dbus-1/services/org.kde.plasma.Notifications.service";
};
rofi-rbw-script = pkgs.writeShellApplication {
rofi-rbw-script = pkgs.writeTextFile rec {
name = "rofi-rbw-script";
runtimeInputs = with pkgs; [
rofi
wtype
text = ''
#!/usr/bin/env fish
set -a PATH ${
lib.concatMapStringsSep " " (p: "${lib.getBin p}/bin") [
config.programs.rofi.package
pkgs.ydotool
pkgs.rofi-rbw
]
}
rofi-rbw
];
text = "rofi-rbw";
meta.mainProgram = "rofi-rbw-script";
'';
executable = true;
destination = "/bin/${name}";
meta.mainProgram = name;
};
in
with lib;

View file

@ -12,12 +12,20 @@ let
playerctl = lib.getExe pkgs.playerctl;
amixer = lib.getExe' pkgs.alsa-utils "amixer";
brightnessctl = lib.getExe pkgs.brightnessctl;
app-menu = "${pkgs.dmenu}/bin/dmenu_path | ${pkgs.bemenu}/bin/bemenu | ${pkgs.findutils}/bin/xargs swaymsg exec --";
app-menu = "${pkgs.dmenu}/bin/dmenu_path | ${pkgs.bemenu}/bin/bemenu | ${pkgs.findutils}/bin/xargs niri msg action spawn --";
wallpaper = config.linux.graphical.wallpaper;
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;
@ -366,7 +375,7 @@ in
# Some basic spawns
"Mod+Return".action = spawn (lib.getExe config.linux.graphical.defaults.terminal.package);
"Mod+Space".action = spawn (lib.getExe pkgs.rofi) "-show" "drun";
"Mod+Space".action = spawn "rofi" "-show" "drun";
"Mod+R".action = sh app-menu;
"Mod+Semicolon".action = spawn cfg.lock-command;
"Mod+Shift+P".action = spawn "rofi-rbw-script";

View file

@ -53,7 +53,7 @@
let
change-mode = pkgs.writeScript "change-mode" ''
#!/usr/bin/env ${lib.getExe pkgs.fish}
set -ax PATH ${lib.getBin pkgs.power-profiles-daemon} ${lib.getBin pkgs.rofi} ${lib.getBin pkgs.ripgrep}
set -ax PATH ${lib.getBin pkgs.power-profiles-daemon} ${lib.getBin config.programs.rofi.package} ${lib.getBin pkgs.ripgrep}
set profiles (powerprofilesctl list | rg "^[ *] (\S+):" -r '$1')
set selected_index (math (contains -i (powerprofilesctl get) $profiles) - 1)

View file

@ -79,6 +79,10 @@ let
programs.niri.package = pkgs.niri-stable;
# Override gnome-keyring disabling
services.gnome.gnome-keyring.enable = lib.mkForce false;
# ydotool
programs.ydotool.enable = true;
users.extraGroups.${config.programs.ydotool.group}.members = [ cfg.username ];
};
logitech =