The underlying issue is that Redshift relies on GeoClue to get information about the location of the machine to determine at what time the night mode should be applied. GeoClue gets this information via a web request to a location service. By default, it uses Mozilla Location Services, which has been discontinued in April 2024. The URlURL it tries to query (https://location.services.mozilla.com/v1/geolocate) returns a status of 404 Not Found
at this time, which is the reason for the error you are seeing in your log file. There is a bug report about this on the GeoClue bug tracker, but so far it is unresolved.
Going forward, there are two ways to work around this:
Configuring a different location provider for GeoClue
You can set a custom location provider for GeoClue in the configuration file at /etc/geoclue/geoclue.conf
. Currently, Mozilla Location Services and Google Geolocation API seem to be supported. As the first one has been retired, only the Google option seems to be a viable alternative for now.
Looking at the documentation, you need to get a Google API key. It seems to me like this is a paid service and I have not tested it.
Configuring the location manually in the Redshift configuration
Redshift accepts a configuration file which you can use to set a static location. They provide a sample configuration file which has all the possible options. You need to change the lines with lat
and lon
to your own latitude and longitude.
Note: If you are using AppArmor (which seems to be the default in Linux Mint), there is currently a bug in the AppArmor profile for Redshift. For your configuration file to be readable by Redshift, it must be placed at ~/.config/redshift.conf
and not at ~/.config/redshift/redshift.conf
as suggested by the Redshift documentation.