Darktable: make the histogram read-only

Created on 29 Jan 2019  Â·  33Comments  Â·  Source: darktable-org/darktable

I'm working on a clean-up of the UI, to make it more minimalistic in order to keep the focus on the picture. That is, less distractions in the panels. See #2037

Currently, the histogram is an active area where one can drag the shadows and the highlights to quickely edit the exposure and black level. The thing is, the setting increments are rather coarse, not configurable (except in darktablerc, when you know it), and I discovered this feature by accident.

I would like to make the histogram read-only, meaning removing the active parts.

I also would like to remove the EXIF settings display, because it's redundant with the EXIF box on the left panel.

Then, I would like to make the histogram slightly smaller in height, to leave more space to modules.

Any objection ?

Most helpful comment

There is many places where we can display this information:

  • we already have a hint message area
  • we can add a status area on top of the image, between sort and G symbol
  • we can add a status area on bottom of the image, between style button and the raw overexpose

What about this?

All 33 comments

Hi @aurelienpierre

Personally, I almost never use left panel EXIF settings. Contrary, I look at EXIF data on histogram for almost every photo. It show me the most important information and is just a lot more convenient to look at. So big no from my side for this one.

About read-only histogram - I'm not using this quite often, but I do sometimes. Not for real exposure adjustments ofcourse, but to quick see if photo have any potential. It's just faster then look for the exposure (or any other module that allow to adjust exposure). So even if I'm not as super oponent as above, not sure what's the gain here.

To the smaller height - I agree this is generally a good idea, but I'd rather try to make it configurable, because for people with bigger screen this might not be an improvement.

Hello @aurelienpierre,

Ordinary user here with no programming skills, which really appreciates the time you spend for dt.

Currently, the histogram is an active area where one can drag the shadows and the highlights to quickely edit the exposure and black level. The thing is, the setting increments are rather coarse, not configurable (except in darktablerc, when you know it), and I discovered this feature by accident.

I use this quite frequently as it is much faster than searching for the exposure module. Would be nice to have more of this easy access features in dt.

I also would like to remove the EXIF settings display, because it's redundant with the EXIF box on the left panel.

Left panel is most of the time collapsed in my case.

Any objection ?

Asking here won't give you much feedback from users.
I remember a few basic tutorials which mention this feature as nice addition.

(except in darktablerc, when you know it)

Well that rc's are linux style and I touch darktablerc very seldom. But since dt is avaliable for others OS an easier handling of settings in darktablerc might help user to find all this hidden features. Recently, more settings were added to the preferences dialog. Maybe it would make sense to expose most non critical darktablerc settings in some extended preferences/config dialog?

Thanks,
Christian

Actually, my bad, the exposure steps are hard-coded and not configurable.

Left panel is most of the time collapsed in my case.

The real question is: are the EXIF info useful in the histogram ? My feeling is I don't care about the camera settings at all during retouch. But I really like a clean UI to focus on the picture.

I use this quite frequently as it is much faster than searching for the exposure module. Would be nice to have more of this easy access features in dt.

And using it in a blind fashion does not bother you ? If so, did you consider setting a keyboard shortcut
? I'm asking because, everytime I'm "using" the histogram to set the exposure, it's a touchpad accident while reaching for the color channels or waveform. So, it annoys me more than anything.

Left panel is most of the time collapsed in my case.

The real question is: are the EXIF info useful in the histogram ? My feeling is I don't care about the camera settings at all during retouch. But I really like a clean UI to focus on the picture.

That is definitely true. I rarely look at that figures. But for others this might be different. What about those who do bracketing? Or beginners which disover all this relationships? You have a single place to see the values and histogramm.

I use this quite frequently as it is much faster than searching for the exposure module. Would be nice to have more of this easy access features in dt.

And using it in a blind fashion does not bother you ?

No, it is for quick adjustments as @theres already mentioned most of the time. Eg. If I have many images from a soccer game and some are maybe underexposed I can quickly check if the image will be a keeper or not. Using the mouse wheel increments are fine for me.

If so, did you consider setting a keyboard shortcut

Well I use the common shortcuts all the time and lately started to assign them for specific modules. But you will run out of shortcuts soon, if you use shortcuts for all modules?

? I'm asking because, everytime I'm "using" the histogram to set the exposure, it's a touchpad accident while reaching for the color channels or waveform. So, it annoys me more than anything.

Now we are getting closer. Touchpads are a pain for me. Whenever possible I use a mouse with scroll wheel. So you are changing exposure accidentally. That is annoying of course. So this calls for another option to unlink histogramm and exposure module ;-).

off topic: Working all day with PC requires some alternative input devices on the long run. My naive notion dreams from midi controller support. But for now the combination of mouse + mouse wheel and keyboard shortcuts is fine too.

The real question is: are the EXIF info useful in the histogram ? My feeling is I don't care about the camera settings at all during retouch. But I really like a clean UI to focus on the picture.

In my case I've a few luma noise removal presets that are ISO dependent but I don't want to apply them automatically (often I've a few for the same ISO). So it's a lot easier to quick look at the histogram to get this info.
Another thing is that I mostly shot landscapes and night sky. Often the same composition with slightly different settings. I like to know which one is which when choosing candidates to work on.

I'm a big fan of making things configurable, so how about setting this text transparency via CSS? That should make happy both sides.

Cheers

For the exif on the histogram why not display it only when mouse is over?

For the exif on the histogram why not display it only when mouse is over?

That would feel weird to me: it would sort of imply a relationship between the histogram and the exif data ("I'm showing you this data because you have your mouse on the histogram, I guess this is when you need it") which isn't true.

I like having exposure+iso+aperture big enough (= not hidden within the ton of details of the left panel) when I'm processing/choosing multiple similar images taken with different settings. I don't care much that it's in the histogram, but the histogram is a place where having a big font doesn't harm: it doesn't really take any space in the screen. But the point of having it with big font is to have the data without effort, so if I needed to move the mouse to get it, that would defeat most of the purpose.

I could certainly live without this text, though.

So add this into the hint message when opening a new picture and/or closing/opening a new module?

I like to have the exif always visible on the histogram, especially the ISO value. It gives me a hint about how noisy the picture is when I open it, and I think it is more visible and convenient for me than using the exif box of the left panel. Having to put the mouse over the histogram to see that would annoy me, in this case I would probably stop looking at the histogram for that.

Apart of that, I never use the histogram to control exposure, so I don't mind if it is read-only.

hmmm I really hate duplicating features, it's bad design and twice as much maintenance. Especially when said feature makes use of garbage GTK wizardry.

Allow me to reformulate this question: what would be a better way to make the exposure settings more accessible in its module ? And the ISO setting more readable/reachable in the panel ?

I tested it, and you cannot set shortcuts with key + arrow up/down or mouse wheel up/down. Imagine you have assign the key E to exposure, and page up/down for coarse increment, arrow up/down for precise increment. So, you have one letter by setting to remember. Would that do it ?

Considering the ISO setting, I do not know what would be a better way :-/
The text in the exif panel is small, and its position varies if the history tab is kept opened, that's why I prefer looking at the histogram to get the ISO information when I go through my images.
Note that I do not mind if this is no more on the histogram, as long as it remains visible at a fixed position (for instance it could be at the bottom right under the image instead)

what if we move the exposure settings at the beginning of the EXIF widget ? Even small, this text makes the waveform histogram practically impossible to read in many cases.

what if we move the exposure settings at the beginning of the EXIF widget ? Even small, this text makes the waveform histogram practically impossible to read in many cases.

this is IMO good idea and i would also move datetime, because when i shoot panorama i use datetime to find where panorama starts and ends (photos shot almost consecutively) and as others said history stack and duplicate manager pushes those down

as far as histogram exposure change, i almost never open exposure module beause it's faster for me to just hover mouse over histogram and roll mouse wheel. Step granuality is ok for me.

what if we move the exposure settings at the beginning of the EXIF widget ? Even small, this text makes the waveform histogram practically impossible to read in many cases.

The key feature is to have this in the same place as @rawfiner pointed out. Not necessary over the histogram. EXIF panel is pushed down by all panels above and change position every time user do any photo manipulation. Moreover, I prefer to have open history stack and mask manager and even on my 4K 42" display, when exif panel is open, I need to scroll the left panel. So I simply keep this panel closed.

However, it's quite easy to add custom Lua plugin to show the value eg. above the photo. So even if I like these values over histogram, I've workaround that do not require to maintain fork to bring this feature back..

There is many places where we can display this information:

  • we already have a hint message area
  • we can add a status area on top of the image, between sort and G symbol
  • we can add a status area on bottom of the image, between style button and the raw overexpose

What about this?

A status area on top of the image would be perfect for me :-)
A status area on bottom of the image would be ok too, but probably a bit less convenient as it would be less close to the histogram, and I like to look both at the histogram and such exifs when I open an image

A status area on top of the image would be perfect for me :-)
Same here.

I will reorder the EXIF metadata in the module too, maybe use categories (exposure / date / file). Also, I think having a shortcut to show/hide the exif module would help.

Many music players provide a user-configurable single-line information display somewhere in the GUI (or window titlebar). It would be really nice if some of the unused space described by @TurboGit could be dedicated to this, so that whatever little bits of info (datetime, ISO, whatever) which are important to a given user could be seen at a glance.

FWIW, it seems to me that if anything should be displayed on the histogram, it should be the current exposure adjustments, given that it's used as an alternative exposure module. Also, I would personally like a smaller histogram, but agree that it should probably be an option, since many people are likely to disagree.

I'm using quite often actives functions of histogram, as it sometimes faster to adjust exposure. So I prefer to let this function active. But the Exif text on the histogram is not the better design and it disturb the view of Exif and histogram. That said, I like to see this information quickly when needed and without to open the image infos panel on the left.

As Turbogit said, there many places to move this information. We could put this info under the histogram or on the left of "Group", "Help", etc. icons. It could also be written on the bottom center (or even top center) of the image.

With that, reducing a little the height size of the histogram could be great to add space to modules. I think that reducing to 10% size the height would be sufficient and not too much.

I will see if I manage to make the histogram resizable. As for the quick edit, I believe, long-term speaking, the best would be just a simple key + up/down (either with arrow keys or mouse wheel). What really sucks with the histogram is you don't have feedback.

I don't think you do not get feedback. One of the reasons I prefer exposure setting in the histogram is that you get the feedback as a changing histogram. I see exposure as a correction operation and not a grading operation, therefore adjusting everything for a well used histogram is much easier when control and feedback are at the same position on the display. Especially for touchpads without mouse wheel, this is an enormous benefit over making the changes in the module.

Speaking about basic information display, I agree that a fix position on the screen is beneficial, I use this as well e.g. to decide about the noise reduction method I chose. Maybe this information could move to the left side, overlaid over the thumbnail image, or in one of the two information lines above the big image preview (e.g., left of the “G” symbol).

Imagine you get a shortcut, like E + ArrowUp to set the exposure, could you give up on the histogram ? Or even E + PageUp for coarse tuning, and E + ArrowUP for fine tuning. Better ?

Hm, I don't know if it would work like that, maybe it's worth trying. But darktable already runs short of available keys. In my case, “e” is bound to the tag “People|Family|Emil” (my son) in the quicktag lua module, just to give an example. If it would be possible to temporarily override assigned keys from lua, one could in that case think of using a quicktag mode that reassigns the keys when active, but for now, lua hotkeys are even global.

A more general view on that is, that one of the biggest strengths of darktable is also one of the biggest weaknesses. When I work on an image, I have to go through a lot of “independent” modules just for the basic settings, which is great because of the flexibility (there are so many different approaches possible), but is as well a slow down for the basic workflow. And any approach to streamline the interface even more by getting rid of the little shortcuts that allow to bypass the longer way may make things worse if there's no equivalent replacement.

To solve this, what about the following idea: A module, that is user configurable in a way that controls of different iops can be added to the empty module (e.g. by a config file) which gives the user the possibility to configure his basic editing workflow into one module. This module would have one common mask (which may be implemented by the new pixel mask, the mask would be determined by the first involved module in the pipe and copied as pixel mask to all the other iops) and the involved modules would be initiated invisible in the background. The user could only chose, if the modules should be the first or last ones of their kind in the pipe. In the config file, the module settings that are not taken over as control could be set to fix values. I know, that's a bit weird, but it's the only solution I can see to maintain the flexibility and a fast access to oft-used modules. I would do the following configuration:
From white balance, I would take temp and tint (temp first).*
From exposure, I would take black and exposure.
From crop/rotate, I would take angle and aspect and would configure to have golden sections help lines.*
The equalizer would also join my module.
From shadhi, I would take shadows and highlights, and I would configure bilateral filter as default.
A tone curve would be added as well.

  • These modules that are only available as one instance would not be invisible but the controls would just be doubled.

Hm, maybe better ignore my stupid thoughts of the configurable module, but about darktable's UI, I still balance between love and hate, but for sure with a bit more love ;) OK, it's much more love and only a little bit of hate …

Personally I like using the scrollweel over the histogram to set both the exposure and black point and it's one of my most-used features. Instead of removing it it would be great to improve it:
1) Feedback, i.e. show the current value of exposure and black level compensation while scrolling or dragging. You can see this information in real-time now if you have the exposure module open, but it defeats the purpose.
2) Modifiers - if normal scrolling is in 0.15EV steps, holding Shift while scrolling could switch to e.g. 0.05EV steps.

1. Feedback, i.e. show the current value of exposure and black level compensation while scrolling or dragging. You can see this information in real-time now if you have the exposure module open, but it defeats the purpose.

2. Modifiers - if normal scrolling is in 0.15EV steps, holding Shift while scrolling could switch to e.g. 0.05EV steps.

So why not directly use a keyboard shortcut, which would give the focus to the module ? That would make use of the existing UI without having to overlay more shit on top of an already hard to read graph.

Honestly, I have spend the last 24 days full-time, cleaning 10 years of rough GUI code and discovering undocumented features (there are VIM shortcuts hidden in the soft, for example, try typing : ), I think adding more options in the GUI will just add more spaghetti in the code and increase the maintainance overhead for the years to come.

I'm a big fan of keeping things stupid simple. I know most you like this half-baked feature, but it is half-baked nonetheless and I would rather make the real exposure module more (cleverly) accessible from the keyboard than pile up more shit code on the histogram. There will always be readability problems when you overlay text on top of colorful graphs, let alone issues with touchscreens and touchpad (what is a scrolling step when the scrool is continuous, from a touchpad ?).

So, the more I'm digging in it, the more I'm convinced that scopes should be read-only, and poor accessibility of the settings should be adressed at the source, in the controls, not by duplicating controls somewhere else in the GUI.

If modules had proper keyboard shortcuts, we could even do basic editing directly from the lighttable.

I don't have extremely strong feelings about this and for sure I will adapt my workflow if scrolling on histogram stops working, no biggie. That being said, I expect some surprised bugreports to appear when it's gone. I do greatly appreciate the work you're putting into darktable, but please be careful not to descend into the _"users are stupid and devs know better"_ mode of thinking (your words :-)). Someone has put effort into implementing this feature, it works, it's liked by many, so removing it because one of the devs does not like it or need it may not be the wisest decision. Thanks for considering this.

As for the EXIF info - please leave the basic data clearly visible somewhere (doesn't have to be in the histogram), without having to scroll down to image information. I often quickly check the basic info (mainly ISO when working with noise). I'd like to see also the lens, so configurable fields would be great. But it's really minor.

And hey, what exactly can I do with the vim commands? :)

And hey, what exactly can I do with the vim commands

Unfortunately nothing interesting now. You can quit darktable with :q. I had an idea to make this extendable via LUA (just like in vimscript), but time...

I do greatly appreciate the work you're putting into darktable, but please be careful not to descend into the _"users are stupid and devs know better"_ mode of thinking (your words :-)). Someone has put effort into implementing this feature, it works, it's liked by many, so removing it because one of the devs does not like it or need it may not be the wisest decision.

It doesn't work well, not in a reliable way, and not for touchpads and touchscreens, that's my point. Let's not forget the core problem it tries to solve (exposure being hidden in modules lists), and address it directly at its source, instead of creating more problems like the scrollable histogram does. In every kind of design, duplicating features always says something has been missed at the beginning.

For your information, you can already set up keyboard shortcuts for every module slider in the preferences (reset, increase, decrease, modify). So you can already have Shift+E to increase, Ctrl+E to decrease exposure, for example. That can be improved by having coarse/fine tuning, and giving focus to the module + unfold it when the shortcuts are triggered. And could be reused at some point to get darktable to work with MIDI keyboards/retouching consoles.

The other point here is the histogram is a custom-made GTK widget. GTK lib changes very often, and tend to deprecate things carelessly. That mean every GUI part of the code has to get some love every once in a while and wil never be stable, at least to manage GTK versions issues. Sticking to the GTK standard and avoiding customized things is only avoiding maintainance overhead, long-term speaking.

Also the number of // TODO: fix this case in the code is alarming, and some have been there from 9 years. Time to clean.

I would love to see a hide function added to the histogram. See Lightroom for an example. Clicking a triangle expands/collapses it. There are many situations where I don't need to see it, and would much prefer to use this screen real estate for more vertical height on the modules.

I have added a shortcut to hide/show the histogram in #2037

Awesome, thanks!

@TurboGit or @aurelienpierre : this one seems obsolete now with the new UI (I see if some UI issues have been resolved to clean issues). Maybe should be closed ?

Right, this is OBE. Closing.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

elstoc picture elstoc  Â·  4Comments

dim162 picture dim162  Â·  3Comments

ChristopherRogers1991 picture ChristopherRogers1991  Â·  6Comments

GrahamByrnes picture GrahamByrnes  Â·  3Comments

Praveen-Rai picture Praveen-Rai  Â·  5Comments