twilight-tree/README.md
Awiteb 36a979d234
chore: First commit
Signed-off-by: Awiteb <a@4rs.nl>
2024-12-22 20:10:53 +00:00

85 lines
3.2 KiB
Markdown

> This is a fork of [twilight-commander](https://github.com/golmman/twilight-commander)
# twilight-tree
A simple console tree file explorer for linux, similiar to NERDTree but independent of vim.
Developed and tested on Ubuntu 18.04 with xterm derivatives.
## Build and install
```sh
git clone https://git.4rs.nl/awiteb/twilight-tree
cd twilight-tree
cargo install --path . # this will install the binary in $HOME/.cargo/bin
```
## Implemented features
### Configuration
The configuration is loaded as follows
1. load values from `$XDG_CONFIG_HOME/twilight-tree.toml`
2. else load values from `$HOME/.config/twilight-tree/twilight-tree.toml`
2. fill missing values with app defaults
3. overwrite values with defines from the command line options
For a config file with the default values, see [twilight-tree.toml](./twilight-tree.toml).
The command line options are derived from the values defined inside the twilight-tree.toml .
E.g.
```
[debug]
enabled = true
```
is set with the option `--debug.enabled=true`.
### Configurable key bindings
The key bindings are configurable. For the set of configurable keys and key combinations consult the [event.rs](./src/model/event.rs).
|default key|default configuration|action|
|---|---|---|
|up arrow|`--keybinding.entry_up=up`|move an entry up|
|down arrow|`--keybinding.entry_down=down`|move an entry down|
|left arrow|`--keybinding.collapse_dir=left`|collapse an entry directory or jump to parent if not collapsable|
|right arrow|`--keybinding.expand_dir=left`|expand an entry directory|
|r|`--keybinding.reload=r`|collapse all directories and reload root directory|
|return|`--keybinding.file_action=return`|perform configured file action|
|q|`--keybinding.quit=q`|quit|
### Directory entry management
#### File Action
The command line option / config value `--behavior.file_action` defines the action taken when the return key is pressed
on a file. The action is interpreted by `bash` and any occurence of `%s` will be replaced by the selected filename.
E.g. when enter is pressed on the file `.bashrc` in a twilight-tree process created with
```
twilight-tree "--behavior.file_action=xterm -e 'cat %s; echo opened file: %s; bash'"
```
then
```
bash -c "xterm -e 'cat /home/user/.bashrc; echo opened file: /home/user/.bashrc; bash'"
```
is executed, i.e.:
* a new xterm window is opened
* where the selected file (`.bashrc`) is printed to stdout
* then `opened file: ~/.bashrc` is printed
* `bash` prevents the window from closing.
`--behavior.file_action` defaults to [true](https://en.wikipedia.org/wiki/True_and_false_(commands)), which does
(almost) nothing.
### Scrolling modes
Specified with the option `--behaviour.scrolling` (default = `center`)
* `center`: move the cursor until it is in the center, then move the text instead
* `editor`: move the cursor until it hits the top/bottom boundaries set by the `debug.paddin_top/bot` limits
### Utf-8 support
In case your terminal does not support utf-8 you can disable it with `--composition.use_utf8=false`.
### Logs
Logs are written to
1. `$XDG_CONFIG_HOME/tc.log` if XDG_CONFIG_HOME is defined
2. else they are placed in `$HOME/.config/twilight-tree/tc.log`
## License
This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.