2024-04-14 05:40:02 -07:00
|
|
|
{ config, pkgs, lib, ... }:
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
options.lf = {
|
|
|
|
|
enable = lib.mkEnableOption "Enables lf";
|
|
|
|
|
hiddenfiles = lib.mkOption { default = [ ".*" ]; };
|
|
|
|
|
leader = lib.mkOption { default = "<space>"; };
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
config = lib.mkIf config.lf.enable {
|
|
|
|
|
xdg.configFile."lf/icons".source = ./icons;
|
|
|
|
|
|
2024-04-21 01:43:11 -07:00
|
|
|
fish.extraFunctions = lib.mkIf config.fish.enable {
|
|
|
|
|
lf = {
|
|
|
|
|
body = ''cd "$(command ${pkgs.lf}/bin/lf -print-last-dir "$argv")"'';
|
|
|
|
|
wraps = "${pkgs.lf}/bin/lf";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2024-04-14 05:40:02 -07:00
|
|
|
programs.lf = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
# Hide specific files rather than "hidden" files
|
|
|
|
|
hiddenfiles = config.lf.hiddenfiles;
|
|
|
|
|
ratios = [
|
|
|
|
|
2
|
|
|
|
|
3
|
|
|
|
|
];
|
|
|
|
|
preview = true;
|
|
|
|
|
ignorecase = true;
|
|
|
|
|
icons = true;
|
|
|
|
|
number = true;
|
|
|
|
|
relativenumber = true;
|
|
|
|
|
};
|
|
|
|
|
commands = {
|
2025-11-05 08:27:13 -08:00
|
|
|
dragon-out = ''%${pkgs.dragon-drop}/bin/dragon -a -x "$fx"'';
|
2024-04-18 00:53:41 -07:00
|
|
|
trash = lib.mkIf config.trash.enable ''
|
|
|
|
|
%${pkgs.trash-cli}/bin/trash "$fx"
|
|
|
|
|
'';
|
|
|
|
|
zoxide-cd = lib.mkIf config.zoxide.enable ''
|
|
|
|
|
''${{
|
|
|
|
|
result="$(${pkgs.zoxide}/bin/zoxide query -i | sed 's/\\/\\\\/g;s/"/\\"/g')"
|
|
|
|
|
${pkgs.lf}/bin/lf -remote "send $id cd \"$result\""
|
|
|
|
|
}}
|
|
|
|
|
'';
|
2024-04-14 05:40:02 -07:00
|
|
|
mkdir = ''
|
|
|
|
|
''${{
|
|
|
|
|
printf "Directory Name: "
|
|
|
|
|
read DIR
|
|
|
|
|
mkdir $DIR
|
|
|
|
|
}}
|
|
|
|
|
'';
|
|
|
|
|
mkfile = ''
|
|
|
|
|
''${{
|
|
|
|
|
printf "File Name: "
|
|
|
|
|
read FILE
|
2024-04-17 21:03:24 -07:00
|
|
|
touch $FILE
|
2024-04-14 05:40:02 -07:00
|
|
|
}}
|
|
|
|
|
'';
|
2024-04-18 00:53:41 -07:00
|
|
|
on-cd = lib.mkIf config.zoxide.enable ''
|
|
|
|
|
&{{
|
|
|
|
|
${pkgs.zoxide}/bin/zoxide add "$PWD"
|
|
|
|
|
}}
|
|
|
|
|
'';
|
2024-04-14 05:40:02 -07:00
|
|
|
};
|
|
|
|
|
keybindings = let
|
|
|
|
|
leader = config.lf.leader;
|
|
|
|
|
in {
|
|
|
|
|
"${leader}" = "";
|
|
|
|
|
"v" = ":toggle; down";
|
|
|
|
|
"." = "set hidden!";
|
2024-04-17 21:03:24 -07:00
|
|
|
"x" = lib.mkIf config.trash.enable "trash";
|
2024-04-14 05:40:02 -07:00
|
|
|
"${leader}d" = "mkdir";
|
|
|
|
|
"${leader}f" = "mkfile";
|
|
|
|
|
"${leader}m" = "dragon-out";
|
2024-04-18 00:53:41 -07:00
|
|
|
"${leader}z" = lib.mkIf config.zoxide.enable "zoxide-cd";
|
2024-04-14 05:40:02 -07:00
|
|
|
};
|
|
|
|
|
extraConfig =
|
|
|
|
|
let
|
|
|
|
|
previewer =
|
|
|
|
|
pkgs.writeShellScriptBin "pv.sh" ''
|
|
|
|
|
file=$1
|
|
|
|
|
w=$2
|
|
|
|
|
h=$3
|
|
|
|
|
x=$4
|
|
|
|
|
y=$5
|
|
|
|
|
|
|
|
|
|
if [[ "$( ${pkgs.file}/bin/file -Lb --mime-type "$file")" =~ ^image ]]; then
|
|
|
|
|
${pkgs.kitty}/bin/kitty +kitten icat --silent --stdin no --transfer-mode file --place "''${w}x''${h}@''${x}x''${y}" "$file" < /dev/null > /dev/tty
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
${pkgs.pistol}/bin/pistol "$file"
|
|
|
|
|
'';
|
|
|
|
|
cleaner = pkgs.writeShellScriptBin "clean.sh" ''
|
|
|
|
|
${pkgs.kitty}/bin/kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
|
|
|
|
|
'';
|
|
|
|
|
in
|
|
|
|
|
''
|
|
|
|
|
set cleaner ${cleaner}/bin/clean.sh
|
|
|
|
|
set previewer ${previewer}/bin/pv.sh
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|