There are almost no themes for RemNote (ethomasv/RemNoteTheme being the exception). Some people would like to make a theme if they knew it would not break for a resonably long time. This probably will not happen for at least a few month.
I think the best approach for us as a community would be to focus on a modular theme template first which abstracts away all the possibly changing/breaking markup details and expose CSS variables which can be kept stable over time. The implementation of an actual theme is then reduced to a one time definition of those variables.
Modular Theme
Roam has already done this
- Explanation of the idea: https://alexanderrink.medium.com/a-modular-block-based-css-system-for-roamresearch-f709c8b034c This is the
- The modular theme: https://roamresearch.com/#/app/brnpblc/page/HITFj6Gl1
Basically it looks like this:
/* Hidden implementation (theme template)*/
.highlight-color--red {
background-color: var(--highlight-color-red, red);
border-radius: var(--highlight-border-radius, 0px);
}
.highlight-color--yellow {
background-color: var(--highlight-color-yellow, yellow);
border-radius: var(--highlight-border-radius, 0px);
}
/* ... */
/* Exposed Customization (the theme)*/
:root {
--highlight-color-red: red;
--highlight-color-yellow: yellow;
/* ... */
--highlight-border-radius: 3px;
/* ... */
}
Advantages
A modular theme has a few advantages over independent themes.
(1) The maintenance efforts for fixing themes when markup changes happen are centralized and can be done by very few people. They are then distributed to all themes based on the template automatically. This means the maintenance effort for themes is zero. The creation time of theme is also quite low, more in the order of minutes to 1-2 hours as opposed to multiple evenings.
(2) Such a template could be implemented iteratively starting with the most valuable things, e.g. abstracting highlight colors and some fonts. And only later (aka when there are more devs) do spacing stuff etc.
(3) Maybe most importantly: Theme creation would be much more accessible! The modular template is self descriptive and even non-programmers can change the values of some well documented variables and see the effects in real time.
(4) This is a great community project: The maintenance effort/responsibilities can be distributed cleanly over multiple people. Coordination should not be too hard. There are easier parts (e.g. colors of various UI elements) and harder parts (thinking about abstracting spacings). Everyone can contribute in a meaningful way.
Such a thing could (but does not has to) be distributed over the Library. The architecture to define nicely nested code blocks with embedded documentation and examples and the split of implementation and customization is already in place.
Even an (auto) update mechanism is prepared and could probably be made functional in 1-2 days of work.
Next steps
The first steps are easy and non-technical:
-
Identify the most important parts that a theme would like to change (Highlight colors, background color, font-family, …)
-
Categorize and systematically name those variables. The builtin Custom CSS template is a good start and we could reuse much of the previously mentioned roam template, both in terms of exposed variables and accessible structuring/documentation.
Maybe we should draft this in a collaborative document somewhere? This would be step 0.
Anyone willing to set this up?
(Unnecessary Cynical Comment)
I mean on a level the library itself is such a modular theme where each scroll captures an aspect of the interface which can be maintained and customized separately. The only difference is that it can not be installed as a complete package - yet! It has still not generated any momentum and people are still not inclined to pool efforts so I still have hope though, feel free to prove me wrong
If we have this we can assign responsibilities for different areas and implement the actual CSS.
References
- What is Custom CSS and how do I use it?
- RemNote Library: A place to discover and share Custom CSS (and more?)
-
[Poll] Should we further improve the markup?
- Custom Rem-level formatting with tags: Contains a few, incomplete proposed markup improvements
- Anyone tried to do a Notion CSS Theme?: Discussion about stability of the markup
@Martin I had the impression that the Roam modular theme reuses CSS variables defined by Roam itself. Does RemNote internally use variables and if so, could they be exposed?