2.6 KiB
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 directorypop- pop one, or the specified amount of entries from the stack and move to the oldest onestack- display the stackbook- move to, or add, remove and display bookmarks
Every shell has its own stack, save in the file /tmp/navigate/<process-id>.
navigate checks for and deletes orphaned stack files on execution.
setup
navigate requires a setup
- clone the repository
- build crate
- add path to executable to shell environment
- 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.
At the time of writing, the following options are recognised:
generalshow_stack_on_push: bool = falseshow_stack_on_pop: bool = falseshow_books_on_bookmark: bool = false
formatalign_separators: bool = truestack_separator: string = " - "stack_home_as_tilde: bool = falsebookmarks_separator: string = " - "book_home_as_tilde: bool = false
styleswarning_style: string = "yellow, italic"error_style: string = "red, bold"stack_number_style: string = "default"stack_separator_style: string = "cyan"stack_path_style: string = "default"stack_punct_style: string = "magenta"bookmarks_name_style: string = "default"bookmarks_separator_style: string = "cyan"bookmarks_path_style: string = "default"bookmarks_punct_style: string = "magenta"
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 most terminals do not support all options.
See navigate.toml for an example configuration file.