Dumb as fuck file manager is a minimal tui file manager with the goal of not being a file manager.
At its core, it comes with a directory browser, providing ways to run commands to manage your files via keybinds and command line input. So this way you can get that good feeling in your crotch for following the unix philosophy.
- This repo can be installed as a nix flake:
github:phenax/daffm#daffm - OR clone the repo and build it:
nix build
- Linux: download and install a tarball from releases
- Clone the repo
make installto build and install it on your system (installs in/usr/localby default)- OR
make PREFIX=/install/path installto install it inside/install/pathdirectory make uninstallto uninstall it
Run man daffm to see the manual. Markdown version: ./docs/daffm.md
Configuration is written in toml. By default it will try to load $XDG_CONFIG_HOME/daffm/config.toml.
You can load config in a different path using daffm -c <path-to-config>.
You can also store alternate configs in $XDG_CONFIG_HOME/daffm/config.custom-thing.toml and load it as daffm -c @custom-thing.
Here's an example config for reference:
# `opener` runs when opening a file or selections
opener = """
echo "%F" | while IFS= read file; do
case "$(file --mime-type "$file" -bL)" in
text/*) $EDITOR "$file" ;;
*) xdg-open "$file" >/dev/null 2>&1 ;;
esac
done;
"""
[keymap]
gdl = "cd ~/Downloads"
gdc = "cd ~/Documents"
gp = "cd ~/Pictures"
# File management
rn = ["!!clear; echo '%F' | vidir -v -", "selection-clear"] # Uses vidir (moreutils) to rename current or selected files
md = "cmdline-set !mkdir -p " # Prefills cmdline
mf = "cmdline-set !touch "
dd = "!!clear; rm -rfIv %f"
sdd = "!!clear; sudo rm -rfIv %f"
cc = ["!!cp % %.dup", "selection-clear"]
cp = ["!!cp -irv %s -t %d", "selection-clear"]
mv = ["!!mv -iv %s -t %d", "selection-clear"]
# Copy absolute file path to clipboard
YY = "!echo -n % | xclip -selection clipboard"
# Copy relative file path to clipboard (Relative to DAFFM_PATH_RELATIVE_TO or cwd)
yy = """shell
relpath=$(realpath -s --relative-to="${DAFFM_PATH_RELATIVE_TO:-$PWD}" %)
echo -n "$relpath" | xclip -selection clipboard
"""
# Copy entire file to clipboard
yf = """shell
xclip -selection clipboard -t $(file --mime-type % -bL) -i %
"""
# View image inside terminal
"<space>p" = "!!clear; chafa -f kitty %"
# Poor man's marks (mark directory by creating a binding)
# m1 marks current directory and <space>1 jumps to that directory
m1 = """command-shell echo "<daffm>map <space>1 cd %d" """
m2 = """command-shell echo "<daffm>map <space>2 cd %d" """
m3 = """command-shell echo "<daffm>map <space>3 cd %d" """
m4 = """command-shell echo "<daffm>map <space>4 cd %d" """Configuration files loaded override the following defaults
[keymap]
q = "quit"
rr = "reload"
"!" = "cmdline-set !"
":" = "cmdline-enter"
# Search in directory
"/" = "cmdline-set /"
n = "search-next"
N = "search-prev"
# Navigation (j/k for up/down)
gg = "move 0"
G = "move $"
gj = "move 0"
gk = "move $"
j = "move +1"
k = "move -1"
l = "open"
h = "back"
"<cr>" = "open"
"<bs>" = "back"
# Selection
v = "selection-toggle" # select/unselect files
"<tab>" = "selection-toggle"
C = "selection-clear"
"~" = "cd ~"
gh = "cd ~" # Go home
"$" = "$SHELL" # drop to shell
gx = "!xdg-open % >/dev/null 2>&1" # Open externally
gcfg = "cd ~/.config/daffm" # Open default configurations directory