213 lines
5.7 KiB
Nix
213 lines
5.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
inputs,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.custom.programs.walker;
|
|
in {
|
|
options.custom.programs.walker.enable = mkOption {default = false;};
|
|
|
|
config.home-manager.users.${config.custom.username} = mkIf cfg.enable {
|
|
imports = [inputs.walker.homeManagerModules.default];
|
|
|
|
# https://github.com/abenz1267/walker
|
|
# https://github.com/abenz1267/walker?tab=readme-ov-file#building-from-source
|
|
# https://github.com/abenz1267/walker/blob/master/nix/hm-module.nix
|
|
programs.walker = {
|
|
enable = true;
|
|
|
|
#!! Service must be restarted for changes to take effect
|
|
#?? systemctl --user restart walker.service
|
|
runAsService = true;
|
|
|
|
# https://github.com/abenz1267/walker/wiki/Basic-Configuration
|
|
# https://github.com/abenz1267/walker/blob/master/internal/config/config.default.json
|
|
config = {
|
|
activation_mode.disabled = true; # Key chords
|
|
force_keyboard_focus = true;
|
|
list.placeholder = "";
|
|
search.placeholder = "";
|
|
|
|
# HACK: Window client required to send Esc key on Hyprland
|
|
as_window = true; # Disable layer
|
|
|
|
# https://github.com/abenz1267/walker/wiki/Modules
|
|
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/tree/master/Papirus/64x64
|
|
disabled = [
|
|
"commands"
|
|
"custom_commands"
|
|
"websearch" # Replaced by custom plugin
|
|
"windows"
|
|
];
|
|
|
|
builtins = {
|
|
applications = {
|
|
# BUG: Ghost entries are still visible with single module
|
|
actions.enabled = false;
|
|
hide_actions_with_empty_query = true;
|
|
|
|
placeholder = "";
|
|
switcher_only = false;
|
|
};
|
|
|
|
calc = {
|
|
icon = "accessories-calculator";
|
|
min_chars = 1;
|
|
placeholder = "";
|
|
prefix = "=";
|
|
show_icon_when_single = true;
|
|
switcher_only = false;
|
|
};
|
|
|
|
clipboard = {
|
|
max_entries = 50;
|
|
placeholder = "";
|
|
switcher_only = true;
|
|
};
|
|
|
|
dmenu = {
|
|
keep_sort = true;
|
|
placeholder = "";
|
|
switcher_only = true;
|
|
};
|
|
|
|
emojis = {
|
|
placeholder = "";
|
|
prefix = "`";
|
|
switcher_only = false;
|
|
};
|
|
|
|
finder = {
|
|
icon = "filetypes";
|
|
placeholder = "";
|
|
prefix = "/";
|
|
show_icon_when_single = true;
|
|
switcher_only = false;
|
|
};
|
|
|
|
runner = {
|
|
icon = "utilities-x-terminal";
|
|
placeholder = "";
|
|
prefix = ">";
|
|
show_icon_when_single = true;
|
|
switcher_only = false;
|
|
};
|
|
|
|
ssh = {
|
|
icon = "folder-remote-symbolic";
|
|
placeholder = "";
|
|
prefix = "ssh";
|
|
show_icon_when_single = true;
|
|
switcher_only = false;
|
|
};
|
|
|
|
switcher = {
|
|
icon = "application-default-icon";
|
|
prefix = "?";
|
|
show_icon_when_single = true;
|
|
};
|
|
};
|
|
|
|
# https://github.com/abenz1267/walker/wiki/Plugins
|
|
plugins = [
|
|
# Search engines by keyword prefix
|
|
{
|
|
name = "search";
|
|
placeholder = "";
|
|
show_icon_when_single = true;
|
|
switcher_only = true;
|
|
|
|
src = "${pkgs.writeShellApplication {
|
|
name = "search";
|
|
text = builtins.readFile ./search.sh;
|
|
|
|
runtimeInputs = with pkgs; [
|
|
coreutils
|
|
jq
|
|
xdg-utils
|
|
];
|
|
}}/bin/search '%TERM%'";
|
|
}
|
|
];
|
|
};
|
|
|
|
# https://github.com/abenz1267/walker/wiki/Theming
|
|
theme = {
|
|
style = ''
|
|
#box {
|
|
font: larger ${config.custom.font.sans-serif};
|
|
}
|
|
|
|
placeholder {
|
|
font: larger ${config.custom.font.monospace};
|
|
}
|
|
|
|
${builtins.readFile ./style.css}
|
|
'';
|
|
|
|
#!! Inherit from default layout
|
|
# https://github.com/abenz1267/walker/blob/master/internal/config/layout.default.json
|
|
layout.ui.window = let
|
|
w = 750;
|
|
h = 250;
|
|
in {
|
|
width = w;
|
|
height = h;
|
|
|
|
box = {
|
|
h_align = "fill";
|
|
width = -1;
|
|
height = -1;
|
|
|
|
ai_scroll = {
|
|
# BUG: AiScroll H/VScrollbarPolicy applies to Scroll widget
|
|
h_scrollbar_policy = "external";
|
|
v_scrollbar_policy = "external";
|
|
};
|
|
|
|
scroll = {
|
|
h_align = "fill";
|
|
h_scrollbar_policy = "external";
|
|
v_scrollbar_policy = "external";
|
|
|
|
list = {
|
|
width = -1;
|
|
height = -1;
|
|
min_width = -1;
|
|
min_height = -1;
|
|
max_width = w;
|
|
max_height = h;
|
|
|
|
item = {
|
|
icon = {
|
|
icon_size = "larger"; # 64px
|
|
pixel_size = 32; # Downscale
|
|
};
|
|
|
|
text = {
|
|
sub = {
|
|
hide = true; # Subtext
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
search = {
|
|
input = {
|
|
icons = false;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
# HACK: Allow child processes to live, otherwise applications launched through service are killed on stop
|
|
# https://www.freedesktop.org/software/systemd/man/latest/systemd.kill.html#KillMode=
|
|
systemd.user.services.walker.Service.KillMode = "process";
|
|
};
|
|
}
|