Decided to try and make a Blender UI theme

So recently I was encouraged to remember that I am using a theme that I made like more than 10 years ago and it’s terrible and I should fix it for myself.

Originally it was supposed to solve 2 problems:

  • Visibility in the viewport, so that it’s easier to distinguish wireframe and mesh elements and all the stuff one works on in the viewport while in a busy scene. The default all black wireframe leaves a lot to be desired(at least for me) and so I thought I could attempt to make things better for myself. As far as I am concerned I did succeed in this and my viewport colors are a bit more pleasant to work with for me for quite some time

  • Consistency. The default theme has various selection colors all over the place like orange in the viewport, blue in some input fields, grey in others, grey for text, white for nodes… I thought it was inconsistent and wanted to fix that.

Of course many years went by, many versions changed and my theme got a bit… outdated. So I am trying to fix it up and then maybe I could upload it to extensions platform or something.

Anyway, I would like some feedback.

This is what I have as far:

Download the theme

(the link gets updated with recent changes in real time)

I played and played with it and I think I quite like it with some differences in color and UI elements removed. Like the text or node editors look quite nice as just some text on monochromatic panels:

I am just testing it out, trying to see if that will get annoying while working. Maybe I’ll eventually make a more traditional version.

The main part for me is the viewport:

Where I should be able to clearly see topology and distinct edited object amongst other objects in the scene.

I am just testing things out and will probably change a lot of stuff and hopefully find nicer shades of the colors I have now.

Anyway, what do you think as far? Do you hate something in it? Do you like something? Any suggestions, thoughts?

4 Likes

Hey man, I am a big fan! Very clean and sooo plane. Personally I really love removing section lines: I did so in Obsidian and VS Code. Very curious about your project.

Adding:

Why are the XYZ fields of different colors? The theme reminds me a bit to the Nord theme, which I also like. I am not so much a fan of different colors for empties and cameras, and many colors in general. Graphical semantic separation is enough for me. But I like the choice of your colors.

And, I really like the Cursor Midnight Theme for VS Code. I themed a view apps in that colors - for blender this would be way to dark - probably.What I like about that theme is the decent use of color.

1 Like

Oh, they do that when animated, keyframed, keyframed but changed, driven by a driver…

Well, that’s sort of the main thing for me. I want everything in the viewport to be as distinct as possible. So the ideas are a bit weird - I do want contrast and for things to be distinct and easy to see at a glance, but I want it only where absolutely needed and for it to not be vivid and tiring. It’s a hard task, I guess. Too little contrast may be tiring as well. Maybe the colors in the viewport are a bit too much now, I am still experimenting. I would like to make them less distracting, but still as distinct as possible. I guess that will need more testing. I work in that theme and if I notice something or think of something I still keep modifying it. I have been using a milder version of those colors for many years, but I am experimenting with it a bit at the moment to see what works.

It just all requires so much time… I am determined to play with it until I am happy though. :laughing: It’s going to be a few months at least I guess. :grimacing:

1 Like

I made a lot of changes, I think it’s getting nicer.

The viewport is still a bit colorful

But at the moment I find it to be more in line to my idea of things being distinct. It seems to be more pleasant to work with than to look at at first. I am keeping it for now.

Today I want to sort the nodes out:

Color coding makes sense, but the colors should make more sense and be less vivid maybe.

image

This is a lot. My first instinct is that I don’t really need that much. Do I really need to distinguish Filter Nodes from Distort Nodes?.. i will never remember all the colors anyway… Maybe they can be simplified.

I haven’t gone too indepth with it, but my initial impressions are that it’s not half bad. The only thing I’d suggest changing would be to add the alternating colored blocks back into the outliner, since I think the divisions makes things easier to parse through.

1 Like

That is a concern, yes. A “brave choice” :laughing: I am still seeing if that might be a problem for now. But actually, alternating lines make a whole lot of sense if the lines are long and difficult to follow. The thing is… I never view the Outliner expanded so that the lines get long. I haven’t tested how it feels when using the Outliner in all circumstances. Maybe when browsing the Data API mode or some other circumstances it may be a different story. I am sticking with that for now to see if it’s problematic. I am keeping it in mind though.

I was really surprised how the Text Editor is still usable. It feels OK to me. I did not expect that.


I really thought it would be a problem. It isn’t as far…

1 Like

I will say that, overall, it’s a good, gentle color scheme, and is very easy on the eyes while still being readable.

Though that lack of contrast might end up working against you when you’re working with busy scenes, especially in the viewport. Like the color of your camera icons, lights, etc look good, but they don’t stand out enough. I could see them getting easily lost among the noise when you’ve got a lot going on.

1 Like

Ah yes! But I am constantly testing the stuff:

The overall contrast is low. But I find it too vivid if I make them more distinct. Maybe overall contrast could be higher though…

It does require a bit of mental effort, maybe that’s a problem.

Selection is awesome though:

I don’t know… that requires more work in it.

1 Like

The blended look works well for the UI, but the viewport probably needs to be a little ugly for it to be functional. Making it so that every individual component type stands out from the others while not searing everyone’s eyeballs out of their head is the big challenge here.

1 Like

image

I am gong to see if this works. No idea, if it does. This needs a lot of testing. But I suspect, I don’t really care much about input, output, script, group, group socket nodes differing from each other as well as matte, filter, converter nodes. I don’t think that makes much difference. I have no idea if that is actually so, we will see… :laughing:

2 Likes

Actually… Shader nodes should be red :laughing: shaders are red after all:

image

Oh, but… geometry… it’s pale orange in my theme… :confused: but…
image

:grimacing:

OK, let’s go all in. Might not be smart as those colors are probably quite established in everyone’s heads and few themes touch those, but the same is true for wireframe colors probably… let’s see how it goes…

image

It’s a pitty node socket colors cannot be changed…

Actually, let’s do shaders green, because shader node links are green, then, modifiers can be blueish green and all the nodes that modify something can also be similar:

2 Likes

I made a RightClickSelect feature request for themable node socket and noodle colors. The amount of hard-coded impossible to change colors is getting out of hand…


And those aren’t even all…
If somebody thinks that might be a useful feature, please consider up-voting.

It’s not that difficult to add that apparently:

source

I think I just learned to compile Blender and add new theme colors…

3 Likes

image

You mean I could get rid of this?

Im in. About time I compiled my own!

Wheres the code??

Oh the code is… in a few places :smiley: :smiley: :smiley: Quite a few…

blender\source\blender\editors\space_node\drawnode.cc has the drawing bits at around line 1020

You got to change whatever is called DNA in blender\source\blender\makesdna\DNA_theme_types.h and it has weird padding bits:

image

that you have to change depending on how many new colors you add or it doesn’t compile, which I have no idea how why and how it works.

Then you have to add some names to blender\source\blender\editors\include\UI_resources.hh
and also connect everything in blender\source\blender\editors\interface\resources.cc
define interface bits in blender\source\blender\makesrna\intern\rna_userdef.cc
and set some value in
blender\release\datafiles\userdef\userdef_default_theme.c
and probably in some theme as well.

:laughing: It’s ridiculous when you think about it. But it’s been interesting finding out about this.

I could share when I am done. But I am completely new to this. No idea how to use any development tools like for example git properly.

1 Like

@AlphaChannel Upvote the right click select request if this might be useful for you. And comment as well. Thorn downvoted it. :confused: :laughing:

2 Likes

Structures in Blender are aligned to 8 bytes. So if a structure has a size of 10 Bytes, then a padding of 6 Bytes is added (so that 16 mod 8 = 0).

Cool, that’s pretty much how I understood that. It’s just so weird to me seeing it first time after only ever coding in Python.

Here’s something that could help you. Lots of good information (including how to use git) :smiley:
https://developer.blender.org/docs/handbook/

1 Like

I saw it. I am consuming it. :smiley: It’s just probably going to take some time. I just fell into this completely unexpectedly.

Very addictive.

… I just wanted to make a theme…