Tempo
Tempo combines a highly configurable clock with an optional weather summary in the status bar—you can run it as a clock-only module or pair it with live conditions. Clicking the module opens a rich menu with a calendar, hourly forecast, and a seven-day outlook.
What Tempo shows
- Status bar – current time (using your preferred
clock_format) and, when weather data is available, an icon + temperature badge that match the current conditions. - Menu – a resizable panel containing:
- A calendar with month navigation and highlighted selections.
- Current city, timestamp, weather description, feels-like temperature, humidity, and wind information.
- A horizontally scrollable hourly forecast.
- A vertically stacked seven-day forecast with dominant wind direction and speeds.
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
clock_format | string | %a %d %b %R | Strftime-compatible format used for the clock in the bar and in the menu header. See the chrono formatting guide for placeholders. |
formats | array | [] | Multiple datetime formats that can be cycled through by right-clicking the clock. When provided, clicking cycles through each format in sequence. |
timezones | array | [] | Timezone identifiers that can be cycled through by scrolling. Supports both IANA names (e.g., "UTC", "America/New_York") and fixed offsets (e.g., "+00:00", "-05:00"). |
weather_location | enum | None | Determines which coordinates are queried when requesting weather data. Current geo-locates via IP using ip-api.com. Use the City variant to pin the module to a specific place. |
weather_indicator | enum | IconAndTemperature | Determines what information about the weather is shown in the bar, valid options are None, Icon, and IconAndTemperature. |
City-based weather
[tempo]
clock_format = "%a %d %b %R"
weather_location = { City = "Rome" }
weather_indicator = "Icon"
Clock-only mode
If you omit weather_location, Tempo renders just the clock and calendar UI—no network calls or weather widgets.
[tempo]
clock_format = "%a %d %b %R"
# weather_location left unspecified on purpose
Format Cycling
The Tempo module supports multiple datetime formats that can be cycled through by right-clicking on the clock. When the formats array is provided, right-clicking the clock will cycle through each format in sequence.
- If
formatsis empty or not provided, the clock uses the singleclock_formatstring - If
formatscontains entries, right-clicking cycles through them and the singleclock_formatis ignored - The update interval automatically adjusts (1 second for formats with seconds, 5 seconds otherwise)
Example: Multiple Formats with Right-Click Cycling
[tempo]
# Fallback format (used if formats array is empty)
clock_format = "%a %d %b %R"
# Multiple formats that cycle on right-click
formats = [
"%a %d %b %R", # Mon 23 Dec 14:30
"%Y-%m-%d %H:%M:%S", # 2024-12-23 14:30:45
"%d/%m/%Y %I:%M %p", # 23/12/2024 02:30 PM
"%A, %B %d, %Y", # Monday, December 23, 2024
"%H:%M:%S", # 14:30:45 (updates every second)
"%x", # Locale date (e.g., 12/23/24)
"%X", # Locale time (e.g., 14:30:45)
]
Timezone Support
Tempo supports cycling through multiple timezones by scrolling on the clock widget. The timezones array accepts both IANA timezone names and fixed offset strings.
- IANA names (e.g.,
"UTC","America/New_York") are used when the format contains%Zto show timezone abbreviations - Fixed offsets (e.g.,
"+00:00","-05:00") are used for numeric offset display with%z,%:z, etc. - Scroll up/down to cycle forward/backward through the configured timezones
Example: Multiple Timezones
[tempo]
clock_format = "%a %d %b %R %Z" # Include timezone abbreviation
timezones = [
"UTC",
"America/New_York",
"Europe/London",
"+09:00", # Fixed offset for JST
"-05:00", # Fixed offset for EST
]
Example: Numeric Offsets Only
[tempo]
clock_format = "%a %d %b %R %:z" # Show numeric offset with colon
timezones = [
"+00:00", # UTC
"-05:00", # EST
"+09:00", # JST
"+01:00", # CET
]
Modules placement
Add "Tempo" to any section in [modules] so it renders in the status bar:
[modules]
right = [ [ "Tempo", "Privacy", "Settings" ] ]
Defaults
[tempo]
clock_format = "%a %d %b %R"
weather_location = "Current"
Networking & privacy
- Tempo fetches location data either from
ip-api.com(forCurrent) or from Open-Meteo's geocoding endpoint (forCity). - Weather observations and forecasts are requested from the Open-Meteo API every 30 minutes. Ensure
ashellhas network access. - If an API call fails the module keeps showing the last successful reading and logs a warning.
Tips
- Include seconds in
clock_format(e.g.,%T) only if you need them—the module automatically increases the refresh rate when second specifiers are present. - Use
Citywhen running behind VPNs or privacy relays, so the weather is tied to a predictable location. - Combine Tempo with the dynamic menu wrapper branch to get a spacious layout for the weather panel.