about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--home-manger/lf/cmds/archive.sh40
-rw-r--r--home-manger/lf/cmds/broot_jump.sh19
-rw-r--r--home-manger/lf/cmds/chmod.sh17
-rw-r--r--home-manger/lf/cmds/clear_trash.sh10
-rw-r--r--home-manger/lf/cmds/dl_file.sh36
-rw-r--r--home-manger/lf/cmds/dragon.sh11
-rw-r--r--home-manger/lf/cmds/dragon_individual.sh10
-rw-r--r--home-manger/lf/cmds/dragon_stay.sh11
-rw-r--r--home-manger/lf/cmds/fzf_jump.sh17
-rw-r--r--home-manger/lf/cmds/help.sh10
-rw-r--r--home-manger/lf/cmds/mk_dir.sh12
-rw-r--r--home-manger/lf/cmds/mk_file.sh11
-rw-r--r--home-manger/lf/cmds/mk_ln.sh43
-rw-r--r--home-manger/lf/cmds/mk_scr.sh29
-rw-r--r--home-manger/lf/cmds/open.sh16
-rw-r--r--home-manger/lf/cmds/open_config.sh10
-rw-r--r--home-manger/lf/cmds/restore_trash.sh10
-rw-r--r--home-manger/lf/cmds/set_wall_paper.sh15
-rw-r--r--home-manger/lf/cmds/stripspace.sh10
-rw-r--r--home-manger/lf/cmds/sudo_mk_file.sh13
-rw-r--r--home-manger/lf/cmds/trash.sh27
-rw-r--r--home-manger/lf/cmds/unarchive.sh22
-rw-r--r--home-manger/lf/colors196
-rw-r--r--home-manger/lf/default.nix200
-rw-r--r--home-manger/lf/icons357
25 files changed, 1152 insertions, 0 deletions
diff --git a/home-manger/lf/cmds/archive.sh b/home-manger/lf/cmds/archive.sh
new file mode 100644
index 00000000..48544365
--- /dev/null
+++ b/home-manger/lf/cmds/archive.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/home/dt/.local/lib/shell/lib
+. ~/.local/lib/shell/lib
+
+
+# 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
+
+fx="$*"
+
+archivers=$(mktmp)
+echo "tar+zip tar+xz 7z zip" > $archivers;
+
+readp "File Name: " name
+
+
+case $(awk '{for (i=1; i<=NF; i++) print $i}' $archivers | fzf) in
+    "tar+zip")
+        tar -czf "$name".tar.gz "$name"
+        ;;
+    "tar+xz")
+        tar -cf "$name".tar $fx
+        xz -z -9 -e -T0 "$name".tar
+        ;;
+    "7z")
+        7z a "$name".7z $fx
+        ;;
+    "zip")
+        zip -r "$name".zip $fx
+        ;;
+esac
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/broot_jump.sh b/home-manger/lf/cmds/broot_jump.sh
new file mode 100644
index 00000000..188c9508
--- /dev/null
+++ b/home-manger/lf/cmds/broot_jump.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+f=$(mktemp)
+res="$(broot --outcmd $f && cat $f | sed 's/cd //')"
+rm -f "$f"
+if [ -f "$res" ]; then
+    cmd="select"
+elif [ -d "$res" ]; then
+    cmd="cd"
+fi
+lf -remote "send $id $cmd \"$res\""
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/chmod.sh b/home-manger/lf/cmds/chmod.sh
new file mode 100644
index 00000000..f6a87336
--- /dev/null
+++ b/home-manger/lf/cmds/chmod.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+readp "Mode Bits: " ans
+
+for file in $fx
+do
+    chmod "$ans" "$file"
+done
+
+lf -remote 'send reload'
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/clear_trash.sh b/home-manger/lf/cmds/clear_trash.sh
new file mode 100644
index 00000000..c02321f2
--- /dev/null
+++ b/home-manger/lf/cmds/clear_trash.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+trash-empty
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/dl_file.sh b/home-manger/lf/cmds/dl_file.sh
new file mode 100644
index 00000000..9cb9023c
--- /dev/null
+++ b/home-manger/lf/cmds/dl_file.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+# Provides the ability to download a file by dropping it into a window
+
+url=$(dragon-drop -t -x)
+
+if [ -n "$url" ]; then
+  printf "File Name: "
+  name=""
+  while [ -z $name ] || [ -e $name ]
+  do
+    read -r name
+    if [ -e "$name" ]; then
+      printf "File already exists, overwrite (y|n): "
+      read -r ans
+
+      if [ "$ans" = "y" ]; then
+        break
+      else
+        printf "File Name: "
+      fi
+    fi
+  done
+
+  # Download the file with curl
+  [ -n "$name" ] && curl -o "$name" "$url" || exit 1
+else
+  exit 1
+fi
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/dragon.sh b/home-manger/lf/cmds/dragon.sh
new file mode 100644
index 00000000..36e94706
--- /dev/null
+++ b/home-manger/lf/cmds/dragon.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+dragon-drop -a -x "$fx"
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/dragon_individual.sh b/home-manger/lf/cmds/dragon_individual.sh
new file mode 100644
index 00000000..abcadb13
--- /dev/null
+++ b/home-manger/lf/cmds/dragon_individual.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+dragon-drop "$fx"
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/dragon_stay.sh b/home-manger/lf/cmds/dragon_stay.sh
new file mode 100644
index 00000000..60195d09
--- /dev/null
+++ b/home-manger/lf/cmds/dragon_stay.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+dragon-drop -a "$fx"
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/fzf_jump.sh b/home-manger/lf/cmds/fzf_jump.sh
new file mode 100644
index 00000000..688efdb9
--- /dev/null
+++ b/home-manger/lf/cmds/fzf_jump.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+res="$(find . -maxdepth 3 | fzf --reverse --header='Jump to location')"
+if [ -f "$res" ]; then
+    cmd="select"
+elif [ -d "$res" ]; then
+    cmd="cd"
+fi
+lf -remote "send $id $cmd \"$res\""
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/help.sh b/home-manger/lf/cmds/help.sh
new file mode 100644
index 00000000..8fedd0ea
--- /dev/null
+++ b/home-manger/lf/cmds/help.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+cat ~/.config/lf/lfrc
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/mk_dir.sh b/home-manger/lf/cmds/mk_dir.sh
new file mode 100644
index 00000000..bfa0627d
--- /dev/null
+++ b/home-manger/lf/cmds/mk_dir.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+readp "Directory Name: " ans
+mkdir $ans
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/mk_file.sh b/home-manger/lf/cmds/mk_file.sh
new file mode 100644
index 00000000..044016a6
--- /dev/null
+++ b/home-manger/lf/cmds/mk_file.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+readp "File Name: " name
+$EDITOR "$name"
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/mk_ln.sh b/home-manger/lf/cmds/mk_ln.sh
new file mode 100644
index 00000000..71a70a36
--- /dev/null
+++ b/home-manger/lf/cmds/mk_ln.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+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 ls -a "$(pwd)" | grep --word-regexp "$ans" > /dev/null;do
+                printf "\"%s\" already exists, new name for link: " "$ans"
+                read -r ans
+            done
+
+            ln -s "$file" "$(pwd)/$ans"
+
+
+            shift
+        done
+        ;;
+esac
+rm ~/.local/share/lf/files
+# lf -remote "send clear"
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/mk_scr.sh b/home-manger/lf/cmds/mk_scr.sh
new file mode 100644
index 00000000..b6c17458
--- /dev/null
+++ b/home-manger/lf/cmds/mk_scr.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+star=$(mktmp)
+cat << EOF > $star
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
+EOF
+
+readp "Script Name: " script_name
+scr="$(pwd)"/"$script_name"
+
+[ -e $scr ] && die "$script_name exitst, exiting.."
+
+cat "$star" > $scr
+chmod +x $scr
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
+
+$VISUAL $scr
diff --git a/home-manger/lf/cmds/open.sh b/home-manger/lf/cmds/open.sh
new file mode 100644
index 00000000..8376be21
--- /dev/null
+++ b/home-manger/lf/cmds/open.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+case $(file --mime-type "$f" -bL) in
+    text/*|application/json) $EDITOR "$f";;
+    image/*) $IVIEWER "$f";;
+    *) xdg-open "$f" ;;
+esac
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/open_config.sh b/home-manger/lf/cmds/open_config.sh
new file mode 100644
index 00000000..93c174d7
--- /dev/null
+++ b/home-manger/lf/cmds/open_config.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+$EDITOR "$(bookmenu -b ~/.config/bookmenu/configs -f fzf -o)"
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/restore_trash.sh b/home-manger/lf/cmds/restore_trash.sh
new file mode 100644
index 00000000..432e9e9b
--- /dev/null
+++ b/home-manger/lf/cmds/restore_trash.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+trash-restore
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/set_wall_paper.sh b/home-manger/lf/cmds/set_wall_paper.sh
new file mode 100644
index 00000000..4599de2a
--- /dev/null
+++ b/home-manger/lf/cmds/set_wall_paper.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+die "No yet implemented"
+#sed -i "s,export AWMWALLPAPER='.*',export AWMWALLPAPER='${f}'," ${ZDOTDIR}/.zshenv
+#swaybg -i "$f" &
+#feh --bg-max --no-fehbg "$f"
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/stripspace.sh b/home-manger/lf/cmds/stripspace.sh
new file mode 100644
index 00000000..c7f68767
--- /dev/null
+++ b/home-manger/lf/cmds/stripspace.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+stripspace "$f"
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/sudo_mk_file.sh b/home-manger/lf/cmds/sudo_mk_file.sh
new file mode 100644
index 00000000..1f06a92f
--- /dev/null
+++ b/home-manger/lf/cmds/sudo_mk_file.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+readp "File Name: " ans
+sudo $EDITOR "$ans"
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/trash.sh b/home-manger/lf/cmds/trash.sh
new file mode 100644
index 00000000..4598b4fd
--- /dev/null
+++ b/home-manger/lf/cmds/trash.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+files=$(printf "$fx" | tr '\n' ';')
+
+while [ "$files" ]; do
+    # extract the substring from start of string up to delimiter.
+    # this is the first "element" of the string.
+    file=${files%%;*}
+
+    trash-put "$(basename "$file")"
+    # if there's only one element left, set `files` to an empty string.
+    # this causes us to exit this `while` loop.
+    # else, we delete the first "element" of the string from files, and move onto the next.
+    if [ "$files" = "$file" ]; then
+        files=''
+    else
+        files="${files#*;}"
+    fi
+done
+
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/cmds/unarchive.sh b/home-manger/lf/cmds/unarchive.sh
new file mode 100644
index 00000000..47a713fa
--- /dev/null
+++ b/home-manger/lf/cmds/unarchive.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# shellcheck disable=SC2086
+# shellcheck source=/dev/null
+. ~/.local/lib/shell/lib
+
+
+# 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) unrar x $f;;
+    *.7z) 7z x $f;;
+    *) warning "Unsupported format" ;;
+esac
+
+
+
+if [ -d /tmp/LIB_FILE_TEMP_DIR/ ];then rm -r /tmp/LIB_FILE_TEMP_DIR/; fi
diff --git a/home-manger/lf/colors b/home-manger/lf/colors
new file mode 100644
index 00000000..c4b6417b
--- /dev/null
+++ b/home-manger/lf/colors
@@ -0,0 +1,196 @@
+# vim:ft=dircolors
+# (This is not a dircolors file but it helps to highlight colors and comments)
+
+# default values from dircolors
+# (entries with a leading # are not implemented in lf)
+# #no     00              # NORMAL
+# fi      00              # FILE
+# #rs     0               # RESET
+# di      01;34           # DIR
+# ln      01;36           # LINK
+# #mh     00              # MULTIHARDLINK
+# pi      40;33           # FIFO
+# so      01;35           # SOCK
+# #do     01;35           # DOOR
+# bd      40;33;01        # BLK
+# cd      40;33;01        # CHR
+# or      40;31;01        # ORPHAN
+# #mi     00              # MISSING
+# su      37;41           # SETUID
+# sg      30;43           # SETGID
+# #ca     30;41           # CAPABILITY
+# tw      30;42           # STICKY_OTHER_WRITABLE
+# ow      34;42           # OTHER_WRITABLE
+# st      37;44           # STICKY
+# ex      01;32           # EXEC
+
+# default values from lf (with matching order)
+# ln      01;36   # LINK
+# or      31;01   # ORPHAN
+# tw      01;34   # STICKY_OTHER_WRITABLE
+# ow      01;34   # OTHER_WRITABLE
+# st      01;34   # STICKY
+# di      01;34   # DIR
+# pi      33      # FIFO
+# so      01;35   # SOCK
+# bd      33;01   # BLK
+# cd      33;01   # CHR
+# su      01;32   # SETUID
+# sg      01;32   # SETGID
+# ex      01;32   # EXEC
+# fi      00      # FILE
+
+
+# file types (with matching order)
+ln      01;33       # LINK
+#ln      01;34       # LINK
+or      01;35;46    # ORPHAN
+tw      35          # STICKY_OTHER_WRITABLE
+ow      35          # OTHER_WRITABLE
+st      01;36       # STICKY
+di      01;36       # DIR
+pi      33          # FIFO
+so      01;35       # SOCK
+bd      33;01       # BLK
+cd      33;01       # CHR
+su      01;32       # SETUID
+sg      01;32       # SETGID
+ex      01;31;44    # EXEC
+fi      00          # FILE
+
+# links
+# ~/.librewolf      01;34
+~/.cups           01;34
+~/.mozilla        01;34
+#~/.pki            01;34
+~/.ssh            01;34
+#~/.lesskey        01;34
+#~/.pulse-cookie   01;34
+
+~/.steampid       01;34
+~/.steam          01;34
+~/.steampath      01;34
+
+# nix
+~/.nix-profile      01;34
+~/.nix-defexpr      01;34
+
+# can now be removed
+~/.indentconfig.yaml      01;34
+
+# archives or compressed (dircolors defaults)
+*.tar   01;31
+*.tgz   01;31
+*.arc   01;31
+*.arj   01;31
+*.taz   01;31
+*.lha   01;31
+*.lz4   01;31
+*.lzh   01;31
+*.lzma  01;31
+*.tlz   01;31
+*.txz   01;31
+*.tzo   01;31
+*.t7z   01;31
+*.zip   01;31
+*.z     01;31
+*.dz    01;31
+*.gz    01;31
+*.lrz   01;31
+*.lz    01;31
+*.lzo   01;31
+*.xz    01;31
+*.zst   01;31
+*.tzst  01;31
+*.bz2   01;31
+*.bz    01;31
+*.tbz   01;31
+*.tbz2  01;31
+*.tz    01;31
+*.deb   01;31
+*.rpm   01;31
+*.jar   01;31
+*.war   01;31
+*.ear   01;31
+*.sar   01;31
+*.rar   01;31
+*.alz   01;31
+*.ace   01;31
+*.zoo   01;31
+*.cpio  01;31
+*.7z    01;31
+*.rz    01;31
+*.cab   01;31
+*.wim   01;31
+*.swm   01;31
+*.dwm   01;31
+*.esd   01;31
+
+# image formats (dircolors defaults)
+*.jpg   01;35
+*.jpeg  01;35
+*.mjpg  01;35
+*.mjpeg 01;35
+*.gif   01;35
+*.bmp   01;35
+*.pbm   01;35
+*.pgm   01;35
+*.ppm   01;35
+*.tga   01;35
+*.xbm   01;35
+*.xpm   01;35
+*.tif   01;35
+*.tiff  01;35
+*.png   01;35
+*.svg   01;35
+*.svgz  01;35
+*.mng   01;35
+*.pcx   01;35
+*.mov   01;35
+*.mpg   01;35
+*.mpeg  01;35
+*.m2v   01;35
+*.mkv   01;35
+*.webm  01;35
+*.ogm   01;35
+*.mp4   01;35
+*.m4v   01;35
+*.mp4v  01;35
+*.vob   01;35
+*.qt    01;35
+*.nuv   01;35
+*.wmv   01;35
+*.asf   01;35
+*.rm    01;35
+*.rmvb  01;35
+*.flc   01;35
+*.avi   01;35
+*.fli   01;35
+*.flv   01;35
+*.gl    01;35
+*.dl    01;35
+*.xcf   01;35
+*.xwd   01;35
+*.yuv   01;35
+*.cgm   01;35
+*.emf   01;35
+*.ogv   01;35
+*.ogx   01;35
+
+# audio formats (dircolors defaults)
+*.aac   00;36
+*.au    00;36
+*.flac  00;36
+*.m4a   00;36
+*.mid   00;36
+*.midi  00;36
+*.mka   00;36
+*.mp3   00;36
+*.mpc   00;36
+*.ogg   00;36
+*.ra    00;36
+*.wav   00;36
+*.oga   00;36
+*.opus  00;36
+*.spx   00;36
+*.xspf  00;36
diff --git a/home-manger/lf/default.nix b/home-manger/lf/default.nix
new file mode 100644
index 00000000..fd8c4b39
--- /dev/null
+++ b/home-manger/lf/default.nix
@@ -0,0 +1,200 @@
+{
+  config,
+  pkgs,
+  ...
+}: let
+  shell = file:
+    "\${{" + builtins.readFile "${file}" + "}}"; # closes the lf tui
+  pipe = file:
+    "%{{" + builtins.readFile "${file}" + "}}"; # runs the command in the ui,term bar
+  async = file:
+    "&{{" + builtins.readFile "${file}" + "}}"; # runs the command in the background
+  wait = file:
+    "!{{" + builtins.readFile "${file}" + "}}"; # adds a prompt after the command has run
+in {
+  home-manager.xdg.configFile."lf/icons" = {
+    target = "lf/icons";
+    source = "./icons";
+  };
+  home-manager.xdg.configFile."lf/colors" = {
+    target = "lf/colors";
+    source = "./colors";
+  };
+
+  home-manager.programs.lf = {
+    enable = true;
+
+    commands = {
+      help = shell "./cmds/help.sh";
+      open = shell "./cmds/open.sh";
+      mk_dir = pipe "./cmds/mk_dir.sh";
+      mk_scr = shell "./cmds/mk_scr.sh";
+      mk_file = shell "./cmds/mk_file.sh";
+      chmod = pipe "./cmds/chmod.sh";
+      mk_ln = shell "./cmds/mk_ln.sh"; # TODO could be pipe, right?
+      sudo_mk_file = shell "./cmds/sudo_mk_file.sh";
+      set_wall_paper = pipe "./cmds/set_wall_paper.sh";
+      fzf_jump = shell "./cmds/fzf_jump.sh";
+      broot_jump = shell "./cmds/broot_jump.sh";
+      open_config = shell "./cmds/open_config.sh";
+
+      dragon = pipe "./cmds/dragon.sh";
+      dragon_stay = pipe "./cmds/dragon_stay.sh";
+      dragon_individual = pipe "./cmds/dragon_individual.sh";
+      dl_file = pipe "./cmds/dl_file.sh";
+
+      unarchive = pipe "./cmds/unarchive.sh";
+      archive = pipe "./cmds/archive.sh";
+
+      trash = pipe "./cmds/trash.sh";
+      clear_trash = pipe "./cmds/clear_trash.sh";
+      restore_trash = shell "./cmds/restore_trash.sh";
+
+      stripspace = pipe "./cmds/stripspace.sh";
+    };
+    keybindings = {
+      # Remove some defaults
+      m = null;
+      "'" = null;
+      #" = null; # TODO
+      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";
+      a = "archive";
+
+      # Trash Mappings
+      dd = "trash";
+      jc = "clear_trash";
+      jr = "restore_trash";
+
+      # Broot Mapping
+      f = "broot_jump";
+
+      # Dragon Mapping
+      dr = "dragon";
+      ds = "dragon-stay";
+      di = "dragon-individual";
+      #dm = "mvdragon";
+      #dc = "cpdragon";
+      dl = "dlfile";
+
+      ss = "stripspace";
+
+      # Vim keys
+      h = "updir";
+      t = "down";
+      n = "up";
+      s = "open";
+
+      # Basic Functions
+      bn = "help";
+      kk = "mklkn";
+      "." = "set hidden!";
+      DD = "delete";
+      p = "paste";
+      x = "cut";
+      y = "copy";
+      "<enter>" = "open";
+      mf = "mkfile";
+      mr = "sudomkfile";
+      md = "mkdir";
+      ms = "mkscr";
+      ch = "chmod";
+      bg = "setwallpaper";
+      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/dt";
+
+      "gr." = "cd /home/dt/repos";
+      grr = "cd /home/dt/repos/rust";
+      grp = "cd /home/dt/repos/python";
+      grc = "cd /home/dt/repos/c";
+      gra = "cd /home/dt/repos/auto_hot_key";
+      grt = "cd /home/dt/repos/tex";
+      grs = "cd /home/dt/repos/shell";
+
+      grch = "cd /home/dt/repos/chroot";
+      grpe = "cd /home/dt/repos/perl";
+      grja = "cd /home/dt/repos/java";
+      grjs = "cd /home/dt/repos/java_script";
+      # -------------
+      "gm." = "cd /home/dt/media";
+      gmpi = "cd /home/dt/media/pictures";
+      gmdo = "cd /home/dt/media/downloads";
+      gmpl = "cd /home/dt/media/playlist";
+      gmis = "cd /home/dt/media/isos";
+      # -------------
+      "gs." = "cd /home/dt/school";
+      gsgs = "cd /home/dt/school/geschichte";
+      gsch = "cd /home/dt/school/chemie";
+      gsen = "cd /home/dt/school/english";
+      gsgo = "cd /home/dt/school/geographie";
+      gsin = "cd /home/dt/school/infomatik";
+      gsso = "cd /home/dt/school/sozialkunde";
+      gskr = "cd /home/dt/school/katholische_religion";
+      gsmu = "cd /home/dt/school/musik";
+      gsla = "cd /home/dt/school/latein";
+      gsde = "cd /home/dt/school/deutsch";
+      gsma = "cd /home/dt/school/mathematik";
+      gspr = "cd /home/dt/school/praktikum";
+      gsbi = "cd /home/dt/school/biologie";
+      gssp = "cd /home/dt/school/sport";
+      gsphy = "cd /home/dt/school/physik";
+      gsphi = "cd /home/dt/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 = "ctpv";
+    };
+    settings = {
+      cleaner = "ctpvclear";
+      autoquit = true; # quit the server, if no clients are left
+      dircounts = true; # count things in directories TODO this has performance impact
+      dirpreviews = true; # preview for directories
+      drawbox = true;
+      errorfmt = "\\033[1;91m==> ERROR:\\033[0m\\033[1;93m%s\\033[0m";
+      hidden = true; # show hidden files
+      icons = true;
+      ifs =  "\n"; # internal field separator for shell commands
+      info = ["size"]; # show the size of a directory
+      shell = "sh";
+      shellopts = ["-e" "-u"]; # e: exit on error; u: error for unset variables
+    };
+    extraConfig = ''
+      &ctpv -s $id
+      &ctpvquit $id
+    '';
+  };
+}
+# vim: ts=2
+
diff --git a/home-manger/lf/icons b/home-manger/lf/icons
new file mode 100644
index 00000000..68d53e34
--- /dev/null
+++ b/home-manger/lf/icons
@@ -0,0 +1,357 @@
+# vim:ft=conf
+
+# These examples require Nerd Fonts or a compatible font to be used.
+# See https://www.nerdfonts.com for more information.
+
+# default values from lf (with matching order)
+# ln      l       # LINK
+# or      l       # ORPHAN
+# tw      t       # STICKY_OTHER_WRITABLE
+# ow      d       # OTHER_WRITABLE
+# st      t       # STICKY
+# di      d       # DIR
+# pi      p       # FIFO
+# so      s       # SOCK
+# bd      b       # BLK
+# cd      c       # CHR
+# su      u       # SETUID
+# sg      g       # SETGID
+# ex      x       # EXEC
+# fi      -       # FILE
+
+# file types (with matching order)
+ln             # LINK
+or             # ORPHAN
+tw      t       # STICKY_OTHER_WRITABLE
+ow             # OTHER_WRITABLE
+st      t       # STICKY
+di             # DIR
+pi      p       # FIFO
+so      s       # SOCK
+bd      b       # BLK
+cd      c       # CHR
+su      u       # SETUID
+sg      g       # SETGID
+ex             # EXEC
+fi             # FILE
+
+# file extensions (vim-devicons)
+*.styl          
+*.sass          
+*.scss          
+*.htm           
+*.html          
+*.slim          
+*.haml          
+*.ejs           
+*.css           
+*.less          
+*.md            
+*.mdx           
+*.markdown      
+*.rmd           
+*.json          
+*.webmanifest   
+*.js            
+*.mjs           
+*.jsx           
+*.rb            
+*.gemspec       
+*.rake          
+*.php           
+*.py            
+*.pyc           
+*.pyo           
+*.pyd           
+*.coffee        
+*.mustache      
+*.hbs           
+*.conf          
+*.ini           
+*.yml           
+*.yaml          
+*.toml          
+*.bat           
+*.mk            
+*.jpg           
+*.jpeg          
+*.bmp           
+*.png           
+*.webp          
+*.gif           
+*.ico           
+*.twig          
+*.cpp           
+*.c++           
+*.cxx           
+*.cc            
+*.cp            
+*.c             
+*.cs            
+*.h             
+*.hh            
+*.hpp           
+*.hxx           
+*.hs            
+*.lhs           
+*.nix           
+*.lua           
+*.java          
+*.sh            
+*.fish          
+*.bash          
+*.zsh           
+*.ksh           
+*.csh           
+*.awk           
+*.ps1           
+*.ml            λ
+*.mli           λ
+*.diff          
+*.db            
+*.sql           
+*.dump          
+*.clj           
+*.cljc          
+*.cljs          
+*.edn           
+*.scala         
+*.go            
+*.dart          
+*.xul           
+*.sln           
+*.suo           
+*.pl            
+*.pm            
+*.t             
+*.rss           
+'*.f#'          
+*.fsscript      
+*.fsx           
+*.fs            
+*.fsi           
+*.rs            
+*.rlib          
+*.d             
+*.erl           
+*.hrl           
+*.ex            
+*.exs           
+*.eex           
+*.leex          
+*.heex          
+*.vim           
+*.ai            
+*.psd           
+*.psb           
+*.ts            
+*.tsx           
+*.jl            
+*.pp            
+*.vue           ﵂
+*.elm           
+*.swift         
+*.xcplayground  
+*.tex           ﭨ
+*.r             ﳒ
+*.rproj         鉶
+*.sol           ﲹ
+*.pem           
+
+# file names (vim-devicons) (case-insensitive not supported in lf)
+*gruntfile.coffee       
+*gruntfile.js           
+*gruntfile.ls           
+*gulpfile.coffee        
+*gulpfile.js            
+*gulpfile.ls            
+*mix.lock               
+*dropbox                
+*.ds_store              
+*.gitconfig             
+*.gitignore             
+*.gitattributes         
+*.gitlab-ci.yml         
+*.bashrc                
+*.zshrc                 
+*.zshenv                
+*.zprofile              
+*.vimrc                 
+*.gvimrc                
+*_vimrc                 
+*_gvimrc                
+*.bashprofile           
+*favicon.ico            
+*license                
+*node_modules           
+*react.jsx              
+*procfile               
+*dockerfile             
+*docker-compose.yml     
+*rakefile               
+*config.ru              
+*gemfile                
+*makefile               
+*cmakelists.txt         
+*robots.txt             ﮧ
+
+# file names (case-sensitive adaptations)
+*Gruntfile.coffee       
+*Gruntfile.js           
+*Gruntfile.ls           
+*Gulpfile.coffee        
+*Gulpfile.js            
+*Gulpfile.ls            
+*Dropbox                
+*.DS_Store              
+*LICENSE                
+*React.jsx              
+*Procfile               
+*Dockerfile             
+*Docker-compose.yml     
+*Rakefile               
+*Gemfile                
+*Makefile               
+*CMakeLists.txt         
+
+# file patterns (vim-devicons) (patterns not supported in lf)
+# .*jquery.*\.js$         
+# .*angular.*\.js$        
+# .*backbone.*\.js$       
+# .*require.*\.js$        
+# .*materialize.*\.js$    
+# .*materialize.*\.css$   
+# .*mootools.*\.js$       
+# .*vimrc.*               
+# Vagrantfile$            
+
+# file patterns (file name adaptations)
+*jquery.min.js          
+*angular.min.js         
+*backbone.min.js        
+*require.min.js         
+*materialize.min.js     
+*materialize.min.css    
+*mootools.min.js        
+*vimrc                  
+Vagrantfile             
+
+# archives or compressed (extensions from dircolors defaults)
+*.tar   
+*.tgz   
+*.arc   
+*.arj   
+*.taz   
+*.lha   
+*.lz4   
+*.lzh   
+*.lzma  
+*.tlz   
+*.txz   
+*.tzo   
+*.t7z   
+*.zip   
+*.z     
+*.dz    
+*.gz    
+*.lrz   
+*.lz    
+*.lzo   
+*.xz    
+*.zst   
+*.tzst  
+*.bz2   
+*.bz    
+*.tbz   
+*.tbz2  
+*.tz    
+*.deb   
+*.rpm   
+*.jar   
+*.war   
+*.ear   
+*.sar   
+*.rar   
+*.alz   
+*.ace   
+*.zoo   
+*.cpio  
+*.7z    
+*.rz    
+*.cab   
+*.wim   
+*.swm   
+*.dwm   
+*.esd   
+
+# image formats (extensions from dircolors defaults)
+*.jpg   
+*.jpeg  
+*.mjpg  
+*.mjpeg 
+*.gif   
+*.bmp   
+*.pbm   
+*.pgm   
+*.ppm   
+*.tga   
+*.xbm   
+*.xpm   
+*.tif   
+*.tiff  
+*.png   
+*.svg   
+*.svgz  
+*.mng   
+*.pcx   
+*.mov   
+*.mpg   
+*.mpeg  
+*.m2v   
+*.mkv   
+*.webm  
+*.ogm   
+*.mp4   
+*.m4v   
+*.mp4v  
+*.vob   
+*.qt    
+*.nuv   
+*.wmv   
+*.asf   
+*.rm    
+*.rmvb  
+*.flc   
+*.avi   
+*.fli   
+*.flv   
+*.gl    
+*.dl    
+*.xcf   
+*.xwd   
+*.yuv   
+*.cgm   
+*.emf   
+*.ogv   
+*.ogx   
+
+# audio formats (extensions from dircolors defaults)
+*.aac   
+*.au    
+*.flac  
+*.m4a   
+*.mid   
+*.midi  
+*.mka   
+*.mp3   
+*.mpc   
+*.ogg   
+*.ra    
+*.wav   
+*.oga   
+*.opus  
+*.spx   
+*.xspf  
+
+# other formats
+*.pdf   