From e24fdf517619e84fbba268b0d90627b185665cd6 Mon Sep 17 00:00:00 2001 From: Soispha Date: Sat, 6 May 2023 22:10:50 +0200 Subject: Refactor(hm/conf/lf): Separate keybindings and commands --- home-manager/config/lf/cmds/archive | 39 --- home-manager/config/lf/cmds/broot_jump | 17 -- home-manager/config/lf/cmds/chmod | 14 - home-manager/config/lf/cmds/clear_trash | 9 - home-manager/config/lf/cmds/dl_file | 34 --- home-manager/config/lf/cmds/dragon | 8 - home-manager/config/lf/cmds/dragon_individual | 8 - home-manager/config/lf/cmds/dragon_stay | 8 - home-manager/config/lf/cmds/fzf_jump | 14 - home-manager/config/lf/cmds/help | 8 - home-manager/config/lf/cmds/mk_dir | 9 - home-manager/config/lf/cmds/mk_file | 9 - home-manager/config/lf/cmds/mk_ln | 37 --- home-manager/config/lf/cmds/mk_scr | 31 -- home-manager/config/lf/cmds/open | 12 - home-manager/config/lf/cmds/open_config | 8 - home-manager/config/lf/cmds/restore_trash | 8 - home-manager/config/lf/cmds/set_wall_paper | 11 - home-manager/config/lf/cmds/stripspace | 32 -- home-manager/config/lf/cmds/trash | 22 -- home-manager/config/lf/cmds/unarchive | 22 -- home-manager/config/lf/commands/default.nix | 207 +++++++++++++ home-manager/config/lf/commands/scripts/archive | 39 +++ home-manager/config/lf/commands/scripts/broot_jump | 17 ++ home-manager/config/lf/commands/scripts/chmod | 14 + .../config/lf/commands/scripts/clear_trash | 9 + home-manager/config/lf/commands/scripts/dl_file | 34 +++ home-manager/config/lf/commands/scripts/dragon | 8 + .../config/lf/commands/scripts/dragon_individual | 8 + .../config/lf/commands/scripts/dragon_stay | 8 + home-manager/config/lf/commands/scripts/fzf_jump | 14 + home-manager/config/lf/commands/scripts/help | 8 + home-manager/config/lf/commands/scripts/mk_dir | 9 + home-manager/config/lf/commands/scripts/mk_file | 9 + home-manager/config/lf/commands/scripts/mk_ln | 37 +++ home-manager/config/lf/commands/scripts/mk_scr | 31 ++ home-manager/config/lf/commands/scripts/open | 12 + .../config/lf/commands/scripts/open_config | 8 + .../config/lf/commands/scripts/restore_trash | 8 + .../config/lf/commands/scripts/set_wall_paper | 11 + home-manager/config/lf/commands/scripts/stripspace | 32 ++ home-manager/config/lf/commands/scripts/trash | 22 ++ home-manager/config/lf/commands/scripts/unarchive | 22 ++ home-manager/config/lf/default.nix | 325 +-------------------- home-manager/config/lf/keybindings/default.nix | 117 ++++++++ 45 files changed, 688 insertions(+), 681 deletions(-) delete mode 100755 home-manager/config/lf/cmds/archive delete mode 100755 home-manager/config/lf/cmds/broot_jump delete mode 100755 home-manager/config/lf/cmds/chmod delete mode 100755 home-manager/config/lf/cmds/clear_trash delete mode 100755 home-manager/config/lf/cmds/dl_file delete mode 100755 home-manager/config/lf/cmds/dragon delete mode 100755 home-manager/config/lf/cmds/dragon_individual delete mode 100755 home-manager/config/lf/cmds/dragon_stay delete mode 100755 home-manager/config/lf/cmds/fzf_jump delete mode 100755 home-manager/config/lf/cmds/help delete mode 100755 home-manager/config/lf/cmds/mk_dir delete mode 100755 home-manager/config/lf/cmds/mk_file delete mode 100755 home-manager/config/lf/cmds/mk_ln delete mode 100755 home-manager/config/lf/cmds/mk_scr delete mode 100755 home-manager/config/lf/cmds/open delete mode 100755 home-manager/config/lf/cmds/open_config delete mode 100755 home-manager/config/lf/cmds/restore_trash delete mode 100755 home-manager/config/lf/cmds/set_wall_paper delete mode 100755 home-manager/config/lf/cmds/stripspace delete mode 100755 home-manager/config/lf/cmds/trash delete mode 100755 home-manager/config/lf/cmds/unarchive create mode 100644 home-manager/config/lf/commands/default.nix create mode 100755 home-manager/config/lf/commands/scripts/archive create mode 100755 home-manager/config/lf/commands/scripts/broot_jump create mode 100755 home-manager/config/lf/commands/scripts/chmod create mode 100755 home-manager/config/lf/commands/scripts/clear_trash create mode 100755 home-manager/config/lf/commands/scripts/dl_file create mode 100755 home-manager/config/lf/commands/scripts/dragon create mode 100755 home-manager/config/lf/commands/scripts/dragon_individual create mode 100755 home-manager/config/lf/commands/scripts/dragon_stay create mode 100755 home-manager/config/lf/commands/scripts/fzf_jump create mode 100755 home-manager/config/lf/commands/scripts/help create mode 100755 home-manager/config/lf/commands/scripts/mk_dir create mode 100755 home-manager/config/lf/commands/scripts/mk_file create mode 100755 home-manager/config/lf/commands/scripts/mk_ln create mode 100755 home-manager/config/lf/commands/scripts/mk_scr create mode 100755 home-manager/config/lf/commands/scripts/open create mode 100755 home-manager/config/lf/commands/scripts/open_config create mode 100755 home-manager/config/lf/commands/scripts/restore_trash create mode 100755 home-manager/config/lf/commands/scripts/set_wall_paper create mode 100755 home-manager/config/lf/commands/scripts/stripspace create mode 100755 home-manager/config/lf/commands/scripts/trash create mode 100755 home-manager/config/lf/commands/scripts/unarchive create mode 100644 home-manager/config/lf/keybindings/default.nix diff --git a/home-manager/config/lf/cmds/archive b/home-manager/config/lf/cmds/archive deleted file mode 100755 index fd032dd4..00000000 --- a/home-manager/config/lf/cmds/archive +++ /dev/null @@ -1,39 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -# Option '-f' disables pathname expansion which can be useful when $f, $fs, and -# $fx variables contain names with '*' or '?' characters. However, this option -# is used selectively within individual commands as it can be limiting at -# times. -set -f - -archivers=$(tmp 'echo "gzip xz 7z zip"'); - -readp "File Name: " name; - -FX="$(awk -v Root="$(if [ "$(pwd)" = "/" ]; then pwd; else echo "$(pwd)/";fi)" '{ -for (i=1; i<=NF; i++) { - gsub(Root, "", $i); - print $i; -} -}' "$(tmp "echo \"$fx\" | tr '\n' ' '")")"; - -case $(awk '{for (i=1; i<=NF; i++) print $i}' $archivers | fzf) in - "gzip") - tar -czf "$name".tar.gz $FX - ;; - "xz") - tar -cf "$name".tar $FX - xz -z -9 -e -T0 "$name".tar - ;; - "7z") - 7z a "$name".7z $FX - ;; - "zip") - zip --symlinks -r "$name".zip $FX - ;; -esac -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/broot_jump b/home-manager/config/lf/cmds/broot_jump deleted file mode 100755 index ff62ec90..00000000 --- a/home-manager/config/lf/cmds/broot_jump +++ /dev/null @@ -1,17 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -tmp=$(mktmp) -res="$(broot --outcmd $tmp && cat $tmp | sed 's/cd //')" - -if [ -f "$res" ]; then - cmd="select" -elif [ -d "$res" ]; then - cmd="cd" -fi - -lf -remote "send $id $cmd \"$res\"" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/chmod b/home-manager/config/lf/cmds/chmod deleted file mode 100755 index b1682090..00000000 --- a/home-manager/config/lf/cmds/chmod +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -readp "Mode Bits: " bits - -while read -r file; do - chmod "$bits" "$file" -done < "$(tmp "echo $fx")" - -lf -remote 'send reload' -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/clear_trash b/home-manager/config/lf/cmds/clear_trash deleted file mode 100755 index e1ee3d1e..00000000 --- a/home-manager/config/lf/cmds/clear_trash +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -# could also use --force, for instand removal -trash list | fzf --multi | awk '{print $NF}' | xargs trash empty --match=exact -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/dl_file b/home-manager/config/lf/cmds/dl_file deleted file mode 100755 index 373386f8..00000000 --- a/home-manager/config/lf/cmds/dl_file +++ /dev/null @@ -1,34 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -# Provides the ability to download a file by dropping it into a window - -url=$(dragon -t -x) - -if [ -n "$url" ]; then - prompt "File Name: " - name="" - while [ -z $name ] || [ -e $name ] - do - read -r name - if [ -e "$name" ]; then - prompt "File already exists, overwrite [y|N]: " - read -r ans - - if [ "$ans" = "y" ]; then - break - else - prompt "File Name: " - fi - fi - done - - # Download the file with curl - [ -n "$name" ] && curl -o "$name" "$url" || die "curl failed" -else - die "Url is null!" -fi -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/dragon b/home-manager/config/lf/cmds/dragon deleted file mode 100755 index fce161be..00000000 --- a/home-manager/config/lf/cmds/dragon +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -dragon -a -x "$fx" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/dragon_individual b/home-manager/config/lf/cmds/dragon_individual deleted file mode 100755 index 7adf6924..00000000 --- a/home-manager/config/lf/cmds/dragon_individual +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -dragon "$fx" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/dragon_stay b/home-manager/config/lf/cmds/dragon_stay deleted file mode 100755 index aff9d01d..00000000 --- a/home-manager/config/lf/cmds/dragon_stay +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -dragon -a "$fx" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/fzf_jump b/home-manager/config/lf/cmds/fzf_jump deleted file mode 100755 index e0995761..00000000 --- a/home-manager/config/lf/cmds/fzf_jump +++ /dev/null @@ -1,14 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -res="$(fd . --maxdepth 3 | fzf --header='Jump to location')" -if [ -f "$res" ]; then - cmd="select" -elif [ -d "$res" ]; then - cmd="cd" -fi -lf -remote "send $id $cmd \"$res\"" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/help b/home-manager/config/lf/cmds/help deleted file mode 100755 index 4ec06648..00000000 --- a/home-manager/config/lf/cmds/help +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -cat ~/.config/lf/lfrc | less # TODO make this better -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/mk_dir b/home-manager/config/lf/cmds/mk_dir deleted file mode 100755 index fb69cf92..00000000 --- a/home-manager/config/lf/cmds/mk_dir +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -readp "Directory Name: " dir -mkdir "$dir" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/mk_file b/home-manager/config/lf/cmds/mk_file deleted file mode 100755 index eef8df4b..00000000 --- a/home-manager/config/lf/cmds/mk_file +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -readp "File Name: " name -"$EDITOR" "$name" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/mk_ln b/home-manager/config/lf/cmds/mk_ln deleted file mode 100755 index 066150bd..00000000 --- a/home-manager/config/lf/cmds/mk_ln +++ /dev/null @@ -1,37 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -while IFS= read -r i;do - set -- "$@" "$i" -done < "$(tmp 'cat ~/.local/share/lf/files')" - -mode="$1" -shift - -if [ "$#" -lt 1 ]; then - msg "no files to link" - exit 0 -fi - -case "$mode" in - copy) - while [ "$#" -gt 0 ]; do - file="$1" - ans="$(basename "$file")" - - while [ -e "$ans" ];do - prompt "$ans already exists, new name for link: " - read -r ans - done - - ln -s "$file" "$(pwd)/$ans" - shift - done - ;; -esac -rm ~/.local/share/lf/files -# lf -remote "send clear" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/mk_scr b/home-manager/config/lf/cmds/mk_scr deleted file mode 100755 index 6857e8f6..00000000 --- a/home-manager/config/lf/cmds/mk_scr +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -script=$(mktmp) -cat << EOF > $script -#!/usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -. %SHELL_LIBRARY_PATH - - - -EOF - -readp "Script Name: " script_name -scr="$(pwd)"/"$script_name" - -while [ -e "$scr" ];do - readp "$script_name already exists, new name for script: " script_name - scr="$(pwd)"/"$script_name" -done - -cat "$script" > "$scr" -chmod +x "$scr" - - -"$VISUAL" "$scr" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/open b/home-manager/config/lf/cmds/open deleted file mode 100755 index 2065eee3..00000000 --- a/home-manager/config/lf/cmds/open +++ /dev/null @@ -1,12 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -case $(file --mime-type "$f" -bL) in - text/*|application/json) "$EDITOR" "$f";; - image/*) "$IVIEWER" "$f";; - *) xdg-open "$f";; -esac -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/open_config b/home-manager/config/lf/cmds/open_config deleted file mode 100755 index 55ae68cb..00000000 --- a/home-manager/config/lf/cmds/open_config +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -"$EDITOR" "$(bookmenu -b ~/.config/bookmenu/configs -f fzf -o)" # TODO implement this -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/restore_trash b/home-manager/config/lf/cmds/restore_trash deleted file mode 100755 index 22c16888..00000000 --- a/home-manager/config/lf/cmds/restore_trash +++ /dev/null @@ -1,8 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -trash list | fzf --multi | awk '{print $NF}' | xargs trash restore --match=exact -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/set_wall_paper b/home-manager/config/lf/cmds/set_wall_paper deleted file mode 100755 index 50cc9656..00000000 --- a/home-manager/config/lf/cmds/set_wall_paper +++ /dev/null @@ -1,11 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -die "No yet implemented" # TODO do what the 'die' says -#sed -i "s,export AWMWALLPAPER='.*',export AWMWALLPAPER='${f}'," ${ZDOTDIR}/.zshenv -#swaybg -i "$f" & -#feh --bg-max --no-fehbg "$f" -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/stripspace b/home-manager/config/lf/cmds/stripspace deleted file mode 100755 index 65dabc4c..00000000 --- a/home-manager/config/lf/cmds/stripspace +++ /dev/null @@ -1,32 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -files=$(mktmp); -echo "$fx" > $files; - -awk_source=$(mktmp); -cat << OFT > $awk_source -BEGIN {FS=" "} -{for (i=1; i != NF + 1; i++) - if (i == NF) { - parts[i]=tolower(\$i); - } else { - parts[i]=tolower(\$i"_"); - } -} -END {for (i in parts) printf parts[i]} -OFT - -while read -r file; do - dirty_name=$(mktmp) - basename "$file" > $dirty_name; - clean_name=$(awk -f "$awk_source" "$dirty_name"); - - [ -e "$clean_name" ] && die "file \"$clean_name\" already exists!"; - mv "$(cat $dirty_name)" "$clean_name" || die "Move failed"; - lf -remote 'send reload' -done < "$files"; -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/trash b/home-manager/config/lf/cmds/trash deleted file mode 100755 index 9e2e6aa4..00000000 --- a/home-manager/config/lf/cmds/trash +++ /dev/null @@ -1,22 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -trash_output=$(mktmp); -expected_error_output=$(mktmp); - -# try trashy first -nix run nixpkgs#trashy -- put "$fx" 2> $trash_output; - -cat << EOF > $expected_error_output; -error: Error during a \`trash\` operation: Unknown { description: "Path: '\"/.Trash-1000\"'. Message: Permission denied (os error 13)" } -EOF - -if [ "$(cat $expected_error_output)" = "$(cat $trash_output)" ];then - warning "Deleting with trash-cli to the /.Trash folder"; - # this file could not be trashed because it is on the tempfs volume, trash-cli can do this this - printf "%s" "$fx" | tr '\n' ' ' | xargs trash-put; -fi -# vim: ft=sh diff --git a/home-manager/config/lf/cmds/unarchive b/home-manager/config/lf/cmds/unarchive deleted file mode 100755 index dfa82c9a..00000000 --- a/home-manager/config/lf/cmds/unarchive +++ /dev/null @@ -1,22 +0,0 @@ -#! /usr/bin/env dash -# shellcheck disable=SC2086 -# shellcheck source=/dev/null -# . ~/.local/lib/shell/lib -. %SHELL_LIBRARY_PATH - -# extract the current file with the right command -# (xkcd link: https://xkcd.com/1168/) -set -f -case "$f" in - *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; - *.tar.gz|*.tgz) tar xzvf $f;; - *.tar.xz|*.txz) tar xJvf $f;; - *.zip) unzip $f;; - *.rar) - die "rar is a unfree format!" - #unrar x $f - ;; - *.7z) 7z x $f;; - *) die "Unsupported format" ;; -esac -# vim: ft=sh diff --git a/home-manager/config/lf/commands/default.nix b/home-manager/config/lf/commands/default.nix new file mode 100644 index 00000000..446466be --- /dev/null +++ b/home-manager/config/lf/commands/default.nix @@ -0,0 +1,207 @@ +{ + pkgs, + sysLib, + ... +}: let + functionCall = { + file, + dependencies, + ... + }: + sysLib.makeShellScriptWithLibraryAndKeepPath { + name = "${builtins.baseNameOf file}"; + script = file; + dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash coreutils;}); + } + + "/bin/${builtins.baseNameOf file}"; + shell = { + file, + dependencies, + ... + }: '' + ''${{ + ${functionCall {inherit file dependencies;}} + }} + ''; # closes the lf tui + pipe = { + file, + dependencies, + ... + }: '' + %{{ + ${functionCall {inherit file dependencies;}} + }} + ''; # runs the command in the ui/term bar + async = { + file, + dependencies, + ... + }: '' + &{{ + ${functionCall {inherit file dependencies;}} + }} + ''; # runs the command in the background + wait = { + file, + dependencies, + ... + }: '' + !{{ + ${functionCall {inherit file dependencies;}} + }} + ''; # adds a prompt after the command has run +in { + archive = shell { + file = ./scripts/archive; + dependencies = builtins.attrValues { + inherit + (pkgs) + fzf + gnutar + xz + p7zip + zip + ; + }; + }; + broot_jump = shell { + file = ./scripts/broot_jump; + dependencies = builtins.attrValues { + inherit (pkgs) broot; + }; + }; + chmod = pipe { + file = ./scripts/chmod; + dependencies = []; + }; + clear_trash = shell { + file = ./scripts/clear_trash; + dependencies = builtins.attrValues { + inherit + (pkgs) + fzf + trashy + ; + }; + }; + dl_file = pipe { + file = ./scripts/dl_file; + dependencies = builtins.attrValues { + inherit + (pkgs) + xdragon + curl + ; + }; + }; + dragon = pipe { + file = ./scripts/dragon; + dependencies = builtins.attrValues { + inherit + (pkgs) + xdragon + ; + }; + }; + dragon_individual = pipe { + file = ./scripts/dragon_individual; + dependencies = builtins.attrValues { + inherit + (pkgs) + xdragon + ; + }; + }; + dragon_stay = pipe { + file = ./scripts/dragon_stay; + dependencies = builtins.attrValues { + inherit + (pkgs) + xdragon + ; + }; + }; + fzf_jump = shell { + file = ./scripts/fzf_jump; + dependencies = builtins.attrValues { + inherit (pkgs) fzf lf gnused; + }; + }; + help = shell { + file = ./scripts/help; + dependencies = []; + }; + mk_dir = pipe { + file = ./scripts/mk_dir; + dependencies = []; + }; + mk_file = shell { + file = ./scripts/mk_file; + dependencies = []; + }; + mk_ln = pipe { + file = ./scripts/mk_ln; + dependencies = []; + }; + mk_scr = shell { + file = ./scripts/mk_scr; + dependencies = builtins.attrValues {inherit (pkgs) neovim;}; + }; + open = shell { + file = ./scripts/open; + dependencies = builtins.attrValues {inherit (pkgs) file xdg-utils neovim git;}; + }; + open_config = shell { + file = ./scripts/open_config; + dependencies = builtins.attrValues { + #inherit + #(pkgs) + ## TODO rewrite this: bookmenu, https://github.com/jarun/buku + # + #buku + #; + }; + }; + restore_trash = shell { + file = ./scripts/restore_trash; + dependencies = builtins.attrValues { + inherit + (pkgs) + fzf + trashy + ; + }; + }; + set_wall_paper = pipe { + file = ./scripts/set_wall_paper; + dependencies = []; + }; + stripspace = pipe { + file = ./scripts/stripspace; + dependencies = []; + }; + trash = pipe { + file = ./scripts/trash; + dependencies = builtins.attrValues { + inherit + (pkgs) + trashy + trash-cli + findutils + ; + }; + }; + unarchive = pipe { + file = ./scripts/unarchive; + dependencies = builtins.attrValues { + inherit + (pkgs) + gnutar + unzip + # TODO this is unfree! unrar + + p7zip + ; + }; + }; +} diff --git a/home-manager/config/lf/commands/scripts/archive b/home-manager/config/lf/commands/scripts/archive new file mode 100755 index 00000000..fd032dd4 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/archive @@ -0,0 +1,39 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +# Option '-f' disables pathname expansion which can be useful when $f, $fs, and +# $fx variables contain names with '*' or '?' characters. However, this option +# is used selectively within individual commands as it can be limiting at +# times. +set -f + +archivers=$(tmp 'echo "gzip xz 7z zip"'); + +readp "File Name: " name; + +FX="$(awk -v Root="$(if [ "$(pwd)" = "/" ]; then pwd; else echo "$(pwd)/";fi)" '{ +for (i=1; i<=NF; i++) { + gsub(Root, "", $i); + print $i; +} +}' "$(tmp "echo \"$fx\" | tr '\n' ' '")")"; + +case $(awk '{for (i=1; i<=NF; i++) print $i}' $archivers | fzf) in + "gzip") + tar -czf "$name".tar.gz $FX + ;; + "xz") + tar -cf "$name".tar $FX + xz -z -9 -e -T0 "$name".tar + ;; + "7z") + 7z a "$name".7z $FX + ;; + "zip") + zip --symlinks -r "$name".zip $FX + ;; +esac +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/broot_jump b/home-manager/config/lf/commands/scripts/broot_jump new file mode 100755 index 00000000..ff62ec90 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/broot_jump @@ -0,0 +1,17 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +tmp=$(mktmp) +res="$(broot --outcmd $tmp && cat $tmp | sed 's/cd //')" + +if [ -f "$res" ]; then + cmd="select" +elif [ -d "$res" ]; then + cmd="cd" +fi + +lf -remote "send $id $cmd \"$res\"" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/chmod b/home-manager/config/lf/commands/scripts/chmod new file mode 100755 index 00000000..b1682090 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/chmod @@ -0,0 +1,14 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +readp "Mode Bits: " bits + +while read -r file; do + chmod "$bits" "$file" +done < "$(tmp "echo $fx")" + +lf -remote 'send reload' +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/clear_trash b/home-manager/config/lf/commands/scripts/clear_trash new file mode 100755 index 00000000..e1ee3d1e --- /dev/null +++ b/home-manager/config/lf/commands/scripts/clear_trash @@ -0,0 +1,9 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +# could also use --force, for instand removal +trash list | fzf --multi | awk '{print $NF}' | xargs trash empty --match=exact +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/dl_file b/home-manager/config/lf/commands/scripts/dl_file new file mode 100755 index 00000000..373386f8 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/dl_file @@ -0,0 +1,34 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +# Provides the ability to download a file by dropping it into a window + +url=$(dragon -t -x) + +if [ -n "$url" ]; then + prompt "File Name: " + name="" + while [ -z $name ] || [ -e $name ] + do + read -r name + if [ -e "$name" ]; then + prompt "File already exists, overwrite [y|N]: " + read -r ans + + if [ "$ans" = "y" ]; then + break + else + prompt "File Name: " + fi + fi + done + + # Download the file with curl + [ -n "$name" ] && curl -o "$name" "$url" || die "curl failed" +else + die "Url is null!" +fi +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/dragon b/home-manager/config/lf/commands/scripts/dragon new file mode 100755 index 00000000..fce161be --- /dev/null +++ b/home-manager/config/lf/commands/scripts/dragon @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +dragon -a -x "$fx" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/dragon_individual b/home-manager/config/lf/commands/scripts/dragon_individual new file mode 100755 index 00000000..7adf6924 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/dragon_individual @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +dragon "$fx" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/dragon_stay b/home-manager/config/lf/commands/scripts/dragon_stay new file mode 100755 index 00000000..aff9d01d --- /dev/null +++ b/home-manager/config/lf/commands/scripts/dragon_stay @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +dragon -a "$fx" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/fzf_jump b/home-manager/config/lf/commands/scripts/fzf_jump new file mode 100755 index 00000000..e0995761 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/fzf_jump @@ -0,0 +1,14 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +res="$(fd . --maxdepth 3 | fzf --header='Jump to location')" +if [ -f "$res" ]; then + cmd="select" +elif [ -d "$res" ]; then + cmd="cd" +fi +lf -remote "send $id $cmd \"$res\"" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/help b/home-manager/config/lf/commands/scripts/help new file mode 100755 index 00000000..4ec06648 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/help @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +cat ~/.config/lf/lfrc | less # TODO make this better +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/mk_dir b/home-manager/config/lf/commands/scripts/mk_dir new file mode 100755 index 00000000..fb69cf92 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/mk_dir @@ -0,0 +1,9 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +readp "Directory Name: " dir +mkdir "$dir" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/mk_file b/home-manager/config/lf/commands/scripts/mk_file new file mode 100755 index 00000000..eef8df4b --- /dev/null +++ b/home-manager/config/lf/commands/scripts/mk_file @@ -0,0 +1,9 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +readp "File Name: " name +"$EDITOR" "$name" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/mk_ln b/home-manager/config/lf/commands/scripts/mk_ln new file mode 100755 index 00000000..066150bd --- /dev/null +++ b/home-manager/config/lf/commands/scripts/mk_ln @@ -0,0 +1,37 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +while IFS= read -r i;do + set -- "$@" "$i" +done < "$(tmp 'cat ~/.local/share/lf/files')" + +mode="$1" +shift + +if [ "$#" -lt 1 ]; then + msg "no files to link" + exit 0 +fi + +case "$mode" in + copy) + while [ "$#" -gt 0 ]; do + file="$1" + ans="$(basename "$file")" + + while [ -e "$ans" ];do + prompt "$ans already exists, new name for link: " + read -r ans + done + + ln -s "$file" "$(pwd)/$ans" + shift + done + ;; +esac +rm ~/.local/share/lf/files +# lf -remote "send clear" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/mk_scr b/home-manager/config/lf/commands/scripts/mk_scr new file mode 100755 index 00000000..6857e8f6 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/mk_scr @@ -0,0 +1,31 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +script=$(mktmp) +cat << EOF > $script +#!/usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +. %SHELL_LIBRARY_PATH + + + +EOF + +readp "Script Name: " script_name +scr="$(pwd)"/"$script_name" + +while [ -e "$scr" ];do + readp "$script_name already exists, new name for script: " script_name + scr="$(pwd)"/"$script_name" +done + +cat "$script" > "$scr" +chmod +x "$scr" + + +"$VISUAL" "$scr" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/open b/home-manager/config/lf/commands/scripts/open new file mode 100755 index 00000000..2065eee3 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/open @@ -0,0 +1,12 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +case $(file --mime-type "$f" -bL) in + text/*|application/json) "$EDITOR" "$f";; + image/*) "$IVIEWER" "$f";; + *) xdg-open "$f";; +esac +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/open_config b/home-manager/config/lf/commands/scripts/open_config new file mode 100755 index 00000000..55ae68cb --- /dev/null +++ b/home-manager/config/lf/commands/scripts/open_config @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +"$EDITOR" "$(bookmenu -b ~/.config/bookmenu/configs -f fzf -o)" # TODO implement this +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/restore_trash b/home-manager/config/lf/commands/scripts/restore_trash new file mode 100755 index 00000000..22c16888 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/restore_trash @@ -0,0 +1,8 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +trash list | fzf --multi | awk '{print $NF}' | xargs trash restore --match=exact +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/set_wall_paper b/home-manager/config/lf/commands/scripts/set_wall_paper new file mode 100755 index 00000000..50cc9656 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/set_wall_paper @@ -0,0 +1,11 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +die "No yet implemented" # TODO do what the 'die' says +#sed -i "s,export AWMWALLPAPER='.*',export AWMWALLPAPER='${f}'," ${ZDOTDIR}/.zshenv +#swaybg -i "$f" & +#feh --bg-max --no-fehbg "$f" +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/stripspace b/home-manager/config/lf/commands/scripts/stripspace new file mode 100755 index 00000000..65dabc4c --- /dev/null +++ b/home-manager/config/lf/commands/scripts/stripspace @@ -0,0 +1,32 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +files=$(mktmp); +echo "$fx" > $files; + +awk_source=$(mktmp); +cat << OFT > $awk_source +BEGIN {FS=" "} +{for (i=1; i != NF + 1; i++) + if (i == NF) { + parts[i]=tolower(\$i); + } else { + parts[i]=tolower(\$i"_"); + } +} +END {for (i in parts) printf parts[i]} +OFT + +while read -r file; do + dirty_name=$(mktmp) + basename "$file" > $dirty_name; + clean_name=$(awk -f "$awk_source" "$dirty_name"); + + [ -e "$clean_name" ] && die "file \"$clean_name\" already exists!"; + mv "$(cat $dirty_name)" "$clean_name" || die "Move failed"; + lf -remote 'send reload' +done < "$files"; +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/trash b/home-manager/config/lf/commands/scripts/trash new file mode 100755 index 00000000..9e2e6aa4 --- /dev/null +++ b/home-manager/config/lf/commands/scripts/trash @@ -0,0 +1,22 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +trash_output=$(mktmp); +expected_error_output=$(mktmp); + +# try trashy first +nix run nixpkgs#trashy -- put "$fx" 2> $trash_output; + +cat << EOF > $expected_error_output; +error: Error during a \`trash\` operation: Unknown { description: "Path: '\"/.Trash-1000\"'. Message: Permission denied (os error 13)" } +EOF + +if [ "$(cat $expected_error_output)" = "$(cat $trash_output)" ];then + warning "Deleting with trash-cli to the /.Trash folder"; + # this file could not be trashed because it is on the tempfs volume, trash-cli can do this this + printf "%s" "$fx" | tr '\n' ' ' | xargs trash-put; +fi +# vim: ft=sh diff --git a/home-manager/config/lf/commands/scripts/unarchive b/home-manager/config/lf/commands/scripts/unarchive new file mode 100755 index 00000000..dfa82c9a --- /dev/null +++ b/home-manager/config/lf/commands/scripts/unarchive @@ -0,0 +1,22 @@ +#! /usr/bin/env dash +# shellcheck disable=SC2086 +# shellcheck source=/dev/null +# . ~/.local/lib/shell/lib +. %SHELL_LIBRARY_PATH + +# extract the current file with the right command +# (xkcd link: https://xkcd.com/1168/) +set -f +case "$f" in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; + *.tar.gz|*.tgz) tar xzvf $f;; + *.tar.xz|*.txz) tar xJvf $f;; + *.zip) unzip $f;; + *.rar) + die "rar is a unfree format!" + #unrar x $f + ;; + *.7z) 7z x $f;; + *) die "Unsupported format" ;; +esac +# vim: ft=sh diff --git a/home-manager/config/lf/default.nix b/home-manager/config/lf/default.nix index 6591cd56..ac092cc8 100644 --- a/home-manager/config/lf/default.nix +++ b/home-manager/config/lf/default.nix @@ -1,56 +1,11 @@ { - config, pkgs, sysLib, + config, ... }: let - functionCall = { - file, - dependencies, - ... - }: - sysLib.makeShellScriptWithLibraryAndKeepPath { - name = "${builtins.baseNameOf file}"; - script = file; - dependencies = dependencies ++ (builtins.attrValues {inherit (pkgs) dash coreutils;}); - } - + "/bin/${builtins.baseNameOf file}"; - shell = { - file, - dependencies, - ... - }: '' - ''${{ - ${functionCall {inherit file dependencies;}} - }} - ''; # closes the lf tui - pipe = { - file, - dependencies, - ... - }: '' - %{{ - ${functionCall {inherit file dependencies;}} - }} - ''; # runs the command in the ui/term bar - async = { - file, - dependencies, - ... - }: '' - &{{ - ${functionCall {inherit file dependencies;}} - }} - ''; # runs the command in the background - wait = { - file, - dependencies, - ... - }: '' - !{{ - ${functionCall {inherit file dependencies;}} - }} - ''; # adds a prompt after the command has run + commands = import ./commands {inherit pkgs sysLib;}; + keybindings = import ./keybindings {inherit config;}; in { xdg.configFile."lf/icons".source = ./icons; xdg.configFile."lf/colors".source = ./colors; @@ -60,280 +15,8 @@ in { programs.lf = { enable = true; - commands = { - archive = shell { - file = ./cmds/archive; - dependencies = builtins.attrValues { - inherit - (pkgs) - fzf - gnutar - xz - p7zip - zip - ; - }; - }; - broot_jump = shell { - file = ./cmds/broot_jump; - dependencies = builtins.attrValues { - inherit (pkgs) broot; - }; - }; - chmod = pipe { - file = ./cmds/chmod; - dependencies = []; - }; - clear_trash = shell { - file = ./cmds/clear_trash; - dependencies = builtins.attrValues { - inherit - (pkgs) - fzf - trashy - ; - }; - }; - dl_file = pipe { - file = ./cmds/dl_file; - dependencies = builtins.attrValues { - inherit - (pkgs) - xdragon - curl - ; - }; - }; - dragon = pipe { - file = ./cmds/dragon; - dependencies = builtins.attrValues { - inherit - (pkgs) - xdragon - ; - }; - }; - dragon_individual = pipe { - file = ./cmds/dragon_individual; - dependencies = builtins.attrValues { - inherit - (pkgs) - xdragon - ; - }; - }; - dragon_stay = pipe { - file = ./cmds/dragon_stay; - dependencies = builtins.attrValues { - inherit - (pkgs) - xdragon - ; - }; - }; - fzf_jump = shell { - file = ./cmds/fzf_jump; - dependencies = builtins.attrValues { - inherit (pkgs) fzf lf gnused; - }; - }; - help = shell { - file = ./cmds/help; - dependencies = []; - }; - mk_dir = pipe { - file = ./cmds/mk_dir; - dependencies = []; - }; - mk_file = shell { - file = ./cmds/mk_file; - dependencies = []; - }; - mk_ln = pipe { - file = ./cmds/mk_ln; - dependencies = []; - }; - mk_scr = shell { - file = ./cmds/mk_scr; - dependencies = builtins.attrValues {inherit (pkgs) neovim;}; - }; - open = shell { - file = ./cmds/open; - dependencies = builtins.attrValues {inherit (pkgs) file xdg-utils neovim git;}; - }; - open_config = shell { - file = ./cmds/open_config; - dependencies = builtins.attrValues { - #inherit - #(pkgs) - ## TODO rewrite this: bookmenu, https://github.com/jarun/buku - # - #buku - #; - }; - }; - restore_trash = shell { - file = ./cmds/restore_trash; - dependencies = builtins.attrValues { - inherit - (pkgs) - fzf - trashy - ; - }; - }; - set_wall_paper = pipe { - file = ./cmds/set_wall_paper; - dependencies = []; - }; - stripspace = pipe { - file = ./cmds/stripspace; - dependencies = []; - }; - trash = pipe { - file = ./cmds/trash; - dependencies = builtins.attrValues { - inherit - (pkgs) - trashy - trash-cli - findutils - ; - }; - }; - unarchive = pipe { - file = ./cmds/unarchive; - dependencies = builtins.attrValues { - inherit - (pkgs) - gnutar - unzip - # TODO this is unfree! unrar - - p7zip - ; - }; - }; - }; - keybindings = { - # Remove some defaults - m = null; - "\"'\"" = null; - "'\"'" = null; - d = null; - c = null; - e = null; - j = null; - k = null; - l = null; - ";" = null; - - # File Openers - ee = "\$\$EDITOR \"$f\""; - u = "%\$IVIEWER \"$f\""; - cc = "\$sudo -e \"$f\""; - - # Archive Mappings - au = "unarchive"; - aa = "archive"; - - # Trash Mappings - dd = "trash"; - jc = "clear_trash"; - jr = "restore_trash"; - - # Broot Mapping - f = "fzf_jump"; - - # Dragon Mapping - dr = "dragon"; - ds = "dragon-stay"; - di = "dragon-individual"; - #dm = "mvdragon"; - #dc = "cpdragon"; - dl = "dlfile"; + inherit commands keybindings; - cs = "stripspace"; - - # Vim keys - h = "updir"; - t = "down"; - n = "up"; - s = "open"; - - # Basic Functions - bn = "help"; - kk = "mk_ln"; - "." = "set hidden!"; - DD = "delete"; - p = "paste"; - x = "cut"; - y = "copy"; - "" = "open"; - mf = "mk_file"; - md = "mk_dir"; - ms = "mk_scr"; - ch = "chmod"; - bg = "set_wall_paper"; - o = "open_config"; - br = "\$vimv \$fx"; # TODO what is this command? - r = "rename"; - H = "top"; - L = "bottom"; - R = "reload"; - C = "clear"; - U = "unselect"; - - # Movement - gjr = "cd ~/.local/share/Trash/files"; - gus = "cd /run/${config.home.username}"; - - "gr." = "cd ~/repos"; - grr = "cd ~/repos/rust"; - grp = "cd ~/repos/python"; - grc = "cd ~/repos/c"; - gra = "cd ~/repos/auto_hot_key"; - grn = "cd ~/repos/nix"; - grt = "cd ~/repos/tex"; - grs = "cd ~/repos/shell"; - grch = "cd ~/repos/chroot"; - grpe = "cd ~/repos/perl"; - grja = "cd ~/repos/java"; - grjs = "cd ~/repos/java_script"; - # ------------- - "gm." = "cd ~/media"; - gmpi = "cd ~/media/pictures"; - gmd = "cd ~/media/downloads"; - gmpl = "cd ~/media/playlist"; - gmi = "cd ~/media/isos"; - # ------------- - "gs." = "cd ~/school"; - gsgs = "cd ~/school/geschichte"; - gsch = "cd ~/school/chemie"; - gsen = "cd ~/school/english"; - gsgo = "cd ~/school/geographie"; - gsin = "cd ~/school/infomatik"; - gsso = "cd ~/school/sozialkunde"; - gskr = "cd ~/school/katholische_religion"; - gsmu = "cd ~/school/musik"; - gsla = "cd ~/school/latein"; - gsde = "cd ~/school/deutsch"; - gsma = "cd ~/school/mathematik"; - gspr = "cd ~/school/praktikum"; - gsbi = "cd ~/school/biologie"; - gssp = "cd ~/school/sport"; - gsphy = "cd ~/school/physik"; - gsphi = "cd ~/school/philosophie"; - - gc = "cd ~/.config"; - gl = "cd ~/.local"; - gE = "cd /etc"; - - "gU." = "cd /usr"; - gUs = " cd /usr/share"; - - gt = "cd /tmp"; - }; previewer = { keybinding = "i"; source = "${pkgs.ctpv}/bin/ctpv"; diff --git a/home-manager/config/lf/keybindings/default.nix b/home-manager/config/lf/keybindings/default.nix new file mode 100644 index 00000000..bc2178cf --- /dev/null +++ b/home-manager/config/lf/keybindings/default.nix @@ -0,0 +1,117 @@ +{config, ...}: { + # Remove some defaults + m = null; + "\"'\"" = null; + "'\"'" = null; + d = null; + c = null; + e = null; + j = null; + k = null; + l = null; + ";" = null; + + # File Openers + ee = "\$\$EDITOR \"$f\""; + u = "%\$IVIEWER \"$f\""; + cc = "\$sudo -e \"$f\""; + + # Archive Mappings + au = "unarchive"; + aa = "archive"; + + # Trash Mappings + dd = "trash"; + jc = "clear_trash"; + jr = "restore_trash"; + + # Broot Mapping + f = "fzf_jump"; + + # Dragon Mapping + dr = "dragon"; + ds = "dragon-stay"; + di = "dragon-individual"; + #dm = "mvdragon"; + #dc = "cpdragon"; + dl = "dlfile"; + + cs = "stripspace"; + + # Vim keys + h = "updir"; + t = "down"; + n = "up"; + s = "open"; + + # Basic Functions + bn = "help"; + kk = "mk_ln"; + "." = "set hidden!"; + DD = "delete"; + p = "paste"; + x = "cut"; + y = "copy"; + "" = "open"; + mf = "mk_file"; + md = "mk_dir"; + ms = "mk_scr"; + ch = "chmod"; + bg = "set_wall_paper"; + o = "open_config"; + br = "\$vimv \$fx"; # TODO what is this command? + r = "rename"; + H = "top"; + L = "bottom"; + R = "reload"; + C = "clear"; + U = "unselect"; + + # Movement + gjr = "cd ~/.local/share/Trash/files"; + gus = "cd /run/${config.home.username}"; + + "gr." = "cd ~/repos"; + grr = "cd ~/repos/rust"; + grp = "cd ~/repos/python"; + grc = "cd ~/repos/c"; + gra = "cd ~/repos/auto_hot_key"; + grn = "cd ~/repos/nix"; + grt = "cd ~/repos/tex"; + grs = "cd ~/repos/shell"; + grpe = "cd ~/repos/perl"; + grja = "cd ~/repos/java"; + grjs = "cd ~/repos/java_script"; + # ------------- + "gm." = "cd ~/media"; + gmpi = "cd ~/media/pictures"; + gmd = "cd ~/media/downloads"; + gmm = "cd ~/media/music"; + gmi = "cd ~/media/isos"; + # ------------- + "gs." = "cd ~/school"; + gsgs = "cd ~/school/geschichte"; + gsch = "cd ~/school/chemie"; + gsen = "cd ~/school/english"; + gsgo = "cd ~/school/geographie"; + gsin = "cd ~/school/infomatik"; + gsso = "cd ~/school/sozialkunde"; + gskr = "cd ~/school/katholische_religion"; + gsmu = "cd ~/school/musik"; + gsla = "cd ~/school/latein"; + gsde = "cd ~/school/deutsch"; + gsma = "cd ~/school/mathematik"; + gsbi = "cd ~/school/biologie"; + gssp = "cd ~/school/sport"; + gsphy = "cd ~/school/physik"; + gsphi = "cd ~/school/philosophie"; + + gc = "cd ~/.config"; + gl = "cd ~/.local"; + gE = "cd /etc"; + + "gU." = "cd /usr"; + gUs = " cd /usr/share"; + + gt = "cd /tmp"; +} -- cgit 1.4.1