Free output name, skip storing description
Remove xdg-output support
xdg-output was used to extract the output name, which can be obtained
from wl_output as of interface version 4, release in Wayland 1.20 almost
two years ago.
Calculate blend factor as double
Change steps from 25K to 10K
Force mode on SIGUSR1
Sending SIGUSR1 will make wlsunset cycle between forcing the temperature
high, forcing it low, and returning to automatic temperature control.
display_dispatch: Terminate poll loop on EPIPE
display_dispatch tried to flush the display in a loop until it no longer
returns an error that is EAGAIN or EPIPE. This becomes an infinite loop
if the socket is closed.
Stop flushing if we hit EPIPE, as the connection is dead. We still try
to read what we were sent to the protocol error shows up in debug
output.
Negate longitude_time_offset
Instead of negating at every single point of use, just negate the
calculation.
Use timezone as time offset for manual time
When entering manual time, the timezone was adjusted in the time input
instead of storing the time offset. The time offset is necessary to
calculate the correct day boundaries.
Remove the timezone correction of time input and instead adjust the time
offset accordingly.
Move feature defines to C files
Ensure step time is at least 1 second
When configured to perform a very quick transition, the step time for 25
kelvin may end up being less than 1 second, rounding to zero. A zero
step time does not make any sense.
Store enabled state on output
This allows us to check the name just once when we receive the
xdg_output::name event instead of every time we set the temperature.
Only set up xdg-output once
Refactor RGB & XYZ colors into structs
Support running only for specific outputs (displays)
Useful for laptops with external displays connected. External displays
usually have an ability to adjust color temperature via built-in menu,
so you can run `wlsunset` exclusively for laptop's internal display.
Also different screens happen to look differently after setting the same
color temperature. Possibly has to do with the technology which
display is based on (TN or IPS).
Add .gitignore
`.cache` is for `clangd` cache
main.c: define timezone to tm.tm_gmtoff on FreeBSD
FreeBSD has BSD extension timezone, which conflicts with XSI extension
with the same name, according to time.h:
char *timezone(int, int); /* XXX XSI conflict */
...
FreeBSD also has long tm_gmtoff member of struct tm, which is offset
from UTC in seconds, according to time.h:
struct tm {
...
long tm_gmtoff; /* offset from UTC in seconds */
char *tm_zone; /* timezone abbreviation */
}
which is the same as XSI extension timezone.
Co-authored-by: Jan Beich <jbeich@FreeBSD.org> (downstream patch)
Reviewed by: Kenny Levinsen <kl@kl.wtf>