I few of these I’ve been able to accomplish via CSS style sheets and the Python API
Such as flat style tabs and the docker close/undock. Going the route of a Python script might not be what we want though, but I’m not sure how we best push these changes to the software.
Slimmer tabs over the canvas is possible to do with style sheets, but it’s finicky trying to locate the correct tab bar in the UI to style it (unless we want all tab bars to look the same, which I can’t recommend ). If it had/has a special C++ class like “KisDocumentTabBar” or something then there’d be no issue styling the correct tabs. But there is an issue where the canvas itself doesn’t reflect that the tab bar has changed in size without first manually adjust the window.
Spacing between dockers are also possible to customize with style sheets, but I had inconsistent results with it. Sometimes I saw the changes I wrote in the style sheets, sometimes it was back to Krita’s normal spacing.
But there is some logic between the UI spacing, the docker tab bars (it gets hidden when there’s only a single docker occupying that particular spot), and the docker title bars (the row with the close and undock button) that makes it practically impossible to get a consistently styled UI with just Python and CSS. If you calculate the spacing from the tab bar it’s gonna look nice when there are tabs, but not as nice when there isn’t. When you calculate the spacing from the title bar it looks nice when there are no tabs, but there’s an ugly extra gap when you do have tabs. Hopefully I’m making myself understood with this description But this is something that’s gonna be have to be fixed up in code first.
There are also things like the custom slider spinboxes and buttons with menu arrows that doesn’t seem to work well with CSS, but it might also just be me not knowing fully what I’m doing
Basically, there is a lot that can be done using CSS style sheets already, and it’s all handled internally by Qt. Creating a Python script that lets you load in style sheets is easy enough. So if we want to implement “Theme Customization” it might be worth doing it this way, but from what I can tell it’s gonna need some tweaks internally. It’d have to be an effort on the developers’ part to decide what UI elements can be styled with CSS and how, and then refactor (here is where I lost the interest of all programmers ) certain classes to better adhere to the CSS.
Or there might be a entirely better way than CSS style sheets, and I’ve just not learned about yet as I stumble through PyQt5!