Uses new Rust 2021
|new 1.0.5||Aug 12, 2022|
|1.0.4||Jul 30, 2022|
|1.0.3||Jul 25, 2022|
|1.0.2||Jul 24, 2022|
|1.0.0||Jul 23, 2022|
#52 in Unix APIs
154 downloads per month
A Linux daemon to automatically update the system timezone based on location.
- The list of timezones and their location is loaded from the
- The current location is retrieved from GeoClue
- The distance between the current location and each timezone is calculated with the Haversine formula
- The shortest distance determines the current timezone set via
- Then, the daemon waits for the location updated signal from GeoClue, and repeats from step 2 when it happens
Note: The timezone choice may not be accurate if a reference city in a neighboring timezone is closer than any one in the actual timezone.
- IANA Time Zone Database a.k.a.
- The user must be allowed to use the
rootor Polkit rule)
- The user must have a running GeoClue agent or the GeoClue configuration must allow the absence of agent with an empty agent
whitelist(see also Stebalien/localtime - Configuring GeoClue, geoclue/geoclue#74)
Please see the examples/ directory for sample configurations.
Sample Nix modules can be found here (may be submitted to NixOS/nixpkgs if there is interest):
cargo build --release
This service depends on the
tzdata package which allows to update the Time Zone Database independently and does not depend on a third-party service to calculate distances,
here are some alternatives which have made different trade-offs for performance and accuracy:
- github.com/Stebalien/localtime: Depends on the unmaintained github.com/bradfitz/latlong Go library.
- Gnome Automatic Time Zone (Source Code): Depends on the
tzdatapackage and Nominatim Web API for distances.
GNU General Public License v3.0