Skip to content

Configuration Reference

This LLM-optimized reference covers the main Glimpse config file. Use it when generating or editing ~/.config/glimpse/config.toml.

File Discovery

Glimpse reads the first config file found in this order:

PriorityPath
1GLIMPSE_CONFIG environment variable
2./config.toml in the current working directory
3$XDG_CONFIG_HOME/glimpse/config.toml
4$HOME/.config/glimpse/config.toml when XDG_CONFIG_HOME is unset

Custom command and exec applets are package files under $XDG_CONFIG_HOME/glimpse/applets or linked project applets created with applet tooling.

Includes

The main config can include other TOML files with a top-level array:

toml
include = ["common.toml", "laptop.toml"]

Included files load first, in list order. The file that declares include loads last and overrides included values. Relative include paths resolve relative to the file that declares them, not necessarily relative to the root config.toml. Included files are watched for hot reload.

Merge rules:

ValuesResult
table + tableRecursive merge
array + arrayLater array replaces earlier array
scalar + scalarLater scalar replaces earlier scalar
mixed typesLater value replaces earlier value

Use includes for shared defaults. Keep machine-specific or final overrides in the main config.toml.

Minimal Panel

toml
theme = "adwaita"
theme_mode = "auto"

[[panels]]
position = "top"
size = 36
left = ["pager", "..."]
center = ["clock"]
right = ["network", "battery", "session"]

"..." keeps the default applets for that panel section in place.

Theme

FieldDefaultValuesMeaning
theme"adwaita"Theme pack directory nameSelects a theme pack.
theme_mode"auto"auto, dark, lightControls effective light/dark mode for CSS, wallpaper/backdrop/lock image variants, and color-scheme.

theme_mode = "auto" follows solar day/night data when available. If solar data is unavailable, the panel keeps the previous effective mode; if none exists yet, it starts from light. Explicit dark or light ignores solar data.

A panel can override only its own mode:

toml
[[panels]]
position = "top"
theme_mode = "dark"
left = ["pager"]
center = ["clock"]
right = ["network", "battery", "session"]

Panel-level theme_mode does not select a different theme pack.

Panel Fields

FieldDefaultValuesMeaning
monitorunsetOutput namePins the panel to one monitor.
position"top"top, bottom, left, rightPanel edge.
size36pixelsPanel thickness.
marginall 0{ left, right, top, bottom }Panel margins.
theme_modeglobal modeauto, dark, lightPer-panel light/dark override.
leftdefault left appletsapplet idsLeft island.
centerdefault center appletsapplet idsCenter island.
rightdefault right appletsapplet idsRight island.

Reserved applet ids:

IdMeaning
__dynamic__Dynamic island content managed by the shell.
__dev__Applets started by glimpse-shell applets dev.
...Preserve defaults for that panel section.

Built-In Applet Names

Use these ids in left, center, or right:

toml
audio, battery, bluetooth, clipboard, clock, display, idle, keyboard,
mpris, network, next_event, notifications, pager, printing, privacy,
removable, session, tray, weather

Custom package applets use the package id from their applet.toml.

Built-In Applet Config

Built-in applet overrides live under [applets.<name>]:

toml
[applets.clock]
label_format = "%H:%M"

[applets.weather]
city_name = "Warsaw, PL"
label_format = "{temp}"

For every built-in applet field, see Applet Configuration.

Keyboard Memory

Keyboard layout memory is global; display labels are applet-local:

toml
[keyboard]
remember = "window"

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

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

Location

Current shared location config supports GeoClue:

toml
[location]
provider = "geo_clue"

Weather can bypass shared location with a fixed city:

toml
[applets.weather]
city_name = "Warsaw, PL"

Static shared coordinates are not supported in the current config format.

Night Light

toml
[night_light]
schedule = "automatic"
temperature = 4200
transition_minutes = 15
# start_time = "20:00"
# end_time = "06:00"
FieldDefaultValuesMeaning
schedule"automatic"automatic, schedule, offSolar schedule, fixed clock schedule, or disabled gamma change.
temperature4200KelvinLower values are warmer.
transition_minutes15minutesFade duration.
start_timeunsetHH:MMRequired for fixed schedule.
end_timeunsetHH:MMRequired for fixed schedule.

Fixed schedule example:

toml
[night_light]
schedule = "schedule"
start_time = "20:30"
end_time = "07:00"
temperature = 4200
transition_minutes = 15

Idle

Default idle ladder:

StepACBattery
Monitor off600 seconds300 seconds
Lock session900 seconds900 seconds
Suspend3600 seconds1800 seconds
toml
[idle]
enabled = true
respect_inhibitors = true

[idle.profiles.ac]
listeners = [
  { timeout = 600, on_idle = "/usr/share/glimpse/scripts/monitors off", on_resume = "/usr/share/glimpse/scripts/monitors on" },
  { timeout = 900, on_idle = "loginctl lock-session", on_resume = "" },
  { timeout = 3600, on_idle = "systemctl suspend", on_resume = "" },
]

[idle.profiles.battery]
listeners = [
  { timeout = 300, on_idle = "/usr/share/glimpse/scripts/monitors off", on_resume = "/usr/share/glimpse/scripts/monitors on" },
  { timeout = 900, on_idle = "loginctl lock-session", on_resume = "" },
  { timeout = 1800, on_idle = "systemctl suspend", on_resume = "" },
]

Listener fields:

FieldRequiredMeaning
timeoutyesSeconds of no input before firing.
on_idleyesShell command run after timeout.
on_resumenoShell command run when activity returns after that listener fired.
respect_inhibitorsnoOverrides global inhibitor behavior for one listener.

Wallpaper, Backdrop, And Lock

toml
[wallpaper]
# path = "/home/alex/Pictures/wallpapers/coast.jpg"
color = "#101010"
fit = "cover"
transition_ms = 800

[backdrop]
enabled = true
# path = "/home/alex/Pictures/wallpapers/coast.jpg"
blur_radius = 24

[lock]
css_path = "themes/lock.css"

[lock.background]
# color = "#101010"
# path = "/home/alex/Pictures/wallpapers/lock.jpg"
# fit = "cover"
blur_radius = 0
dim = 0.35

[lock.clock]
enabled = true
time_format = "%H:%M"
date_format = "%A, %B %-d"

[lock.controls]
buttons = ["wifi", "input", "weather", "battery", "power"]

Calendar

toml
[calendar]
poll_interval = 600
sources = []

[[calendar.sources]]
id = "personal"
type = "ical"
name = "Personal"
uri = "https://calendar.google.com/calendar/ical/example/basic.ics"
color = "#4285f4"

[[calendar.sources]]
id = "local"
type = "directory"
name = "Local"
uri = "file:///home/alex/.config/glimpse/calendars"
color = "#f6c343"

Source types are ical and directory.

Custom Applet Package

Package files live under ~/.config/glimpse/applets/:

toml
# ~/.config/glimpse/applets/terminal.toml
id = "terminal"
type = "command"

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

Then place terminal in a panel section.