Xplr allows you explore tree-based file formats as an interactive TUI tree. This currently supports JSON, YAML, and TOML files.
Can be installed using Go 1.23+ via:
go install github.com/crosleyzack/xplr@latest
Xplr can take in data by providing a data file:
xplr -f foo.toml
or by passing it as the first argument:
xplr "{\"foo\": \"bar\"}"
or finally via stdin:
cat bar.yml | xplr -x 1
Xplr will search for a configuration toml file at:
- $XPLR_CONFIG
- $XDG_CONFIG_HOME/xplr/config.toml
Configuration options include:
# format
ExpandedShape = "╰─"
ExpandableShape = "❭"
LeafShape = "└─"
SpacesPerLayer = 2
HideSummaryWhenExpanded = false
# 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"]
Xplr tree view can be embedded in your own application by:
- Convert your data to a
map[string]any
type. Examples exist in thepkg/format
package for JSON, YAML, and TOML. - Call
pkg/nodes.New
to convert yourmap[string]any
to a[]nodes.Nodes
tree. - Call
pkg/modules/tree.New
with the[]nodes.Nodes
tree as well as your desiredpkg/modules/tree.TreeFormat
,pkg/keys.KeyMap
, andpkg/style.Style
to create the tree view bubbletea tree module. - Create a new bubbletea program with the tree module, or add the tree module to your existing bubbletea program.