generated from me/template-mit
97 lines
2.4 KiB
Markdown
97 lines
2.4 KiB
Markdown
# Sunset Alarm (CLI)
|
|
|
|
Command line Sunset Alarm app which can be run as a user daemon.
|
|
|
|
Sunset Alarm allows a user to receive an alert at a specified amount of minutes
|
|
before sunset. This may be helpful for starting any practices such as preparing
|
|
for sungazing, or as a reminder to go and find a campsite before it gets dark.
|
|
|
|
## Usage
|
|
|
|
() sections are required. [] sections are optional. | denotes multiple options.
|
|
|
|
```console
|
|
sunset-timer (-l LAT:LONG | -t HH24:MI) (-m MINUTES) [-h]
|
|
```
|
|
|
|
## Example
|
|
|
|
Set an alarm 90 minutes before for your lat/long experiences sunset:
|
|
|
|
```shell
|
|
sunset-alarm -l 32.123:-111.111 -m 90
|
|
```
|
|
|
|
Set an alarm 5 minutes after a manually determined sunset time:
|
|
|
|
```shell
|
|
sunset-alarm -t 18:00 -m -5
|
|
```
|
|
|
|
## Install
|
|
|
|
Recommended installation location is under `/usr/local/*`.
|
|
|
|
```console
|
|
# git clone http://git.hyperling.com/me/sunset-alarm-cli /usr/local/src/sunset_alarm_cli
|
|
# ln -s /usr/local/src/sunset_alarm_cli/sunset-alarm /usr/local/bin/
|
|
```
|
|
|
|
### Daemonize
|
|
|
|
**runit**
|
|
|
|
Create the run file:
|
|
|
|
```console
|
|
# vi /etc/sv/sunset-alarm/run:
|
|
```
|
|
|
|
```shell
|
|
#!/bin/sh -e
|
|
exec 2>&1
|
|
chpst -u user /usr/local/bin/sunset-alarm -l 33:-112 -m 15
|
|
```
|
|
|
|
Enable the service:
|
|
|
|
```console
|
|
# ln -s /etc/sv/sunset-alarm /var/services/
|
|
```
|
|
|
|
### i3
|
|
|
|
Simply add an exec to the end of your config file.
|
|
|
|
```shell
|
|
echo "exec --no-startup-id /usr/local/bin/sunset-alarm -l 33:-112 -m 15" >> ~/.config/i3/config
|
|
```
|
|
|
|
## Parameters
|
|
|
|
**Required**
|
|
|
|
-m : Accepts a minute value which is used to check if we have approached the
|
|
alert period before sunset. Can be positive, negative, or 0.
|
|
|
|
**Optional**
|
|
|
|
-l : Accepts a lat:long value which is used to check Open Meteo for the
|
|
location's sunset time. This is required if -t is not passed.
|
|
|
|
-t : Accepts a time value for sunset time. If this is passed, it bypasses the
|
|
Open Meteo check and acts as a hardcoded time. The minutes parameter is still
|
|
required to know when to alert prior to this time.
|
|
|
|
## Design
|
|
|
|
App displays a persistent alert via channels such as `fyi` or `notify-send` once
|
|
the current time is between (sunset - minutes) and midnight. Even if the system
|
|
is powered on after the alert time has passed, the program should display the
|
|
alert until the day has passed.
|
|
|
|
App requires an internet connection. If no connection is found, it sleeps for 5
|
|
minutes and then tries again to retrieve the sunset time. Once the sunset time has
|
|
been retrieved for the current day, it stops checking Open Meteo until the next
|
|
day.
|