## lx configuration file
## Generated by: lx --init-config
## Documentation: https://github.com/wjv/lx
version = "0.3"


## ── Formats ───────────────────────────────────────────────────────
##
## A format defines a column layout.  These are the compiled-in
## defaults; edit to customise.
##
##   -l   uses format "long"  (tier 1: basic long listing)
##   -ll  uses format "long2" (tier 2: adds group and VCS)
##   -lll uses format "long3" (tier 3: all timestamps and metadata)

[format]
long  = ["perms", "size", "user", "modified"]
long2 = ["perms", "size", "user", "group", "modified", "vcs"]
long3 = ["perms", "links", "size", "blocks", "user", "group",
         "modified", "changed", "created", "accessed", "vcs"]

## Custom formats — define your own named column layouts:

# minimal = ["perms", "size", "modified"]
# hpc = "perms,size,user,group,modified,vcs"


## ── Personalities ─────────────────────────────────────────────────
##
## A personality bundles format, columns, and settings under a name.
## Invoke with --personality=NAME, -p NAME, or via argv[0] symlink.
##
## Every CLI flag has a corresponding config key:
##   --header           →  header = true
##   --sort=age         →  sort = "age"
##   --time-style=iso   →  time-style = "iso"
##
## Personalities inherit from each other with `inherits = "NAME"`.
## The child's format/columns override the parent; settings merge
## with the child's values winning.
##
##   default ──┬──→ lx ──┬──→ ll ──→ la
##             │         └──→ lll
##             └──→ tree
##
##   ls  (standalone — no `inherits`)

## Shared base: settings that all personalities inherit.
[personality.default]
colour = "auto"               # always / auto / never
colour-scale = "none"         # none / 16 / 256
time-style = "default"        # default / iso / long-iso / full-iso
group-dirs = "none"           # first / last / none
icons = "never"               # always / auto / never
classify = "never"            # always / auto / never
theme = "exa"                 # named theme (see below)

## The "lx" personality applies when the binary is invoked as "lx".
[personality.lx]
inherits = "default"

[personality.ll]
inherits = "lx"
format = "long2"
group-dirs = "first"

[personality.lll]
inherits = "lx"
format = "long3"
group-dirs = "first"
header = true
time-style = "long-iso"

[personality.la]
inherits = "ll"
all = true

[personality.tree]
inherits = "default"
format = "long2"
group-dirs = "first"
tree = true

[personality.ls]
grid = true
across = true
## (no inherits — standalone, mimics plain ls)

## Custom personalities — define your own and symlink lx to the name
## for argv[0] dispatch.

# [personality.lt]
# inherits = "ll"
# sort = "age"

# [personality.recent]
# format = "long"
# sort = "modified"
# reverse = true

# [personality.du]
# columns = ["size"]
# only-dirs = true
# tree = true
# level = 2
# sort = "size"
# reverse = true
# total-size = true


## ── Themes ────────────────────────────────────────────────────────
##
## Customise colours for UI elements, file extensions, and filenames.
## Layers on top of LS_COLORS and LX_COLORS (config wins).
##
## Colour values accept:
##   Named:     "bold blue", "red underline", "dimmed cyan"
##   X11/CSS:   "tomato", "cornflowerblue", "darkslategray"
##   Hex:       "#ff8700", "#f00"
##   256-colour: "38;5;208"
##   RGB:       "38;2;255;135;0"
##   Modifiers: bold, dimmed, italic, underline, strikethrough
##
## Themes are selected through personalities (theme = "NAME") or
## the --theme=NAME CLI flag.
##
## Themes can inherit from other themes with `inherits = "NAME"`.
## Without `inherits`, a theme starts from a blank slate.
##
## The special name "exa" refers to the compiled-in default theme.
## It is too long to include here; find it in lxconfig.toml(5).
##
## For the full list of theme keys, also see lxconfig.toml(5).

# [theme.ocean]
# inherits = "exa"
# directory = "bold dodgerblue"
# executable = "bold springgreen"
# symlink = "mediumturquoise"
# date = "steelblue"
# header = "bold lightsteelblue"
# user-you = "bold paleturquoise"
# vcs-new = "bold mediumspringgreen"
# vcs-modified = "bold lightskyblue"
# vcs-deleted = "bold salmon"
# use-style = "dev"                ## apply [style.dev] colours

# [theme.warm]
# inherits = "exa"
# directory = "bold darkorange"
# executable = "bold chartreuse"
# symlink = "deepskyblue"
# date = "peru"
# header = "bold wheat"
# user-you = "bold goldenrod"
# punctuation = "dimmed sienna"
# use-style = "dev"

# [theme.minimal]                  ## no inherits — blank slate
# directory = "bold"
# executable = "green"
# symlink = "dimmed"
# date = "dimmed"
# punctuation = "dimmed"
# header = "bold underline"


## ── File-type classes ─────────────────────────────────────────────
## A class is a named list of glob patterns representing a file
## category.  Classes are referenced from styles (see below).
##
## The compiled-in classes are: image, video, music, lossless,
## crypto, document, compressed, compiled, temp, immediate.
## For the full definitions, see lxconfig.toml(5).
##
## Override a compiled-in class or define your own:

# [class]
# source = ["*.rs", "*.py", "*.js", "*.go", "*.c", "*.cpp"]
# data   = ["*.csv", "*.json", "*.xml", "*.yaml", "*.h5"]


## ── Style sets ───────────────────────────────────────────────────
##
## Named sets of file-type colour rules.  Referenced from themes
## via use-style = "NAME".
##
## Styles can reference classes using bare dotted keys (class.NAME),
## or match files directly using quoted keys ("*.ext" for globs,
## "Makefile" for exact filenames).
##
## Note: all file pattern keys must be quoted.  Bare unquoted keys
## are reserved for class references (class.NAME).

## The "exa" style is the compiled-in default, applied by the "exa"
## theme. Uncomment to customise.
##
## If two classes have overlapping patterns, the result is
## unspecified.  The built-in classes have no overlaps.

# [style.exa]
# class.temp       = "38;5;244"
# class.immediate  = "bold underline yellow"
# class.image      = "38;5;133"
# class.video      = "38;5;135"
# class.music      = "38;5;92"
# class.lossless   = "38;5;93"
# class.crypto     = "38;5;109"
# class.document   = "38;5;105"
# class.compressed = "red"
# class.compiled   = "38;5;137"

## Custom styles — define your own and reference from a theme:

# [style.dev]
# class.source = "#ff8700"
# "*.toml" = "sandybrown"
# "*.md" = "cornflowerblue"
# "Makefile" = "bold underline yellow"
# "Cargo.toml" = "bold #ff8700"
# "Dockerfile" = "bold deepskyblue"
# "README.md" = "bold cornflowerblue"
