sdn === :compact-option: 'sdn' is a simple directory navigator that you can invoke while editing shell commands. It enables you to: * take a quick peek at directory contents without running `ls` * browse the filesystem without all the mess that Midnight Commander does: there's no need to create a subshell in a new pty. The current command line can be simply forwarded if it is to be edited. What's more, it will always be obvious whether the navigator is running. The only supported platform is Linux. I wanted to try a different, simpler approach here, and the end result is very friendly to tinkering. image::sdn.png[align="center"] Building -------- Build dependencies: CMake and/or make, a C++14 compiler, pkg-config + Runtime dependencies: ncursesw, libacl // Working around libasciidoc's missing support for escaping it like \++ :doubleplus: ++ Unfortunately most LLVM libc++ versions have a bug that crashes 'sdn' on start. Use GNU libstdc{doubleplus} if you're affected. $ git clone https://git.janouch.name/p/sdn.git $ mkdir sdn/build $ cd sdn/build $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug $ make To install the application, you can do either the usual: # make install Or you can try telling CMake to make a package for you. For Debian it is: $ cpack -G DEB # dpkg -i sdn-*.deb There is also a Makefile you can use to quickly build a binary to be copied into the PATH of any machine you want to have 'sdn' on. Integration ----------- zsh ~~~ To start using this navigator, put the following in your '.zshrc': ---- sdn-navigate () { # ... possibly zle-line-finish while eval "`sdn "$BUFFER" "$CURSOR"`"; do [ -z "$cd" ] || cd "$cd" [ -z "$insert" ] || LBUFFER="$LBUFFER$insert " [ -z "$helper" ] && break # Workaround for "zsh: suspended (tty output)" when invoking # helpers after the terminal has been resized while running sdn command true eval "exec