meson: Copy seatd's scdoc handling

This fixes cross-compiling, and avoids unnecessary search for a shell.
readme: Update mailing list
Bump version to 0.2.0
Add version command line flag
Add support for manual sunset/sunrise

The new -S/-s/-d flags allow for manually specifying the time of sunset,
ssunrise in the format of HH:MM, and the transitional animation duration
in seconds, respectively.

This is implemented by sidestepping the calc_sun call in manual mode.
The rest of wlsunset operates as usual.
Give config gamma as double to set_temperature

The gamma argument to set_temperature was incorrectly typed as an int,
causing unfortunate rounding.
Use illuminant D for the majority of temperatures

D65, the natural whitepoint that wlsunset assumes, is defined on
illuminant D, which simulates daylight with atmospheric effects.
However, we used planckian locus for all values under 6500 K, which
meant that there was a significant jump in color - specifically, a
sudden reduction in green and blue - as we started reducing the color

Instead, we purely use illuminant D down to 4000 K where it is well
defined. Below 4000 K, illuminant D starts unintentionally approaching
the planckian locus, before finally breaking completely at 2000 K. We
extend the boundary of illuminant D to 2500 K and perform a
sine-smoothed transition to planckian locus from 4000 K to 2500 K to
extend the range of wlsunset down to 1667 K, where planckian locus ends
and we finally give up.

The end-result is a smooth transition along all valid temperature
values, with no sudden jumps as we had before. However, we do end up
with slightly greener/bluer colors than earlier. We'll have to see how
that holds up.
meson: Disable implicit-fallthrough

Clang cannot decide how it wishes to handle implicit-fallthrough, with
different solutions across different versions, which presents a problem
on FreeBSD where several majors of clang remain relevant.

Disable implicit-fallthrough until clang has figured out what it wants
to do in life.
ci: Add FreeBSD to CI
ec0c1614 — Jan Beich 6 months ago
meson: explicitly depend on libwayland for includes

On BSDs base compiler doesn't search packages by default, making it
easy for vendors to depend only on base system.

FAILED: wlsunset.p/main.c.o
cc -Iwlsunset.p -I. -I.. -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c11 -g -Wundef -Wunused -Wlogical-op -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Wstrict-prototypes -Wimplicit-fallthrough -Wmissing-prototypes -Wno-unknown-warning-option -Wno-unused-command-line-argument -Wvla -Wl,--exclude-libs=ALL -D_USE_MATH_DEFINES -D_XOPEN_SOURCE=700 -MD -MQ wlsunset.p/main.c.o -MF wlsunset.p/main.c.o.d -o wlsunset.p/main.c.o -c ../main.c
../main.c:14:10: fatal error: 'wayland-client-protocol.h' file not found
 #include <wayland-client-protocol.h>
1 error generated.
man: Remove reference to missing features
Use clock_gettime for all time requests
Minor line length reduction
Move longitude time correction out of calc_sun

calc_sun reported sun trajectory in seconds since the start of a UTC
day, as they would occur for the specified UTC day. The caller would
then add the UTC timestamp for the start of a UTC day to these numbers.
This lead to complications, as e.g. a sunrise in China would be a
negative value, as it occurred in the last UTC day.

Futhermore, the start of a UTC day was used to signal the need for new
sun calculations. This would lead to recalculations to possibly occur
after its results were needed, such as after sunrise when the target
longitude deviated significantly from the prime meridian.

To fix this, we apply longitude time correction to the start of day
calculation. This way recalculation will occur on the start of the
longitude local day, close midnight for the observer.

We also remove the longitude time correction from calc_sun, so that it
simply returning the number of seconds since the start of the local day
of the observer. The caller then adds the start of the longitude local
day to get the final numbers.
Sort sun and wayland code
Remove manual duration for now
Do not use -1 for sun calc error
Self-pipe timer signal handling
Split up main a bit