Directory navigator
Go to file
Přemysl Eric Janouch 1c47cf7908
Relicense to 0BSD, update mail address
I've come to the conclusion that copyright mostly just stands in the way
of software development.  In my jurisdiction I cannot give up my own
copyright and 0BSD seems to be the closest thing to public domain.

The updated mail address, also used in my author/committer lines,
is shorter and looks nicer.  People rarely interact anyway.
2018-06-22 19:50:56 +02:00
CMakeLists.txt Relicense to 0BSD, update mail address 2018-06-22 19:50:56 +02:00
LICENSE Relicense to 0BSD, update mail address 2018-06-22 19:50:56 +02:00
Makefile Mark files that make use of POSIX ACLs 2017-07-14 21:49:32 +02:00
README.adoc Relicense to 0BSD, update mail address 2018-06-22 19:50:56 +02:00
sdn.cpp Relicense to 0BSD, update mail address 2018-06-22 19:50:56 +02:00

README.adoc

sdn

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: theres no need to create a subshell in a new pty. The current command line can be simply forwarded if it is to be edited. Whats more, it will always be obvious whether the navigator is running.

Development has just started and the only supported platform is Linux. I wanted to try a different, simpler approach here.

Building

Build dependencies: CMake and/or make, a C++14 compiler, pkg-config
Runtime dependencies: ncursesw

$ git clone https://github.com/pjanouch/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.

zsh

To start using this navigator, put the following in your .zshrc:

sdn-navigate () {
  # ... possibly zle-line-init
  eval `sdn`
  [ -z "$cd" ] || cd "$cd"
  [ -z "$insert" ] || LBUFFER="$LBUFFER$insert "
  zle reset-prompt
  # ... possibly zle-line-finish
}
zle -N sdn-navigate
bindkey '\eo' sdn-navigate

bash

Here we cant reset the prompt from within a bind -x handler but there is an acceptable workaround:

sdn-navigate () {
  SDN_L=$READLINE_LINE SDN_P=$READLINE_POINT
  READLINE_LINE=

  eval `sdn`
  [[ -z "$cd" ]] || cd "$cd"
  [[ -z "$insert" ]] || {
    SDN_L="${SDN_L:0:$SDN_P}$insert ${SDN_L:$SDN_P}"
    ((SDN_P=SDN_P+${#insert}+1))
  }
}
sdn-restore () {
  READLINE_LINE=$SDN_L READLINE_POINT=$SDN_P
  unset SDN_L SDN_P
}

bind -x '"\200": sdn-navigate'
bind -x '"\201": sdn-restore'
bind '"\eo":"\200\C-m\201"'

Colors

Here is an example of a ~/.config/sdn/look file; the format is similar to that of git, only named colors arent supported:

cursor 231 202
bar 16 255 ul
cwd bold
input

Contributing and Support

Use this projects GitHub to report any bugs, request features, or submit pull requests. If you want to discuss this project, or maybe just hang out with the developer, feel free to join me at irc://irc.janouch.name, channel #dev.

Bitcoin donations: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9

License

This software is released under the terms of the 0BSD license, the text of which is included within the package along with the list of authors.