Show HN: Daylight – track sunrise / sunset times in your terminal
github.comI love the sunlight and dread the long, dark winter evenings of Northern Europe. I often look up sunrise / sunset times and count off the days until the darkness is gone.
Now I've written a terminal app for this (Mac/Linux)
Features: a colorful summary of daylight times for your location; projected change over the coming days; handles NO_COLOR and a ---short flag if you dislike the output format.
The location is IP-based but you can override this if you're on a VPN. Just create a terminal alias with the --loc flag. The app supports areas in the arctic / antarctic circle too.
Check our the repository for a preview and instructions on how you can install it with Homebrew.
(There is a Windows build but it's not yet tested)
I was curious how the times were obtained. It uses https://github.com/nathan-osman/go-sunrise , which links to this calculation method: https://en.wikipedia.org/wiki/Sunrise_equation#Complete_calc...
Great link thanks!
Of course, you can get this information in Emacs, too. You'll need to get your lat and long, first:
Then, you can `M-x sunrise-sunset` and see the times (and total daylight hours) in the echo area.Relevant XKCD: https://xkcd.com/378/
Does this pull the times from an online service or are they calculated locally? I tried to read the code to work it out but I don't program in Go so I got a little lost
It gets your latitude/longitude from an IP lookup service, then does a geometric calculation locally
Is there a configuration file or command line option to provide location information manually?
Yes, you can use `--loc="12.34,56.78"` where the values are longitude and latitude.
You can also override the Timezone with `--timezone` (passing an IANA timezone e.g. America/New_York).
Great looking app!!
I immediately checked how you do location lookups:
> IP lookup is powered by https://ipinfo.io. They provide a good service so please don't spam requests.
There was a thread about them recently — the scale of their operation was very surprising.
It _is_ possible to use native OS APIs for location lookup, but these all seem to rely on cgo. Which was a bit intimidating for a "let's learn Golang" project
(Probably not the nicest code and no doubt I've broken a lot of Go idioms, but it was a good learning exercise)
IPInfo is a good service and their developer relations were surprisingly relaxed about me (mis)using their API this way
Windows build works fine (Windows 10 Professional x64 22H2).
Thanks! (Don't have a Windows machine right now so that's very helpful)
Cool! Can we use the sky hue as Terminal background or overal “theme”?
This is nice, I like it!
Is there a way to make it use 24h time, rather than AM/PM?
If I use e.g. `daylight --timezone=Europe/Copenhagen` it does actually show the 24h times, which is nice. But til still appends AM/PM, which is kind of weird. :)
Is the noon color scheme supposed to look like Finn from Adventure Time?