During the past 3 months, I have worked to improve darktable UI appearance and usability. The changes have been merged in master now, let’s go for a presentation:
New look
Inspired by Google Material Design, I have redone the visual appearance for something more minimalistic, cleaner, more professional and high-DPI-ready. dt’s use Roboto font by default, or falls back to the OS default font, and the OS font size is automatically used (and dpi-adjusted). Borders and drop-shadows have been removed to get fewer distractions and improve performance, and margins have been reduced to the bare minimum to make the most out of the tinier displays.
Slicker navigation thumbnail
Sliders have been reworked to be more readable : there is more space between the label and the baseline, and the cursor is bigger, better separated from the background and hollow for gradient sliders (to see the color through). The fillin bar is now drawn from the “0” value (more natural for balance sliders, which have a central neutral position), and the neutral position is emphasized with a dot.
New sliders
New tone curve look with bigger nodes and more obvious hover effects
Themeable
All the styling rules have been removed from the C sourcecode and put in GTK’s CSS stylesheet, so dt is now fully themeable, and themes can be selected from the preferences. A grey theme is on the way. Most sizes are proportionnal to the OS font size, so you shouldn’t need to tweak the dpi parameter in darktablerc anymore.
New shortcuts
The outer arrows, allowing to collapse the top/bottom/side panels can be hidden to gain more room with the key B(orders). Then, you can toggle on/off the panels with Ctrl+T(op), Ctrl+B(ottom), Ctrl+L(eft), Ctrl+R(ight).
The navigation thumbnail and the histogram have been made full-size and can be hidden/shown too with Ctrl+Alt+H(istogram) and Ctrl+Alt+N(avigation) to gain more vertical room.
All the shorcuts can be user-set.
Enjoy the new borderless experience for minimal distraction and maximum use of the screen
New interactions
In sidebars, sliding bars have been made bigger and can be set to disappear when they are not needed. A new preference allows to expand modules when they are enabled, and collapse them when they are disabled, to keep the UI clean and tidy without sacrifacing productivity. When opened, modules are automatically sticked to the top of the sidebar (if the option has been set) so they use all the available height.
New history compression option in lighttable
A new button has been added in the lighttable to compress the editing history in batch for several pictures. This option will also remove disabled modules from the history (the button in the darkroom keeps them).
Under the hood
When users zoomed in/out on the image in the darkroom, if the scrolling took more than half a second, a full preview recomputing was triggered at the beginning and at the end of the scroll event, resulting in a major slow-down and one useless recomputing. This is now avoided.
You will need at least GTK 3.22 (> 2016), since GTK 3.18 and older (< end 2015) don’t accept CSS-defined margins.
Conclusion
I have tried to unify visually different strates of dt’s code, coming from several developpers at different times, to get a sleeker experience. However, this work is not entirely finished and some modules need more work. As I have tried to clean up stuff, I may have broken some features too… We will see.
Other’s work
AlicVB has added the ability to display custom metadata out of the histogram (top or bottom bar, in darkroom), so this was removed from the histogram frame for better readability:
You can define which metadata and formatting you want in the prefs:
He also has authored a very nice timeline in the lighttable to narrow the list of images in the current collection to a specific timeframe:
@Edgardo_Hoszowski has added a very useful search box to fetch darkroom’s modules by name:
And added the ability to detach the preview image to another window/display:
Many thanks to @Pascal_Obry for the reviews and debugging help he constantly provides.
Enjoy !