-
-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UI: Composable Themes System #9653
Conversation
8d75aa9
to
6d063e9
Compare
9417570
to
7f00c43
Compare
11fb0ed
to
f358480
Compare
Based on feedback by @Warchamp7 I removed the UI for customising variables for now and cut the PR down a bit. We will revisit that later on once we're comfortable with the composition system and its capabilities. Edit: Themes are still unfinished, I'll leave that for Warchamp to solve :) |
c884bf1
to
1863787
Compare
9582c64
to
438605d
Compare
438605d
to
e457578
Compare
07882c3
to
d00129b
Compare
d8b5813
to
6603b90
Compare
ac16bce
to
10eb1f7
Compare
10eb1f7
to
8d0fa67
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A quick skim. Will set aside some time for building/testing later this week.
f7f148e
to
92907cf
Compare
92907cf
to
be62e79
Compare
Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
0f781ea
to
5ceb497
Compare
5ceb497
to
61a9ae9
Compare
Description
This PR introduces a system that allows "layering" of theme files, i.e. a base theme can provide styling, a variant theme the colour palette, and optional high-contrast adjustments or user customisation can adjust it to suit the user's needs.
Themes will be able to specify variables that can be overwritten and extended by child themes, to provide much more flexibility than the Qt palette system currently in use, as it allows arbitrary values to be specified.
Bonus feature: Loaded theme can be watched for changes and automatically reloaded when edited (hidden config option
[Appearance]
->AutoReload
).Also see: Overview of syntax and design goals (will be migrated to wiki/design repo once finalised).
Additionally, theme settings are moved to a new "Appearance" tab in the settings menu, which will be expanded upon in the future:
Motivation and Context
This PR is based around conversations with @Warchamp7 on how we can improve theming in OBS and better accomodate new UI elements in the future.
An additional benefit for third-party themes is that they can inherit stock OBS themes and adjust them to their needs without having to copy everything into their own file. This also should make them forward-compatible as styling for the UI elements introduced in PRs such as #8446 will automatically be inherited and adjusted to the themes colour palette.
How Has This Been Tested?
Built a basic test base theme (
Yami.obt
) and variant theme (Yami_test.ovt
) to validate parsers, UI, and composing to be functional.Types of changes
Checklist: