add os config
This commit is contained in:
parent
d8d692d313
commit
33bf5ec883
30 changed files with 271 additions and 5 deletions
192
home/lf.nix
Normal file
192
home/lf.nix
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.lf = {
|
||||
enable = true;
|
||||
commands = {
|
||||
trash = ''''${{
|
||||
set -f
|
||||
${pkgs.trash-cli}/bin/trash $fx
|
||||
}}'';
|
||||
extract = ''''${{
|
||||
set -f
|
||||
${pkgs.dtrx}/bin/dtrx -n $fx
|
||||
}}'';
|
||||
compress_gzip = ''''${{
|
||||
set -f
|
||||
${pkgs.gnutar}/bin/tar Oc $(realpath --relative-to $PWD $f) | \
|
||||
${pkgs.pigz}/bin/pigz -cv - > $f.tar.gz
|
||||
}}'';
|
||||
compress_zip = ''''${{
|
||||
set -f
|
||||
${pkgs.zip}/bin/zip -r $f.zip $(realpath --relative-to $PWD $f)
|
||||
}}'';
|
||||
compress_xz = ''''${{
|
||||
set -f
|
||||
${pkgs.gnutar}/bin/tar Oc $(realpath --relative-to $PWD $f) | \
|
||||
${pkgs.pxz}/bin/pxz -cv - > $f.tar.xz
|
||||
}}'';
|
||||
compress_bzip2 = ''''${{
|
||||
set -f
|
||||
${pkgs.gnutar}/bin/tar Oc $(realpath --relative-to $PWD $f) | \
|
||||
${pkgs.pbzip2}/bin/pbzip2 -cv - > $f.tar.bz2
|
||||
}}'';
|
||||
compress_zstd = ''''${{
|
||||
set -f
|
||||
${pkgs.gnutar}/bin/tar --zstd -cvf $f.tar.zst $(realpath --relative-to $PWD $f)
|
||||
}}'';
|
||||
compress_just_tar = ''''${{
|
||||
set -f
|
||||
${pkgs.gnutar}/bin/tar -cvf $f.tar $(realpath --relative-to $PWD $f)
|
||||
}}'';
|
||||
show_size = ''%{{
|
||||
set -f
|
||||
${pkgs.coreutils}/bin/du -sh $f
|
||||
}}'';
|
||||
ncdu = ''''${{
|
||||
set -f
|
||||
${pkgs.ncdu}/bin/ncdu $f
|
||||
}}'';
|
||||
# find = ''''${{
|
||||
# set -f
|
||||
# read -p
|
||||
toggle_preview = ''%{{
|
||||
if [ "$lf_preview" = "true" ]; then
|
||||
lf -remote "send $id :set preview false; set ratios 1:5"
|
||||
else
|
||||
lf -remote "send $id :set preview true; set ratios 1:2:3"
|
||||
fi
|
||||
}}
|
||||
'';
|
||||
paste = ''&{{
|
||||
set -- $(cat ~/.local/share/lf/files)
|
||||
mode="$1"
|
||||
shift
|
||||
case "$mode" in
|
||||
copy)
|
||||
rsync -ah --ignore-existing --info=progress2 --no-inc-recursive -- "$@" . |
|
||||
stdbuf -i0 -o0 -e0 tr '\r' '\n' |
|
||||
while IFS= read -r line; do
|
||||
lf -remote "send $id echo $line"
|
||||
done
|
||||
;;
|
||||
move) mv -n -- "$@" .;;
|
||||
esac
|
||||
rm ~/.local/share/lf/files
|
||||
lf -remote "send clear"
|
||||
}}'';
|
||||
bulk-rename = ''''${{
|
||||
old="$(mktemp)"
|
||||
new="$(mktemp)"
|
||||
if [ -n "$fs" ]; then
|
||||
fs="$(basename -a $fs)"
|
||||
else
|
||||
fs="$(ls -a)"
|
||||
fi
|
||||
printf '%s\n' "$fs" >"$old"
|
||||
printf '%s\n' "$fs" >"$new"
|
||||
$EDITOR "$new"
|
||||
[ "$(wc -l < "$new")" -ne "$(wc -l < "$old")" ] && exit
|
||||
paste "$old" "$new" | while IFS= read -r names; do
|
||||
src="$(printf '%s' "$names" | cut -f1)"
|
||||
dst="$(printf '%s' "$names" | cut -f2)"
|
||||
if [ "$src" = "$dst" ] || [ -e "$dst" ]; then
|
||||
continue
|
||||
fi
|
||||
mv -- "$src" "$dst"
|
||||
done
|
||||
rm -- "$old" "$new"
|
||||
lf -remote "send $id unselect"
|
||||
}}'';
|
||||
alt-paste = ''&{{
|
||||
if [ -n "$fs" ]; then
|
||||
lf -remote "send $id $1; save-select"
|
||||
fi
|
||||
lf -remote "send $id paste"
|
||||
}}'';
|
||||
|
||||
load-select = ''&{{
|
||||
# skip if triggered via save-select from itself
|
||||
if [ "$1" = "$id" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
lf -remote "send $id unselect"
|
||||
if [ -s ~/.local/share/lf/select ]; then
|
||||
files=$(tr '\n' '\0' < ~/.local/share/lf/select | xargs -0 printf ' %q')
|
||||
lf -remote "send $id toggle $files"
|
||||
fi
|
||||
}}'';
|
||||
|
||||
save-select = ''&{{
|
||||
printf "%s" "$fs" > ~/.local/share/lf/select
|
||||
lf -remote "send load-select $id"
|
||||
}}'';
|
||||
|
||||
follow_link = ''%{{
|
||||
lf -remote "send ''${id} select '$(readlink $f)'"
|
||||
}}'';
|
||||
open_folder_in_sxiv = ''%{{
|
||||
nsxiv .
|
||||
}}'';
|
||||
|
||||
};
|
||||
keybindings = {
|
||||
D = "trash";
|
||||
x = "extract";
|
||||
Xg = "compress_gzip";
|
||||
Xz = "compress_zip";
|
||||
Xx = "compress_xz";
|
||||
Xb = "compress_bzip2";
|
||||
Xs = "compress_zstd";
|
||||
Xt = "compress_just_tar";
|
||||
as = "show_size";
|
||||
an = "ncdu";
|
||||
ar = "bulk-rename";
|
||||
af = "follow_link";
|
||||
ai = "open_folder_in_sxiv";
|
||||
E = "$nvim";
|
||||
p = "alt-paste copy";
|
||||
P = "alt-paste cut";
|
||||
"<space>" = ":toggle; down; save-select";
|
||||
u = ":unselect; save-select";
|
||||
v = ":invert; save-select";
|
||||
"<tab>" = "toggle_preview";
|
||||
};
|
||||
|
||||
# previewer.source = "${pkgs.pistol}/bin/pistol";
|
||||
previewer.source = pkgs.writers.writeBash "pistol" ''
|
||||
file=$1
|
||||
w=$2
|
||||
h=$3
|
||||
x=$4
|
||||
y=$5
|
||||
|
||||
if [[ "$( ${pkgs.file}/bin/file -Lb --mime-type "$file")" =~ ^image ]]; then
|
||||
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"
|
||||
'';
|
||||
|
||||
settings = {
|
||||
icons = true;
|
||||
ifs = "\\n";
|
||||
cleaner =
|
||||
let
|
||||
cleaner = pkgs.writers.writeBash "cleaner" ''
|
||||
kitty +kitten icat --clear --stdin no --silent --transfer-mode file < /dev/null > /dev/tty
|
||||
'';
|
||||
in
|
||||
"${cleaner}";
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
load-select
|
||||
setlocal ${config.xdg.userDirs.download} sortby time
|
||||
setlocal ${config.xdg.userDirs.download} reverse
|
||||
setlocal ${config.xdg.userDirs.download} set info size:time
|
||||
'';
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue