Skip to content

Configuration

pls supports a powerful, and complex, configuration system that offers a lot of powerful customization options. Configuration is specified in the form of a .pls.yml YAML file (which means you can just use JSON if you hate YAML so much).

Placement

pls uses a cascading system for multiple config files. You can have config files at the directory level, at the repository level and at the global level.

The global config file can be placed in the home directory at ~/.pls.yml. If you prefer a clean home directory, you can set the PLS_CONFIG environment variable to a point to a config file placed elsewhere on your computer, in which case pls will not look for one in the home directory.

Schema

This is the schema of the file.

icons

map<str, str>

mapping of icon names to actual glyphs from Nerd Fonts

You can also use emojis as the glyphs but it's not recommended as you can run into issues regarding character width in some terminals.

Examples of icons
icons:
python: "" # nf-seti-python
javascript: "󰌞" # nf-md-language_javascript
applescript: "🍎"

specs

seq<Spec>

list of node specs, in ascending order of specificity

Properties of Spec
pattern * str(Regex)

a regex pattern to match against the node's name; In YAML this can be specified more clearly if the quotes are omitted.

icon str

the name of the icon to use for the node; It should be a key from the built-in icons or from the icons section.

style str

styles to apply to the node name and icon

importance int

the importance level of the node

collapse Collapse

the rule for determining the parent node, if any, for this node

Properties of Collapse

Collapse is an enum type so exactly one of name or ext should be specified.

name str

the exact name of the parent file; Name-based collapsing matches this node with another having the exact given name.

ext str

the extension of the parent file; Extension-based collapsing matches this node with another having the same base name and the given extension.

Examples of collapse
collapse:
name: package.json # matches exactly `package.json`
collapse:
ext: ts # matches file with same base name and `.ts` extension
Examples of specs
specs:
- pattern: ^(pnpm-lock.yaml|package-lock.json)$
icon: lock
importance: -1
collapse:
name: package.json
- pattern: \.(c|m)?js$
icon: javascript
style: rgb(247,223,30)
collapse:
ext: ts

entry_const

EntryConst

constants that determine the appearance and styling of each entry

Properties of EntryConst
dev_style str

style for the device number

ino_style str

style for the inode number

nlink_styles NlinkStyles

styles for the number of hard links

Properties of NlinkStyles
file_sing str

style to use when file has one hard link

file_plur str

style to use when file has more than one hard link

dir_sing str

style to use when directory has one hard link

dir_plur str

style to use when directory has more than one hard link

Examples of nlink_styles
nlink_styles:
file_sing: ""
file_plur: yellow
dir_sing: yellow
dir_plur: ""
typ map<str(Typ), TypInfo>

mapping of node type to node type info (including style)

The key for the map i.e. Typ can be any of the following strings: 'dir', 'symlink', 'fifo', 'socket', 'block_device', 'char_device', 'file' or 'unknown'.

Properties of TypInfo
ch str

the character for a node type, used in the 'T' column

suffix str

the suffix for a node type, placed after the node name

icon str

the fallback icon for the node type, used if no other icon is found; Not all node types need to have an icon.

style str

the style to use for nodes of a particular node type; This applies to name, ch, suffix and icon as well.

Examples of typ
typ:
dir:
ch: <bold cyan>d</>
suffix: <dimmed>/</>
icon: dir
style: blue
symlink:
ch: <magenta>l</>
suffix: <dimmed>@</>
icon: symlink
char_device:
ch: <blue bg:green>b</>
block_device:
ch: <blue bg:yellow>c</>
perm_styles map<str(Sym), str>

mapping of symbolic permission bits to style

The key for the map i.e. Sym can be any of the following strings: 'none', 'read', 'write', 'execute', or 'special'.

Examples of perm_styles

Example:

perm_styles:
none: dimmed
read: yellow
write: red
execute: green
special: magenta
oct_styles map<str(Oct), str>

mapping of octal permission bits to style

The key for the map i.e. Oct can be any of the following strings: 'special', 'user', 'group' or 'other'.

Examples of oct_styles
oct_styles:
special: magenta
user: blue
group: blue dimmed
other: dimmed
user_styles OwnerStyles

styles for the owner user

Properties of OwnerStyles
curr str

style for when the node is owned by the current user/group

other str

style for when the node is owned by a different user/group

Examples of user_styles
user_styles:
curr: blue bold
other: dimmed
group_styles OwnerStyles

styles for the owner group

Properties of OwnerStyles
curr str

style for when the node is owned by the current user/group

other str

style for when the node is owned by a different user/group

Examples of group_styles
group_styles:
curr: blue
other: dimmed
size_styles SizeStyles

style for magnitude and unit (prefix and base) of node size

Properties of SizeStyles
mag str

the style for the node size magnitude

prefix str

the style for the node size unit prefix

base str

the style for the node size base unit

Examples of size_styles
size_styles:
mag: bold
prefix: italic
base: dimmed
blocks_style str

style for the number of blocks occupied by the file

timestamp_formats map<str(DetailField), str>

mapping of timestamp fields to the human-readable format

The key for the map i.e. DetailField can be any of the following strings: 'btime', 'ctime', 'mtime' or 'atime'.

The format string should contain format description components from the time crate.

Examples of timestamp_formats
timestamp_formats:
btime: <bold green>[day] [month repr:short]</> [hour repr:24]:[minute]
ctime: <bold yellow>[day] [month repr:short]</> [hour repr:24]:[minute]
mtime: <bold yellow>[day] [month repr:short]</> [hour repr:24]:[minute]
atime: <bold blue>[day] [month repr:short]</> [hour repr:24]:[minute]
symlink map<str(SymState), SymlinkInfo>

mapping of symlink state to more symlink state info (including style)

The key for the map i.e. SymState can be any of the following strings: 'ok', 'broken', 'cyclic' or 'error'.

Properties of SymlinkInfo
sep str

the separator to show between the node and its target

style str

the style to use for symlinks in a particular symlink state; This applies to both the name and the separator.

ref_style str

the style to use for the symlink reference; This applies to the reference only.

Examples of symlink
symlink:
ok:
sep: 󰁔
style: magenta
broken:
sep: 󱞣
style: red
ref_style: strikethrough
Examples of entry_const
entry_const:
dev_style: magenta
ino_style: magenta
blocks_style: cyan

app_const

AppConst

constants that determine the appearance and styling of the entire UI

Properties of AppConst
table TableInfo

configuration for the table view

Properties of TableInfo
column_names map<str(DetailField), str>

mapping of detail field to column name

The key for the map i.e. DetailField can be any of the following: strings: 'dev', 'ino', 'nlink', 'typ', 'perm', 'oct', 'user', 'uid', 'group', 'gid', 'size', 'blocks', 'btime', 'ctime', 'mtime', 'atime', 'git' or 'name'.

Examples of column_names
column_names:
btime: <green>Date Created</>
ctime: <yellow>Date Changed</>
mtime: <yellow>Date Modified</>
atime: <blue>Date Accessed</>
header_style str

styles to apply to the text in the header row

Examples of table
table:
header_style: clear underline
tree TreeInfo

shapes to use to print trees

Properties of TreeInfo
pipe_space str

the shape to use an alternative to "│ "

space_space str

the shape to use an alternative to " "

tee_dash str

the shape to use an alternative to "├─ "

bend_dash str

the shape to use an alternative to "└─ "

Examples of tree
tree:
pipe_space: ""
space_space: " "
tee_dash: "╠═ "
bend_dash: "╚═ "
imp_styles seq<(int, string)>

pairings of importance levels with styling directives

Properties of (int, str)
0 int

the importance level

1 str

the style to use for nodes of a particular importance level

Examples of imp_styles
imp_styles:
- [-1, "dimmed"]
- [1, "italic"]
- [2, "underline"]

Examples

You can see the .pls.yml files from pls 's source code itself to get a feel for how these configurations work. Feel free to copy them or use as inspiration for your own projects.