runa-tui 0.3.9

A fast, keyboard-focused terminal file browser (TUI). Highly configurable and lightweight. Previously known as runner-tui.
Documentation
# Runa Configuration Guide


runa is under active development and options may change over time.

## Config File


`runa` is configured via a TOML file located at:

`~/.config/runa/runa.toml` (Linux/macOS)

`C:\Users\<UserName>\.config\runa\runa.toml` (Windows)

**Override**: You can specify a custom path by setting the `RUNA_CONFIG` environment variable.

## Quick Start


If you don't have a config file yet, you can generate one automatically:

- `rn --init`: Generates the configuration.
- `rn --init-full`: Generates a full config files with all options as seen below.
- `rn --config-help`: Displays all configuration options.

## General Settings


```toml
# ANY unused / default options can be removed from runa.toml.

# Removed / unused options will default to the internal defaults as seen below.


# Sort directories before files

dirs_first = true

# Show hidden files (dotfiles)

show_hidden = false

# Show hidden system files (mostly for Windows)

show_system = false

# Ignore case sensitivity when searching or sorting

case_insensitive = true

# Always show these directories, even if 'show_hidden' is false. Example: always_show = [".config", "Downloads"]

always_show = []

[display]
# Show the selection icon next to the file/directory name

selection_marker = true

# Show the default '/' symbol next to directory names

dir_marker = true

# Border style: "none", "unified", or "split"

borders = "split"

# Border shape: "square", "rounded" or "double"

border_shape = "square"

# Show pane titles at the top (e.g., "Main", "Preview")

titles = false

# Draw vertical lines between panes

separators = true

# Show the parent directory pane (left)

parent = true

# Show the file preview pane (right)

preview = true

# Enable underline in the preview pane

preview_underline = true

# Use independent color for the preview underline

preview_underline_color = false

# Padding from entry to pane edge (0–4)

entry_padding = 1

# Scroll padding of the main pane

scroll_padding = 5

[display.layout]
# Display ratios for panes (will be scaled to 100%)

parent = 20
main = 40
preview = 40

# Diplays the file info attributes.

[display.info]
name = true
file_type = true
size = true
modified = true
perms = true
```




## Theme Configuration


```toml
# Color keys for most sections are always placed directly in the table:

# [theme.selection]

# fg = "yellow"

# bg = "default"

#
# For larger sections such as [theme.widget] or [theme.info], you may use either

# dot notation (e.g. color.fg, border.bg) OR define subtables like [theme.widget.color]:

#
# [theme.widget]

# color.fg = "white"

# color.bg = "black"

# border.fg = "magenta"

#
# Alternatively, this works and is equivalent:

# [theme.widget.color]

# fg = "white"

# bg = "black"

#
# [theme.widget.border]

# fg = "magenta"

#
# Theme color values can be terminal color names ("Red", "Blue", etc.), hex ("#RRGGBB"), or "default".


[theme]
# The symbol for the current selection. Use "" or " " to disable.

selection_icon = ">"

[theme.selection]     # Selection bar colors
fg = "default"
bg = "default"

[theme.accent]        # Borders/titles
fg = "default"
bg = "default"

[theme.entry]         # Normal entries
fg = "default"
bg = "default"

[theme.directory]     # Directory entries
fg = "cyan"
bg = "default"

[theme.separator]     # Vertical separators
fg = "default"
bg = "default"

[theme.parent]        # Parent pane text
fg = "default"
bg = "default"
selection_fg = "default"
selection_bg = "default"

[theme.preview]       # Preview pane text
fg = "default"
bg = "default"
selection_fg = "default"
selection_bg = "default"

[theme.marker]        # Multi-select marker
icon = "*"
fg = "yellow"
bg = "default"

[theme.underline]     # Underline colors (if enabled)
fg = "default"
bg = "default"

[theme.path]          # Path bar at the top
fg = "magenta"
bg = "default"

# Full widget/dialog theming: position, size, and colors


[theme.widget]
# Leave blank or omit to use the regular defaults.

# Popup position: choose one of the following styles

#   - Preset string:    "center", "top_left", "bottom_right", etc. Also possible to write "topleft", "bottomright", etc..

#   - List:             [x, y]             # percent of screen, e.g., [38, 32]

#   - Table/object:     { x = 25, y = 60 } # percent of screen

position = "center"

# Popup size: choose one of

#   - Preset string:    "small", "medium", "large"

#   - List:             [width, height]    # percent, e.g., [38, 32]

#   - Table/object:     { w = 38, h = 32 } # percent

size = "medium"

# Confirmation dialog size (for confirmations like deleting files):

#   - Preset string, list, or table, just like "size" above.

#   - Leave blank or omit to use the regular `size`.

confirm_size = "large"

# Coloring for the widgets

color.fg = "white"
color.bg = "black"

border.fg = "magenta"
border.bg = "default"

title.fg = "default"
title.bg = "default"

# Configuration for the status_line

[theme.status_line]
fg = "magenta"
bg = "default"

# Configuration for the File info widget

[theme.info]
color.fg = "default"
color.bg = "default"

border.fg = "default"
border.bg = "default"

title.fg = "default"
title.bg = "default"

position = "bottom_left"
```



## Editor


```toml
[editor]
# Command to open files (e.g., "nvim", "code", etc.)

# "code.cmd" on windows

cmd = "nvim"
```




## Key Bindings


All values are lists (multiple shortcuts per action). Use "Shift+x", "Ctrl+x" as needed. `" "` means space bar.

```toml
[keys]
open_file           = ["Enter"]
go_up               = ["k", "Up"]
go_down             = ["j", "Down"]
go_parent           = ["h", "Left", "Backspace"]
go_into_dir         = ["l", "Right"]
quit                = ["q", "Esc"]
delete              = ["d"]
copy                = ["y"]
paste               = ["p"]
rename              = ["r"]
create              = ["n"]
create_directory    = ["Shift+n"]
filter              = ["f"]
toggle_marker       = [" "]     # space bar
info                = ["i"]
```

You may remove any binding to let it fall back to the default.


---


## EXAMPLES


```toml
borders = "split"

[display.layout]
main = 40

[theme.accent]
fg = "#00ff00"
bg = "default"

[theme.widget]
position = [25, 60]
size = { w = 36, h = 20 }
```