# navigate This repository implements a custom shell command for changing directories. I implemented this program to learn rust (because I was put on a rust project at work) and because I have two major problems with bashs builtin `pushd`/`popd`/`dirs`: * no option to suppress output on `pushd`/`popd` * rotates stack when pushing to stack entry (with +/-) ## features * `push` - save path to the stack and change to specified directory * `pop` - pop one, or the specified amount of entries from the stack and move to the oldest one * `stack` - display the stack * `book` - move to, or add, remove and display bookmarks Every shell has its own stack, save in the file `/tmp/navigate/`. `navigate` checks for and deletes orphaned stack files on execution. ## setup `navigate` requires a setup 1) clone the repository 1) build crate 1) add path to executable to shell environment 1) source setup script `navigate_bash_setup` ## configuration The behaviour of `navigate` can be configured in the file `$XDG_CONFIG_HOME/navigate/navigate.toml`. *It has the toml extension, but might not implement the full toml specification.* > `navigate` will check for the file `default.toml` in the configuration directory and create it if not found. > It contains all settings with default values and a short explanation. > After an update one can delete the file and call any subcommand of `navigate` to get an updated default configuration. The lines without type and value are categories and need to be defined as toml table (`[table]`) in the configuration file. Options are written as `value = key`. Style settings accept styles and one color in the following formats: * **styles**: `bold`, `dim`, `italic`, `underlined`, `blinking`, `reversed`, `invisible`, `strikethrough` * **named color**: `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white` * **numbered color**: `16`..`255` * **rgb color**: `#rrggbb` > *NOTE*: The styles and colors are applied as ansi escape sequences and I do not know a terminal which implements all sequences.