Skip to content
crosleyzackPublic

About

A TUI Tree View for Data Files

Topics

Resources

Security policy

Stars

8 stars

Watchers

1 watching

Forks

Repository files navigation

wndr


License Release CI Dependabot Updates Go Reference

wndr (wander) allows you explore tree-based file formats as an interactive TUI tree. This supports JSON, YAML, and TOML files.

example

It can also be used to compare two or more tree-based formats in an interactive TUI or output the diff to another file.

example

Installation

Can be installed using Go 1.23+ via:

go install github.com/crosleyzack/wndr@latest

It can also be installed as a nix flake using

nix build

which will write the binary to ./result/bin/wndr

Examples

wndr can take in data by providing a data file:

wndr -f foo.toml

or by passing it as the first argument:

wndr "{\"foo\": \"bar\"}"

or finally via stdin:

cat bar.yml | wndr -x 1

Configuration

wndr will search for a configuration toml file at:

  1. $WNDR_CONFIG
  2. $XDG_CONFIG_HOME/wndr/config.toml

Configuration options include:

# format
ExpandedShape = "╰─"
ExpandableShape = "❭"
LeafShape = "└─"
SpacesPerLayer = 2
HideSummaryWhenExpanded = false
SpacesAfterKey = 4
# colors
ExpandedShapeColor = "#d99c63"
ExpandableShapeColor = "#d19359"
LeafShapeColor = "#d19359"
SelectedForegroundColor = "#fffffb"
SelectedBackgroundColor = "#63264A"
UnselectedForegroundColor = "#fffffd"
HelpColor = "#fffffe"
# keys
BottomKeys = ["bottom", "G"]
TopKeys = ["top", "g"]
DownKeys = ["down","j"]
UpKeys = ["up","k"]
CollapseToggleKeys = ["tab", "h", "l"]
CollapseAllKeys = ["<", "H"]
ExpandAllKeys = [">", "L"]
HelpKeys = ["?"]
QuitKeys = ["esc","q"]
SearchKeys = ["/"]
SubmitKeys = ["enter"]
NextKeys = ["n"]

Tree View in your TUI

wndr tree view can be embedded in your own application by:

  1. Convert your data to a map[string]any type. Examples exist in the pkg/format package for JSON, YAML, and TOML.
  2. Call pkg/nodes.New to convert your map[string]any to a *nodes.Node tree.
  3. Call pkg/modules/tree.New with the *nodes.Node tree as well as your desired pkg/modules/tree.TreeFormat, pkg/keys.KeyMap, and pkg/styles.Style to create the tree view bubbletea tree module.
  4. Create a new bubbletea program with the tree module, or add the tree module to your existing bubbletea program.

About

A TUI Tree View for Data Files

Topics

Resources

Security policy

Stars

8 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages