Topic: UI Design and Themes
Now that we're getting close to userspace again, We need to start figuring out what the UI Design of ravynOS is going to be.
None of this is set in stone as of now. Feel free to voice comments and concerns so we can have an active conversation about this.
ravynOS UI Design & Desktop
overall design goals
We want something reminiscent of OS Catalina but still unique. We're not trying to wholesale rip off Apple's visual design after all.
To quote Zoe's exact words:
inspired by catalina and some of the earlier versions, with maybe some modern touches...something similar but distinct, and elegant
Desktop
The desktop itself would have a very similar layout that users of macOS would be familiar with, A top menu/status bar and a bottom application dock.
The application dock, like macOS, would default to being at the bottom of the screen but can be customized to sit on either left or right sides of the screen. As well as automatically hide itself in different situations. The dock would be able to have applications pinned to it as well as folders which can be opened from the dock to quickly grab or open files.
User customization
As always, some level of user customization and personalization will be available through:
- cursor choices
- accent color choices
- dark/light mode
- wallpaper choices
- high contrast modes (these could be implemented as entire separate themes on the backend, windows did this.)
The basics.
Backend Theme System
NOTE: We want to establish our own visual identity first and foremost. More intense user customization will always be a side thing but it shouldn't be literally impossible without breaking apps substantially and harcoding assumptions (i.e. GTK "theming").
Rather than hardciding a bunch of information against user settings being able to have fine control over the appearance of apps without needing to recompile appkit or other code modules repeatedly could be very helpful.
Themes could be used on the backend to separate the light and dark modes alongside the high contrast modes. High contrast modes could edit more than just colors.
We should strive to avoid hardcoding theme assumptions at every avenue. So that if we change our design metrics they don't force developers to redo their apps or force using an older visual style to retain compatibility (windows, gtk)
As a bonus, this would mean that power users could hack at and make their own themes that the system is capable of actually respecting without substantially breaking applications barring those that make their own assumptions about system theme (which we should actively discourage as the system itself can change its visual style slightly due to accessibility options and high contrast modes.)
SVGs
SVG file rendering with AppKit would open the door to being able to render controls and icons using vector graphics that could be adjusted in real time based on thing like color schemes or user accent color choices. Similar to how KDE handles certain aspects of it's theming.
Things we will use SVG files for:
- Icons
- Symbolic Icons (Tray icons)
Things we could use SVG files for (and probably will if a better solution doesn't present itself):
- Cursors
- AppKit controls
We could look at how KVantum themes setup objects for information about how we should setup control SVG files if we decide to go that route
Source: ravynsoft/ravynos