chore: Update README.md

Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
Awiteb 2024-12-25 20:46:55 +00:00
parent 626d2e464b
commit f73800a3a5
Signed by: awiteb
GPG key ID: 3F6B55640AA6682F

View file

@ -13,73 +13,101 @@ cd twilight-tree
cargo install --path . # this will install the binary in $HOME/.cargo/bin
```
## `twilight-tree` vs `twilight-commander`
- With `twilight-tree` you can hide the header (Which is the current working
directory) with `--setup.with_cwd_header=false`
- You can rename a file/directory using the `r` keybinding. To move a
file/directory, specify the new path along with the new name. For example,
`../new_name.rs` will move the file to the parent directory and rename it to
`new_name.rs`.
<!-- - You can create a new file with `n+f` keybinding
- You can create a new directory with `n+d` keybinding
- You can delete a file/directory with `d` keybinding -->
## 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
3. fill missing values with app defaults
4. 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|
| 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.rename_mode=r` | Enter rename mode (To exit rename mode press `quit` keybinding) |
| `ctrl+r` | `--keybinding.reload=r` | collapse all directories and reload root directory |
| `return` | `--keybinding.file_action=return` | perform configured file action |
| `ctrl+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
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
- `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.