Finding a nice syntax theme is a pain


Given that there are really nice themes out there, it’s a shame that it’s currently
a major pain point to find one.

While atom has changed and improved dramatically since I started using it, the
process of theme discovery has hardly changed since then. Currently there are about 2500 themes to chose from, there were decidedly fewer back then.

It starts with the the first page. The theme page shows six rarely changing
“Featured” themes above another six (also rarely changing) “Trending this week” themes.
Another thing they have in common are half of the entries.
In contrast to this we have the bleeding edge with “Newest” and
“Recently Updated” below that (again, half of the second list overlaps with the first).
While “Newest” certainly offers excitement, it takes a lot of digging to find something
of quality here. Sadly the most commonly encountered theme readme there is the
atom-pre-1.0-theme-gif which used to be shown in the atom flight manual. While this
obviously shows the lack of refinement of a theme and to be honest I’ve never given any theme
like this a chance, we might be missing out on some good stuff here. The themes are
basically css, it can’t be that hard to render a web preview of them (maybe even
before you have to klick on the name because you think it sounds promising).

The second most common thing I encounter are deprecations.
When there is a theme that looks decent on the screenshots, I go over to atom and trying it out.
More than 50% of the time, the theme ends up displaying a deprecation
triangle in the lower right corner. This is a result of a lot of (even good) themes
being published and subsequently abandoned. My personal experience has shown that
authors of those themes don’t even accept pull requests any more for simply replacing
deprecated selectors.
It can’t be that hard to check for deprecations on a CI-server and to mark the
themes accordingly.

Themes also never seem to be removed. There is a great theme by simurai called DuoTone
that was one of the early things that got me interested in Atom. This theme has since been
deprecated and super-seeded by a theme called Tone, but while its github readme states
that the theme has been deprecated, the theme description on the webpage does not show that notice
(which is weird, because it seems to be rendered from the same source). Themes like that
should be removed after some time and replaced with a pointer to a recommended alternative.

The general problem seems to be what was nicely summed up by this post by idleberg:
People prefer to write their own thing rather than contributing. Showing the user
the difference between themes that receive a minimum amount of attention (screenshots,
no deprecations etc) should discourage such practices. Also it wouldn’t hurt to encourage
contributions in the atom flight manual.
Maybe you can even award badges for especially well-made themes and show more than
just six of them.

My bet is that by providing better discoverability, instead of being frustrated
by not finding their perfect theme and creating their own half-baked effort, users
will find a theme they like and help iron out its deficiencies.


Honestly, I’ve wasted far too much time as a brand new user, reaching through 50 pages of most popular, and then another 50 of recently updated, not finding a single theme that works out-of-the-box to my liking. I don’t even think I’m that picky, I do need R language support, but that’s another story.

This post is vital I think, and the fixes shouldn’t be too hard to implement. I even volunteer as community curator - I’m joking, but the concept isn’t horrible, no? One could even just provide a better platform for it and let the community do a more impactful job deciding.

Thanks for reading!


You mention another good point. Language support can be automatically determined (based on which style-sheets the themes include in styles/languages). It should be possible to filter themes by language support.


Some kind of theme simulator could even be useful for theme developers in deciding what they want to support and what they need to include to do so. That way, you wouldn’t have to be a Go developer with a project that you can check against in order to write a theme that works for Go.