World time in your terminal - see current times across time zones at a glance.
Install
curl -fsSL https://raw.githubusercontent.com/aleris/woti/main/scripts/install.sh | shTo install a specific version:
curl -fsSL https://raw.githubusercontent.com/aleris/woti/main/scripts/install.sh | sh -s -- --version v0.29.0Or download it from releases.
Supported platforms: macOS (Apple Silicon, Intel) and Linux (x86_64, aarch64).
The binary is installed to ~/.local/bin.
Usage
woti # Launch the TUI woti add PST # Add by timezone abbreviation (PST, EET, CET, CST, EST, etc.) (*) woti add Bucharest # Add by city name woti add America/New_York # Add by IANA identifier in tz database (**) woti add San Jose # Add by city name that is not in IANA (***) woti remove PST # Remove a timezone woti --help # Show help
(*) List of time zone abbreviations
(**) List of tz database time zones
(***) The list is limited see tz_data.rs
Local and UTC are preconfigured by default. Configuration is stored in ~/.config/woti/config.toml.
TUI controls
←/→: scroll the timeline by one cell (60, 30, or 15 minutes depending oni)↑/↓: scroll timezone listc: copy the current selected column to clipboardw: turn workday hours shading on/offf: cycle time format (mixed -> am/pm -> 24h → …)i: cycle navigation interval (60 → 30 → 15 → …) — the choice is persistedq/x/Esc,ctrl+c: exit
In mixed mode, 12h/24h is chosen per timezone based on the country's convention
from Unicode CLDR data, last updated on March 2026.
This covers ~320 canonical IANA zones; legacy or uncommon aliases default to 24h.
Press f to override if the automatic choice doesn't match your preference - the setting is saved.
Print to console
To print the time with all your zones to console:
woti print # prints for current time woti print --time 19:00 # prints for 7 pm using the current date woti print --date 2026-03-20 --time 19:00 # prints for 7 pm on March 20, 2026
The input format is ISO date and time.
The output is the same as for copy from TUI, just printed to stdout directly. It prints something like:
UTC 17:00
Bucharest / EET 19:00
San Jose / PDT 10am
Bangalore / IST 10:30pm
Pinning date & time in TUI
By default, the TUI shows the current live time. Use --date and --time to pin the display
to a specific point in time (ISO 8601 format, interpreted in your local timezone):
woti --date 2026-04-15 # Launch pinned to April 15, current time woti --time 09:30 # Today at 09:30 woti --date 2026-04-15 --time 14:00 # April 15 at 2pm
When pinned, the clock does not advance - the displayed time stays fixed. Left/Right arrow navigation still shifts by one cell (60, 30, or 15 minutes — see below) relative to the pinned time.
Navigation interval
By default each timeline cell represents one hour. Switch to finer granularity with the
i shortcut in the TUI or with the --interval flag at launch:
woti --interval 30 # Launch with 30-minute cells woti --interval 15 # Launch with 15-minute cells
- The
ikey inside the TUI cycles60 → 30 → 15 → 60and persists the choice toconfig.toml(same asfandw). --intervalis a session-only override that does not modify the saved config (same as--date/--time).- At 30/15-minute intervals each hour cell gains 1 or 3 intermediate ticks; the sub-row
shows minute markers as superscript digits (
¹⁵ ³⁰ ⁴⁵). For whole-hour timezones the hour cell sub-row stays blank (the hour digit above marks the slot). For fractional zones (Nepal+5:45, India+5:30, …) the intermediate cell that lands on wall:00shows⁰⁰, since the row above only shows a·tick there. At 60 minutes the view is byte-for-byte identical to earlier versions.
Configuration
The configuration is stored in a config file.
On macOS/Linux the configuration file is located at ~/.config/woti/config.toml.
The file is updated when changed from the cli.
You can also update it directly (for example to reorder timezones).
Development
Requires Rust 2024 edition (1.85+).
Before committing, run dev setup to install the git hook to increment version.
Build, test, run:
cargo build
cargo test
cargo run
cargo run -- --versionRelease, pushes current version tag which triggers workflow on GitHub:
