Skip to content

Applet Configuration Reference

This LLM-optimized reference covers built-in applet configuration in ~/.config/glimpse/config.toml. Built-in applet overrides live under [applets.<name>]. Command and exec package applets live in separate applet.toml files under ~/.config/glimpse/applets.

Placement

toml
[[panels]]
left = ["pager", "mpris", "__dev__"]
center = ["clock", "weather", "notifications", "privacy"]
right = ["__dynamic__", "tray", "network", "audio", "battery", "session"]

Built-in ids: audio, battery, bluetooth, clipboard, clock, display, idle, keyboard, mpris, network, next_event, notifications, pager, printing, privacy, removable, session, tray, weather.

Second copies use extends:

toml
[applets.short-battery]
extends = "battery"
label_on_battery = "{percentage}%"

Audio

toml
[applets.audio]
show_icon = true
show_muted_indicator = true
label_format = ""
tooltip_format = "{device} - {volume}%"
scroll_step = 10
max_volume = 100
show_streams = true

Placeholders: {state}, {volume}, {device}, {input_volume}, {input_device}.

Battery

toml
[applets.battery]
show_icon = true
label_on_battery = ""
label_on_ac = ""
tooltip_on_battery = "{percentage}% {state}, {time_left}"
tooltip_on_ac = "{percentage}% {state}"

Placeholders: {percentage}, {state}, {time_left}.

Bluetooth

toml
[applets.bluetooth]
label_format = ""
tooltip_format = "{devices} connected devices"

Placeholders: {devices}, {state}.

Clipboard

toml
[applets.clipboard]
label_format = ""
tooltip_format = "{count} clipboard items"
show_when_empty = false

Placeholders: {count}, {state}.

Clock

toml
[applets.clock]
label_format = "%a %-d %b, %H:%M"
tooltip_format = "%A, %-d %B %Y"
hide_all_day_events = false
show_week_numbers = false
# [[applets.clock.timezones]]
# name = "New York"
# timezone = "America/New_York"
# format = "%-I:%M %p"
#
# [[applets.clock.timezones]]
# name = "Tokyo"
# timezone = "Asia/Tokyo"
# format = "%H:%M"

Timezone fields: name, timezone, format. Calendar sources are configured globally under [calendar].

Display

The display applet shows brightness and can manage brightness from the panel.

toml
[applets.display]
label_format = ""
tooltip_format = "{source}: {percent}%"
scroll_step = 10

Placeholders: {source}, {percent}.

Idle

The idle applet has no per-applet config. Add idle to a panel section to show idle inhibitor state and a panel toggle.

Keyboard

Keyboard layout memory is global; applet labels are local:

toml
[keyboard]
remember = "window"

[applets.keyboard.labels]
# "English (US)" = "EN"
# "German" = "DE"

remember values: window, app, global. Default is window.

MPRIS

MPRIS means Media Player Remote Interfacing Specification. In user-facing terms, this is the Now Playing applet.

toml
[applets.mpris]
label_format = "{artist} - {title}"
tooltip_format = "{player}: {artist} - {title}"
hide_when_empty = true
max_rows = 12
show_artwork = true
# filter_regex = [
#   "(?i)^firefox$",
#   "(?i)podcast",
# ]

Placeholders: {player}, {artist}, {title}, {track}, {album}, {state}, {position}, {duration}, {remaining}.

Network

toml
[applets.network]
label_format = ""
tooltip_format = "{state}"

Placeholders: {state}, {network}, {type}, {wifi}, {access_points}, {connections}, {vpns}, {speed}.

Next Event

toml
[applets.next_event]
label_format = "{name} {remaining}"
tooltip_format = "{name} ({time}) - {duration}"
threshold_minutes = 30

threshold_minutes minimum is 1. Placeholders: {name}, {time}, {duration}, {source}, {remaining}, {location}.

Notifications

toml
[applets.notifications]
label_format = ""
tooltip_format = "{count} notifications"
badge_style = "dot"
popup_timeout_ms = 5000
popup_visible_limit = 8
popup_position = "top_right"
popup_margin_x = 12
popup_margin_y = 12
max_history = 100
# filter_regex = [
#   "(?i)^discord$",
#   "(?i)build succeeded",
# ]
#
# [[applets.notifications.urgency_remap]]
# app_pattern = "(?i)^slack$"
# urgency = "critical"
#
# [[applets.notifications.urgency_remap]]
# app_pattern = "(?i)^telegram"
# urgency = "low"

Enums:

FieldValues
badge_styledot, count, hidden
popup_positiontop_left, top_center, top_right, bottom_left, bottom_center, bottom_right
urgencylow, normal, critical

Placeholders: {count}, {unread}.

Pager

toml
[applets.pager]
display = "windows"
appearance = "dots"
active_workspace_label = "{index}"
inactive_workspace_label = "{index}"

Enums:

FieldValues
displayworkspaces, windows
appearancedots, numbers, names

Workspace label placeholders: {index}, {name}.

Printing

toml
[applets.printing]
display = "auto"

display values: auto, always, never.

Privacy

The privacy applet has no per-applet config. Add privacy to show camera, microphone, screen sharing, and location indicators.

Removable

toml
[applets.removable]
show_when_empty = false
label_format = ""
tooltip_format = "{count} removable device(s), {mounted} mounted"

Placeholders: {count}, {mounted}, {unmounted}.

Session

toml
[applets.session]
label_format = "{user}"
tooltip_format = "{user} on {host}"
show_lock = true
show_logout = true
show_suspend = true
show_hibernate = false
show_reboot = true
show_shutdown = true
confirm_logout = true
confirm_suspend = true
confirm_hibernate = true
confirm_reboot = true
confirm_shutdown = true

Placeholders: {user}, {host}.

Tray

The tray applet has no per-applet config. Add tray to show StatusNotifier items.

Weather

toml
[applets.weather]
city_name = ""
hourly_slots = 5
forecast_days = 5
label_format = "{temp}"
tooltip_format = "{condition} - {temp} - feels like {feels_like} - {location}"
refresh_interval = 1800

city_name = "" uses shared [location]. Placeholders: {temp}, {feels_like}, {condition}, {location}, {humidity}, {wind}.

Package Applets

Command applet package:

toml
id = "terminal"
type = "command"

[command]
icon = "utilities-terminal-symbolic"
tooltip = "Open terminal"
command = ["ghostty"]

Exec applet package:

toml
id = "weather-line"
type = "exec"

[exec]
command = ["python", "/path/to/weather-line.py"]
restart_delay_ms = 1000
env_forward = false
# work_dir = "/path/to/project"

[exec.options]
city = "Warsaw"

Command and exec applets are experimental; their package and SDK APIs may change.