Files
Waybar/man/waybar-disk.5.scd
T
Guillaume Maudoux a3dc55f9ee feat(format): expand pow_format modifiers
Extend the pow_format spec parser beyond alignment so configs can shape the
rendered number, not just pad it. A forced scale (#, k, M, G, T, P) pins the SI
prefix instead of auto-selecting it and, since the author then knows both scale
and unit, hides the prefix and unit by default; U brings the unit back, u hides
it in auto mode, and i forces integer display. b and B override the decimal or
binary base independently of the call site, and a trailing width now fixes the
coefficient field when a scale is forced, overflowing to '#' when it does not
fit.

The old '>' and '<' branches rendered via fmt::format("{}", s), which discarded
every new field on the recursive call; they now build from a single render path
that reads the current formatter, so modifiers survive alignment. The auto path
is byte-identical to before, verified against the previous implementation.

Adds a Catch2 suite covering each modifier alone and combined, plus the
backward-compatible alignment cases, and documents the modifiers in the network
and disk man pages.
2026-07-04 23:08:42 +02:00

205 lines
5.4 KiB
Scdoc

waybar-disk(5)
# NAME
waybar - disk module
# DESCRIPTION
The *disk* module displays information of multiple disks.
# CONFIGURATION
Addressed by *disk*
*interval*: ++
typeof: integer++
default: 30 ++
The interval in which the information gets polled.
*format*: ++
typeof: string ++
default: "{}%" ++
The format, how information for each disk should be displayed. Note: in the default the positional field "{}" resolves to *{percentage_free}*.
*rotate*: ++
typeof: integer ++
Positive value to rotate the text label (in 90 degree increments).
*states*: ++
typeof: object ++
A number of disk utilization states that get activated on certain percentage thresholds (percentage_used). See *waybar-states(5)*.
*max-length*: ++
typeof: integer ++
The maximum length in character the module should display.
*min-length*: ++
typeof: integer ++
The minimum length in characters the module should accept.
*align*: ++
typeof: float ++
The alignment of the label within the module, where 0 is left-aligned and 1 is right-aligned. If the module is rotated, it will follow the flow of the text.
*justify*: ++
typeof: string ++
The alignment of the text within the module's label, allowing options 'left', 'right', or 'center' to define the positioning.
*on-click*: ++
typeof: string ++
Command to execute when clicked on the module.
*on-click-middle*: ++
typeof: string ++
Command to execute when middle-clicked on the module using mousewheel.
*on-click-right*: ++
typeof: string ++
Command to execute when you right-click on the module.
*on-update*: ++
typeof: string ++
Command to execute when the module is updated.
*on-scroll-up*: ++
typeof: string ++
Command to execute when scrolling up on the module.
*on-scroll-down*: ++
typeof: string ++
Command to execute when scrolling down on the module.
*path*: ++
typeof: string ++
default: "/" ++
Deprecated path of filesystem or mountpoint to monitor.
*paths*: ++
typeof: array ++
default: ["/"] ++
Array of paths residing in the filesystem or mountpoint for which the information should be displayed.
*header*: ++
typeof: string ++
default: "" ++
Text to appear before the disk information defined in the format.
*separator*: ++
typeof: string ++
default: " " ++
Separator string between multiple disk information.
*smooth-scrolling-threshold*: ++
typeof: double ++
Threshold to be used when scrolling.
*tooltip*: ++
typeof: bool ++
default: true ++
Option to disable tooltip on hover.
*tooltip-format*: ++
typeof: string ++
default: "{used} used out of {total} on {path} ({percentage_used}%)" ++
The format of the information displayed in the tooltip.
*unit*: ++
typeof: string ++
Use with specific_free, specific_used, and specific_total to force calculation to always be in a certain unit. Accepts kB, kiB, MB, Mib, GB, GiB, TB, TiB.
*menu*: ++
typeof: string ++
Action that popups the menu.
*menu-file*: ++
typeof: string ++
Location of the menu descriptor file. There need to be an element of type
GtkMenu with id *menu*
*menu-actions*: ++
typeof: array ++
The actions corresponding to the buttons of the menu.
*expand*: ++
typeof: bool ++
default: false ++
Enables this module to consume all left over space dynamically.
# FORMAT REPLACEMENTS
*{percentage_used}*: Percentage of disk in use.
*{percentage_free}*: Percentage of free disk space
*{total}*: Total amount of space on the disk, partition, or mountpoint. Automatically selects unit based on size remaining.
*{used}*: Amount of used disk space. Automatically selects unit based on size remaining.
*{free}*: Amount of available disk space for normal users. Automatically selects unit based on size remaining.
*{path}*: The path for each disk specified in the configuration.
*{specific_total}*: Total amount of space on the disk, partition, or mountpoint in a specific unit. Defaults to bytes.
*{specific_used}*: Amount of used disk space in a specific unit. Defaults to bytes.
*{specific_free}*: Amount of available disk space for normal users in a specific unit. Defaults to bytes.
# NUMBER FORMAT MODIFIERS
*{total}*, *{used}* and *{free}* auto-scale with a binary prefix (KiB, GiB, …).
Their rendering can be tuned with fmt-style modifiers, e.g. *"{free:>}"* or
*"{free:G}"*, combined in any order:
*<*, *=*, *>*: Alignment/padding (left, column-align, right).
*u* / *U*: Hide (*u*) or show (*U*) the unit suffix. Shown by default with an auto
scale, hidden by default when a scale is forced.
*#*, *k*, *M*, *G*, *T*, *P*: Force a fixed scale instead of auto-selecting
(*#* = base scale). Forcing a scale hides the scale prefix and, by default, the
unit. E.g. *"{free:G}"* always shows gibibytes.
*i*: Force integer display (no decimals).
*b* / *B*: Force decimal base 1000 (*b*) or binary base 1024 (*B*); disk values
are binary by default.
A trailing number is a fixed width for the coefficient when a scale is forced;
overflow is shown as *#* characters (e.g. *"{free:=3#}"**###*).
# EXAMPLES
```
"disk": {
"interval": 30,
"format": "{percentage_free}% free on {path}",
}
```
```
"disk": {
"interval": 30,
"format": "{percentage_free}% free on {path}",
"header": "Disks: ",
"paths": ["/", "/home"],
"separator": " ",
}
```
```
"disk": {
"interval": 30,
"paths": ["/"],
"format": "{specific_free:0.2f} GB out of {specific_total:0.2f} GB available. Alternatively {free} out of {total} available",
"unit": "GB"
}
// 1434.25 GB out of 2000.00 GB available. Alternatively 1.4TiB out of 1.9TiB available.
```
# STYLE
- *#disk*