1
1
Fork 0

menus: use shell script instead of wrapper

Signed-off-by: Myned <dev@bjork.tech>
This commit is contained in:
Myned 2025-02-15 16:01:36 -06:00
parent 6cde225c08
commit 1196fdb95b
Signed by: Myned
GPG key ID: C7224454F7881A34
6 changed files with 46 additions and 49 deletions

View file

@ -265,6 +265,7 @@ in {
(key "Super_L" "Super" "exec" config.custom.menus.default.show) (key "Super_L" "Super" "exec" config.custom.menus.default.show)
(key "Super_L" "Super+Alt" "exec" config.custom.menus.vault.show) (key "Super_L" "Super+Alt" "exec" config.custom.menus.vault.show)
(key "Super_L" "Super+Ctrl" "exec" config.custom.menus.calculator.show)
(key "Super_L" "Super+Ctrl+Shift" "exec" config.custom.menus.network.show) (key "Super_L" "Super+Ctrl+Shift" "exec" config.custom.menus.network.show)
(key "Super_L" "Super+Shift" "exec" config.custom.menus.search.show) (key "Super_L" "Super+Shift" "exec" config.custom.menus.search.show)
]; ];

View file

@ -136,7 +136,7 @@ in {
(key "N" "Mod" (spawn networkmanager_dmenu)) (key "N" "Mod" (spawn networkmanager_dmenu))
(key "O" "Mod" (spawn [loupe "/tmp/wallpaper.png"])) (key "O" "Mod" (spawn [loupe "/tmp/wallpaper.png"]))
(key "P" "Ctrl+Alt" (spawn [pkill "bitwarden"])) (key "P" "Ctrl+Alt" (spawn [pkill "bitwarden"]))
(key "P" "Mod" (spawn [bash "-c" config.custom.menus.vault.show])) (key "P" "Mod" (spawn config.custom.menus.vault.show))
(key "P" "Mod+Shift" (spawn bitwarden)) (key "P" "Mod+Shift" (spawn bitwarden))
(key "Q" "Mod" close-window) (key "Q" "Mod" close-window)
(key "R" "Mod" focus-window-or-workspace-down) (key "R" "Mod" focus-window-or-workspace-down)
@ -156,9 +156,9 @@ in {
(key "T" "Mod" (spawn ghostty)) (key "T" "Mod" (spawn ghostty))
(key "Tab" "Mod" switch-focus-between-floating-and-tiling) (key "Tab" "Mod" switch-focus-between-floating-and-tiling)
(key "Up" "Mod" (spawn [swayosd-client "--brightness" "raise"])) (key "Up" "Mod" (spawn [swayosd-client "--brightness" "raise"]))
(key "V" "Mod" (spawn [bash "-c" config.custom.menus.clipboard.show])) (key "V" "Mod" (spawn config.custom.menus.clipboard.show))
(key "V" "Mod+Ctrl" (spawn vm)) (key "V" "Mod+Ctrl" (spawn vm))
(key "V" "Mod+Shift" (spawn [bash "-c" config.custom.menus.clipboard.clear])) (key "V" "Mod+Shift" (spawn config.custom.menus.clipboard.clear))
(key "W" "Mod" focus-window-or-workspace-up) (key "W" "Mod" focus-window-or-workspace-up)
(key "W" "Mod+Shift" move-window-up-or-to-workspace-up) (key "W" "Mod+Shift" move-window-up-or-to-workspace-up)
(key "WheelScrollDown" "Mod" focus-window-or-workspace-down) (key "WheelScrollDown" "Mod" focus-window-or-workspace-down)
@ -183,9 +183,9 @@ in {
# TODO: Uncomment when fixed # TODO: Uncomment when fixed
#// (key "Shift_L" "Mod" focus-workspace-previous) #// (key "Shift_L" "Mod" focus-workspace-previous)
# TODO: Use "Super_L" when fixed # TODO: Use "Super_L" when fixed
(key "Space" "Mod" (spawn [bash "-c" config.custom.menus.show])) (key "Space" "Mod" (spawn config.custom.menus.default.show))
(key "Space" "Mod+Ctrl" (spawn [bash "-c" config.custom.menus.calculator.show])) (key "Space" "Mod+Ctrl" (spawn config.custom.menus.calculator.show))
(key "Space" "Mod+Shift" (spawn [bash "-c" config.custom.menus.search.show])) (key "Space" "Mod+Shift" (spawn config.custom.menus.search.show))
# Media keys # Media keys
# https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h # https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h

View file

@ -8,7 +8,7 @@ with lib; let
in { in {
options.custom.menus = { options.custom.menus = {
enable = mkOption {default = config.custom.full;}; enable = mkOption {default = config.custom.full;};
show = mkOption {default = "";}; default.show = mkOption {default = "";};
calculator.show = mkOption {default = "";}; calculator.show = mkOption {default = "";};
clipboard = { clipboard = {

View file

@ -8,6 +8,7 @@ with lib; let
cfg = config.custom.menus.rofi; cfg = config.custom.menus.rofi;
hm = config.home-manager.users.${config.custom.username}; hm = config.home-manager.users.${config.custom.username};
bash = getExe pkgs.bash;
cliphist = getExe hm.services.cliphist.package; cliphist = getExe hm.services.cliphist.package;
echo = getExe' pkgs.coreutils "echo"; echo = getExe' pkgs.coreutils "echo";
networkmanager_dmenu = getExe pkgs.networkmanager_dmenu; networkmanager_dmenu = getExe pkgs.networkmanager_dmenu;
@ -24,30 +25,21 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
custom = mkIf (config.custom.menu == "rofi") { custom = mkIf (config.custom.menu == "rofi") {
menus = let menus = mapAttrsRecursive (path: value: pkgs.writeShellScript (concatStringsSep "-" (["menus"] ++ path)) value) {
quit = "${pkill} --exact rofi"; default.show = "${pkill} --exact rofi || ${rofi} -show drun -show-icons";
in { calculator.show = ''${pkill} --exact rofi || ${rofi} -show calc -no-history -calc-error-color '#dc322f' -calc-command "${echo} -n '{result}' | ${wl-copy}"'';
show = "${quit} || ${rofi} -show drun -show-icons";
calculator.show = concatStringsSep " " [
"${quit} || ${rofi}"
"-show calc"
"-no-history"
"-calc-error-color '#dc322f'"
''-calc-command "${echo} -n '{result}' | ${wl-copy}"''
];
clipboard = { clipboard = {
show = "${quit} || ${rofi} -show clipboard -show-icons"; show = "${pkill} --exact rofi || ${rofi} -show clipboard -show-icons";
clear = "${cliphist} wipe && ${notify-send} '> cliphist' 'Clipboard cleared' --urgency low"; clear = "${cliphist} wipe && ${notify-send} '> cliphist' 'Clipboard cleared' --urgency low";
clear-silent = "${cliphist} wipe"; clear-silent = "${cliphist} wipe";
}; };
dmenu.show = "${quit} || ${rofi} -dmenu"; dmenu.show = "${pkill} --exact rofi || ${rofi} -dmenu";
emoji.show = "${quit} || ${rofimoji} --prompt 󰱰"; emoji.show = "${pkill} --exact rofi || ${rofimoji} --prompt 󰱰";
network.show = "${quit} || ${networkmanager_dmenu}"; network.show = "${pkill} --exact rofi || ${networkmanager_dmenu}";
search.show = ""; search.show = "";
vault.show = "${quit} || ${rofi-rbw} --prompt 󰌾"; vault.show = "${pkill} --exact rofi || ${rofi-rbw} --prompt 󰌾";
}; };
services = { services = {

View file

@ -19,9 +19,9 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
custom = { custom = mkIf (config.custom.menu == "walker") {
menus = mkIf (config.custom.menu == "walker") { menus = mapAttrsRecursive (path: value: pkgs.writeShellScript (concatStringsSep "-" (["menus"] ++ path)) value) {
show = walker; default.show = walker;
clipboard = { clipboard = {
show = "${walker} --modules clipboard"; show = "${walker} --modules clipboard";

View file

@ -10,16 +10,19 @@ with lib; let
rofi = getExe hm.programs.rofi.package; rofi = getExe hm.programs.rofi.package;
in { in {
options.custom.programs.networkmanager-dmenu.enable = mkOption {default = false;}; options.custom.programs.networkmanager-dmenu = {
enable = mkOption {default = false;};
};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# https://github.com/firecat53/networkmanager-dmenu # https://github.com/firecat53/networkmanager-dmenu
environment.systemPackages = [pkgs.networkmanager_dmenu]; environment.systemPackages = [pkgs.networkmanager_dmenu];
home-manager.users.${config.custom.username} = { home-manager.sharedModules = [
{
# https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example # https://github.com/firecat53/networkmanager-dmenu/blob/main/config.ini.example
#!! Option not available, files written directly xdg.configFile = {
xdg.configFile."networkmanager-dmenu/config.ini".text = let "networkmanager-dmenu/config.ini".text = let
menu = menu =
if config.custom.menu == "rofi" if config.custom.menu == "rofi"
then "${rofi} -dmenu -p 󰛳" then "${rofi} -dmenu -p 󰛳"
@ -28,7 +31,6 @@ in {
[dmenu] [dmenu]
compact = true compact = true
dmenu_command = ${menu} dmenu_command = ${menu}
list_saved = true
active_chars = active_chars =
highlight = true highlight = true
wifi_icons = 󰤯󰤟󰤢󰤥󰤨 wifi_icons = 󰤯󰤟󰤢󰤥󰤨
@ -38,5 +40,7 @@ in {
obscure = true obscure = true
''; '';
}; };
}
];
}; };
} }