Slideshow ignores dark mode setting
The slideshow currently doesn't work in dark mode.
The dark_mode
setting is never read inside hyperpaperd
:
Click to expand
def set_wallpapers(self, wp_paths=None, modes=None, single_spanned=False):
n_monitors = build_monitors_autodetect()
if self.monitors_is_changed(n_monitors):
self.update_monitors(n_monitors)
if wp_paths is not None:
if single_spanned:
for m in self.monitors:
m.wallpaper = wp_paths[0]
virt_monitor = build_combined_spanned_monitor(self.monitors)
virt_monitor.wallpaper = wp_paths[0]
apply_wallpapers(
[virt_monitor],
lockscreen=False, force_random_name=True,
- skip_save=True
+ skip_save=True,
+ set_dark=self.config['dark_mode']
)
return
cycle_wps = cycle(wp_paths)
while len(wp_paths) < len(self.monitors):
wp_paths.append(next(cycle_wps))
if modes is None:
modes = [m.mode for m in self.monitors]
for monitor, mode, wp in zip(self.monitors, modes, wp_paths):
if mode not in ('zoom', 'fit_black', 'fit_blur',
'center_black', 'center_blur'):
monitor.mode = 'zoom'
else:
monitor.mode = mode
monitor.wallpaper = wp
elif None in [m.wallpaper for m in self.monitors]:
return
apply_wallpapers(
self.monitors, lockscreen=False, force_random_name=True,
- skip_save=True
+ skip_save=True,
+ set_dark=self.config['dark_mode']
)
Bonus issue:
The same is for monitor changes:
Click to expand
def update_monitors_from_config_and_set_wallpapers(self):
if (
self.config['Daemon']['wallpaper_rotation_enabled'] and
len(self.config['Daemon']['rotating_wallpapers']) > 0
):
self.update_thread()
return
last_wps = self.config.get('last_wps', None)
if last_wps is not None and len(last_wps.get('wps', {})) > 0:
if last_wps.get('spanned', False):
virt_monitor = build_combined_spanned_monitor(
self.monitors, skip_save=True
)
fwp = list(last_wps['wps'].values())[0]
virt_monitor.wallpaper = fwp['wp']
virt_monitor.mode = fwp.get('mode', 'zoom')
- apply_wallpapers([virt_monitor])
+ apply_wallpapers([virt_monitor], set_dark=self.config['dark_mode'])
return
for m in self.monitors:
cm = last_wps['wps'].get(
m.name, {'wp': m.wallpaper, 'mode': m.mode}
)
m.wallpaper = cm['wp']
m.mode = cm['mode']
- apply_wallpapers(self.monitors, skip_save=True)
+ apply_wallpapers(self.monitors, skip_save=True, set_dark=self.config['dark_mode'])
Bonus issue 2:
Python complains about apply_wallpapers() got an unexpected keyword argument 'lockscreen'
when starting hyperpaperd
:
$ /usr/lib/hydrapaperd
Exception in thread Thread-1 (_thread_worker):
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/hydrapaperd", line 149, in _thread_worker
self.set_wallpapers(
File "/usr/lib/hydrapaperd", line 209, in set_wallpapers
apply_wallpapers(
TypeError: apply_wallpapers() got an unexpected keyword argument 'lockscreen'
Click to expand
def set_wallpapers(self, wp_paths=None, modes=None, single_spanned=False):
n_monitors = build_monitors_autodetect()
if self.monitors_is_changed(n_monitors):
self.update_monitors(n_monitors)
if wp_paths is not None:
if single_spanned:
for m in self.monitors:
m.wallpaper = wp_paths[0]
virt_monitor = build_combined_spanned_monitor(self.monitors)
virt_monitor.wallpaper = wp_paths[0]
apply_wallpapers(
[virt_monitor],
- lockscreen=False, force_random_name=True,
+ force_random_name=True,
skip_save=True
)
return
cycle_wps = cycle(wp_paths)
while len(wp_paths) < len(self.monitors):
wp_paths.append(next(cycle_wps))
if modes is None:
modes = [m.mode for m in self.monitors]
for monitor, mode, wp in zip(self.monitors, modes, wp_paths):
if mode not in ('zoom', 'fit_black', 'fit_blur',
'center_black', 'center_blur'):
monitor.mode = 'zoom'
else:
monitor.mode = mode
monitor.wallpaper = wp
elif None in [m.wallpaper for m in self.monitors]:
return
apply_wallpapers(
- self.monitors, lockscreen=False, force_random_name=True,
+ self.monitors, force_random_name=True,
skip_save=True
)
Edited by Lucki