A simple CLI tool to determine sunrise and sunset times.
Use the Homebrew tap:
brew tap crescentrose/sunshine
brew install sunshine
The latest releases should be available on the Releases page, with precompiled versions for macOS and Linux. If you want to build the project yourself, you'll need the Rust compiler - follow the steps laid out in the Building section.
Note that if you're running sunshine
on macOS, you may need to grant the
application location permissions if you're using CoreLocation (an authorization
window will pop up).
sunshine [--simple] [--format="fmtstr"] <location>
location
can be:
- latitude and longitude prefixed with an @ character
.
to fetch the location from the network using FreeGeoIP- location name prefixed with an # character, fetched from OpenStreetMap and cached locally
- prefix the location string with an
!
to draw location data from macOS CoreLocation if available, or the GeoIP API. The rest of the location string will be used as a fallback.
Examples:
@45.8 15.9
=> sunset and sunrise times in Zagreb, Croatia
[email protected] 15.9
=> attempt to get GPS data or the GeoIP API, default to (45.8, 15.9) if unavailable
.
=> attempt to get data from the GeoIP API
!#Amsterdam
=> get GPS or GeoIP data if available, otherwise fall back to Amsterdam
#Venice, US
=> get the sunrise and sunset times in Venice, US
format
option is forwarded directly to chrono's format
function.
If simple
is passed, the only result will be either day
or night
,
depending on the time of the day (useful for easy scripting).
The times will always be in your system's timezone, not the timezone of the location.
A cargo build --release
should suffice. Tested on Rust 1.44.
This is a glorified shell script that I made to help teach myself Rust, so don't expect much in the way of code quality or maintainability. Since I don't intend on maintaining this project and turning it into the Next Big Thing I won't (at least for now) accept feature pull requests. However, if you find a bug or an especially egregious offense against Rust standards, please let me know.
This program is licensed under the terms of the Apache license, version 2.0. The full text is available in the LICENSE file.