Building Better Theming


TrueOS UNSTABLE has begun testing the new Lumina Theme Engine! It is intended to simplify and expand upon the Appearance options in Desktop Settings. While ready for early testing and feedback, please keep in mind it isn’t complete (it’s tagged as version 0.33). Expect elements to change as development continues. After updating to the latest UNSTABLE patch, Lumina Theme Engine is available under Applications -> Settings.


First Look


Many of the disparate windows in the current Lumina configuration scheme are combined as tabs in the theme engine. Settings altered in the Appearance, Fonts, and Interface tabs are saved to lthemeengine.conf, which is stored in /usr/home/<username>/.config/lthemeengine. This is the primary directory for the theme engine, but the other tabs may look outside this directory for specific elements.




The Appearance tab is the main way to change Window theming. Choosing a different Style adjusts the overall look of window elements. Adjusting the Palette changes the color theme applied to windows. The Preview shows your changes in real-time, giving you a chance to view and interact with the new settings before applying over the existing choices. The Preview widget is planned for an expansion so it functions in the other tabs too!

There are a variety of preset Palettes to choose from, but also the ability to add a new Color scheme or copy an existing one. Choose the Custom option, which unlocks the Color scheme and Create/Copy drop-down menus. The included color schemes are read-only, but can be freely copied and adjusted. Choosing to Create a new color scheme prompts for the filename (also the displayed) name of the new scheme. Saving the new name opens more options in the Create/Copy drop menu when the new custom color scheme is chosen, including Edit, Rename, and Remove.






The Fonts tab sets the user preferred/default general and fixed width font and size. Note these settings can be overridden by specific applications. However, the system will try to use these as the default.

Click the Create fonts.conf button to open the Font Configuration window. You can enable Antialiasing, Hinting (plus options), add an LCD filter, and adjust the Font resolution. Once customized, click OK to save the new fonts.conf to /usr/home/<username>/.config/fontconfig.


Icon Theme


System default and user downloaded Icon themes are managed here. The default material-design themes display, along with any other theme downloaded from AppCafe or added to /usr/local/share/icons. The theme engine also checks /home/<username>/.local/share/icons for icons. Choose a theme and click Apply to immediately apply it. Note: while some elements of theme may be immediately applied, it is recommended to log out and back in to ensure the theme is fully applied.









The Interface tab governs menu effects and some mouse detection settings. Users can tweak the the double-click timing detection, cursor flash time, scrolling speed, and single-click activation. Options are also available to enable and adjust a variety of GUI menu effects and dialogue buttons.

Be sure the system has sufficient hardware and good video drivers installed before enabling gui effects.







Style Sheets


Custom Style Sheets are supported directly in the theme engine. These style sheets are stored in /usr/home/<username>/.config/lthemeengine/qss. Creating a .qss Style Sheet is very similar to css and, when applied, directly modifies window element sizes, colors, and many more of the visual elements of the desktop.

This tab is under active development and is likely to change visually and increase in functionality. Smaller configurable elements and simple examples are also being considered for addition to this tab.






Future goals


As stated, the theme engine is still in active development. The theme engine is based on the Qt5 Configuration Tool and is currently very “stock” in its appearance and functionality. Contributors to TrueOS and Lumina are looking to adjust the UI and add more functionality or user customization options, plus continue to improve its integration with Lumina. Give it a try and let us know what you think on Gitter or Discourse!