Creating a custom version of Krita / UI redesign

Hello everyone. This is my first post on the forum so I apologize if its in the wrong category or if I’m doing something very stupid, hope to learn along the way.
I’m creating this post because I had this idea to “streamline” Krita in some ways so I created some mockups for that purpose.

I’m not sure if this is allowed but what I had in mind was to, I guess fork (not sure if that’s the right word) Krita and remove a lot of the features that I don’t use and really focus in on the ones that I do use, improving them in some ways.

I would say that I’m very much so a novice programmer, but I’m willing to learn, and I do know that this is a probably a huge undertaking but I would like to give it a shot.
I’ve download Qt Creator and started tinkering with that so I would be able to use Krita’s code.
I have no experience with open source software so I don’t really know where to start with editing Krita’s code so if someone could point in me the right directions that would be greatly appreciated (I apologize if this is a really stupid question) and also any feedback on the mockup would be awesome

Thank you :smiley:


Here is the mockup

2 Likes

Hello and welcome to the forum :slight_smile:

I’m not a developer but I know that you’re setting yourself up for a massive undertaking and an ‘interesting learning experience’. (That’s a euphemism.)

There are many plugins available for krita that you can read about on this forum and that have been made by people on this forum.
Many of those can be used to ‘customise’ krita in various ways.
It may be a good idea if you explore the possibilities that they offer before you try to do things yourself.
You can also study the code for the plugins and have useful learning experiences.

I’ll leave it up to other people here, who know more about it than me, to make suggestions about which plugins may be useful for you and where you can get them from.

3 Likes

I agree with @AhabGreybeard , it would be better to develop plugins to modify the interface / add functions instead of forking the Krita source code, since this avoids fragmentation and really improves the main program more.

Or in any case, if you wish, you can make improvements to the code and propose it to the developers so that this is implemented in the main branch.

3 Likes

In addition to what was already said, after forking Krita to create your light version, you will be responsible for maintaining and fixing bugs (or merging them from krita into your repo) in your version all alone and your changes will probably never get reintegrated into the main project. You will basically have a new software project.

But in theory nothing stops you from forking or cloning Krita and make your own private version. I did once too, to play around with the code for fun.

2 Likes

Thank you all for the replies.

I think going the plugins route is a good idea, I doubt that most of the features I’d like to see added require going through and creating a whole new custom version of Krita.
After I gain some experience with how things work then I can tackle creating a custom lite Krita version if still think then that its a project worth pursuing.

With that being said I’d still like to share just a couple more screenshots of what I’ve got so far :grinning_face_with_smiling_eyes:


What the navigator or overview could look like


A lighter theme

1 Like

Maybe this post seems interesting to you:

2 Likes

Yup this will definitely come in handy when I start writing some of my own code but even now this is very useful just to see what’s possible with plugins, I just have to figure out where to start with making my own plugins :grinning_face_with_smiling_eyes:.
Thank you for sharing

1 Like

Krita 5.0 has support for switching the qt style theme

Maybe you can create a custom qt style sheet that has flat widgets like your mockup that anyone can switch to and try to submit it to krita? I’m not really sure how this all works though :sweat_smile:

https://doc.qt.io/qt-5/stylesheet.html

2 Likes

I would suggest you start with something small at first, contribute normally, try to fix small bugs you might have noticed. Or alternatively if you’re like me and just want to dive it, pick a feature that you want (try to pick something small to start), see if the change is wanted, try to code it, create an MR, basically contribute normally.

For example, I notice in your mockup you want the real brush stroke preview in the brush presets list. This would be a really welcome option I think. I would maybe not start with this, but that’s just an example of something that’s wanted and would probably best added directly instead of through a plugin.

Once you get a hang of things, you’ll start to get an idea how easy/hard things you want are. Also if you need to write a plugin to achieve something more drastic, you’ll have a better feel for the code. Because really you end up having to read the code anyways to understand the python API, and at least with the source code you’ll have autocomplete, and you can jump to class/method definitions, etc.

5 Likes

Making a new own version of Krita would bring lots of challenges: like worrying about upcoming Qt 6, how to make Krita to have a decent speed on MacOS and what to do now that various things slowly but surely give up on OpenGL. Moreover it’s just duplication of effort. Forks are a radical measure; they are good if you either disagree completely with the design (I don’t mean just UI here) or direction the project is going in, or disagree with the team/maintainer, and there is no way to handle disagreements in some other way (like here, with Python plugins, which can change the UI). Here, if you figure out how to make the menu bar, or if you give up on that, you can do everything else easier in a plugin, which you’d only need to keep compatible with newer Kritas.

Other people’s advice is really good, maybe except for the style thing, because if I remember correcty, breeze style is not available on Windows because it has too many dependencies (is too heavy). I must admit I don’t know much about it, but it might be more difficult than one can imagine, I believe someone once asked why Krita won’t make their own style, and the answer was, it’s just too much work to make sure it actually works correctly. I think the relevant docs page would be Styles and Style Aware Widgets | Qt Widgets 5.15.5 rather than Qt Style Sheets | Qt Widgets 5.15.5 . One of the pitfalls for one’s own style is the Blending Modes comobox; Krita had multiple Linux styles blacklisted (as in - if it was the current style on the system, Fusion would be used instead of that style) because they couldn’t handle that combobox (I believe even Breeze was once blacklisted because of that? But I’m not sure).

If you follow @AlansArtLog advice, here is a list of very simple and small things you could implement in Krita to get a hang of it: Beginner coding tasks in Krita: easy and short feature requests, ready to implement .

You could also just go straight to making the plugin. It would be especially awesome if you could make it modular - as in, the user could install or use just some parts of your plugin, and not all. (And be able to use it together with native Krita’s functions).

Oh btw, the strokes in the Brush Presets docker, I believe there were other artists asking for it. There is a chance you could implement it in main Krita as an option (like right now there is Thumbnails and Details, there could be a Stroke mode).

EDIT: some of the things you plan are actually things one would need to extend the Python plugins API for (like changing settings in a brush preset, or maybe even painting with that brush using Python?). It would be still easier than maintaining your own project, though, and it would be beneficial for other Python plugins creators, so it would be really awesome if you decide to go that route.

5 Likes

Lots of great advice.

I’ll definitely start with plugins, I’ve found that the Krita manual has a nice page dedicated to creating plugins so I’ll probably follow that and experiment and just see what I can make.

I think that right now if I was to try and fix bugs in the source code itself I’d probably create more problems then I would fix so I’ll stick with plugins for now where I’m free to mess up as hard as I can :grinning_face_with_smiling_eyes: .

1 Like

If you know c++ and want to code something in krita you can try making a filter or a generator plugin, for real production or just as a test. They are kind of standalone pieces of code, but allow you to get used to some internal Krita concepts without being overwhelmed. That’s how I started.

It’s always amazing to see the plugin still being mentioned, it brings me an amazing sense of fulfillment!

If you want to help improve the plugin / test out somethings, the plugin is a relatively safe place to experiment! You can tinker a lot from just the exposed Python bindings, that’s how I did most of the styling for the redesign.

If you have any doubts, feel free to reach me!

4 Likes

@tiar Yeah, breeze is not available, only decent looking style is Fusion. Re: easy bugs, could they not have some sort of “beginner-friendly” tag or something attached on the bug tracker? Some things on the list have already been fixed.

@giuuji If you do decide to mess with the source code, as long as you backup your configs + resources folder, there’s not really much that can go wrong.