Switch Blender between your favorite light and dark interface themes on a schedule. The add-on schedule a timer and applies your chosen presets automatically.
*.xml) already shipped with Blender or one of your own.Blender_Light.xml and Blender_Dark.xml appear automatically.07:00 light / 19:00 dark. These values are stored per-user and ship with sensible fallbacks.This project is released under the GNU General Public License v3.0 or later. See the license file for the full text and your rights.
Refactor: Improved mechanism of theme application on Blender startup.
This extension requests the following permission:
Read existing themes from disk
Thank you for reporting it. I've uploaded version 1.0.1 with the suggestion. Please check if it will work for you.
Working on Blender 3.5 as well :)
Thanks for this awesome addon! It was easy to set up.
I have a suggestion for a future update regarding multiple themes. It would be amazing to have:
I would really appreciate your help with thi
A multiple theme and multiple scheduler version in available from: https://cosmomidias.gumroad.com/l/time-theme-switcher-pro
Hi! I found an issue with Claude's hep, where the theme (light/dark) is not correctly reapplied when Blender is closed and reopened — even though load_post_handler is supposed to force a re-apply on load. The old theme colors stay in place until I manually click the "Refresh" button in the addon preferences, which does fix it immediately.
Looking at the code, I believe the problem is in apply_theme():
python try: with _context_temp_override(context_to_use, override): result = bpy.ops.script.execute_preset(...) except Exception: return False
bpy.ops.script.execute_preset is a UI operator and depends on a valid window/area/region context. During load_post (right at startup), the UI may not be fully ready yet, so this call can silently fail. Since the exception is caught with a bare except Exception: return False and nothing is logged, there's no way to know the apply failed.
This becomes worse combined with this check in apply_theme_for_current_time():
python if prefs.active_theme == desired_state and not force: return "skipped"
If active_theme was already set to the correct value from a previous session, and the startup apply silently fails, there's no automatic retry that would actually reapply the theme — since the timer's retry call doesn't use force=True, it just checks active_theme again and skips.
Suggestion: log the exception (e.g. print or self.report) instead of silently swallowing it, and/or don't trust active_theme as "already correct" until apply_theme() has actually returned True at least once in the current session. That would make it obvious when the startup apply fails and would let a proper retry happen.