Those are good ideas but my problem at the moment is that the theming feature of Joplin is a bit inconsistent:

  • We have the actual themes (Light, Dark, Nord, etc.), which are defined by setting various colours for the background, main colour, etc. And it's those colours that are passed to the plugin views. The themes are implemented that way so that they work in both the desktop app and mobile app (which doesn't support CSS).

  • And then we have the CSS theming, which has always been more or less unofficial because, while understand it makes it easy to customise the app, it conflicts with the "official" themes. It's also an uncontrolled environment because it's possible to set various CSS properties which might break the app. And of course, new app updates can also break themes. In comparison, themes are safe because the defined properties are used only in places where it makes sense.

So ideally there would be a unified way to theme the application. Perhaps it means dropping support for the official themes and instead going full CSS? Or, on the contrary, drop support for custom CSS and improve theming support, for example by allowing to set paddings, margins, borders, etc. and without having to compile the app to add a theme. I'm not even sure which one is best in terms of maintenance and UX. It's a tricky issue that's been around for a while.

2 Likes