istat 0.6.0

A lightweight and batteries-included status_command for i3 and sway
Documentation
# Optionally include other config files to be merged with this one.
# These paths are relative to the main configuration file's directory.
# These paths support shell expansion - via wordexp(3) - and such can refer to dynamic paths.
include = ["sample_included_config.toml"]

# Optionally pass a path for the socket. This is really only useful if you have multiple bars and
# need to make sure they don't attempt to bind to the same socket. If not provided a default will
# be found.
# socket = "/custom/socket/path/here"

# Theme customisation
# All of these are optional, and will default to the values documented here.
[theme]
# should be the same as i3's bar.colors.background setting
bg = "#2e3440"
# should be the same as i3's bar.colors.statusline setting
fg = "#d8dee9"
# used to indicate inactive or disabled states
dim = "#4c566a"
# usually indicates a warning state
yellow = "#ebcb8b"
# be more warned than yellow
orange = "#d08770"
# it's red - everybody panic
red = "#bf616a"
# ahh green... green is good
green = "#a3be8c"
# usually indicates special states
purple = "#b48ead"
# also like purple, something special, not exactly anything specific
blue = "#8fbcbb"

# if enabled, then item separators are removed and a "powerline"-like style is used
powerline_enable = false

# you can customise the powerline separator symbol here
# the `scale` field is optional and can be used as a workaround for font icon size inconsistencies
powerline_separator = { value = "", scale = 115 }
# powerline_separator = { value = "", scale = 115 }

# the colors that are cycled through for each powerline item - at least two must be present
powerline = [
  { fg = "#d8dee9", bg = "#3b4252" },
  { fg = "#e5e9f0", bg = "#434c5e" },
  { fg = "#eceff4", bg = "#4c566a" },
  { fg = "#e5e9f0", bg = "#434c5e" },
]

## The list of bar items. Ordered left to right in the bar itself.
#
## COMMON OPTIONS
## All items share the the following config options:
# type:   required; the type of the item
# name:   optional; a name for the item - makes some ipc operations easier
# index:  optional; where to position this item in the bar - defaults to the current index in `items`
# signal: optional; a real-time signal can be mapped to an item, and when istat receives this signal
#                   the item will be refreshed - useful for manually triggering item updates.
#                   The same signal can be used for multiple items.
#                   The `istat-signals` command can be used to query limits for signals on the
#                   current system.
#
## FLOAT FORMAT OPTIONS
## Some items which display a floating point integer allow customising its format with these options:
# pad:       optional; character to pad with. If not provided, no padding will be done
# pad_count: optional; how long to pad the number with. If not provided then it will pad to 3 digits
#                      before the decimal point.
# precision: optional; how many digits to display after the decimal point. Defaults to 0.
[[items]]
# Provides statistics of upload and download rates for all network interfaces
type = "net_usage"
# How often this item should refresh
interval = "1s"
# Anything under this threshold will show as "-"
minimum = "1 kiB"
# Optionally set the display mode, one of:
#   bits:    display as bits     8 Mbits
#   bytes:   display as bytes    1 MB     (default)
#   bibytes: display as *bibytes 1 MiB
display = "bytes"
# Up to 5 levels can be passed, and will affect the color of the item:
#     0..1st: theme.dim
#   1st..2nd: theme.normal
#   2nd..3rd: theme.yellow
#   3rd..4th: theme.orange
#   4th..5th: theme.red
#   5th..MAX: theme.purple
thresholds = ["1kiB", "1MiB", "10MiB", "25MiB", "100MiB"]
# Optionally provide a list of interface names to ignore when calculating usage
# ignored_interfaces = ["vpn0"]

[[items]]
# a raw item - these are static items that don't change, and display the values here
type = "raw"
# see i3's bar documentation for what fields are available: https://i3wm.org/docs/i3bar-protocol.html
full_text = "raw"
short_text = "!"

[[items]]
# Kerberos item - simply calls `klist` and displays the result
type = "krb"
# How often this item should refresh
interval = "2m"
# Optionally enable this item only when specific networks are active.
# This is the same format as the `filter` property in the `nic` item.
# only_on = ["vpn0:v4"]

[[items]]
# "Network Interfaces" item, provides an interactive list of interfaces and ip addresses, as well as
# WiFi signal strength and SSIDs if found. Supports updating itself automatically on network changes.
type = "nic"

# Optionally pass an `interval` to force updates - since it updates automatically this shouldn't be
# needed.
# interval = "60s"

# Optionally define how connection details will be displayed when connected to a WiFi network
# Values are:
# - `percent`: e.g., "80% at <ssid>"     (default)
# - `dbm`:     e.g., "-65 dBm at <ssid>"
# - `hidden`:  nothing is shown
wireless_display = "percent"
# The `wireless_display` setting can be optionally paired with this one to refresh the WiFi details
# at a desired interval. If unset, it only updates when the item itself updates.
wireless_refresh_interval = "2m"

# Optionally pass a filter. Filters are formatted as `name[:type]`, where `name` is the interface
# name, and `type` is an optional part which is either `v4` or `v6`.
#
# If `name` is an empty string, then all interfaces are matched, for example:
# - `vpn0:v4` will match ip4 addresses for the `vpn` interface
# - `:v6`     will match all interfaces which have an ip6 address
# filter = [":v4", "vpn0:v6"]

[[items]]
# Disk usage item - provides an interactive list of disks and their free space.
type = "disk"
# How often this item should refresh
interval = "60s"
# Optionally only include these specific mount points
# mounts = ["/"]

[[items]]
# CPU usage item - provides updates of CPU usage expressed as a percentage
type = "cpu"
# How often this item should refresh
interval = "2s"
# Also includes FLOAT FORMAT OPTIONS

[[items]]
# Display the temperature of a given component.
type = "sensors"
# See: COMMON OPTIONS
name = "cpu-temp"
# How often this item should refresh
interval = "5s"
# The name of the component to display temperature for.
# The `istat-sensors` command is provided and outputs a list of components that can be used.
label = "coretemp Package id 0"
# See: FLOAT FORMAT OPTIONS
pad = ' '
pad_count = 2

[[items]]
# Display information about the system's memory usage
type = "mem"
# How often this item should refresh
interval = "10s"
# Optionally set the display mode, one of:
#   bytes:      display free memory as a byte size (default)
#   percentage: display used memory as a percentage
display = "bytes"
# Also includes FLOAT FORMAT OPTIONS for when displaying as a percentage

[[items]]
# Display infomation about the current sink (sound output) and source (sound input). This is a very
# versatile item and has a tight integration to pulseaudio/pipewire.
# Scrolling up/down will change the volume of the current sink. The same while holding `Shift` will
# change the volume of the current source.
# Middle clicking will mute the current sink. The same with `Shift` will mute the current source.
# Left clicking will execute `pavucontrol`.
#
# This item also has a highly featured ipc interface, see `istat-ipc custom pulse` for more info.
type = "pulse"

# Control the increment of volume changes (expressed in percent) when increasing/decreasing the volume.
# Defaults to 5
increment = 5

# Optionally provide a `.wav` file to be played each time the volume is changed.
# increment_sound = "path/to/your/volume/sound.wav"

# Set an upper limit to the volume, expressed in percent.
max_volume = 120
# Configure optional notifications, supported values are:
#   none            no notifications (the default)
#   volume_mute     notifications on volume up/down and mute
#   new_source_sink notifications when new sources/sinks are added
#   defaults_change notifications when the default source/sink changes
#   all             all notifications
notify = "none"

# server_name = "pipewire-0"

[[items]]
# Show current light brightness (and also adjust it).
type = "light"
# Optionally provide a path to a specific backlight:
# path = "/sys/class/backlight/intel_backlight"
# Optionally specify how much percentage to increment the light by when scrolling (default is 5):
# increment = 10

[[items]]
# Show information about CapsLock/NumLock/ScrollLock.
type = "kbd"
# Which keys to show, available options are: caps_lock, num_lock or scroll_lock
show = ["caps_lock", "num_lock"]
# This item doesn't watch any keyboard input or anything, so to make it useful it's recommended to
# assign a signal to it here, and then bind a key to that in i3' config in order to refresh it.
# For example: `bindsym --release Caps_Lock exec pkill -RTMIN+4 istat`.
# See: COMMON OPTIONS
signal = 4

[[items]]
# Display information about a battery
type = "battery"
# How often this item should refresh
interval = "10s"
# Should notifications be sent when an AC Adapter is plugged/unplugged?
notify_on_adapter = true
# Optionally trigger a critical (and sticky) notification under a certain percentage.
# This notification will stay unless the percentage goes above the threshold, or the battery state
# is anything other than discharging.
notify_percentage = 5

# Optionally specify a list of particular batteries to show. If not provided, it will attempt to
# discover all the batteries on the system.
# batteries = ["/sys/class/power_supply/BAT0"]


[[items]]
# Display the current date or time
type = "time"
# Format for the long display
format_long = "%Y-%m-%d %H:%M:%S"
# Format for the short display (i3bar will show the short text of an item if space is limited)
format_short = "%H:%M"
# How often this item should refresh
interval = "1s"

[[items]]
# Run a script and display its output as an item. By default the command's STDOUT is displayed.
# Arguments are passed via the environment to the script:
#   I3_SIGNAL     set to "true" is this refresh was triggered by a signal
# The following are passed through from the i3 click event:
#   I3_NAME
#   I3_MODIFIERS
#   I3_BUTTON
#   I3_X
#   I3_Y
#   I3_RELATIVE_X
#   I3_RELATIVE_Y
#   I3_OUTPUT_X
#   I3_OUTPUT_Y
#   I3_WIDTH
#   I3_HEIGHT
type = "script"
# See: COMMON OPTIONS
name = "clicks"
# The command to run
command = "echo -n `if [ ! -z $I3_BUTTON ]; then echo button=$I3_BUTTON; else echo bar item; fi`"
# The format of the output, either: simple or json. Defaults to simple.
output = "simple"
# The markup of the output, either: none or pango. This is the same as i3's markup property.
# Defaults to none.
markup = "none"

[[items]]
# An example of a script using pango formatting and JSON output.
type = "script"
name = "custom"
command = """ echo -n '{"full_text":"<span foreground=\\"orange\\">G'"'"'day</span>"}' """
output = "json"
markup = "pango"

[[items]]
# A simple item which will display an icon if Dunst is currently paused. Can be used as an
# indicator for a simple "do not disturb" mode.
type = "dunst"