{ 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"; "" = "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