Extended Color Selector: Picking color using your favorite color model, selector shape, rotation, and shortcut

Extended Color Selector

A powerful color selector for Krita 5.

Features

  • Supports color picking in 10 color models. (Gray, RGB, HSV, HSL, XYZ, Lab, OkLab, OkLch, OkHsv, OkHsl)
  • Fully modular, and highly customizable.
    • Three wheel shapes: square, triangle, and circle.
    • Channel sliders and ring to modify the third channel.
    • Swappable and revertable axes.
    • Color picker rotate with ring.
    • Scale to fit SRGB gamut for color models in CIE color space.
  • Portable color selector. Open the selector at anywhere on canvas using shortcut.
  • Shift and Alt modifiers to shift slowly.
  • Out of gamut hinting.
  • Integrated with color management from Krita. Display the correct color under specific color profile.

How to use

Go to Releases, download the latest package.

Go to you Krita preference directory, which is, by default,

  • $HOME/.local/share/krita/ for Linux
  • %APPDATA%\krita\ for Windows
  • ~/Library/Application Support/Krita/ for macOS

Unzip the plugin package into pykrita folder. So there will be one more extended_color_selector.desktop and extended_color_selector inside pykrita.

Launch Krita.

Go to Settings -> Configure Krita -> Python Plugin Manager, find Extended Color Selector, enable it, and restart Krita.

Why the name

To make it looks/sounds like a native Krita docker, just like wide-gamut color selector and advanced color selector.

Screenshots



Download

Github Releases

Sometimes, you may want to download unreleased versions of this plugin. For example there’s a bug fix, or a new feature. You can go to Github Actions page to download ci builds.

Checkout How to download unreleased versions section in readme for more information.

26 Likes

Incredible work. Thanks for sharing.

2 Likes

I have this problem. I switched to OpenGL, but the problem persists, so I don’t know what it could be.

Hi, just uploaded v0.1.1, can you update the plugin and try again?

Besides, please offer your OS info and desktop environment (windows, linux or macos?) if it’s still not working. Maybe linux kde? Guessed from your window theme.

And as the new readme says:

  • Tested on Ubuntu 24.04.3(GNOME) and KUbuntu 24.04.0(KDE) in VMWare Workstation Pro 17, not working if using OpenGL as canvas acceleration. OpenGL ES or with canvas acceleration disabled works.

v0.2.0

  • Open portable color selector at center of cursor.

  • Avoid indeterminable values during color model transferring.

  • Removed redundant color sending, which causes eraser mode of brushes being overridden.

  • Display two indicators when selecting colors: current color and last picked color.

  • Support colorful ring for HSV, HSL and OkLch color models.

  • Remembering last used color model.

  • Optional color model switchers on portable color selector.

  • Portable color selector won’t stop syncing color from Krita, which causes jittering.

3 Likes

Omg, this! Have been looking for smth like this for forever now, thank you sm!

One question, will it ever be possible to implement a feature that lets you zoom in on the color wheel (color circle) ? I’m mostly working with the gamut cutoff and it becomes a bit hard to change the color due to the it’s size xD

Like this?

Also i was quite confused for a few days why i wasnt able to use E to turn on the eraser, now that i checked the update logs i know why. Thank you sm for fixing the bug as quick as you did!! Appreciate your hard work!

This plugin seems so promising, thank you so much !

Insane details here and then, must have been tedious to code. And this is only the 0.2, can’t wait to reach the 1.0. But already in love

1 Like

Thanks for your support!

About the feature to zoom in, I think it requires some investigation into how those different color models intersect with SRGB color model. As I’m not very good at math, it may won’t be implemented quite soon. :smiling_face_with_tear: But I’ll definitely add this one day, because I’m also suffering from the tiny area of valid colors. :rofl:

2 Likes

Last night I realized that I don’t need to compute the limits at real time, but to precompute them and lookup at runtime. It’s easier to write, faster at runtime, while won’t cost much memory comparing to the calculation on the fly.

Defaults to 256 segments for each channel, and extra memory cost would only be around 49 KB. :tada:

So there it is. You can download the files at main branch if you can’t wait to try this feature.

Some screenshots:


4 Likes

Holy!!! This is actually so cool, thank you!

1 Like

you are the best, omg :light_blue_heart:

1 Like

Hi again! Quick question, i’ve noticed that if i color pick the wheel doesnt change the value/brightness of the colors on it, and i was wondering if its a bug or a feature.

Thank you for your time!

Here’s a gif of what i mean. If you need any more info from me please let me know!

ex_cw

This was fixed in this commit, which will be shipped with next version.

Fixes L channel of Oklch not updating, caused by mistyping > into <.

1 Like

Not sure if the reply function is working, I’ll send a separate post as a reminder.

1 Like

Hi @443eb9 - If you want to get someone’s attention, mention their username with the @ sign in front of it.

I’ll do this one for you so they get a ping: @greenajd

3 Likes

Just used my plugin to paint for another several days and I think it’s stable enough to publish another release.

v0.3.0

  • Channel spin boxes display incorrect values, and won’t update value range when color model changes.
  • Clipping the selector area to SRGB gamut. This is disabled by default and can be enabled in settings for each color model.
  • Fixed not-working channel spin boxes.
  • Stop syncing color from Krita when editing channel spin boxes.
  • Index of locked channel is not updating when switching between color models.
  • Fixed L channel of Oklch not updating, caused by mistyping > into <.
  • Fixed color model switchers not updating when switching from another selector.
  • Fixed order of color models are not saving.

Virus report for axes_limits_compute.exe: VirusTotal
Virus report for axes_limits_compute: VirusTotal

5 Likes

It works now, but the docker is acting strangely.

PS: I use Windows 11.

I really have no idea how to fix the issue on the left. I’ve tried various ways. I’m not sure when this will be fixed.

The issue on the right was fixed just now. Not completely fixed but it at least works. You can download the fixed version from main now.

@SchrodingerCat

2 Likes

v0.4.0

Global settings will be reset to default after update!

  • Added OkHsv and OkHsl color picker.

  • Fixed incorrect gamut clipping for srgb based color models.

  • Fixed setting pages and color model not matching if reordered.

  • Fixed missing toe functions for OkLab and OkLch color pickers.

  • Fixed ring still visible when Enable Ring is not checked in settings.

  • Fixed content in settings docker sometimes get squashed.

  • Shifting on locked channel bar now warps.

  • Fixed shifting on ring not working as expected.

  • Fixed scale issue on devices with HighDPI scaling.

  • Fixed color wheel overlaps with other widgets.

  • Moved shortcut to toggle the portable color selector from global settings to Krita settings.

  • Support color picking for masks.

  • Fixed color picking not working properly for Krita LAB layers.

Happy Painting! and this version fixes the issue @SchrodingerCat mentions :partying_face:

4 Likes

So after a long while, I finally published 0.5.0 version.

The idea I want to rewrite it in cpp is that, once I was painting, the reference image is not in the default color space. When I use the old extended color selector, it displays color incorrectly. There’s subtle difference between the same color displayed on my plugin and canvas. It’s really annoying. So I did dome research to krita’s codebase and rewrite the plugin :partying_face:

But there are also some disadvantages. The performance degraded significantly… and if there’s some error occurred in my code, krita will crash directly instead of popup a window hint… So use it with caution, this is the first cpp release.

Here’s the changelog, if you’re interested in:

  • Rewrite the entire plugin using C++;
  • Allow add multiple sliders in one color model;
  • Integrated with color management system from Krita;
  • Added Gray, Lch and LinearRgb color models;
  • Renamed model Rgb to Srgb;
  • Allow hiding channel value spin boxes;
4 Likes