Cloned from https://blueprints.launchpad.net/horizon/+spec/horizon-dynamic-theme
Currently, the theme can be changed through local_settings.py and is only a single value. This allows for only a single theme to be used while Horizon is running. Many times, a user will want to change a theme dynamically, through the front end. Some use cases of this are the ability to toggle between a light and dark theme, or the ability to turn on a high contrast theme for accessibility reasons. Therefore, it would be beneficial for customization to allow a configuration that supports multiple dynamic themes.
I believe that we may be able to turn the custom theme variable into a tuple, to support multiple configured themes at once. Once in a tuple, we can 'build' multiple theme by wrapping the compress tag with a for loop.
Right now, the theme structure does not currently support building multiple themes, as it has no idea WHAT theme it is building, but only that is it located at /static/custom. Some change around this logic will need to occur to push the actual theme name through the compression loop and into the
This work can be split into two patches:
1. Pull CSS by theme name
2. Angular directive to show available themes and select desired theme
this is already implemented for rhos-9, see https://bugzilla.redhat.com/show_bug.cgi?id=1340355
Quality Engineering Management has reviewed and declined this request.
You may appeal this decision by reopening this request.
This is a significant feature which is often requested by customers.
Devel Sanity Check Verified that if a second Theme is specified you can switch between themes from within the UI.
Enabled the material theme
# override the CUSTOM_THEME_PATH variable with this settings snippet
AVAILABLE_THEMES=[('material', 'Material', 'themes/material'), ('rcue', 'Red Hat Theme', 'themes/rcue')]
Restarted httpd service
systemctl restart httpd
logged in and the theme was the Material Theme, and the drop down option for switch theme was available picked the rcue (Red Hat Theme) and it switched dynamically right there. The rcue theme does not expose the selection for other themes which is alright, as the intent of this RFE is to expose the ability to have multiple themes and be able to switch between them.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.