Index by title

release 0.6


AdvancedExportBranch

This page is dedicated to issue #8496 and the darktable/advanced-export branch (christte fork).

Goal: Allow exported images to be post-processed automatically by an external program.

Done: Todo:

GUI mockup:

Requirements:
text pri (1st-3rd)
The module shall provide the same functionality as the current "export to file" module. 1st
The module shall export a single image and run a specified command with the image file name as a command line parameter. 1st
The module shall export multiple images and run a specified command with a list of image file names as a command line parameter. 2nd
The module shall export multiple images and run a specified command multiple times, once for each exported image. 2nd
The module shall support presets. 1st
Create additional variables: Number of exported files $(NUMIMAGES), ...
It shall be possible to delete the exported files after the command has run. 1st
It shall be possible to run a command on an exported file without configuring the file name. 1st
It shall be possible to specify a lua script for controlling the arguments given to the external program based on image attributes. 3rd
Allow Lua-scripts to ask for input from the user. This might be relevant when a password needs to be entered, or fps/size-parameters for video encoding. The Lua-script should be able to present a simple gui in a popup dialog, or as additional GtkTextEntry fields in the module. 3rd
The user shall be able to see stdout/stderr output from the external program 3rd
The user shall be able to interact with a command line program launched by the module 3rd
It shall be possible to kill the external program. 2nd
Make it possible to customize which metadata is added to the exported image, e.g. keywords, author, publisher etc.<br/>Input to the default export: Allow preferences setting to send all metadata to /dev/null. 3rd

After Version 1.0

User Interface

look and feel

needs a serious overhaul, for a more balanced and uniform look, as sketched in the GuiGuidelines

Toolbars

The whole ui has been refactored into modules so we do not have any single
ui element hard coded into a place, this does however make us to have a structure
of what goes where and we need to settle such a structure.

We do have 2 toolbars top and bottom which each are divided into 3 containers
left, center and right which are aligned to the left, centered and to the right
of the toolbar container.

Each of them should have a rule of what tools go into them, here follows some definitions:

Global tools - a tool that is globally accessible thru all views of darktable eg. preferences
View tools - tools that only make sense to have for the current view
Plug-in tools - tools that are presented by a plugin, like for a example "quick snapshot" button in darkroom ...
Current tools - a tool which depends on what module is in focus for example

Example of layout of toolbar:

| <view tools>       |       <view tools>       |          <global tools> |

| <plugin tools>     |      <current tool>      |          <plugin tools> |  

Core

image compression

to make caches more memory efficient, dxt1 could be used. we have floating point compression in src/common/image_compression.{c,h}, but maybe libsquish (sse optimized) could be better even.

Job queue

We need to have a queue that will be prioritized in favor of the standard job queue so that when darktable core / mipmap cache whatever is working hard the user
started jobs should be prioritized and executed before the core queue is continuing stealing resources while processing ...
Probably this is simplest implemented by adding an additional queue where prio jobs are pushed to, and when workers are picking jobs they should first pick
from prioritized queue if there are jobs available there.

on-demand xmp writing

this should only happen when needed (hash changed or something). the old dirty-bit is too error prone, we need to compute hashes every time, and store the written one in the image cache for example (eviction from the image cache means xmp sync, so no sql needed).

Lighttable

Image selection

Image selection behaviour is pretty strange and can lead to strange results due to
it's fully possible to have images selected in other collections not shown to the end user.
This is error prone if for example someone has a few images selected, and changes
the collection and finds two images he wants to physically delete, he ctrl clicks
each of them and hit delete button and images selected before this two will also
be deleted ... :)

Image grouping

Tobias (Houz) has made a test implementation of grouping of images we need to
discuss and draw the line of how this should be done and functionality in
darktable, whats the use for it etc. ?!

image compression

to make caches more memory efficient, dxt1 could be used. we have floating point compression in src/common/image_compression.{c,h}, but maybe libsquish (sse optimized) could be better even.

geotagging

similarity branch

Darkroom

abstraction of general processing operations

I think we have at least 4-5 different kinds of blur implementations with varying quality / speed and methods, the last one introduced was with lowpass filter
and it includes both opencl and sse2 codepaths, we need to abstract such kind of commonly used operations for reuse.

The modules using a blur implementations are: bloom, sharpen, soften, highpass, lowpass

image operators modules

- Time to merge modules, for example velvia/vibrance/color correction could be smashed into one module. and there might be others.

simple user interface

We have spoken about this a lot of times and it is all about having the most commonly used controls up front for a standard workflow,
simple ui would be something like its own module group without any modules, just a big panel with stuffed controls ...
I'm not talking about every control from every iop here, just those carefully chosen, the panel would have a label header named
like the groups:

-------------------/ Basic |

[ exposure   |        ]
[ black      |        ]
[ exposure   |        ]
[x] highlight recons.
[ temperature|        ]

-------------------/ Color |
[ saturtion  |        ]
[ vibrance   |        ]

-----------------/ Correct |
[ sharpen    |        ]
[ contrast   |        ]
[ local contrast   |  ]

Tethering

Live view

It would be a great advantage to have a liveview present on screen, gphoto2 supports it but how many camera models are supported!?
Investigate if it is worth the time now to implement ...

Close-up module

A module showing 1:1 around mouse pointer for close up pixelpeeping to detect bad focus, this might also be something for lighttable.

Import


Currently work in progress

1. Basics
1. Write a small introduction to yourself.
I will go for a very classical introduction. My name is Alexandru-Eugen Ichim (you can always call me Alex), Romanian studying abroad since the end of high-school, with a long passion for photography, science and all possible aspects that go in between for making things a bit more beautiful and practical.
1. State your preferred email address.
alex.e.ichim AT gmail DOT com
1. If you have chosen a nick for IRC, what is it?
I usually use the sourceforge nickname 'nemesisfk', but for this project I will be using 'AlexIch'
1. Why do you want to participate in summer of code?
As I have been abroad for the past 3 years studying and doing internships during the summers (please see CV), I would like to go back home for 2-3 months and work in a more relaxed environment, although this does not mean that the final product quality will have to suffer.
1. What are you studying, subject,

I have faced the situation when i needed to use all that tags i choosen for my files shot long before the age of my using dt

What i'm used to in my workflow is:

1. cp /mnt/myCFcard/path/to/CR2_files /my_photo_storage_tmp

2. cd /my_photo_storage_tmp

3. mkdir -p {all my subject hierachy like: mountain,cape,aya,outskirts,arch,people,e.t.c.}
after what i have a tree like:

   arch
   arch/door
   arch/window
   concept
   flora
   flora/berries
   flora/berries/rosehip
   flora/berries/yellow_berries
   flora/cones
   flora/flowers
   flora/flowers/chrysanthemum
   flora/inktree
   flora/ivy
   flora/moss
   flora/platan
   flora/vineyard
   landscape
   misc
   misc/wine_degustation
   moon
   people
   sea
   sea/seascape
   sea/waves
   sky
   sky/clouds
   sky/clouds/.qiv-select
   sky/evening
   sky/golden_light
   sky/morning
   sky/rainbow
   sky/sunset
   texture
   texture/bark
   texture/bark/cypres
   texture/bark/oak
   texture/bark/pine
   texture/oak.barkless
   texture/stone
   texture/water
   texture/water_drops

4. move files to the relevant directories according the subject

Please, remember to exit dt first and to BACKUP your db BEFORE sql injection, from here you are on your own !!!

What i needed to transfer my scheme to dt db was:

1. prepare the tag file:

2. cd desired_directory_to_process

3. find . -type f -name "*.CR2" -print > tag-file.txt

it looks like:

     ./concept/IMG_8579.CR2
     ./concept/IMG_8580.CR2
     ./flora/berries/black_berries/IMG_7287.CR2
     ./flora/berries/black_berries/IMG_7288.CR2
     ./flora/berries/kizil/IMG_8077.CR2
     ./flora/berries/kizil/IMG_8078.CR2
     ./flora/berries/kizil/IMG_8079.CR2
     ./flora/berries/kizil/IMG_8080.CR2
     ./flora/berries/red_berries_01/IMG_7269.CR2
     ./flora/berries/red_berries_01/IMG_7270.CR2
     ./flora/berries/red_berries_01/IMG_7271.CR2

4. edit tag-file.txt to make it look like:
     IMG_8579.CR2;concept
     IMG_8580.CR2;concept
     IMG_7287.CR2;flora,berries,black_berries
     IMG_7288.CR2;flora,berries,black_berries
     IMG_8077.CR2;flora,berries,kizil
     IMG_8080.CR2;flora,berries,kizil
     IMG_7270.CR2;flora,berries,red_berries_01
     IMG_7271.CR2;flora,berries,red_berries_01

5. to generate sql injection with attached bellow shots-tag.pl script (it contains POD or run it with --help)

6. to inject it to db

please, remember to exit dt first and to BACKUP your db BEFORE sql injection, from here you are on your own !!!

p.5 and p.6 can be combined to

shots-tag.pl -r vac.200905 -t vac.200905.tags | sqlite3 ~/.config/darktable/library.db

all this worked for me, do it on you own risk ;)


This page is a work in progress, I'll be filling it out over the days to come.

1. Basics
1. Write a small introduction to yourself.

My name is Robert Bieber. I live in Bradenton, Florida, and I'm heavily interested in software and photography, which makes Darktable a particularly enticing project for me.

1. State your preferred email address.

robby@bieber_minus_this_part_photo.com

1. If you have chosen a nick for IRC, what is it?

bieber (In general I go by some variation of my surname everywhere online)

1. Why do you want to participate in summer of code?

I'm a free software enthusiast, and this represents a great chance for me to get to contribute to free software. It's also an excellent work opportunity for the Summer, with flexible hours and location (there's not a whole lot of CS internships to be had around Bradenton) and good pay.

1. What are you studying, subject, level and school?

Computer Science, third year at UCF. When this semester is over, I'll have completed the entire degree program aside from one required upper-level course, one elective and a network security class.

1. What country are you from, at what time are you most likely to be able to join IRC?

United states, Florida to be specific. Last year I generally worked from around 1200 to 1600 my time when I woke up, and then from around 0000 to 0400 at night, which worked well because a lot of the developers I was working with were in European time zones. I could also adjust to more normal hours if that would work better for communication.

1. Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.

I'd like to try to take a week off at some point, but it's not a priority. Coding doesn't actually start until almost a month into my Summer break, so if I do go away I'll make sure to do it before then.

1. Experience
1. What programs/software have you worked on before?

I worked on Rockbox for last year's SOC, and I've been programming on various personal projects and school assignments since I was 10. Two Summers ago, I put together a web photo gallery in PHP as a side project. More recently I've built a simple message broadcast system, an amusing little charged particle simulator, a simple person-tracker for video (the goal is to eventually connect the whole system to a motorized pan/tilt head and have it automatically track a speaker with a video camera), and various school projects.

1. Have you developed software in a team environment before (as opposed to hacking on something on your own)?

Yes, but not as much as I'd like. I've worked on group projects for classes, and last year I worked on the Rockbox project, but I was mostly working on my own standalone application with little assistance from others.

1. Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?

I participated in Summer of Code last year for the Rockbox project. Rockbox is an alternative firmware for digital audio players which has a sophisticated theme language used to style the player. The theme language is similar to HTML with tags specifying structure and content, but in addition to doing simple formatting and value substitution there are conditional tags which display their content based on the value of other tags, and these can be nested to arbitrary depth. My task for the Summer was to create a graphical theme editor; because they were making some significant changes to the theme language around the time the Summer began, I started out by writing a parser for the theme language which is currently in use both in the theme editor and Rockbox itself. With the rest of the Summer I built a substantial GUI application in Qt that can load themes, manage them as projects, render a graphical preview of skins as they're being written, and allows some drag and drop editing of theme elements.

1. Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.

I still do occasional maintenance work on my project from last year.

1. Photographic experience
1. What type of photos do you take, with what camera, in which format?

I shoot portrait, wildlife, still-life, and just about anything else I get the opportunity to shoot. I use a Canon EOS 20D, and shoot RAW unless I really can't afford to fill up the buffer too fast (really only happens when I'm shooting sports).

1. How do you organise and develop your photos?

I organize and tag with Shotwell, hoping to get everything moved over to Darktable now that there's a database transfer script available. My current workflow is Shotwell -> UFRaw -> GIMP, but I'd very much like to be able to cut UFRaw and GIMP out of the picture for simple RAW conversion, curves, levels and such.

1. Do you have a website/flickr account?

I have a photo blog and Flickr account.

1. How proficient are you with post-production software, and which one(s) do you know?

I'm reasonably proficient with UFRaw and GIMP: I'm able to do some relatively sophisticated post-processing, from basic color correction and removal of facial blemishes up through removing and rearranging objects in scenes, compositing photos and so on. I'm not amazing, but I think I'm pretty competent.

1. Are you familiar with basic photographic data processing (demosaicing, white balance, color management)?

I have a general idea of what they are and how they work, but I haven't worked with any of those concepts in code yet.

1. If you have contributed any patches to darktable, please list them below. You can also list patches that have been submitted but not committed yet, patches that were refused or patches that have not been specifically written for GSoC. This will help us find out what your work was and how you code.

So far I've submitted a series of patches that add subject distance to the EXIF data gathered from images, puts it in the database, and shows it in the image EXIF info window and loads it automatically in the lens correction plugin. These patches have been accepted and committed to the master repository.

I also recently made a pair of patches that allow a user to select between RGB and Lab view for the color picker. I haven't received any feedback about these patches yet.

1. Communication skills
1. Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

I'm a native speaker, I speak and write fluent English.

1. What spoken languages are you fluent in?

Only English, I'm afraid.

1. Are you good at interacting with other people?

I believe so.

1. Do you give constructive advice (both as a photographer and as a coder)?

I always do my best to.

1. Do you receive advice well (both as a photographer and as a coder)?

Yes, I always appreciate good advice.

1. Are you good at sorting useful criticisms from useless ones?

Yes.

1. How autonomous are you when developing? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want?

Somewhere in between. I always try to get a solid set of requirements before I start working on something intensively, but I'm not afraid to make a proof of concept ahead of time or take a chance on some implementation details I might have to change later, if I don't have anything else to do with the time.

1. Project
1. Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

I've opted for several smaller tasks, including some from the suggestions list and some of my own design. From the Wiki, I picked rewriting the keyboard accelerator system and removing the libglade dependency by hard-coding the UI initialization code. The keyboard shortcut is my main focus among the two.

1. If you have invented your own project, please describe the project and the scope.

In addition to the two tasks I've picked from the Wiki, I have two of my own. The first is a revamp of the color picking tool. While the specific interface is still being discussed, the two key points of my modifications will be to make the sampling interface more intuitive and to display the samples in a better way, allowing the user to view the sample in different color spaces and to see the point as a line on histogram and curve displays.

My other enhancement will be the addition of a levels view to the curves adjustment plugin.  This will allow the user to view a histogram and set the image black, white, and gray points in the same way as GIMP's interface.
1. Why did you choose this project?

I picked my two original projects because they're features that I would very much like to see implemented and use myself. I picked the two from the wiki because they're changes that members of the community seem to desire and that represent interesting challenges to me.

1. Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

I don't have any vacations or absences planned yet for the Summer, and if I do decide to take a vacation I'll do it before coding begins. This is my estimated timeline. With any luck, I'll be able to stay ahead of schedule on most if not all of these tasks, which will leave me with plenty of time to deal with unexpected issues in the other tasks, and hopefully to tackle some other UI related tasks at the end of the Summer. In particular, I would like to work on getting Darktable to compile with Gtk+ 3.
1. Removing libglade dependence: 4 weeks (May 23-June 13)

I want to do this task first and allocate it the greatest amount of time because it should give me a good feel for both Darktable and GTK.  Both will be important for my subsequent tasks, so I want to spend the time upfront to get used to the systems I'll be working with.
1. Rewriting the keyboard accelerator system: 3 weeks (June 13-July 4)
I'll aim for about one week to build the accelerator dialog box, one week to design and implement the functions for registering keyboard accelerators, and one week to replace all the keyboard accelerators in the interface with the new version.
1. Replacing the color picker tool: 3 weeks (July 4 - July 25)
I'll try to spend the first week redesigning the actual color picking interface.  In the second week I'll create an interface to allow access to color samples from all the modules in the darkroom view and get color samples displaying as bars on histogram and curves controls. In the third week I'll investigate and experiment with alternative methods for handling color samples in the GUI.  There's been a lot of discussion about how this should be done, so I'd like to devote some time to working out a solution that most of the community will be happy with.
1. Adding a levels control to the Tone Curve module: 3 weeks (July 25 - August 15)
I'll spend one week designing and implementing a modified histogram control with the ability to set white, black, and gray levels, and perhaps the ability to add extra user-defined points as well.  In the second week, I'll get this control implemented into the tone curve module with a pair of radio-style pushbuttons to switch back and forth between the two views, and implement call-backs for the levels control to modify the curve as necessary to implement the levels set on it.  The third week can be spent working on the integration between the two controls.
1. Include as much technical detail about your implementation as you can.
1. Removing the libglade dependency. The initial loading of the glade file will need to be replaced with code that creates all the widgets currently in the glade file using manual calls to GTK functions. Of course I'll need to store pointers to the important containers in the darktable_t struct for access from all the different functions that will need to work with them. Henrik Andersson has posted a suggested design here, and I intend to more or less follow this guide.
1. Rewriting the keyboard accelerator system.  Currently, modules which need keyboard accelerators call the appropriate GTK functions to manually register them themselves.  What I propose is a central data structure accessible through darktable_t that will store all the currently needed keyboard accelerators.  A module needing an accelerator will call a function, something along the lines of dt_gui_request_accelerator(char* name, char* description, sequence default_sequence, int level).  The name and description arguments are self-explanatory.  The default_key argument will specify the key sequence (I don't know what particular data type GTK uses for key sequences yet) that the module desires for its default, and the level argument will specify the level at which the accelerator should operate (global, canvas, module, etc.).

Once an accelerator is installed in the data structure, an actual accelerator will be registered to correspond to it. The user will also be able to use a central shortcuts dialog box to override the default key sequences for the registered accelerators. Overridden defaults will be stored in gconf so that they can be reloaded every time the application starts back up.

1. Replacing the color picker tool.  I still need to learn more about Darktable's internals to be entirely sure how to implement this (completing my first task should help a lot with that).  My general plan is that the picker tool should expose its sample data through a semi-global interface to all the different modules running in the darkroom view.  This way individual modules will be able to query at will for current sample data: for instance, the white balance module will be able to fetch the current sample from the color picker to determine the neutral point, rather than needing its own color selection.
1. Levels adjustment tool.  While I haven't worked with GTK yet, I know from the examples in /src/dtgtk/ that it's possible to define custom controls based on existing ones.  I'll create a new version of the existing histogram control with sliders at the bottom (similar to those currently on the base curve control) used to set the white, black, and gray point.  I may also offer the ability for the user to add new sliders representing different intensity points as well.  This control will be an alternate view in the tone curve plugin, and any changes made on it will automatically be translated into a corresponding curve and set on the curve control.
1. What do you expect to gain from this project?
I hope to gain experience (particularly working with GTK, as it will be nice to have some experience with both major UI libraries) and produce some code that I'll be able to use myself. It is also an excellent opportunity for Summer employment, and a great chance to meet interesting people with similar interests.
1. What would make you stay in the darktable community after the conclusion of GSoC? 
Nothing in particular necessary, Darktable is an interesting enough project that I see myself sticking around for a long time.
1. Practical considerations
1. Are you familiar with any of the following tools or languages?

I'm familiar with using git for basic commit/push, branching, merging and rebasing. Not a master of it yet, but I can use it well enough.

Very familiar. I've been writing C and C++ for years, and C in particular is the language I feel most confident with.

I've used SQL before, but not SQLite specifically. From what little work I've done on Darktable already I feel confident with SQLite, at least as much as I'll need to use to work on Darktable.

I haven't done any intensive parallel or GPU programming before, I'll have to get used to both of these libraries.

So far, only as much as I've encountered modifying Darktable. I've used other GUI libraries extensively, and don't anticipate any trouble with getting used to GTK.

No experience with this yet, it's something I'll have to learn.

I have used CMake, although not a whole lot.

1. Which tools do you normally use for development? Why do you use them?

So far working on Darktable I've been using QtCreator because it gives me autocomplete, symbol following, whole-project search, and similar tools that help with getting used to a large codebase, and compiling from the command-line. For smaller projects I usually just stick to Emacs.

1. What programming languages are you fluent in?

C, C++, PHP. I'm kind of a novice in Haskell and Ruby as well.

1. Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably only add this number in the application for you submit to Google since the info in the wiki is available in public. We will not make any use of your number unless some case of "there is no way to contact you" does arise!

No problem at all, I'll include my number in the GSOC application.


Basics
Write a small introduction to yourself.
Hi, my name is Daniel Bloznalis and I am a Freshman Computer Engineering Major at the University of Southern California. I was born in Massachusetts, and now spend time there, with my mother in Georgia, and at school in California. I am also pursuing a minor in Physics and am involved in Fencing and the USC Rocket Propulsion Lab. I have been interested in computer science for as long as I can remember but my first formal experience with it was an introduction to Java class that I took during my sophomore year of high school. Since then I have also been doing something in CS, be it for a class or just for fun. I am also very interested in photography.
State your preferred email address.
bloznalisd[at]gmail.com
If you have chosen a nick for IRC, what is it?
bloznali
Why do you want to participate in summer of code?
I want to participate in the Summer of Code for many reasons. Some are practical, it would provide more work experience and I would be paid for it. But mostly it is so that I can get a chance to work on a cool project and learn from a mentor. I figure I_m going to spend a good portion of my summer coding because I enjoy it, so it might as well be for something productive.
What are you studying, subject, level and school?
I am studying Computer Engineering (CECS) as the University of Southern California
What country are you from, at what time are you most likely to be able to join IRC?
I am from the United States (but will be on the East Coast for the summer and the West Coast during the School year). I would most likely to join IRC between 9:00am and 1:00am.
Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
I do not currently have any other plans for the summer. If I were to travel during the summer it would not be a vacation and I would definitely take my laptop with me.

Experience
What programs/software have you worked on before?
During the summer after my sophomore and junior years of high school I worked as a programming intern at Stratascope Inc. They developed a web application that provided research tools for inside sales associates. It provided information about companies, problems they faced, and conclusions based on this data. It was written in C# and asp.net and used a SQL database.
I have also worked on numerous programs of my own for fun. Some of the better ones were (all of these are works in progress) are
-a program that used a webcam to track and recognize playing cards. The end goal was to play a card game against a computer of across the internet with physical cards. C#
-a Narrator program that would take a novel and parse the text to try to determine the speaker using clues such as name and gender. The end goal of this was to develop an ebook reader that would use different voices for different speakers. C#
-a physics engine. It has gone through many false starts and is currently at a very simple state. C++
-a program that would generate maps for the game Minecraft. The worlds would be composed of floating planet-like bodies. This is the most recent project (I started 2 days ago, it is currently 2/3 of the way through understanding the Minecraft world file format). C++

Have you developed software in a team environment before (as opposed to hacking on something on your own)?
At Stratascope I worked on a small team with 2 other programmers.
Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?
I have not participated in the GSoC before
Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
I am not involved in any open source development projects
Photographic experience
What type of photos do you take, with what camera, in which format?
I_m not sure how to describe the types of pictures that I take, they are not landscapes, portraits or studio. I take pictures of things that I think are interesting. My camera is a Canon T2i, and I currently really like my 50mm f1.8 lens. I shoot in RAW.
How do you organise and develop your photos?
I have organized and developed my photos previously in Picasa and now use Lightroom
Do you have a website/flickr account?
[
https://profiles.google.com/BloznalisD/photos]
How proficient are you with post-production software, and which one(s) do you know?
I am mildly proficient with Lightroom and Photoshop
Are you familiar with basic photographic data processing (demosaicing, white balance, color management)?
I am familiar with white balance, but not the other two (although I feel better after reading a little Wikipedia)
If you have contributed any patches to darktable, please list them below. You can also list patches that have been submitted but not committed yet, patches that were refused or patches that have not been specifically written for GSoC. This will help us find out what your work was and how you code.

Communication skills
Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.
English is the only language that I speak fluently. I would describe myself as very proficient in written English (I read a lot)
What spoken languages are you fluent in?
English
Are you good at interacting with other people?
I interact very well with people and enjoy collaborating with others on projects. It is great to work with people with similar skills and interests and create things together.
Do you give constructive advice (both as a photographer and as a coder)?
I give constructive advice often with people I know well and am friendly with, possibly a little too often (you would have to ask them to be sure!) If I do not know a person, however, I most likely will not give them advice unless they specifically ask for it.
Do you receive advice well (both as a photographer and as a coder)?
I believe that I receive advice well, and will sometimes make changes based on the advice I get. I always consider the source, consider how the advice relates to what I am doing, but will also reject it if I do not agree with it.
Are you good at sorting useful criticisms from useless ones?
Yes, I do not take criticism personally, so I can sort out the useful from the useless pretty well. I think most criticism has some value, but as I said, if something does not make sense to me, or if I do not think it will improve what I am doing, I will reject it.
How autonomous are you when developing? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want?
I am relatively autonomous when developing. It is sometimes good to discuss complex problems with others. For a particularly tough problem, I will often talk to someone who has no background in computer science simply to organize my thoughts; kind of like talking to myself, except with someone to nod and give feedback, to confirm whether or not I am making sense. In the case presented, I think I would take the second option: action, even it has to be thrown away, rather than careful planning . If it does have to be thrown away, I know I will have learned something from the experience and will be in a better position to start again.

Project
Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?
The project that I selected from the list was Computational photography. I was particularly interested in the areas of image alignment/stitching/panoramas, noise removal by combining images, and face recognition. The other areas interested me as well. Before selected this project I was also interested in the Local Edits project.
Why did you choose this project?
I choose this project because it is an area that interests me in both computer science and in photography. I like to take HDR images and panoramas and I am very interested in the area of computer vision (I am on our USC Aerial Robotics Team, Software, computer vision. I did not mention it before because I have just started getting involved). The area of computational image processing has always interested me (it was the reason for the webcam sprogram mentioned above) and I was fascinated when I saw the Darpa urban challenge on television.
Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".
I_m not sure how to put together a detailed timeline of my work. I have no other real time commitments over the summer and would devote my entire work time to this project. So my timeline would be to work on the most important feature until it is finished and then move on to the next one. Before the start of the program I would plan to do a good deal of research into this area so that coding can begin immediately.
Pre GSoC _ become more familiar with the darktable codebase. Look for existing free software that can be used in these projects
Summer _ I plan to complete as much of this as I can. This is the proposed order
Image alignment/stitching/panoramas
-2 weeks, prototype and evaluate different algorithms. Choose one/ a combination of different ones. (I have started working on this now with the point matching algorithm)
-2 weeks, implement selected algorithm and integrate into darktable
-focus stacking (should just be a slight modification of Image alignment to account for the differences in focus)
-1.5 weeks, adjust algorithm from above to work with out of focus images
-1 week, integrate into darktable
-face recognition/feature search (optional/time permitting)
-hdr bracketing
-1 week, research/algorithm prototyping
-1.5 weeks - implementation and integration
-noise removal (optional/time permitting)
-retargeting (optional/time permitting)
--Note-
All of these are extremely rough estimates
Include as much technical detail about your implementation as you can.
Panoramas/stitching/focus stacking _ some sort of point matching algorithm; finding as many as possible corresponding points in images, using either colors or geometry. These would be used to align the image. Possibly something from the openCV library? Also for Panoramas, distortion would have to be taken into account. I would need to do more research before I can say anything about the improved HDR bracketing or the retargeting. The noise removal seems like it should be able to borrow algorithms from video processing and there are portions of the openCV library dedicated to facial recognition.

Details: stitching/image matching
-Possible algorithms
-feature based template matching: generate a edge map of the image and assign weights to the lines. Take the "heaviest" (ie. the most defined line) on the edge of the image and try to match it with a edge map of the other image. The openCV edge detection algorithm would be helpful with this. This is currently the most promising approach (in many panoramas there are strong lines, such as the horizon that would make this particularly effective)
-template matching: take a section of the image and attempt to directly compare it to sections on the other image. This technique seems very resource intensive and may run into trouble with panoramas as the exposure of the images will change as the camera is moved. some variant of this (such as comparing the ratios of neighboring pixels) maybe effective
- point matching: generate a signature of a point which is composed of the color of the point and the color of the surrounding pixels. Then generate signatures of points in the other image and attempt to match them. When enough points have been found the images can be "pinned" together using these points.
-Possible optimizations
-use simple signature mapping to get a basic alignment and use the more advanced algorithms from there. The simple signatures would consist of a value for each row and column that could be matched against row and column signatures in the other image
-sliding comparison: could be applied to the Point matching and template matching algorithms. After an initial point was selected, additional points could be selected by "sliding" the point towards more similar points until a best match is reached. You can think of this as water flowing down a hill, once it stops moving we have reached our best match.
-simplification/compression of the image: the image could be converted to black and white before matching, like colors could be merged to form blobs and then these blobs could be matched, or the image could be resized to a smaller size.
What do you expect to gain from this project?
I expect to gain experience working on a large project and general coding experience. I also intend to gain knowledge related to fields that I am very interested in, mainly photography and computer vision.
What would make you stay in the darktable community after the conclusion of GSoC?
I would stay in the darktable community after the conclusion of GSoC if other features (such as the local edits) that I was interested in are not implemented yet, I become extremely involved in the community, or my work isn_t finished.

Practical considerations
Are you familiar with any of the following tools or languages?
git (used for all commits)
my only experience is using it to download the Darktable source code. It seemed very straight forward
C99 (language used for all the normal source code)
I am familiar with C, but am more familiar with C++. My first exposure to it was at the start of the school year, but I have now taken two classes about it and feel very comfortable with it.
sqlite3/SQL
I used SQL when I was an intern at Statascope and am relativly familiar with it
OpenCL
not familiar with it, have now read the Wikipedia page
OpenMP
have used it during my CS100 class. I am familiar with the basics
gtk/cairo
not familiar, ready to learn
SSE intrinsics/optimized programming
not familiar, ready to learn
cmake
I have used it before, would not say that I am proficient with it
Which tools do you normally use for development? Why do you use them?
For development in C/C++ I use gedit. I have used eclipse for C/C++ also. For java I prefer an IDE called jCreator or, alternatively, netebans. For C# I have used Visual Studio Express Edition 2010 for my own code and the Team Development version while I was working at Stratascope.
What programming languages are you fluent in?
I am fluent in C, C++, C#, Java and SQL
Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably only add this number in the application for you submit to Google since the info in the wiki is available in public. We will not make any use of your number unless some case of "there is no way to contact you" does arise!
I would be great to talk over the phone.


darktable's Bug Workflow

darktable's issues are reported and managed in our own Redmine installation. In order to comment on bugs, update their status, and assign themselves to work on a given bug you have to register and create a user account. darktable Bug Team members can set the bug status to Triaged (more below) and assign priorities.

General notes

The different trackers

Currently we have two trackers, their intended usage is described below:

Bug status

We have the following bug statuses:

Bug importance

Importance reflects how serious is the bug.

Categories

Categories relate bugs to a subsystem or general area of functionality of darktable. Currently the following Categories are being used:

Target versions

darktable is a spare time project. So the development pace relies heavily on the given spare time of the developers. Therefore it does not make sense (and fun) to set up sophisticated roadmaps with due dates and all. Since we want to deliver bug fixes in patch releases as soon as possible we started to deliver them roughly one per month.

This has some implications on the "target version" of a bug or feature:

And then we have the numbered target versions. As said above: there is no absolute roadmap, especially not for patch releases. These targets are meant for regressions from a earlier version. So if the current stable version is "1.0.3", the target version "1.0.4" contains /just/ the regressions from the stable version - not all bugs in the version since it's very unlikely to have them fixed all at once. And after releasing "1.0.4" within a reasonable time we would have to move all unfixed bugs again to the next patch target version.

Redmine git integration

There are several things that make life easier. If you're working on a bug an you know the issue number you can close the ticket or just reference to the commit you're about to apply. This works as described here:

If you already made a commit and can't change the commit message accordingly or you found an issue that got solved by someone else you can still create a reference or at least a link to the commit. This makes it easier to find relates problems later.

Advices

The general methodology for working with bugs is as follows:

Be polite. It takes some effort on the part of the user to come to our site, navigate to the bug report section, and write up a report. If they know their report will be treated seriously and professionally, they'll respect the system and put in extra time to help us solve the issue.

Do not close an unreproducible bug unless a reasonable amount of effort is put into reproducing it, and let it rot for some time before closing -- someone may come up with a better report in comments. (In a few situations we might not be able to recreate the bug, but due to the involved assistance of the user might be able to narrow down and fix the problem, and the user is able to do the validation.)

Clarify. If it took you some time to guess what it's about, change the summary or add a comment, to make it obvious to whoever will be reading the tracker after you (especially if it's the person who can fix it). For example "problem with export" should be replaced with "artefacts when exporting NEF files with a small rotation enabled".

When closing a bug as Fixed, add a comment that includes the revision number of the first version without the bug. Linking to revisions is done with "commit:hash", where the hash should by the one of the commit containing the bugfix.

Always search for similar or duplicate requests before filing new reports.
When choosing which report should be marked a duplicate and which one left valid, older reports should be given priority over newer reports. Exceptions can be made if the newer report has significantly better information provided. Where appropriate, copy and paste across any relevant extra information as a comment to the bug report being left open.

Please do not randomly assign bugs or features to a developer or to the whole team ("Assignee: developers"). People will assign themselves if they want to work on a bug. If you know somebody that could contribute to a discussion or maybe knows a solution, add him/her to the watchers list rather than assigning the bug. He/she will be notified then.


Building darktable 2.0

General build instructions

First, install git, clone the repo and check out the latest stable release:

git clone https://github.com/darktable-org/darktable.git
cd darktable
git tag # find the latest 2.0 release, e.g. release-2.0.4
git checkout release-2.0.4

Then install the dependencies (listed below) and build:

./build.sh

To build the usermanual:

cd build
make darktable-usermanual

To additionally build the lua-api manual

make darktable-lua-api

Ubuntu 14.04

Note: binary packages are now available from pmjdebruijn's unstable ppa.

Build status: PASS

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff4-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev

There is a problem with the libosmgpsmap-1.0-dev package from trusty backports (installed above). It is missing the pkg-config file that darktable uses to find the library. You have two options to fix this.

1. Install the osm-gps-map package from pmjdebruijn's unsatble ppa.

or

2. Create the pkg-config file:

echo 'prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include

Name: osm-gps-map
Description: Moving map widget using openstreet map data
Version: 1.0.2
Requires: gtk+-3.0 libsoup-2.4
Libs: -L${libdir} -losmgpsmap-1.0
Cflags: -I${includedir}/osmgpsmap-1.0' | sudo tee /usr/lib/x86_64-linux-gnu/pkgconfig/osmgpsmap-1.0.pc

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Ubuntu 15.10

Note: binary packages are now available from pmjdebruijn's unstable ppa.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-0-dev

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Ubuntu 16.04 and Ubuntu 16.10

Note: binary packages are now available from pmjdebruijn's unstable ppa.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev libcups2-dev liblua5.3-dev libcolord-gtk-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev libflickcurl-dev libgraphicsmagick1-dev libwebp-dev libopenexr-dev libsecret-1-dev libgphoto2-dev llvm-5.0-dev python3-jsonschema

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl po4a

Translated man pages:

sudo apt-get install po4a

Fedora 22

Binary packages are available. Also available from COPR.

Build status: PASS

./build.sh --buildtype RelWithDebInfo

Minimal dependencies:

sudo dnf install cmake gcc-c++ intltool gtk3-devel libxml2-devel lensfun-devel librsvg2-devel sqlite-devel libcurl-devel libjpeg-turbo-devel libtiff-devel lcms2-devel json-glib-devel exiv2-devel pugixml-devel

Optional dependenies:

sudo dnf install libsoup-devel libgphoto2-devel OpenEXR-devel libwebp-devel flickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel osm-gps-map-devel colord-devel colord-gtk-devel cups-devel SDL-devel

Usermanual:

sudo dnf install java-1.8.0-openjdk-devel ImageMagick gnome-doc-utils fop docbook-dtds docbook-style-xsl

Note: Saxon 6.5 is not present in the Fedora 22 package archive (the saxon package will give you saxon-he 9.3 rather than saxon 6.5 as required by darktable). To install saxon 6.5:

sudo mkdir -p /usr/local/share/java/
sudo unzip saxon6-5-5.zip -d /usr/local/share/java/saxon6-5-5
cd /usr/share/java
sudo ln -s /usr/local/share/java/saxon6-5-5/saxon.jar
sudo ln -s /usr/local/share/java/saxon6-5-5/saxon-xml-apis.jar
echo '#!/bin/sh

exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' | sudo tee /usr/local/bin/saxon-xslt
sudo chmod a+x /usr/local/bin/saxon-xslt
PATH="/usr/local/bin:$PATH"

Translated man pages:

sudo dnf install po4a

Fedora 23

Binary packages are available. Also available from COPR.

Build status: PASS

Problem: GCC 5.1.1 has a bug that prevents building as Release (the default build type).

Solution: Don't build as Release but RelWithDebInfo, or use a newer version of GCC.

./build.sh --buildtype RelWithDebInfo

Minimal dependencies:

sudo dnf install cmake gcc-c++ intltool gtk3-devel libxml2-devel lensfun-devel librsvg2-devel sqlite-devel libcurl-devel libjpeg-turbo-devel libtiff-devel lcms2-devel json-glib-devel exiv2-devel pugixml-devel

Optional dependenies:

sudo dnf install libsoup-devel libgphoto2-devel OpenEXR-devel libwebp-devel flickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel osm-gps-map-devel colord-devel colord-gtk-devel cups-devel SDL-devel

Usermanual:

sudo dnf install ImageMagick gnome-doc-utils fop docbook-dtds docbook-style-xsl

Note: Saxon 6.5 is not present in the Fedora 23 package archive (the saxon package will give you saxon-he 9.3 rather than saxon 6.5 as required by darktable). See instructions in the Fedora 22 section for how to install it.

Translated man pages:

sudo dnf install po4a

nVidia OpenCL support

From this mailing list thread, to enable OpenCL support for accelerated processing on nVidia cards:

Enable the RPMFusion repos:

sudo dnf install akmod-nvidia "kernel-devel-uname-r == $(uname -r)" 
sudo dnf update -y
sudo dnf install xorg-x11-drv-nvidia-cuda
sudo dnf install mesa-libOpenCL clinfo
sudo shutdown -r now  # reboot the system

Check that the nvidia-uvm module is loaded:

lsmod |grep nvidia-uvm

If not, load it:

sudo modprobe nvidia-uvm

Fedora 24

Build status: PASS

Minimal dependencies:

sudo dnf install cmake gcc-c++ intltool gtk3-devel libxml2-devel lensfun-devel librsvg2-devel sqlite-devel libcurl-devel libjpeg-turbo-devel libtiff-devel lcms2-devel json-glib-devel exiv2-devel pugixml-devel

Optional dependenies:

sudo dnf install libsoup-devel libgphoto2-devel OpenEXR-devel libwebp-devel flickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel osm-gps-map-devel colord-devel colord-gtk-devel cups-devel SDL-devel

Usermanual:

sudo dnf install ImageMagick gnome-doc-utils fop docbook-dtds docbook-style-xsl

Note: Saxon 6.5 is not present in the Fedora 24 package archive (the saxon package will give you saxon-he 9.3 rather than saxon 6.5 as required by darktable). See instructions in the Fedora 22 section for how to install it.

Translated man pages:

sudo dnf install po4a

openSUSE

Binary packages are available for openSUSE and SLE 12.

Build status (Leap 42.1): PASS
Build status (Tumbleweed 2015-11-19): PASS

Minimal dependencies

sudo zypper install cmake make gcc gcc-c++ intltool libxslt-tools gtk3-devel libxml2-devel libxml2-tools lensfun-devel librsvg-devel sqlite3-devel libcurl-devel libjpeg8-devel libtiff-devel liblcms2-devel json-glib-devel libexiv2-devel pugixml-devel

Optional dependencies

sudo zypper install libgphoto2-devel openexr-devel libwebp-devel libflickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel libcolord-devel libcolord-gtk-devel cups-devel libSDL-devel libSDL_image-devel libosmgpsmap-devel

Usermanual

sudo zypper install java-1_8_0-openjdk-devel gnome-doc-utils saxon6-scripts saxon6-fop imagemagick docbook_4 docbook-xsl-stylesheets

Make cmake find saxon:

cd /usr/share/java
sudo ln -s saxon6.jar saxon.jar

Translated man pages

sudo zypper install po4a xml2po

Debian 8 Jessie

Build status: PASS

Note: no sudo by default on debian; use su to go to root before installing.

Minimal dependencies

apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies

apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev desktop-file-utils libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev

Usermanual

apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

apt-get install po4a

Arch Linux

Build status: PASS

There is a package in the arch user repository (AUR) called darktable-git. At the time of writing this was rather out of date.

Minimal dependencies

sudo pacman -S base-devel cmake intltool lensfun curl exiv2 lcms2 librsvg libxslt sqlite
mkdir aur
cd aur/
git clone https://aur.archlinux.org/pugixml.git
cd pugixml/
makepkg -sri
cd

Optional dependencies

sudo pacman -S openexr libwebp flickcurl graphicsmagick libcups libsoup libgphoto2 sdl mesa-libgl dbus-glib
cd aur
git clone https://aur.archlinux.org/osm-gps-map.git
cd osm-gps-map
makepkg -sri
cd

Usermanual

sudo pacman -S jdk8-openjdk gnome-doc-utils fop imagemagick extra/docbook-xml extra/docbook-xsl
cd aur
git clone https://aur.archlinux.org/saxon6.git
cd saxon6/
makepkg -sri
cd /usr/share/java
ln -s saxon6/saxon.jar
echo '#!/bin/sh

exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' | sudo tee /usr/local/bin/saxon-xslt
cd

Translated man pages

sudo pacman -S po4a

Linux Mint 17.2

Build status: PASS

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff4-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev

Note that osmgpsmap 1.0.2 does not exist in the mint package archive. We can use the same resolution to the problem in Ubuntu 14.04 above by adding the ubuntu trusty-backports source and installing from there. Update the country code in the deb source below (or your favourite mirror):

echo 'deb http://au.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse' | sudo tee -a /etc/apt/sources.list.d/additional-repositories.list
echo 'Package: *
Pin: release a=trusty-backports
Pin-Priority: 100' | sudo tee -a /etc/apt/preferences
sudo apt-get update
sudo apt-get install libosmgpsmap-1.0-dev

Create the missing pkg-config file:

echo 'prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include

Name: osm-gps-map
Description: Moving map widget using openstreet map data
Version: 1.0.2
Requires: gtk+-3.0 libsoup-2.4
Libs: -L${libdir} -losmgpsmap-1.0
Cflags: -I${includedir}/osmgpsmap-1.0' | sudo tee /usr/lib/x86_64-linux-gnu/pkgconfig/osmgpsmap-1.0.pc

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Gentoo Linux

Build status: PASS

Scanning dependencies of target darktable_single_xml
[ 96%] Generating the profiled docbook xml file

But completed 34 minutes later!

Note: need sse3 USE flag to be set by adding sse3 to /etc/portage/make.conf, e.g.

USE="bindist mmx sse sse2 sse3" 
CPU_FLAGS_X86="sse3"

Rebuild:

emerge --update --deep --newuse @world
emerge --depclean

Minimal dependencies:

emerge --ask dev-util/cmake dev-util/intltool dev-libs/libxslt x11-libs/gtk+ dev-libs/libxml2 media-libs/lensfun gnome-base/librsvg dev-db/sqlite net-misc/curl media-libs/libjpeg-turbo media-libs/tiff media-libs/lcms dev-libs/json-glib media-gfx/exiv2 dev-libs/pugixml

Optional dependencies:

emerge --ask media-libs/libgphoto2 net-libs/libsoup media-libs/openexr media-libs/libwebp media-libs/flickcurl media-libs/openjpeg app-crypt/libsecret media-gfx/graphicsmagick x11-misc/colord x11-libs/colord-gtk net-print/cups media-libs/libsdl media-libs/sdl-image media-libs/mesa

Optional dependencies that are missing from the package archive:

emerge --ask dev-libs/gobject-introspection x11-libs/cairo gnome-base/gnome-common dev-util/gtk-doc
git clone git://github.com/nzjrs/osm-gps-map
cd osm-gps-map
./autogen.sh
make
su
make install
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
echo 'export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bash_profile
git clone https://github.com/uclouvain/openjpeg.git
cd openjpeg
git tag # find latest 1.x tag
git checkout version.1.5.2 # latest tag from previous line
cmake .
make
su
mkdir /usr/local/share/pkgconfig/
make install

Usermanual:

For one of the dependencies of fop (dev-java/sun-jms-1.1-r2), we need to do this:

Fetch instructions for dev-java/sun-jms-1.1-r2:
 * 
 *  Due to license restrictions, we cannot fetch the
 *  distributables automagically.
 * 
 *  1. Visit http://download.oracle.com/otndocs/jcp/7542-jms-1.1-fr-doc-oth-JSpec/
 *  2. Accept the License Agreement
 *  3. Download jms-1_1-fr-apidocs.zip
 *  4. Move the file to /usr/portage/distfiles
 * 

Note that after copying the zipfile into /usr/portage/distfiles/, I needed to do the following, or the emerge would fail:

su
chmod a+r /usr/portage/distfiles/jms-1_1-fr-apidocs.zip

Then:

emerge --ask virtual/jdk app-text/gnome-doc-utils dev-java/fop media-gfx/imagemagick app-text/docbook-xml-dtd app-text/docbook-xsl-stylesheets

Note: Saxon 6.5 is not present in the Gentoo package archive (the dev-java/saxon package will give you saxon-he 9.3 rather than saxon 6.5 as required by darktable). To install saxon 6.5:

su
mkdir -p /usr/local/share/java/
unzip saxon6-5-5.zip -d /usr/local/share/java/saxon6-5-5
mkdir -p /usr/share/java
cd /usr/share/java
ln -s /usr/local/share/java/saxon6-5-5/saxon.jar
ln -s /usr/local/share/java/saxon6-5-5/saxon-xml-apis.jar
echo '#!/bin/sh

exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' > /usr/local/bin/saxon-xslt
chmod a+x /usr/local/bin/saxon-xslt

Translated man pages:

emerge --ask app-text/po4a

Building darktable 2.2

NOTE: This is a work in progress, currently contains a lot of outdated entries from 2.0 build instructions.

General build instructions

First, install git, clone the repo and check out the latest stable release:

git clone https://github.com/darktable-org/darktable.git
cd darktable
git tag # find the latest 2.2 release, e.g. release-2.2.0
git checkout release-2.2.0

Then install the dependencies (listed below) and build:

./build.sh

To build the usermanual:

cd build
make darktable-usermanual

To additionally build the lua-api manual

make darktable-lua-api

Ubuntu 15.10

Note: including this in order to support those with AMD graphics cards that require the fglrx driver - no longer supported on Ubuntu 16.04 or above.

Note: There is no llvm-3.9/clang-3.9 in Ubuntu 16.04, so test-compilation of OpenCL programs can not be done.

Perform the instructions for Ubuntu 16.04, plus:

Create CLI script for jsonschema:

echo "#! /usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'jsonschema==2.4.0','console_scripts','jsonschema'
__requires__ = 'jsonschema==2.4.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('jsonschema==2.4.0', 'console_scripts', 'jsonschema')()
    )" | sudo tee /usr/local/bin/jsonschema
sudo chmod +x /usr/local/bin/jsonschema

Ubuntu 16.04

Note: binary packages are available from pmjdebruijn's release ppa.

Note: There is no llvm-3.9/clang-3.9 in Ubuntu 16.04, so test-compilation of OpenCL programs can not be done.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev python3-pkg-resources

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev libopenjp2-7-dev python3-jsonschema libopenjp2-7-dev

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Ubuntu 16.10

Note: binary packages are available from pmjdebruijn's release ppa.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev libopenjp2-7-dev llvm-3.9 clang-3.9 python3-jsonschema

Also, in order for llvm to be found, you need to do:

export LLVM_DIR=/usr/lib/llvm-3.9/lib/cmake/llvm

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Ubuntu 17.04 and 17.10

Note: binary packages are available from pmjdebruijn's release ppa.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjp2-7-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-dev libopenjp2-7-dev llvm-3.9 clang-3.9 python3-jsonschema

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Fedora 24 and 25

Build status 24: PASS
Build status 25: PASS

Minimal dependencies:

sudo dnf install cmake gcc-c++ intltool gtk3-devel libxml2-devel lensfun-devel librsvg2-devel sqlite-devel libcurl-devel libjpeg-turbo-devel libtiff-devel lcms2-devel json-glib-devel exiv2-devel pugixml-devel libxslt

Optional dependenies:

Note: LLVM 3.9+ is not available on Fedora, so test-compilation of OpenCL programs can not be done.

sudo dnf install libgphoto2-devel OpenEXR-devel libwebp-devel flickcurl-devel openjpeg-devel openjpeg2-devel libsecret-devel GraphicsMagick-devel osm-gps-map-devel colord-devel colord-gtk-devel cups-devel python3-jsonschema

Create CLI script for jsonschema:

echo "#! /usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'jsonschema==2.5.1','console_scripts','jsonschema'
__requires__ = 'jsonschema==2.5.1'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('jsonschema==2.5.1', 'console_scripts', 'jsonschema')()
    )" | sudo tee /usr/local/bin/jsonschema
sudo chmod +x /usr/local/bin/jsonschema

Usermanual:

sudo dnf install saxon ImageMagick gnome-doc-utils fop docbook-dtds docbook-style-xsl java-1.8.0-openjdk-devel

Translated man pages:

sudo dnf install po4a

openSUSE

Binary packages are available for openSUSE and SLE 12.

Build status (Leap 42.1): UNKNOWN
Build status (Leap 42.2): UNKNOWN
Build status (Tumbleweed 2016-12-??): UNKNOWN

Minimal dependencies

sudo zypper install cmake make gcc gcc-c++ intltool libxslt-tools gtk3-devel libxml2-devel libxml2-tools lensfun-devel librsvg-devel sqlite3-devel libcurl-devel libjpeg8-devel libtiff-devel liblcms2-devel json-glib-devel libexiv2-devel pugixml-devel

Optional dependencies

sudo zypper install libgphoto2-devel openexr-devel libwebp-devel libflickcurl-devel openjpeg-devel libsecret-devel GraphicsMagick-devel libcolord-devel libcolord-gtk-devel cups-devel libSDL-devel libSDL_image-devel libosmgpsmap-devel

Usermanual

sudo zypper install java-1_8_0-openjdk-devel gnome-doc-utils saxon6-scripts saxon6-fop imagemagick docbook_4 docbook-xsl-stylesheets

Make cmake find saxon:

cd /usr/share/java
sudo ln -s saxon6.jar saxon.jar

Translated man pages

sudo zypper install po4a xml2po

Debian 8 Jessie

Build status: PASS

Note: no sudo by default on debian; use su to go to root before installing.

Minimal dependencies

apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies

apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev desktop-file-utils libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev libosmgpsmap-1.0-0-dev libopenjp2-7-dev
echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list
apt-get update
apt-get -t jessie-backports install python3-jsonschema

OpenCL test compilation

Unable to do OpenCL test compilation as clang-3.9 libclang-common-3.9-dev llvm-3.9-dev packages aren't available in Jessie.

Usermanual:

apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

apt-get install po4a

Arch Linux

Build status: UNKNOWN

There is a package in the arch user repository (AUR) called darktable-git. At the time of writing this was rather out of date.

Minimal dependencies

sudo pacman -S base-devel cmake intltool lensfun curl exiv2 lcms2 librsvg libxslt sqlite
mkdir aur
cd aur/
git clone https://aur.archlinux.org/pugixml.git
cd pugixml/
makepkg -sri
cd

Optional dependencies

sudo pacman -S openexr libwebp flickcurl graphicsmagick libcups libsoup libgphoto2 sdl mesa-libgl dbus-glib
cd aur
git clone https://aur.archlinux.org/osm-gps-map.git
cd osm-gps-map
makepkg -sri
cd

Usermanual

sudo pacman -S jdk8-openjdk gnome-doc-utils fop imagemagick extra/docbook-xml extra/docbook-xsl
cd aur
git clone https://aur.archlinux.org/saxon6.git
cd saxon6/
makepkg -sri
cd /usr/share/java
ln -s saxon6/saxon.jar
echo '#!/bin/sh

exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' | sudo tee /usr/local/bin/saxon-xslt
cd

Translated man pages

sudo pacman -S po4a

Linux Mint 18

Build status: UNKNOWN

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff4-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libflickcurl-dev libopenjpeg-dev libsecret-1-dev libgraphicsmagick1-dev libcolord-dev libcolord-gtk-dev libcups2-dev libsdl1.2-dev libsdl-image1.2-dev libgl1-mesa-dev

Note that osmgpsmap 1.0.2 does not exist in the mint package archive. We can use the same resolution to the problem in Ubuntu 14.04 above by adding the ubuntu trusty-backports source and installing from there. Update the country code in the deb source below (or your favourite mirror):

echo 'deb http://au.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse' | sudo tee -a /etc/apt/sources.list.d/additional-repositories.list
echo 'Package: *
Pin: release a=trusty-backports
Pin-Priority: 100' | sudo tee -a /etc/apt/preferences
sudo apt-get update
sudo apt-get install libosmgpsmap-1.0-dev

Create the missing pkg-config file:

echo 'prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include

Name: osm-gps-map
Description: Moving map widget using openstreet map data
Version: 1.0.2
Requires: gtk+-3.0 libsoup-2.4
Libs: -L${libdir} -losmgpsmap-1.0
Cflags: -I${includedir}/osmgpsmap-1.0' | sudo tee /usr/lib/x86_64-linux-gnu/pkgconfig/osmgpsmap-1.0.pc

Usermanual:

sudo apt-get install default-jdk gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Gentoo Linux

Build status: UNKNOWN

Scanning dependencies of target darktable_single_xml
[ 96%] Generating the profiled docbook xml file

But completed 34 minutes later!

Note: need sse3 USE flag to be set by adding sse3 to /etc/portage/make.conf, e.g.

USE="bindist mmx sse sse2 sse3" 
CPU_FLAGS_X86="sse3"

Rebuild:

emerge --update --deep --newuse @world
emerge --depclean

Minimal dependencies:

emerge --ask dev-util/cmake dev-util/intltool dev-libs/libxslt x11-libs/gtk+ dev-libs/libxml2 media-libs/lensfun gnome-base/librsvg dev-db/sqlite net-misc/curl media-libs/libjpeg-turbo media-libs/tiff media-libs/lcms dev-libs/json-glib media-gfx/exiv2 dev-libs/pugixml

Optional dependencies:

emerge --ask media-libs/libgphoto2 net-libs/libsoup media-libs/openexr media-libs/libwebp media-libs/flickcurl media-libs/openjpeg app-crypt/libsecret media-gfx/graphicsmagick x11-misc/colord x11-libs/colord-gtk net-print/cups media-libs/libsdl media-libs/sdl-image media-libs/mesa

Optional dependencies that are missing from the package archive:

emerge --ask dev-libs/gobject-introspection x11-libs/cairo gnome-base/gnome-common dev-util/gtk-doc
git clone git://github.com/nzjrs/osm-gps-map
cd osm-gps-map
./autogen.sh
make
su
make install
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
echo 'export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bash_profile
git clone https://github.com/uclouvain/openjpeg.git
cd openjpeg
git tag # find latest 1.x tag
git checkout version.1.5.2 # latest tag from previous line
cmake .
make
su
mkdir /usr/local/share/pkgconfig/
make install

Usermanual:

For one of the dependencies of fop (dev-java/sun-jms-1.1-r2), we need to do this:

Fetch instructions for dev-java/sun-jms-1.1-r2:
 * 
 *  Due to license restrictions, we cannot fetch the
 *  distributables automagically.
 * 
 *  1. Visit http://download.oracle.com/otndocs/jcp/7542-jms-1.1-fr-doc-oth-JSpec/
 *  2. Accept the License Agreement
 *  3. Download jms-1_1-fr-apidocs.zip
 *  4. Move the file to /usr/portage/distfiles
 * 

Note that after copying the zipfile into /usr/portage/distfiles/, I needed to do the following, or the emerge would fail:

su
chmod a+r /usr/portage/distfiles/jms-1_1-fr-apidocs.zip

Then:

emerge --ask virtual/jdk app-text/gnome-doc-utils dev-java/fop media-gfx/imagemagick app-text/docbook-xml-dtd app-text/docbook-xsl-stylesheets

Note: Saxon 6.5 is not present in the Gentoo package archive (the dev-java/saxon package will give you saxon-he 9.3 rather than saxon 6.5 as required by darktable). To install saxon 6.5:

su
mkdir -p /usr/local/share/java/
unzip saxon6-5-5.zip -d /usr/local/share/java/saxon6-5-5
mkdir -p /usr/share/java
cd /usr/share/java
ln -s /usr/local/share/java/saxon6-5-5/saxon.jar
ln -s /usr/local/share/java/saxon6-5-5/saxon-xml-apis.jar
echo '#!/bin/sh

exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' > /usr/local/bin/saxon-xslt
chmod a+x /usr/local/bin/saxon-xslt

Translated man pages:

emerge --ask app-text/po4a

Manjaro Linux 18.0

Build status: Testing

In addition to the standard installation, the following packages have to be installed.

Minimal dependencies

sudo pacman -S cmake intltool libcurl-gnutls intltool llvm6 llvm6-libs clang

Optional dependencies

In the standard installation of Manjaro all optional packages are already installed for darktable.

Usermanual

sudo pacman -S gnome-doc-utils fop docbook-xml docbook-xsl

Additional saxon6 is required but the installation from AUR does not work and saxon6 has to be installed manually.

First download the saxon 6.5 zip file from http://saxon.sourceforge.net/#F6.5.5 and switch to the folder with the downloaded zip file.

Now run the following commands:

sudo mkdir -p /usr/local/share/java/
sudo unzip saxon6-5-5.zip -d /usr/local/share/java/saxon6-5-5
cd /usr/share/java
sudo ln -s /usr/local/share/java/saxon6-5-5/saxon.jar
sudo ln -s /usr/local/share/java/saxon6-5-5/saxon-xml-apis.jar
echo '#!/bin/sh' | sudo tee /usr/local/bin/saxon-xslt
echo '' | sudo tee -a /usr/local/bin/saxon-xslt
echo 'exec java -classpath /usr/share/java/saxon.jar com.icl.saxon.StyleSheet "@0"' | sudo tee -a /usr/local/bin/saxon-xslt
sudo chmod a+x /usr/local/bin/saxon-xslt

Finally Oracle Java must be installed from AUR and set as default.

sudo yaourt jdk

Check which jdk has been installed in your system.

archlinux-java status

Now set Oracle Java as the default jdk.

sudo archlinux-java set java-11-jdk

Translated man pages

sudo pacman -S po4a

Building darktable 2.6

General build instructions

1. Install git, clone the repo and check out the latest stable release:

$ git clone https://github.com/darktable-org/darktable.git
$ cd darktable
$ git tag # find the latest 2.6 release, e.g. release-2.6.0
$ git checkout release-2.6.0

2. Set up the submodules:

$ git submodule init
$ git submodule update

3. Install the dependencies for your distribution (listed below) and build:

./build.sh

4. To build the usermanual:

cd build
make darktable-usermanual

5. To additionally build the lua-api manual

make darktable-lua-api

Ubuntu 18.04

Note: binary packages are available from pmjdebruijn's release ppa.

Minimal dependencies:

sudo apt-get install gcc g++ cmake intltool xsltproc libgtk-3-dev libxml2-utils libxml2-dev liblensfun-dev librsvg2-dev libsqlite3-dev libcurl4-gnutls-dev libjpeg-dev libtiff5-dev liblcms2-dev libjson-glib-dev libexiv2-dev libpugixml-dev libcolord-dev libcolord-gtk-dev libcups2-dev

Optional dependencies:

sudo apt-get install libgphoto2-dev libsoup2.4-dev libopenexr-dev libwebp-dev libosmgpsmap-1.0-dev libflickcurl-dev libsecret-1-dev libgraphicsmagick1-dev llvm clang liblua5.3-dev

Usermanual:

sudo apt-get install gnome-doc-utils libsaxon-java fop imagemagick docbook-xml docbook-xsl

Translated man pages:

sudo apt-get install po4a

Camera Tetheringing

Tethered digital camera operations mean's that the camera is connected to the computer
and remote operation such as set/get camera settings could be performed or
a capture is physical trigged on the camera and application is trigged to
download the captured image.

Darktable

Darktable have now this feature (minimal but fully working) and are accessed thru the
device panel and the button "tethered shoot", if the button not is present under your
detected camera the camera has no support for it.


Coding Style

To facilitate collaboration, a coding style guide is in order.

Defined by use so far:

Here are two modelines that you can add to your source files that will help with sticking to these defaults:

// vim: shiftwidth=2:expandtab:tabstop=2:cindent
// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-space on;

There is a tool in the repository that will beautify any code in the tree. It is here:

tools/beautify_style.sh

For emacs, all that's needed is the following content in the file $TOP/.dir-locals.el:

((c-mode . ((c-file-style . "bsd")
        (c-basic-offset . 2)
        (indent-tabs-mode . nil))))

In newer versions of darktable, this file should already be present.


Better Collection Plugin

Features:


Contributing Code

Fork vs. patch

The favored way of contributing code to darktable is through github forks. We will continue to deal with patches in our bug tracker or on the mailing list, but github fork are much easier for us to deal with. They allow per-line comment, they are easy to merge, we can more easily look at progress.

And more importantly, when you fork on github and have a public branch, we see it immediately through the github repo network (see https://github.com/darktable-org/darktable/network). This means that we could comment on a feature before you invest too much time in something we don't like. But please keep in mind: it's always better to discuss your projects on the mailing list or IRC beforehand...

So yes, fork a lot, it's a great thing, even for trivial patches.

Naming branches

If you work on a large feature (any feature that you expect to generate multiple commits) please give it a proper name related to that feature (i.e avoid naming the branch after your own name). It will make things easier once you are done and start working on something else, and it's easier for us when browsing through branches to figure out what you are working on. If you are working on something related to an issue in our tracker, using a feature request or bug issue number as branch name is a good idea, too. The other way round: it might be worth to add a ticket to the tracker and set the status to "In progress" so people can easily see you are currently working on this.

If you just want to do a quick fix it's ok to work on (your fork's version of) master. If you have multiple trivial patches, stack them on master, that's fine. Just make sure that you do a pull request often and re-merge the main master regularly. You can also create a branch named after a bug of course, but for trivial fixes, working on master is less of a problem for us.

Last, if you have finished working on a feature, have create a pull request and start working on something else, please recreate a new branch based on the main master branch, and do not commit new things on top of your first feature branch (that is: assuming both features are independant of course). This will allow us to merge your latest feature independently if there is a problem with the first one that has to be fixed before merging back. It will make things easier for you if we are not happy with your feature and you have to add commits after the pull requests, and make things easier overall.

Creating a Pull Request

Don't create a pull request until you are ready to merge your work. A pull request is a call for us to go through your work and then merge it back in the main darktable repository. So you should only create your pull request once you think your feature is ready.

This also means that you can post a "request for testing/review" on the mailing list for any work in progress, you don't need a pull request for that...

We might need some time to deal with your pull requests so don't be suprised if there is no news for a week or two... We do our best but we are all volunteers, too. On a related note, the bigger the change, the more time it will need for review. So don't expect new modules to be handled as fast as one-line changes, especially if the changes contain new image operators changing our processing pipeline.

Pull requests are attached to branches, not commits. This means that if you push some commits on a branch that has a pull request pending, the pull request will move with the branch head. This allows you to continue to work on a branch to fix whatever issue we have with it, but it also means that once you've done a pull request you should not add unrelated work on top of it. Use a new branch for that.

Since we need time to review a pull request, please try to keep it up to date by regularly merging with our master branch (a good rule of thumb is to re-merge master at least whenever auto-merge won't work, which can be seen at the bottom of the pull request). This will save us some time and remind us that you are waiting on us and that we should do something. Having your contribution based on the latest master branch prevents us from having to solve merge conflicts once your pull request is reviewed.

We will usually not pull unless there is a pull request. I.e. don't assume your single change will be noticed. It usually will be but unless you do a PR we will assume you have a good reason for not wanting it merged.

We might pull if we think your idea is very important and we are ready to work on it to complete it (or you are unresponsive to comment and we are ready to take matter in our own hand) More commonly we might pull any quick fixes, especially if we are about to release, but these are special cases. Our rule of thumb is that your branch is yours and we will not pull until we are invited to.

Assigning and Merging Pull Requests

(this paragraph is more for devs than for external contributors)

Pull requests can be assigned to a dev. Assigning it means that the PR is not for grab anymore, it is an "exclusive lock" on that request. In other word, the assigned dev is the one responsible for merging and other devs shouldn't merge without asking him first. As a consequence

This does not mean that other devs can't comment on an assigned request. This is more of an "I am working on this area I want to look into it" kind of lock. Any dev should feel free to comment on any request or ask for comments from any other dev (by including the name in the comment, there is a special wiki markup in comments for that).

Commit messages

When committing think of clear commit messages that describe your changes for that specific commit. This will make it easier for others to follow up with your work and find problems if they occur. The commit messages are pulled with their commits to our main repository once your pull request is merged. Since our Redmine has access to this it processes the commit messages. So you are able to link to issues within Redmine from your commit message - or even close a bug without visiting the bug tracker. Just type "this fixes #1234" to close or just "#1234" just to mention the issue somewhere in your commit message. Have a look at the Bug_Workflow, section "Redmine git integration" for further information.

Please make sure that your commit messages follow the format that is generally considered nice:
A short summary in the first line, no more than 50 characters long. When you can't put everything in that one line, then add one empty line and then a more verbose description with lines no longer than 78 characters. The reason for this is that commit messages formated like this can nicely be sent as emails and read in the terminal.

TODO


Darktable on OS X / macOS

More up-to-date and correct instructions might be at https://github.com/darktable-org/darktable/blob/master/packaging/macosx/BUILD.txt

OS X 10.11 El Capitan

MacPorts compiler & config settings like below may not be right or should be revised. See https://trac.macports.org/ticket/53018#comment:4.
[2016-12-09]

OS X 10.10 Yosemite (2. 6. 2015)

Prereqs

Add to /opt/local/etc/macports/variants.conf

+no_gnome +no_x11 +quartz -x11 +llvm34 +gtk3

Add to /opt/local/etc/macports/macports.conf

buildfromsource always
cxx_stdlib libc++
macosx_deployment_target 10.9

Install macports from [[https://www.macports.org/install.php]]

sudo port install lensfun gtk-osx-application git exiv2 libgphoto2 librsvg libsoup openexr json-glib flickcurl GraphicsMagick openjpeg15 lua webp libsecret

Note: gtk-osx-application is now depreciated, and has been replaced by gtk-osx-application-gtk2, as well as gtk-osx-aplication-gtk3. I'm not sure if those work, but keep that in mind

Compilation

Get source, configure and build

git clone https://github.com/darktable-org/darktable.git
cd darktable
mkdir build
cd build
CC=gcc-mp-4.9 cmake .. -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk && make && sudo make install

After that, you should be able to run DT from /usr/local/bin/darktable

Known issues

Current screenshot (missing some elements right now)

Missing plus/minus buttons [[http://cl.ly/image/0Z3n2D2g0v0H/dtgitosx1010.png]]
Missing icons [[http://cl.ly/image/440p3C3g3X0y/dt02.png]]

Current compilation messages

-- The CXX compiler identification is AppleClang 6.1.0.6020053
-- The C compiler identification is GNU 4.9.2
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /opt/local/bin/gcc-mp-4.9
-- Check for working C compiler: /opt/local/bin/gcc-mp-4.9 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Mac OS X build detected, setting default features
WARNING: CMAKE_BUILD_TYPE is not defined!
         Defaulting to CMAKE_BUILD_TYPE=RelWithDebInfo. Use ccmake to set a proper value.
-- Looking for external programs
-- Found perl
-- Found intltool-merge
-- Found xsltproc
-- Found xmllint
-- All external programs found
-- Found PkgConfig: /opt/local/bin/pkg-config (found version "0.28") 
-- checking for module 'Gettext'
--   package 'Gettext' not found
-- Found Gettext 
-- Found msgfmt to convert language file. Translation enabled
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Try OpenMP CXX flag = [ ]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [/openmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-Qopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-openmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-xopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [+Oopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-qsmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Try OpenMP CXX flag = [-mp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Failed
-- Could NOT find OpenMP (missing:  OpenMP_CXX_FLAGS) 
-- checking for module 'gtk+-3.0'
--   found gtk+-3.0, version 3.16.3
-- checking for module 'gdk-pixbuf-2.0'
--   found gdk-pixbuf-2.0, version 2.31.4
-- checking for module 'glib-2.0'
--   found glib-2.0, version 2.44.1
-- Found Glib 
-- checking for module 'pango'
--   found pango, version 1.36.8
-- checking for module 'atk'
--   found atk, version 2.16.0
-- Found GTK3: /opt/local/lib/libgtk-3.dylib (Required is at least version "3.10") 
-- Found LibXml2: /opt/local/lib/libxml2.dylib (found suitable version "2.9.2", minimum required is "2.6") 
-- checking for one of the modules 'libsoup-2.4;libsoup2'
-- checking for one of the modules 'libsoup-2.2;libsoup2'
-- checking for module 'libgphoto2'
--   found libgphoto2, version 2.5.7
-- Found GPHOTO2: /opt/local/lib/libgphoto2.dylib  
-- Found OPENEXR: /opt/local/lib/libIlmImf.dylib;/opt/local/lib/libImath.dylib;/opt/local/lib/libIex.dylib;/opt/local/lib/libIlmThread.dylib  
-- checking for module 'libwebp'
--   found libwebp, version 0.4.3
-- Found WEBP: /opt/local/lib/libwebp.dylib (Required is at least version "0.3.0") 
-- checking for module 'lensfun'
--   found lensfun, version 0.3.0.0
-- Found LENSFUN: /opt/local/lib/liblensfun.dylib  
-- checking for module 'gio-2.0'
--   found gio-2.0, version 2.44.1
-- Found GIO 
-- Found GThread: /opt/local/lib/libgthread-2.0.dylib  
-- Found GModule: /opt/local/lib/libgmodule-2.0.dylib  
-- Found PANGOCAIRO: /opt/local/lib/libpangocairo-1.0.dylib  
-- Found PThread: /usr/lib/libpthread.dylib  
-- Found RSVG2: /opt/local/lib/librsvg-2.dylib  
-- Found LibXml2: /opt/local/lib/libxml2.dylib (found version "2.9.2") 
-- Found SQLITE3: /opt/local/lib/libsqlite3.dylib  
-- Found CURL: /opt/local/lib/libcurl.dylib (found version "7.42.1") 
-- Found ZLIB: /opt/local/lib/libz.dylib (found version "1.2.8") 
-- Found PNG: /opt/local/lib/libpng.dylib (found version "1.6.17") 
-- Found JPEG: /opt/local/lib/libjpeg.dylib  
-- Found TIFF: /opt/local/lib/libtiff.dylib (found version "4.0.3") 
-- Found LCMS2: /opt/local/lib/liblcms2.dylib  
-- checking for module 'json-glib-1.0'
--   found json-glib-1.0, version 1.0.4
-- Found JsonGlib 
-- checking for module 'exiv2'
--   found exiv2, version 0.24
-- Found EXIV2: /opt/local/lib/libexiv2.dylib  
-- checking for module 'Gettext'
--   package 'Gettext' not found
-- Internationalization: Enabled
-- Found FLICKCURL: /opt/local/lib/libflickcurl.dylib  
-- checking for module 'libopenjpeg1'
--   found libopenjpeg1, version 1.5.0
-- Found OpenJPEG: /opt/local/lib/libopenjpeg.dylib  
-- checking for module 'libsecret-1'
--   found libsecret-1, version 0.18.2
-- Found LIBSECRET: /opt/local/include/libsecret-1;/opt/local/include/glib-2.0;/opt/local/lib/glib-2.0/include;/opt/local/include  
-- checking for module 'gnome-keyring-1'
--   package 'gnome-keyring-1' not found
-- Could NOT find GNOMEKEYRING (missing:  GNOMEKEYRING_LIBRARY GNOMEKEYRING_INCLUDE_DIR) 
-- Could NOT find MACINTEGRATION (missing:  MACINTEGRATION_LIBRARY MACINTEGRATION_INCLUDE_DIR) 
-- checking for module 'GraphicsMagick'
--   found GraphicsMagick, version 1.3.21
-- Found GraphicsMagick 
-- checking for one of the modules 'lua52;lua5.2;lua-5.2;lua'
-- Lua support: Enabled
-- checking for module 'osmgpsmap-1.0'
--   package 'osmgpsmap-1.0' not found
-- Map mode: disabled, please install libosmgpsmap
-- checking for module 'colord'
--   package 'colord' not found
-- No libcolord found, this build will lack the ability to get the screen profile from colord
-- Found CUPS: /usr/lib/libcups.dylib  
-- Print mode: enabled
-- Looking for XOpenDisplay in /opt/local/lib/libX11.dylib;/opt/local/lib/libXext.dylib
-- Looking for XOpenDisplay in /opt/local/lib/libX11.dylib;/opt/local/lib/libXext.dylib - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /opt/local/lib/libX11.dylib
-- no colord support for darktable-cmstest. not cool.
-- 
Unable to find any JVMs matching version "(null)".
No Java runtime present, try --request to install.
-- Could NOT find Java (missing:  Java_JAVA_EXECUTABLE) 
-- No saxon XSLT processor and/or no docbook saxon extension library found.
Xslt processor saxon not found. HTML usermanual will be built with xsltproc;
expect usermanual with inconsistent screenshot and image dimensions.
Missing xml2po. No localized usermanuals are build
Missing xml2po
Can NOT update usermanual
-- Configuring done
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   lib_darktable

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/jr/dev/dt/darktable/build
Scanning dependencies of target generate_version
[  0%] Updating version string
[  0%] Built target generate_version
Scanning dependencies of target locale_af
[  0%] Building af locale
166 translated messages, 2093 untranslated messages.
[  0%] Built target locale_af
Scanning dependencies of target locale_ca
[  0%] Building ca locale
1977 translated messages.
[  0%] Built target locale_ca
Scanning dependencies of target locale_cs
[  0%] Building cs locale
1841 translated messages.
[  0%] Built target locale_cs
Scanning dependencies of target locale_da
[  0%] Building da locale
1975 translated messages.
[  0%] Built target locale_da
Scanning dependencies of target locale_de
[  1%] Building de locale
1926 translated messages, 30 fuzzy translations, 16 untranslated messages.
[  1%] Built target locale_de
Scanning dependencies of target locale_el
[  1%] Building el locale
1841 translated messages.
[  1%] Built target locale_el
Scanning dependencies of target locale_es
[  1%] Building es locale
1841 translated messages.
[  1%] Built target locale_es
Scanning dependencies of target locale_fi
[  1%] Building fi locale
613 translated messages, 551 fuzzy translations, 454 untranslated messages.
[  1%] Built target locale_fi
Scanning dependencies of target locale_fr
[  1%] Building fr locale
1976 translated messages, 1 untranslated message.
[  1%] Built target locale_fr
Scanning dependencies of target locale_gl
[  1%] Building gl locale
398 translated messages, 591 fuzzy translations, 629 untranslated messages.
[  1%] Built target locale_gl
Scanning dependencies of target locale_it
[  1%] Building it locale
1852 translated messages.
[  1%] Built target locale_it
Scanning dependencies of target locale_ja
[  3%] Building ja locale
1841 translated messages.
[  3%] Built target locale_ja
Scanning dependencies of target locale_nl
[  3%] Building nl locale
1977 translated messages.
[  3%] Built target locale_nl
Scanning dependencies of target locale_pl
[  3%] Building pl locale
1744 translated messages.
[  3%] Built target locale_pl
Scanning dependencies of target locale_pt_BR
[  3%] Building pt_BR locale
1752 translated messages.
[  3%] Built target locale_pt_BR
Scanning dependencies of target locale_pt_PT
[  3%] Building pt_PT locale
1739 translated messages, 1 fuzzy translation, 4 untranslated messages.
[  3%] Built target locale_pt_PT
Scanning dependencies of target locale_ro
[  3%] Building ro locale
713 translated messages, 490 fuzzy translations, 415 untranslated messages.
[  3%] Built target locale_ro
Scanning dependencies of target locale_ru
[  3%] Building ru locale
1793 translated messages, 7 fuzzy translations, 41 untranslated messages.
[  3%] Built target locale_ru
Scanning dependencies of target locale_sk
[  5%] Building sk locale
724 translated messages, 3 fuzzy translations, 1250 untranslated messages.
[  5%] Built target locale_sk
Scanning dependencies of target locale_sq
[  5%] Building sq locale
1824 translated messages, 7 fuzzy translations, 10 untranslated messages.
[  5%] Built target locale_sq
Scanning dependencies of target locale_sv
[  5%] Building sv locale
1976 translated messages, 1 untranslated message.
[  5%] Built target locale_sv
Scanning dependencies of target locale_th
[  5%] Building th locale
530 translated messages, 2 fuzzy translations, 1098 untranslated messages.
[  5%] Built target locale_th
Scanning dependencies of target locale_uk
[  5%] Building uk locale
1838 translated messages, 3 fuzzy translations.
[  5%] Built target locale_uk
Scanning dependencies of target locale_zh_CN
[  5%] Building zh_CN locale
1518 translated messages, 74 fuzzy translations, 26 untranslated messages.
[  5%] Built target locale_zh_CN
Scanning dependencies of target rawspeed
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ArwDecoder.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BitPumpJPEG.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BitPumpMSB.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BitPumpMSB16.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BitPumpMSB32.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BitPumpPlain.cpp.o
[  6%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/BlackArea.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ByteStream.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ByteStreamSwap.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Camera.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CameraMetaData.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CameraMetadataException.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CameraSensorInfo.cpp.o
[  8%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CiffEntry.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CiffIFD.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CiffParser.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CiffParserException.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ColorFilterArray.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Common.cpp.o
/Users/jr/dev/dt/darktable/src/external/rawspeed/RawSpeed/Common.cpp:33:20: warning: 'Gestalt' is deprecated: first deprecated in OS X 10.8 [-Wdeprecated-declarations]
  if (0 == ver && (Gestalt(gestaltSystemVersion, &gestalt_version) == noErr)) {
                   ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Gestalt.h:123:1: note: 'Gestalt' has been
      explicitly marked deprecated here
Gestalt(
^
1 warning generated.
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Cr2Decoder.cpp.o
[ 10%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/CrwDecoder.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/DcrDecoder.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/DngDecoder.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/DngDecoderSlices.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/DngOpcodes.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ErfDecoder.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/FileIOException.cpp.o
[ 11%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/FileMap.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/FileReader.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/FileWriter.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/HasselbladDecompressor.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/IOException.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/KdcDecoder.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/LJpegDecompressor.cpp.o
[ 13%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/LJpegPlain.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/MefDecoder.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/MosDecoder.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/MrwDecoder.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/NakedDecoder.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/NefDecoder.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/NikonDecompressor.cpp.o
[ 15%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/OrfDecoder.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/PefDecoder.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/PentaxDecompressor.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/pugixml.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RafDecoder.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawDecoder.cpp.o
[ 16%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawDecoderException.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawImage.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawImageDataFloat.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawImageDataU16.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/RawParser.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/Rw2Decoder.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/SrwDecoder.cpp.o
[ 18%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/StdAfx.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/ThreefrDecoder.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffEntry.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffEntryBE.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffIFD.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffIFDBE.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffParser.cpp.o
[ 20%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffParserException.cpp.o
[ 21%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/TiffParserHeaderless.cpp.o
[ 21%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/X3fDecoder.cpp.o
[ 21%] Building CXX object src/external/rawspeed/CMakeFiles/rawspeed.dir/RawSpeed/X3fParser.cpp.o
Linking CXX static library librawspeed.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: librawspeed.a(StdAfx.cpp.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: librawspeed.a(StdAfx.cpp.o) has no symbols
[ 21%] Built target rawspeed
Scanning dependencies of target lautoc
[ 21%] Building C object src/external/LuaAutoC/CMakeFiles/lautoc.dir/lautoc.c.o
Linking C static library liblautoc.a
[ 21%] Built target lautoc
[ 21%] Generating metadata_gen.h, metadata_gen.c
[ 21%] Generating preferences_gen.h
Scanning dependencies of target lib_darktable
[ 21%] Building C object src/CMakeFiles/lib_darktable.dir/metadata_gen.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/bauhaus/bauhaus.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/cache.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/calculator.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/collection.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/colorlabels.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/colorspaces.c.o
[ 23%] Building C object src/CMakeFiles/lib_darktable.dir/common/curve_tools.c.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/cpuid.c.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/darktable.c.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/database.c.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/dbus.c.o
[ 25%] Building CXX object src/CMakeFiles/lib_darktable.dir/common/exif.cc.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/film.c.o
[ 25%] Building C object src/CMakeFiles/lib_darktable.dir/common/file_location.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/fswatch.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/gaussian.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/grouping.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/history.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/gpx.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/image.c.o
[ 26%] Building C object src/CMakeFiles/lib_darktable.dir/common/image_cache.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/image_compression.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_jpeg.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_png.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_module.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_pfm.c.o
[ 28%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_rgbe.c.o
[ 30%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_tiff.c.o
[ 30%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_gm.c.o
[ 30%] Building CXX object src/CMakeFiles/lib_darktable.dir/common/imageio_rawspeed.cc.o
[ 30%] Building C object src/CMakeFiles/lib_darktable.dir/common/import_session.c.o
[ 30%] Building C object src/CMakeFiles/lib_darktable.dir/common/interpolation.c.o
[ 30%] Building C object src/CMakeFiles/lib_darktable.dir/common/metadata.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/mipmap_cache.c.o
/Users/jr/dev/dt/darktable/src/common/mipmap_cache.c: In function 'dt_mipmap_cache_deallocate_dynamic':
/Users/jr/dev/dt/darktable/src/common/mipmap_cache.c:342:17: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'int64_t' [-Wformat=]
                 fprintf(stderr, "Aborting image write as only %ld MB free to write %s\n", free_mb, filename);
                 ^
/Users/jr/dev/dt/darktable/src/common/mipmap_cache.c:342:17: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'int64_t' [-Wformat=]
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/noiseprofiles.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/pdf.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/styles.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/selection.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/tags.c.o
[ 31%] Building C object src/CMakeFiles/lib_darktable.dir/common/utility.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/variables.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/pwstorage/backend_kwallet.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/pwstorage/pwstorage.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/opencl.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/dynload.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/dlopencl.c.o
[ 33%] Building C object src/CMakeFiles/lib_darktable.dir/common/ratings.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/common/histogram.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/control.c.o
/Users/jr/dev/dt/darktable/src/control/control.c: In function 'dt_ctl_set_display_profile':
/Users/jr/dev/dt/darktable/src/control/control.c:225:3: warning: 'CMProfileRef' is deprecated [-Wdeprecated-declarations]
   CMProfileRef prof = NULL;
   ^
/Users/jr/dev/dt/darktable/src/control/control.c:227:5: warning: 'CMGetProfileByAVID' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/ColorSyncDeprecated.h:2432) [-Wdeprecated-declarations]
     CMGetProfileByAVID(ids[monitor], &prof);
     ^
/Users/jr/dev/dt/darktable/src/control/control.c:231:5: warning: 'CMProfileCopyICCData' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/ColorSyncDeprecated.h:2016) [-Wdeprecated-declarations]
     data = CMProfileCopyICCData(NULL, prof);
     ^
/Users/jr/dev/dt/darktable/src/control/control.c:232:5: warning: 'CMCloseProfile' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/QD.framework/Headers/ColorSyncDeprecated.h:1972) [-Wdeprecated-declarations]
     CMCloseProfile(prof);
     ^
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/crawler.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs/control_jobs.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs/develop_jobs.c.o
[ 35%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs/film_jobs.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs/image_jobs.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/control/progress.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/control/signal.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/develop/develop.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/develop/imageop.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/develop/lightroom.c.o
[ 36%] Building C object src/CMakeFiles/lib_darktable.dir/develop/pixelpipe.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/develop/blend.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/develop/blend_gui.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/develop/tiling.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/develop/masks/masks.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/button.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/drawingarea.c.o
[ 38%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/expander.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/gradientslider.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/icon.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/paint.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/resetlabel.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/sidepanel.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/dtgtk/togglebutton.c.o
[ 40%] Building C object src/CMakeFiles/lib_darktable.dir/gui/accelerators.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/gtkentry.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/guides.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/gtk.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/hist_dialog.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/preferences.c.o
[ 41%] Building C object src/CMakeFiles/lib_darktable.dir/gui/presets.c.o
[ 43%] Building C object src/CMakeFiles/lib_darktable.dir/gui/styles_dialog.c.o
[ 43%] Building C object src/CMakeFiles/lib_darktable.dir/libs/lib.c.o
[ 43%] Building C object src/CMakeFiles/lib_darktable.dir/views/view.c.o
[ 43%] Building C object src/CMakeFiles/lib_darktable.dir/views/undo.c.o
[ 43%] Building CXX object src/CMakeFiles/lib_darktable.dir/osx/osx.mm.o
[ 43%] Building C object src/CMakeFiles/lib_darktable.dir/common/http_server.c.o
[ 43%] Building CXX object src/CMakeFiles/lib_darktable.dir/common/imageio_exr.cc.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/common/imageio_j2k.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/common/pwstorage/backend_libsecret.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/common/camera_control.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/control/jobs/camera_jobs.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/gui/camera_import_dialog.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/lua/call.c.o
[ 45%] Building C object src/CMakeFiles/lib_darktable.dir/lua/configuration.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/database.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/events.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/film.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/format.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/glist.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/gui.c.o
[ 46%] Building C object src/CMakeFiles/lib_darktable.dir/lua/image.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/init.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/lib.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/lua.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/lualib.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/luastorage.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/modules.c.o
[ 48%] Building C object src/CMakeFiles/lib_darktable.dir/lua/preferences.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/print.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/storage.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/styles.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/tags.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/types.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/view.c.o
[ 50%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/widget.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/box.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/button.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/check_button.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/combobox.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/container.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/entry.c.o
[ 51%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/file_chooser.c.o
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/label.c.o
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/separator.c.o
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/slider.c.o
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/lua/widget/stack.c.o
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/common/cups_print.c.o
/Users/jr/dev/dt/darktable/src/common/cups_print.c: In function 'dt_get_printer_info':
/Users/jr/dev/dt/darktable/src/common/cups_print.c:50:5: warning: 'cupsGetPPD' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/cups.h:361): Use cupsCopyDestInfo instead. [-Wdeprecated-declarations]
     const char *PPDFile = cupsGetPPD (printer_name);
     ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:53:5: warning: 'ppdOpenFile' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:392): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
     ppd_file_t *ppd = ppdOpenFile(PPDFile);
     ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:57:7: warning: 'ppdMarkDefaults' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:387): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
       ppdMarkDefaults(ppd);
       ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:58:7: warning: 'cupsMarkOptions' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:365): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
       cupsMarkOptions(ppd, dest->num_options, dest->options);
       ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:62:7: warning: 'ppdFindAttr' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:402): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
       ppd_attr_t *attr = ppdFindAttr(ppd, "HWMargins", NULL);
       ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:78:7: warning: 'ppdFindAttr' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:402): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
       attr = ppdFindAttr(ppd, "DefaultResolution", NULL);
       ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:95:7: warning: 'ppdClose' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:367): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
       ppdClose(ppd);
       ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c: In function 'dt_get_papers':
/Users/jr/dev/dt/darktable/src/common/cups_print.c:243:3: warning: 'cupsGetPPD' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/cups.h:361): Use cupsCopyDestInfo instead. [-Wdeprecated-declarations]
   const char *PPDFile = cupsGetPPD(printer_name);
   ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:244:3: warning: 'ppdOpenFile' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:392): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
   ppd_file_t *ppd = ppdOpenFile(PPDFile);
   ^
/Users/jr/dev/dt/darktable/src/common/cups_print.c:264:5: warning: 'ppdClose' is deprecated (declared at /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/cups/ppd.h:367): Use cupsCopyDestInfo and friends instead. [-Wdeprecated-declarations]
     ppdClose(ppd);
     ^
[ 53%] Building C object src/CMakeFiles/lib_darktable.dir/common/printprof.c.o
Linking C shared library libdarktable.dylib
[ 53%] Built target lib_darktable
Scanning dependencies of target darktable
[ 53%] Building C object src/CMakeFiles/darktable.dir/main.c.o
Linking C executable darktable
[ 53%] Built target darktable
Scanning dependencies of target metadata_dummy
[ 53%] Building C object src/CMakeFiles/metadata_dummy.dir/metadata_gen.c.o
Linking C static library libmetadata_dummy.a
[ 55%] Built target metadata_dummy
Scanning dependencies of target darkroom
[ 55%] Building C object src/views/CMakeFiles/darkroom.dir/darkroom.c.o
Linking C shared module libdarkroom.so
[ 55%] Built target darkroom
Scanning dependencies of target lighttable
[ 55%] Building C object src/views/CMakeFiles/lighttable.dir/lighttable.c.o
Linking C shared module liblighttable.so
[ 55%] Built target lighttable
Scanning dependencies of target print
[ 55%] Building C object src/views/CMakeFiles/print.dir/print.c.o
Linking C shared module libprint.so
[ 55%] Built target print
Scanning dependencies of target slideshow
[ 55%] Building C object src/views/CMakeFiles/slideshow.dir/slideshow.c.o
Linking C shared module libslideshow.so
[ 55%] Built target slideshow
Scanning dependencies of target tethering
[ 55%] Building C object src/views/CMakeFiles/tethering.dir/tethering.c.o
Linking C shared module libtethering.so
[ 55%] Built target tethering
Scanning dependencies of target backgroundjobs
[ 55%] Building C object src/libs/CMakeFiles/backgroundjobs.dir/backgroundjobs.c.o
Linking C shared module libbackgroundjobs.so
[ 55%] Built target backgroundjobs
Scanning dependencies of target camera
[ 55%] Building C object src/libs/CMakeFiles/camera.dir/camera.c.o
Linking C shared module libcamera.so
[ 55%] Built target camera
Scanning dependencies of target collect
[ 55%] Building C object src/libs/CMakeFiles/collect.dir/collect.c.o
Linking C shared module libcollect.so
[ 55%] Built target collect
Scanning dependencies of target colorlabels
[ 55%] Building C object src/libs/CMakeFiles/colorlabels.dir/tools/colorlabels.c.o
Linking C shared module libcolorlabels.so
[ 55%] Built target colorlabels
Scanning dependencies of target colorpicker
[ 55%] Building C object src/libs/CMakeFiles/colorpicker.dir/colorpicker.c.o
Linking C shared module libcolorpicker.so
[ 55%] Built target colorpicker
Scanning dependencies of target copy_history
[ 56%] Building C object src/libs/CMakeFiles/copy_history.dir/copy_history.c.o
Linking C shared module libcopy_history.so
[ 56%] Built target copy_history
Scanning dependencies of target darktable_label
[ 56%] Building C object src/libs/CMakeFiles/darktable_label.dir/tools/darktable.c.o
Linking C shared module libdarktable_label.so
[ 56%] Built target darktable_label
Scanning dependencies of target export
[ 56%] Building C object src/libs/CMakeFiles/export.dir/export.c.o
Linking C shared module libexport.so
[ 56%] Built target export
Scanning dependencies of target filmstrip
[ 56%] Building C object src/libs/CMakeFiles/filmstrip.dir/tools/filmstrip.c.o
Linking C shared module libfilmstrip.so
[ 56%] Built target filmstrip
Scanning dependencies of target filter
[ 58%] Building C object src/libs/CMakeFiles/filter.dir/tools/filter.c.o
Linking C shared module libfilter.so
[ 58%] Built target filter
Scanning dependencies of target global_toolbox
[ 58%] Building C object src/libs/CMakeFiles/global_toolbox.dir/tools/global_toolbox.c.o
Linking C shared module libglobal_toolbox.so
[ 58%] Built target global_toolbox
Scanning dependencies of target hinter
[ 58%] Building C object src/libs/CMakeFiles/hinter.dir/tools/hinter.c.o
Linking C shared module libhinter.so
[ 58%] Built target hinter
Scanning dependencies of target histogram
[ 58%] Building C object src/libs/CMakeFiles/histogram.dir/histogram.c.o
Linking C shared module libhistogram.so
[ 58%] Built target histogram
Scanning dependencies of target history
[ 58%] Building C object src/libs/CMakeFiles/history.dir/history.c.o
Linking C shared module libhistory.so
[ 58%] Built target history
Scanning dependencies of target image
[ 58%] Building C object src/libs/CMakeFiles/image.dir/image.c.o
Linking C shared module libimage.so
[ 58%] Built target image
Scanning dependencies of target import
[ 60%] Building C object src/libs/CMakeFiles/import.dir/import.c.o
Linking C shared module libimport.so
[ 60%] Built target import
Scanning dependencies of target lighttable_mode
[ 61%] Building C object src/libs/CMakeFiles/lighttable_mode.dir/tools/lighttable.c.o
Linking C shared module liblighttable_mode.so
[ 61%] Built target lighttable_mode
Scanning dependencies of target live_view
[ 61%] Building C object src/libs/CMakeFiles/live_view.dir/live_view.c.o
Linking C shared module liblive_view.so
[ 61%] Built target live_view
Scanning dependencies of target masks
[ 61%] Building C object src/libs/CMakeFiles/masks.dir/masks.c.o
Linking C shared module libmasks.so
[ 61%] Built target masks
Scanning dependencies of target metadata
[ 61%] Building C object src/libs/CMakeFiles/metadata.dir/metadata.c.o
Linking C shared module libmetadata.so
[ 61%] Built target metadata
Scanning dependencies of target metadata_view
[ 61%] Building C object src/libs/CMakeFiles/metadata_view.dir/metadata_view.c.o
Linking C shared module libmetadata_view.so
[ 61%] Built target metadata_view
Scanning dependencies of target module_toolbox
[ 61%] Building C object src/libs/CMakeFiles/module_toolbox.dir/tools/module_toolbox.c.o
Linking C shared module libmodule_toolbox.so
[ 61%] Built target module_toolbox
Scanning dependencies of target modulegroups
[ 61%] Building C object src/libs/CMakeFiles/modulegroups.dir/modulegroups.c.o
Linking C shared module libmodulegroups.so
[ 61%] Built target modulegroups
Scanning dependencies of target modulelist
[ 61%] Building C object src/libs/CMakeFiles/modulelist.dir/modulelist.c.o
Linking C shared module libmodulelist.so
[ 61%] Built target modulelist
Scanning dependencies of target navigation
[ 61%] Building C object src/libs/CMakeFiles/navigation.dir/navigation.c.o
Linking C shared module libnavigation.so
[ 61%] Built target navigation
Scanning dependencies of target print_settings
[ 61%] Building C object src/libs/CMakeFiles/print_settings.dir/print_settings.c.o
Linking C shared module libprint_settings.so
[ 61%] Built target print_settings
Scanning dependencies of target ratings
[ 61%] Building C object src/libs/CMakeFiles/ratings.dir/tools/ratings.c.o
Linking C shared module libratings.so
[ 61%] Built target ratings
Scanning dependencies of target recentcollect
[ 61%] Building C object src/libs/CMakeFiles/recentcollect.dir/recentcollect.c.o
Linking C shared module librecentcollect.so
[ 61%] Built target recentcollect
Scanning dependencies of target select
[ 61%] Building C object src/libs/CMakeFiles/select.dir/select.c.o
Linking C shared module libselect.so
[ 61%] Built target select
Scanning dependencies of target session
[ 61%] Building C object src/libs/CMakeFiles/session.dir/session.c.o
Linking C shared module libsession.so
[ 61%] Built target session
Scanning dependencies of target snapshots
[ 61%] Building C object src/libs/CMakeFiles/snapshots.dir/snapshots.c.o
Linking C shared module libsnapshots.so
[ 61%] Built target snapshots
Scanning dependencies of target styles
[ 61%] Building C object src/libs/CMakeFiles/styles.dir/styles.c.o
Linking C shared module libstyles.so
[ 61%] Built target styles
Scanning dependencies of target tagging
[ 61%] Building C object src/libs/CMakeFiles/tagging.dir/tagging.c.o
Linking C shared module libtagging.so
[ 61%] Built target tagging
Scanning dependencies of target view_toolbox
[ 61%] Building C object src/libs/CMakeFiles/view_toolbox.dir/tools/view_toolbox.c.o
Linking C shared module libview_toolbox.so
[ 61%] Built target view_toolbox
Scanning dependencies of target viewswitcher
[ 61%] Building C object src/libs/CMakeFiles/viewswitcher.dir/tools/viewswitcher.c.o
Linking C shared module libviewswitcher.so
[ 61%] Built target viewswitcher
[ 61%] Generating introspection_atrous.c
Scanning dependencies of target atrous
[ 61%] Building C object src/iop/CMakeFiles/atrous.dir/introspection_atrous.c.o
Linking C shared module libatrous.so
[ 61%] Built target atrous
[ 61%] Generating introspection_basecurve.c
Scanning dependencies of target basecurve
[ 61%] Building C object src/iop/CMakeFiles/basecurve.dir/introspection_basecurve.c.o
Linking C shared module libbasecurve.so
[ 61%] Built target basecurve
[ 61%] Generating introspection_bilat.c
Scanning dependencies of target bilat
[ 63%] Building C object src/iop/CMakeFiles/bilat.dir/introspection_bilat.c.o
Linking C shared module libbilat.so
[ 63%] Built target bilat
[ 63%] Generating introspection_bilateral.cc
Scanning dependencies of target bilateral
[ 63%] Building CXX object src/iop/CMakeFiles/bilateral.dir/introspection_bilateral.cc.o
Linking CXX shared module libbilateral.so
[ 63%] Built target bilateral
[ 63%] Generating introspection_bloom.c
Scanning dependencies of target bloom
[ 63%] Building C object src/iop/CMakeFiles/bloom.dir/introspection_bloom.c.o
Linking C shared module libbloom.so
[ 63%] Built target bloom
[ 63%] Generating introspection_borders.c
Scanning dependencies of target borders
[ 63%] Building C object src/iop/CMakeFiles/borders.dir/introspection_borders.c.o
Linking C shared module libborders.so
[ 63%] Built target borders
[ 65%] Generating introspection_cacorrect.c
Scanning dependencies of target cacorrect
[ 65%] Building C object src/iop/CMakeFiles/cacorrect.dir/introspection_cacorrect.c.o
Linking C shared module libcacorrect.so
[ 65%] Built target cacorrect
[ 65%] Generating introspection_channelmixer.c
Scanning dependencies of target channelmixer
[ 65%] Building C object src/iop/CMakeFiles/channelmixer.dir/introspection_channelmixer.c.o
Linking C shared module libchannelmixer.so
[ 65%] Built target channelmixer
[ 65%] Generating introspection_clahe.c
no introspection requested for clahe.c.
Scanning dependencies of target clahe
[ 65%] Building C object src/iop/CMakeFiles/clahe.dir/introspection_clahe.c.o
Linking C shared module libclahe.so
[ 65%] Built target clahe
[ 66%] Generating introspection_clipping.c
Scanning dependencies of target clipping
[ 66%] Building C object src/iop/CMakeFiles/clipping.dir/introspection_clipping.c.o
Linking C shared module libclipping.so
[ 66%] Built target clipping
[ 66%] Generating introspection_colisa.c
Scanning dependencies of target colisa
[ 66%] Building C object src/iop/CMakeFiles/colisa.dir/introspection_colisa.c.o
Linking C shared module libcolisa.so
[ 66%] Built target colisa
[ 66%] Generating introspection_colorbalance.c
Scanning dependencies of target colorbalance
[ 66%] Building C object src/iop/CMakeFiles/colorbalance.dir/introspection_colorbalance.c.o
Linking C shared module libcolorbalance.so
[ 66%] Built target colorbalance
[ 68%] Generating introspection_colorcontrast.c
Scanning dependencies of target colorcontrast
[ 68%] Building C object src/iop/CMakeFiles/colorcontrast.dir/introspection_colorcontrast.c.o
Linking C shared module libcolorcontrast.so
[ 68%] Built target colorcontrast
[ 68%] Generating introspection_colorcorrection.c
Scanning dependencies of target colorcorrection
[ 68%] Building C object src/iop/CMakeFiles/colorcorrection.dir/introspection_colorcorrection.c.o
Linking C shared module libcolorcorrection.so
[ 68%] Built target colorcorrection
[ 68%] Generating introspection_colorin.c
Scanning dependencies of target colorin
[ 68%] Building C object src/iop/CMakeFiles/colorin.dir/introspection_colorin.c.o
Linking C shared module libcolorin.so
[ 68%] Built target colorin
[ 68%] Generating introspection_colorize.c
Scanning dependencies of target colorize
[ 70%] Building C object src/iop/CMakeFiles/colorize.dir/introspection_colorize.c.o
Linking C shared module libcolorize.so
[ 70%] Built target colorize
[ 70%] Generating introspection_colormapping.c
Scanning dependencies of target colormapping
[ 70%] Building C object src/iop/CMakeFiles/colormapping.dir/introspection_colormapping.c.o
Linking C shared module libcolormapping.so
[ 70%] Built target colormapping
[ 70%] Generating introspection_colorout.c
Scanning dependencies of target colorout
[ 70%] Building C object src/iop/CMakeFiles/colorout.dir/introspection_colorout.c.o
Linking C shared module libcolorout.so
[ 70%] Built target colorout
[ 71%] Generating introspection_colorreconstruction.c
Scanning dependencies of target colorreconstruct
[ 71%] Building C object src/iop/CMakeFiles/colorreconstruct.dir/introspection_colorreconstruction.c.o
Linking C shared module libcolorreconstruct.so
[ 71%] Built target colorreconstruct
[ 71%] Generating introspection_colortransfer.c
Scanning dependencies of target colortransfer
[ 71%] Building C object src/iop/CMakeFiles/colortransfer.dir/introspection_colortransfer.c.o
Linking C shared module libcolortransfer.so
[ 71%] Built target colortransfer
[ 71%] Generating introspection_colorzones.c
Scanning dependencies of target colorzones
[ 71%] Building C object src/iop/CMakeFiles/colorzones.dir/introspection_colorzones.c.o
Linking C shared module libcolorzones.so
[ 71%] Built target colorzones
[ 71%] Generating introspection_defringe.c
Scanning dependencies of target defringe
[ 71%] Building C object src/iop/CMakeFiles/defringe.dir/introspection_defringe.c.o
Linking C shared module libdefringe.so
[ 71%] Built target defringe
[ 71%] Generating introspection_demosaic.c
Scanning dependencies of target demosaic
[ 71%] Building C object src/iop/CMakeFiles/demosaic.dir/introspection_demosaic.c.o
Linking C shared module libdemosaic.so
[ 71%] Built target demosaic
[ 73%] Generating introspection_denoiseprofile.c
Scanning dependencies of target denoiseprofile
[ 73%] Building C object src/iop/CMakeFiles/denoiseprofile.dir/introspection_denoiseprofile.c.o
Linking C shared module libdenoiseprofile.so
[ 73%] Built target denoiseprofile
[ 73%] Generating introspection_dither.c
Scanning dependencies of target dither
[ 73%] Building C object src/iop/CMakeFiles/dither.dir/introspection_dither.c.o
Linking C shared module libdither.so
[ 73%] Built target dither
[ 73%] Generating introspection_equalizer.c
Scanning dependencies of target equalizer
[ 75%] Building C object src/iop/CMakeFiles/equalizer.dir/introspection_equalizer.c.o
Linking C shared module libequalizer.so
[ 75%] Built target equalizer
[ 75%] Generating introspection_exposure.c
Scanning dependencies of target exposure
[ 75%] Building C object src/iop/CMakeFiles/exposure.dir/introspection_exposure.c.o
Linking C shared module libexposure.so
[ 75%] Built target exposure
[ 75%] Generating introspection_finalscale.c
Scanning dependencies of target finalscale
[ 75%] Building C object src/iop/CMakeFiles/finalscale.dir/introspection_finalscale.c.o
Linking C shared module libfinalscale.so
[ 75%] Built target finalscale
[ 75%] Generating introspection_flip.c
Scanning dependencies of target flip
[ 75%] Building C object src/iop/CMakeFiles/flip.dir/introspection_flip.c.o
Linking C shared module libflip.so
[ 75%] Built target flip
[ 76%] Generating introspection_gamma.c
Scanning dependencies of target gamma
[ 76%] Building C object src/iop/CMakeFiles/gamma.dir/introspection_gamma.c.o
Linking C shared module libgamma.so
[ 76%] Built target gamma
[ 76%] Generating introspection_globaltonemap.c
Scanning dependencies of target globaltonemap
[ 76%] Building C object src/iop/CMakeFiles/globaltonemap.dir/introspection_globaltonemap.c.o
Linking C shared module libglobaltonemap.so
[ 76%] Built target globaltonemap
[ 76%] Generating introspection_graduatednd.c
Scanning dependencies of target graduatednd
[ 78%] Building C object src/iop/CMakeFiles/graduatednd.dir/introspection_graduatednd.c.o
Linking C shared module libgraduatednd.so
[ 78%] Built target graduatednd
[ 78%] Generating introspection_grain.c
Scanning dependencies of target grain
[ 78%] Building C object src/iop/CMakeFiles/grain.dir/introspection_grain.c.o
Linking C shared module libgrain.so
[ 78%] Built target grain
[ 78%] Generating introspection_highlights.c
Scanning dependencies of target highlights
[ 78%] Building C object src/iop/CMakeFiles/highlights.dir/introspection_highlights.c.o
Linking C shared module libhighlights.so
[ 78%] Built target highlights
[ 78%] Generating introspection_highpass.c
Scanning dependencies of target highpass
[ 80%] Building C object src/iop/CMakeFiles/highpass.dir/introspection_highpass.c.o
Linking C shared module libhighpass.so
[ 80%] Built target highpass
[ 80%] Generating introspection_hotpixels.c
Scanning dependencies of target hotpixels
[ 80%] Building C object src/iop/CMakeFiles/hotpixels.dir/introspection_hotpixels.c.o
Linking C shared module libhotpixels.so
[ 80%] Built target hotpixels
[ 80%] Generating introspection_invert.c
Scanning dependencies of target invert
[ 80%] Building C object src/iop/CMakeFiles/invert.dir/introspection_invert.c.o
Linking C shared module libinvert.so
[ 80%] Built target invert
[ 81%] Generating introspection_lens.c
Scanning dependencies of target lens
[ 81%] Building C object src/iop/CMakeFiles/lens.dir/introspection_lens.c.o
Linking C shared module liblens.so
[ 81%] Built target lens
[ 81%] Generating introspection_levels.c
Scanning dependencies of target levels
[ 81%] Building C object src/iop/CMakeFiles/levels.dir/introspection_levels.c.o
Linking C shared module liblevels.so
[ 81%] Built target levels
[ 81%] Generating introspection_lowlight.c
Scanning dependencies of target lowlight
[ 83%] Building C object src/iop/CMakeFiles/lowlight.dir/introspection_lowlight.c.o
Linking C shared module liblowlight.so
[ 83%] Built target lowlight
[ 83%] Generating introspection_lowpass.c
Scanning dependencies of target lowpass
[ 83%] Building C object src/iop/CMakeFiles/lowpass.dir/introspection_lowpass.c.o
Linking C shared module liblowpass.so
[ 83%] Built target lowpass
[ 83%] Generating introspection_monochrome.c
Scanning dependencies of target monochrome
[ 85%] Building C object src/iop/CMakeFiles/monochrome.dir/introspection_monochrome.c.o
Linking C shared module libmonochrome.so
[ 85%] Built target monochrome
[ 85%] Generating introspection_nlmeans.c
Scanning dependencies of target nlmeans
[ 85%] Building C object src/iop/CMakeFiles/nlmeans.dir/introspection_nlmeans.c.o
Linking C shared module libnlmeans.so
[ 85%] Built target nlmeans
[ 85%] Generating introspection_overexposed.c
no introspection requested for overexposed.c.
Scanning dependencies of target overexposed
[ 85%] Building C object src/iop/CMakeFiles/overexposed.dir/introspection_overexposed.c.o
Linking C shared module liboverexposed.so
[ 85%] Built target overexposed
[ 85%] Generating introspection_profile_gamma.c
Scanning dependencies of target profile_gamma
[ 86%] Building C object src/iop/CMakeFiles/profile_gamma.dir/introspection_profile_gamma.c.o
Linking C shared module libprofile_gamma.so
[ 86%] Built target profile_gamma
[ 86%] Generating introspection_rawdenoise.c
Scanning dependencies of target rawdenoise
[ 86%] Building C object src/iop/CMakeFiles/rawdenoise.dir/introspection_rawdenoise.c.o
Linking C shared module librawdenoise.so
[ 86%] Built target rawdenoise
[ 86%] Generating introspection_rawprepare.c
Scanning dependencies of target rawprepare
[ 86%] Building C object src/iop/CMakeFiles/rawprepare.dir/introspection_rawprepare.c.o
Linking C shared module librawprepare.so
[ 86%] Built target rawprepare
[ 86%] Generating introspection_relight.c
Scanning dependencies of target relight
[ 86%] Building C object src/iop/CMakeFiles/relight.dir/introspection_relight.c.o
Linking C shared module librelight.so
[ 86%] Built target relight
[ 86%] Generating introspection_rotatepixels.c
Scanning dependencies of target rotatepixels
[ 88%] Building C object src/iop/CMakeFiles/rotatepixels.dir/introspection_rotatepixels.c.o
Linking C shared module librotatepixels.so
[ 88%] Built target rotatepixels
[ 88%] Generating introspection_scalepixels.c
Scanning dependencies of target scalepixels
[ 88%] Building C object src/iop/CMakeFiles/scalepixels.dir/introspection_scalepixels.c.o
Linking C shared module libscalepixels.so
[ 88%] Built target scalepixels
[ 88%] Generating introspection_shadhi.c
Scanning dependencies of target shadhi
[ 88%] Building C object src/iop/CMakeFiles/shadhi.dir/introspection_shadhi.c.o
Linking C shared module libshadhi.so
[ 88%] Built target shadhi
[ 90%] Generating introspection_sharpen.c
Scanning dependencies of target sharpen
[ 90%] Building C object src/iop/CMakeFiles/sharpen.dir/introspection_sharpen.c.o
Linking C shared module libsharpen.so
[ 90%] Built target sharpen
[ 90%] Generating introspection_soften.c
Scanning dependencies of target soften
[ 90%] Building C object src/iop/CMakeFiles/soften.dir/introspection_soften.c.o
Linking C shared module libsoften.so
[ 90%] Built target soften
[ 90%] Generating introspection_splittoning.c
Scanning dependencies of target splittoning
[ 91%] Building C object src/iop/CMakeFiles/splittoning.dir/introspection_splittoning.c.o
Linking C shared module libsplittoning.so
[ 91%] Built target splittoning
[ 91%] Generating introspection_spots.c
Scanning dependencies of target spots
[ 91%] Building C object src/iop/CMakeFiles/spots.dir/introspection_spots.c.o
Linking C shared module libspots.so
[ 91%] Built target spots
[ 93%] Generating introspection_temperature.c
Scanning dependencies of target temperature
[ 93%] Building C object src/iop/CMakeFiles/temperature.dir/introspection_temperature.c.o
Linking C shared module libtemperature.so
[ 93%] Built target temperature
[ 93%] Generating introspection_tonecurve.c
Scanning dependencies of target tonecurve
[ 93%] Building C object src/iop/CMakeFiles/tonecurve.dir/introspection_tonecurve.c.o
Linking C shared module libtonecurve.so
[ 93%] Built target tonecurve
[ 93%] Generating introspection_tonemap.cc
Scanning dependencies of target tonemap
[ 95%] Building CXX object src/iop/CMakeFiles/tonemap.dir/introspection_tonemap.cc.o
Linking CXX shared module libtonemap.so
[ 95%] Built target tonemap
[ 95%] Generating introspection_velvia.c
Scanning dependencies of target velvia
[ 95%] Building C object src/iop/CMakeFiles/velvia.dir/introspection_velvia.c.o
Linking C shared module libvelvia.so
[ 95%] Built target velvia
[ 95%] Generating introspection_vibrance.c
Scanning dependencies of target vibrance
[ 95%] Building C object src/iop/CMakeFiles/vibrance.dir/introspection_vibrance.c.o
Linking C shared module libvibrance.so
[ 95%] Built target vibrance
[ 96%] Generating introspection_vignette.c
Scanning dependencies of target vignette
[ 96%] Building C object src/iop/CMakeFiles/vignette.dir/introspection_vignette.c.o
Linking C shared module libvignette.so
[ 96%] Built target vignette
[ 96%] Generating introspection_watermark.c
Scanning dependencies of target watermark
[ 96%] Building C object src/iop/CMakeFiles/watermark.dir/introspection_watermark.c.o
Linking C shared module libwatermark.so
[ 96%] Built target watermark
[ 96%] Generating introspection_zonesystem.c
Scanning dependencies of target zonesystem
[ 98%] Building C object src/iop/CMakeFiles/zonesystem.dir/introspection_zonesystem.c.o
Linking C shared module libzonesystem.so
[ 98%] Built target zonesystem
Scanning dependencies of target copy
[ 98%] Building C object src/imageio/format/CMakeFiles/copy.dir/copy.c.o
Linking C shared module libcopy.so
[ 98%] Built target copy
Scanning dependencies of target exr
[ 98%] Building CXX object src/imageio/format/CMakeFiles/exr.dir/exr.cc.o
Linking CXX shared module libexr.so
[ 98%] Built target exr
Scanning dependencies of target j2k
[ 98%] Building C object src/imageio/format/CMakeFiles/j2k.dir/j2k.c.o
Linking C shared module libj2k.so
[ 98%] Built target j2k
Scanning dependencies of target jpeg
[ 98%] Building C object src/imageio/format/CMakeFiles/jpeg.dir/jpeg.c.o
Linking C shared module libjpeg.so
[ 98%] Built target jpeg
Scanning dependencies of target pdf
[ 98%] Building C object src/imageio/format/CMakeFiles/pdf.dir/pdf.c.o
Linking C shared module libpdf.so
[ 98%] Built target pdf
Scanning dependencies of target pfm
[100%] Building C object src/imageio/format/CMakeFiles/pfm.dir/pfm.c.o
Linking C shared module libpfm.so
[100%] Built target pfm
Scanning dependencies of target png
[100%] Building C object src/imageio/format/CMakeFiles/png.dir/png.c.o
Linking C shared module libpng.so
[100%] Built target png
Scanning dependencies of target ppm
[100%] Building C object src/imageio/format/CMakeFiles/ppm.dir/ppm.c.o
Linking C shared module libppm.so
[100%] Built target ppm
Scanning dependencies of target tiff
[100%] Building C object src/imageio/format/CMakeFiles/tiff.dir/tiff.c.o
Linking C shared module libtiff.so
[100%] Built target tiff
Scanning dependencies of target webp
[100%] Building C object src/imageio/format/CMakeFiles/webp.dir/webp.c.o
Linking C shared module libwebp.so
[100%] Built target webp
Scanning dependencies of target disk
[100%] Building C object src/imageio/storage/CMakeFiles/disk.dir/disk.c.o
Linking C shared module libdisk.so
[100%] Built target disk
Scanning dependencies of target email
[100%] Building C object src/imageio/storage/CMakeFiles/email.dir/email.c.o
Linking C shared module libemail.so
[100%] Built target email
Scanning dependencies of target facebook
[100%] Building C object src/imageio/storage/CMakeFiles/facebook.dir/facebook.c.o
Linking C shared module libfacebook.so
[100%] Built target facebook
Scanning dependencies of target flickr
[100%] Building C object src/imageio/storage/CMakeFiles/flickr.dir/flickr.c.o
Linking C shared module libflickr.so
[100%] Built target flickr
Scanning dependencies of target gallery
[100%] Building C object src/imageio/storage/CMakeFiles/gallery.dir/gallery.c.o
Linking C shared module libgallery.so
[100%] Built target gallery
Scanning dependencies of target latex
[100%] Building C object src/imageio/storage/CMakeFiles/latex.dir/latex.c.o
Linking C shared module liblatex.so
[100%] Built target latex
Scanning dependencies of target picasa
[100%] Building C object src/imageio/storage/CMakeFiles/picasa.dir/picasa.c.o
Linking C shared module libpicasa.so
[100%] Built target picasa
Scanning dependencies of target darktable-cltest
[100%] Building C object src/cltest/CMakeFiles/darktable-cltest.dir/main.c.o
Linking C executable darktable-cltest
[100%] Built target darktable-cltest
Scanning dependencies of target darktable-cli
[100%] Building C object src/cli/CMakeFiles/darktable-cli.dir/main.c.o
Linking C executable darktable-cli
[100%] Built target darktable-cli
Scanning dependencies of target darktable-cmstest
[100%] Building C object src/cmstest/CMakeFiles/darktable-cmstest.dir/main.c.o
Linking C executable darktable-cmstest
[100%] Built target darktable-cmstest
Scanning dependencies of target darktable.desktop
[100%] Generating darktable.desktop
Merging translations into /Users/jr/dev/dt/darktable/build/data/darktable.desktop.
[100%] Built target darktable.desktop
Scanning dependencies of target darktablerc
[100%] Generating darktablerc
[100%] Built target darktablerc
Scanning dependencies of target darktablerc.html
[100%] Generating darktablerc.html
[100%] Built target darktablerc.html
Scanning dependencies of target manpages
[100%] Generating darktable.1
[100%] Generating darktable-cli.1
[100%] Built target manpages
Password:
[  0%] Updating version string
[  0%] Built target generate_version
[  0%] Built target locale_af
[  0%] Built target locale_ca
[  0%] Built target locale_cs
[  0%] Built target locale_da
[  1%] Built target locale_de
[  1%] Built target locale_el
[  1%] Built target locale_es
[  1%] Built target locale_fi
[  1%] Built target locale_fr
[  1%] Built target locale_gl
[  1%] Built target locale_it
[  3%] Built target locale_ja
[  3%] Built target locale_nl
[  3%] Built target locale_pl
[  3%] Built target locale_pt_BR
[  3%] Built target locale_pt_PT
[  3%] Built target locale_ro
[  3%] Built target locale_ru
[  5%] Built target locale_sk
[  5%] Built target locale_sq
[  5%] Built target locale_sv
[  5%] Built target locale_th
[  5%] Built target locale_uk
[  5%] Built target locale_zh_CN
[ 21%] Built target rawspeed
[ 21%] Built target lautoc
[ 53%] Built target lib_darktable
[ 53%] Built target darktable
[ 55%] Built target metadata_dummy
[ 55%] Built target darkroom
[ 55%] Built target lighttable
[ 55%] Built target print
[ 55%] Built target slideshow
[ 55%] Built target tethering
[ 55%] Built target backgroundjobs
[ 55%] Built target camera
[ 55%] Built target collect
[ 55%] Built target colorlabels
[ 55%] Built target colorpicker
[ 56%] Built target copy_history
[ 56%] Built target darktable_label
[ 56%] Built target export
[ 56%] Built target filmstrip
[ 58%] Built target filter
[ 58%] Built target global_toolbox
[ 58%] Built target hinter
[ 58%] Built target histogram
[ 58%] Built target history
[ 58%] Built target image
[ 60%] Built target import
[ 61%] Built target lighttable_mode
[ 61%] Built target live_view
[ 61%] Built target masks
[ 61%] Built target metadata
[ 61%] Built target metadata_view
[ 61%] Built target module_toolbox
[ 61%] Built target modulegroups
[ 61%] Built target modulelist
[ 61%] Built target navigation
[ 61%] Built target print_settings
[ 61%] Built target ratings
[ 61%] Built target recentcollect
[ 61%] Built target select
[ 61%] Built target session
[ 61%] Built target snapshots
[ 61%] Built target styles
[ 61%] Built target tagging
[ 61%] Built target view_toolbox
[ 61%] Built target viewswitcher
[ 61%] Built target atrous
[ 61%] Built target basecurve
[ 63%] Built target bilat
[ 63%] Built target bilateral
[ 63%] Built target bloom
[ 63%] Built target borders
[ 65%] Built target cacorrect
[ 65%] Built target channelmixer
[ 65%] Built target clahe
[ 66%] Built target clipping
[ 66%] Built target colisa
[ 66%] Built target colorbalance
[ 68%] Built target colorcontrast
[ 68%] Built target colorcorrection
[ 68%] Built target colorin
[ 70%] Built target colorize
[ 70%] Built target colormapping
[ 70%] Built target colorout
[ 71%] Built target colorreconstruct
[ 71%] Built target colortransfer
[ 71%] Built target colorzones
[ 71%] Built target defringe
[ 71%] Built target demosaic
[ 73%] Built target denoiseprofile
[ 73%] Built target dither
[ 75%] Built target equalizer
[ 75%] Built target exposure
[ 75%] Built target finalscale
[ 75%] Built target flip
[ 76%] Built target gamma
[ 76%] Built target globaltonemap
[ 78%] Built target graduatednd
[ 78%] Built target grain
[ 78%] Built target highlights
[ 80%] Built target highpass
[ 80%] Built target hotpixels
[ 80%] Built target invert
[ 81%] Built target lens
[ 81%] Built target levels
[ 83%] Built target lowlight
[ 83%] Built target lowpass
[ 85%] Built target monochrome
[ 85%] Built target nlmeans
[ 85%] Built target overexposed
[ 86%] Built target profile_gamma
[ 86%] Built target rawdenoise
[ 86%] Built target rawprepare
[ 86%] Built target relight
[ 88%] Built target rotatepixels
[ 88%] Built target scalepixels
[ 88%] Built target shadhi
[ 90%] Built target sharpen
[ 90%] Built target soften
[ 91%] Built target splittoning
[ 91%] Built target spots
[ 93%] Built target temperature
[ 93%] Built target tonecurve
[ 95%] Built target tonemap
[ 95%] Built target velvia
[ 95%] Built target vibrance
[ 96%] Built target vignette
[ 96%] Built target watermark
[ 98%] Built target zonesystem
[ 98%] Built target copy
[ 98%] Built target exr
[ 98%] Built target j2k
[ 98%] Built target jpeg
[ 98%] Built target pdf
[100%] Built target pfm
[100%] Built target png
[100%] Built target ppm
[100%] Built target tiff
[100%] Built target webp
[100%] Built target disk
[100%] Built target email
[100%] Built target facebook
[100%] Built target flickr
[100%] Built target gallery
[100%] Built target latex
[100%] Built target picasa
[100%] Built target darktable-cltest
[100%] Built target darktable-cli
[100%] Built target darktable-cmstest
[100%] Built target darktable.desktop
[100%] Built target darktablerc
[100%] Built target darktablerc.html
[100%] Built target manpages
Install the project...
-- Install configuration: "RelWithDebInfo" 
-- Installing: /usr/local/share/locale/af/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/ca/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/cs/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/da/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/de/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/el/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/es/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/fi/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/fr/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/gl/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/it/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/ja/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/nl/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/pl/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/pt_BR/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/pt_PT/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/ro/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/ru/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/sk/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/sq/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/sv/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/th/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/uk/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/share/locale/zh_CN/LC_MESSAGES/darktable.mo
-- Installing: /usr/local/lib/darktable/libdarktable.dylib
-- Installing: /usr/local/bin/darktable
-- Installing: /usr/local/share/darktable/rawspeed/cameras.xml
-- Installing: /usr/local/share/darktable/rawspeed/showcameras.xsl
-- Installing: /usr/local/lib/darktable/views/libdarkroom.so
-- Installing: /usr/local/lib/darktable/views/liblighttable.so
-- Installing: /usr/local/lib/darktable/views/libslideshow.so
-- Installing: /usr/local/lib/darktable/views/libtethering.so
-- Installing: /usr/local/lib/darktable/views/libprint.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libimport.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libexport.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libcopy_history.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libstyles.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libtagging.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libimage.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libselect.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libcollect.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/librecentcollect.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmetadata.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmetadata_view.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libnavigation.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libhistogram.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libhistory.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libsnapshots.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmodulelist.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmodulegroups.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libbackgroundjobs.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libcolorpicker.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmasks.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libsession.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libviewswitcher.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libdarktable_label.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libratings.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libcolorlabels.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libfilter.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/liblighttable_mode.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libview_toolbox.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libmodule_toolbox.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libfilmstrip.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libhinter.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libglobal_toolbox.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libcamera.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/liblive_view.so
-- Installing: /usr/local/lib/darktable/plugins/lighttable/libprint_settings.so
-- Installing: /usr/local/lib/darktable/plugins/librawprepare.so
-- Installing: /usr/local/lib/darktable/plugins/libsoften.so
-- Installing: /usr/local/lib/darktable/plugins/libbloom.so
-- Installing: /usr/local/lib/darktable/plugins/libhighpass.so
-- Installing: /usr/local/lib/darktable/plugins/liblowpass.so
-- Installing: /usr/local/lib/darktable/plugins/libshadhi.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorreconstruct.so
-- Installing: /usr/local/lib/darktable/plugins/libtonemap.so
-- Installing: /usr/local/lib/darktable/plugins/libtonecurve.so
-- Installing: /usr/local/lib/darktable/plugins/libcolisa.so
-- Installing: /usr/local/lib/darktable/plugins/libgamma.so
-- Installing: /usr/local/lib/darktable/plugins/libtemperature.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorcorrection.so
-- Installing: /usr/local/lib/darktable/plugins/libexposure.so
-- Installing: /usr/local/lib/darktable/plugins/libequalizer.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorbalance.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorin.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorout.so
-- Installing: /usr/local/lib/darktable/plugins/libclipping.so
-- Installing: /usr/local/lib/darktable/plugins/libsharpen.so
-- Installing: /usr/local/lib/darktable/plugins/libdither.so
-- Installing: /usr/local/lib/darktable/plugins/libmonochrome.so
-- Installing: /usr/local/lib/darktable/plugins/libbasecurve.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorzones.so
-- Installing: /usr/local/lib/darktable/plugins/libhighlights.so
-- Installing: /usr/local/lib/darktable/plugins/libvelvia.so
-- Installing: /usr/local/lib/darktable/plugins/libvignette.so
-- Installing: /usr/local/lib/darktable/plugins/libsplittoning.so
-- Installing: /usr/local/lib/darktable/plugins/libgrain.so
-- Installing: /usr/local/lib/darktable/plugins/libclahe.so
-- Installing: /usr/local/lib/darktable/plugins/libbilateral.so
-- Installing: /usr/local/lib/darktable/plugins/libprofile_gamma.so
-- Installing: /usr/local/lib/darktable/plugins/libcolortransfer.so
-- Installing: /usr/local/lib/darktable/plugins/libcolormapping.so
-- Installing: /usr/local/lib/darktable/plugins/libchannelmixer.so
-- Installing: /usr/local/lib/darktable/plugins/libgraduatednd.so
-- Installing: /usr/local/lib/darktable/plugins/librelight.so
-- Installing: /usr/local/lib/darktable/plugins/libzonesystem.so
-- Installing: /usr/local/lib/darktable/plugins/libdemosaic.so
-- Installing: /usr/local/lib/darktable/plugins/librotatepixels.so
-- Installing: /usr/local/lib/darktable/plugins/libscalepixels.so
-- Installing: /usr/local/lib/darktable/plugins/libatrous.so
-- Installing: /usr/local/lib/darktable/plugins/libcacorrect.so
-- Installing: /usr/local/lib/darktable/plugins/liboverexposed.so
-- Installing: /usr/local/lib/darktable/plugins/libhotpixels.so
-- Installing: /usr/local/lib/darktable/plugins/liblowlight.so
-- Installing: /usr/local/lib/darktable/plugins/libspots.so
-- Installing: /usr/local/lib/darktable/plugins/librawdenoise.so
-- Installing: /usr/local/lib/darktable/plugins/libborders.so
-- Installing: /usr/local/lib/darktable/plugins/libnlmeans.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorcontrast.so
-- Installing: /usr/local/lib/darktable/plugins/liblevels.so
-- Installing: /usr/local/lib/darktable/plugins/libcolorize.so
-- Installing: /usr/local/lib/darktable/plugins/libinvert.so
-- Installing: /usr/local/lib/darktable/plugins/libvibrance.so
-- Installing: /usr/local/lib/darktable/plugins/libflip.so
-- Installing: /usr/local/lib/darktable/plugins/libfinalscale.so
-- Installing: /usr/local/lib/darktable/plugins/libglobaltonemap.so
-- Installing: /usr/local/lib/darktable/plugins/libbilat.so
-- Installing: /usr/local/lib/darktable/plugins/libdenoiseprofile.so
-- Installing: /usr/local/lib/darktable/plugins/libdefringe.so
-- Installing: /usr/local/lib/darktable/plugins/libwatermark.so
-- Installing: /usr/local/lib/darktable/plugins/liblens.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libcopy.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libjpeg.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libpdf.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libpng.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libppm.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libpfm.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libtiff.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libwebp.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libexr.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/format/libj2k.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libdisk.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libemail.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libgallery.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/liblatex.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libflickr.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libfacebook.so
-- Installing: /usr/local/lib/darktable/plugins/imageio/storage/libpicasa.so
-- Installing: /usr/local/bin/darktable-cltest
-- Installing: /usr/local/bin/darktable-cli
-- Installing: /usr/local/bin/darktable-cmstest
-- Installing: /usr/local/share/darktable/darktable.css
-- Installing: /usr/local/share/darktable/style/bullet.gif
-- Installing: /usr/local/share/darktable/style/close.gif
-- Installing: /usr/local/share/darktable/style/closelabel.gif
-- Installing: /usr/local/share/darktable/style/donate-button.gif
-- Installing: /usr/local/share/darktable/style/download-icon.gif
-- Installing: /usr/local/share/darktable/style/favicon.ico
-- Installing: /usr/local/share/darktable/style/image-1.jpg
-- Installing: /usr/local/share/darktable/style/lightbox.css
-- Installing: /usr/local/share/darktable/style/loading.gif
-- Installing: /usr/local/share/darktable/style/nextlabel.gif
-- Installing: /usr/local/share/darktable/style/prevlabel.gif
-- Installing: /usr/local/share/darktable/style/style.css
-- Installing: /usr/local/share/darktable/style/thumb-1.jpg
-- Installing: /usr/local/share/darktable/js/builder.js
-- Installing: /usr/local/share/darktable/js/effects.js
-- Installing: /usr/local/share/darktable/js/lightbox-web.js
-- Installing: /usr/local/share/darktable/js/lightbox.js
-- Installing: /usr/local/share/darktable/js/prototype.js
-- Installing: /usr/local/share/darktable/js/scriptaculous.js
-- Installing: /usr/local/share/darktable/latex/photobook.cls
-- Up-to-date: /usr/local/share/darktable//lua
-- Up-to-date: /usr/local/share/darktable//lua/darktable
-- Installing: /usr/local/share/darktable//lua/darktable/debug.lua
-- Up-to-date: /usr/local/share/darktable//lua/darktable/external
-- Up-to-date: /usr/local/share/darktable//lua/darktable/external/pygy_require
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/README.md
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/require.lua
-- Up-to-date: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.1-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.2-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.3-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.4-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.4-2.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.4-3.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.4-4.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.4-5.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.5-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.6-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.7-1.rockspec
-- Installing: /usr/local/share/darktable//lua/darktable/external/pygy_require/rockspecs/require-0.1.7-2.rockspec
-- Installing: /usr/local/share/darktable/luarc
-- Installing: /usr/local/./share/applications/darktable.desktop
-- Installing: /usr/local/./share/appdata/darktable.appdata.xml
-- Installing: /usr/local/share/darktable/watermarks/darktable.svg
-- Installing: /usr/local/share/darktable/watermarks/hasselblad.svg
-- Installing: /usr/local/share/darktable/watermarks/promo.svg
-- Installing: /usr/local/share/darktable/gdb_commands
-- Installing: /usr/local/share/darktable/noiseprofiles.json
-- Installing: /usr/local/share/darktable/darktablerc
-- Installing: /usr/local/./share/icons/hicolor/16x16/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/22x22/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/24x24/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/32x32/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/48x48/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/64x64/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/256x256/apps/darktable.png
-- Installing: /usr/local/./share/icons/hicolor/scalable/apps/darktable-1.svg
-- Installing: /usr/local/./share/icons/hicolor/scalable/apps/darktable-2.svg
-- Installing: /usr/local/./share/icons/hicolor/scalable/apps/darktable-3.svg
-- Installing: /usr/local/./share/icons/hicolor/scalable/apps/darktable.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/borders.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/dither.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/flip.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/grain.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/invert.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lens.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/levels.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/overexposed.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/rawimport.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/relight.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/soften.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/spots.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/template.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.png
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/borders.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/dither.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/flip.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/grain.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/invert.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lens.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/levels.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/overexposed.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/rawimport.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/relight.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/soften.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/spots.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.svg
-- Installing: /usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.svg
-- Installing: /usr/local/share/darktable/pixmaps/dt_logo_128x128.png
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-1.png
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-2.png
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-3.png
-- Installing: /usr/local/share/darktable/pixmaps/idbutton.png
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-1.svg
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-2.svg
-- Installing: /usr/local/share/darktable/pixmaps/idbutton-3.svg
-- Installing: /usr/local/share/darktable/pixmaps/idbutton.svg
-- Installing: /usr/local/share/darktable/kernels/atrous.cl
-- Installing: /usr/local/share/darktable/kernels/basic.cl
-- Installing: /usr/local/share/darktable/kernels/bilateral.cl
-- Installing: /usr/local/share/darktable/kernels/blendop.cl
-- Installing: /usr/local/share/darktable/kernels/bloom.cl
-- Installing: /usr/local/share/darktable/kernels/colorreconstruction.cl
-- Installing: /usr/local/share/darktable/kernels/colorspace.cl
-- Installing: /usr/local/share/darktable/kernels/demosaic_ppg.cl
-- Installing: /usr/local/share/darktable/kernels/denoiseprofile.cl
-- Installing: /usr/local/share/darktable/kernels/extended.cl
-- Installing: /usr/local/share/darktable/kernels/gaussian.cl
-- Installing: /usr/local/share/darktable/kernels/highpass.cl
-- Installing: /usr/local/share/darktable/kernels/nlmeans.cl
-- Installing: /usr/local/share/darktable/kernels/sharpen.cl
-- Installing: /usr/local/share/darktable/kernels/soften.cl
-- Installing: /usr/local/share/darktable/kernels/programs.conf
-- Installing: /usr/local/share/darktable/kernels/common.h
-- Installing: /usr/local/./share/doc/darktable/README
-- Installing: /usr/local/./share/doc/darktable/AUTHORS
-- Installing: /usr/local/./share/doc/darktable/TRANSLATORS
-- Installing: /usr/local/./share/doc/darktable/LICENSE
-- Installing: /usr/local/./share/man/man1/darktable.1
-- Installing: /usr/local/./share/man/man1/darktable-cli.1
-- Installing: /usr/local/share/doc/darktable/darktablerc.html

Current runtime messages

(process:20510): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.

(darktable:20510): Gtk-WARNING **: Could not find the icon 'pan-down-symbolic-ltr'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
http://icon-theme.freedesktop.org/releases

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): Gtk-WARNING **: Error loading theme icon 'image-missing' for stock: Icon 'image-missing' not present in theme Adwaita

(darktable:20510): GLib-GObject-CRITICAL **: g_object_ref: assertion 'G_IS_OBJECT (object)' failed

(darktable:20510): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clahe.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colortransfer.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/dither.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/watermark.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/borders.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/splittoning.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/vignette.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/velvia.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/soften.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/channelmixer.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorout.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/grain.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highpass.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowpass.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/sharpen.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorcorrection.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/relight.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonecurve.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/zonesystem.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/levels.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colisa.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/monochrome.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lowlight.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorzones.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/atrous.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/shadhi.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/nlmeans.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bloom.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colormapping.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/clipping.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorreconstruct.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/colorin.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/profile_gamma.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/bilateral.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/basecurve.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/graduatednd.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/flip.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/lens.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/spots.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/exposure.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/tonemap.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/demosaic.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/rawdenoise.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/hotpixels.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/cacorrect.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/highlights.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/temperature.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/invert.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.svg'
error loading file `/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png': Couldn't recognize the image file format for file '/usr/local/share/darktable/pixmaps/plugins/darkroom/template.png'

Darktable Styles

When saving a style, check the extended editor and make sure you turn on all the plugins to get all your settings saved in your style. If you don't, applying a saved style later won't give you the expected results because some of the plugins used will be turned off.

There is a collection of styles with photo preview available at DTStyle


Dev Meeting Agenda 2012-05-30

Possible agenda items (with notes in red):

Project infrastructure

"Behavioral change" for the devs

Building an active community

AOB


Features under consideration

Here is a list of features that are being planned, developed or modified.


Satzung des darktable [WHATSOEVER] e.V.

Datum: [HEUTE]

Name, Sitz des Vereins, Geschäftsjahr

  1. Der Verein führt den Namen "_darktable [WHATSOEVER] e.V._", abgekürzt "_darktable e.V._".
  2. Der Verein hat seinen Sitz in [MYTOWN]. Sofern keine feste Geschäftsstelle eingerichtet ist, folgt die Verwaltung dem Wohnort des jeweiligen Vorstandsmitglieds, das die Geschäftsführung wahrnimmt.
  3. Der Verein ist in das Vereinsregister einzutragen. [NACH GRÜNDUNG ÄNDERN IN: Er ist im Vereinsregister des Amtsgerichts MYTWON unter der Nummer XYZ eingetragen.]
  4. Das Geschäftsjahr ist das Kalenderjahr.

Zweck und Aufgaben des Vereins

  1. Der Verein verfolgt ausschließlich und unmittelbar gemeinnützige Zwecke im Sinne des Abschnitts "Steuerbegünstigte Zwecke" der Abgabenordnung (§§ 51ff. AO).
  2. Zweck des Vereins ist [WÖRTLICHES ZITAT AUS AO§52]
    Dieser Satzungszweck wird verwirklicht insbesondere durch:
    1. GENAUER DEFINIEREN, WODURCH DER ZWECK ERREICHT WIRD.
  3. Eine Änderung des Vereinszwecks darf nur im Rahmen des in [§X] gegebenen Rahmens erfolgen.
  4. Der Verein ist selbstlos tätig; er verfolgt nicht in erster Linie eigenwirtschaftliche Zwecke.
  5. Mittel des Vereins dürfen nur für die satzungsmäßigen Zwecke verwendet werden. Die Mitglieder erhalten ausschließlich Erstattungen entstandener Kosten, aber keine direkten Zuwendungen aus Mitteln des Verein.
  6. Es darf keine Person durch Ausgaben, die dem Zweck der Körperschaft fremd sind, oder durch unverhältnismäßig hohe Vergütung begünstigt werden.

Arten der Mitgliedschaft und Mitglieder des Vereins

[Sollen wir analog zu KDE juristische Personen zulassen und die Möglichkeit von fördernden Mitgliedern zulassen? Immerhin machen wir das hier, um Geld sammeln zu können.
Auch die Erfordernis, dass man von einem (aktiven) Mitglied vorgeschlagen werden muss und mindestens zwei weitere Unterstützer hat, um aufgenommen werden zu können, finde ich gut.
Insgesamt würde ich KDEs §4 fast komplett übernehmen.]
[Habe mal KDE§4 eingebaut, mit kleinen Änderungen:
  1. Mitglieder des Vereins können natürliche und juristische Personen werden, die die Ziele des Vereins mittragen und unterstützen wollen. Um dem internationalen Charakter des Vereins gerecht zu werden, aber auch um Mitgliedern die Möglichkeit zu geben, sich aus der aktiven Unterstützung der Weiterentwicklung von darktable zurückzuziehen, ohne die Mitgliedschaft aufzugeben, sind dabei folgende Arten von Mitgliedschaften vorgesehen:
  2. Die aktive Mitgliedschaft wird auf Vorschlag eines aktiven Mitglieds mit Zustimmung zweier anderer aktiver Mitglieder durch Beschluss der Mitgliederversammlung oder der aktiven Mitglieder durch Internetwahl mit einfacher Mehrheit erworben. Hauptentscheidungskriterium für die Aufnahme soll das von den Aufnahmekandidaten über einen längeren Zeitraum gezeigte Engagement und der dabei geleistete Beitrag im Sinne der Vereinsziele sein.
    Ein aktives Mitglied kann auf eigenen Antrag beim Vorstand in die außerordentliche Mitgliedschaft wechseln. [FINDE ICH ETWAS HARSCH: Bei Nichterfüllung der oben angegebenen Pflichten eines aktiven Mitglieds über zwei aufeinanderfolgende ordentliche Mitgliederversammlungen ändert sich die Mitgliedschaft automatisch in eine außerordentliche.] Ein außerordentliches aber nicht förderndes Mitglied kann beim Vorstand die aktive Mitgliedschaft beantragen. Über die Aufnahme fördernder Mitglieder entscheidet der Vorstand.
  3. Die Mitgliedschaft endet durch Austritt, Ausschluss oder Tod, bei juristischen Personen auch durch Verlust der Rechtspersönlichkeit. Der Austritt eines Mitglieds ist jederzeit möglich. Er erfolgt durch schriftliche Erklärung gegenüber dem Vorstand.
  4. Das Instrument des Vereinsausschlusses ist kritischen Situationen vorbehalten, wobei grundsätzlich der Klärung zur Güte der Vorrang zu gewähren ist. Der Ausschluss erfolgt auf Beschluss der Mitgliederversammlung mit sofortiger Wirkung. Grund für einen Ausschluss kann beispielsweise ein schwerer Verstoß eines Mitglieds gegen die in dieser Satzung festgelegten Bestimmungen sowie Ziele und Zwecke des Vereins nach einem erfolglosen Versuch der Klärung
    Dem Mitglied muss vor der Beschlussfassung Gelegenheit zur Rechtfertigung bzw. Stellungnahme gegeben werden.
  5. Bei Ausscheiden eines Mitglieds aus dem Verein oder bei Vereinsauflösung besteht kein Anspruch auf Rückerstattung etwa eingebrachter Vermögenswerte.
  6. Die Mitglieder des Vereins zahlen keine Beiträge.

Ehrenmitgliedschaft

  1. Personen kann unter Angabe von Gründen die Ehrenmitgliedschaft verliehen werden.
  2. Über die Verleihung der Ehrenmitgliedschaft entscheidet die Mitgliederversammlung.
  3. Ehrenmitglieder des Vereins sind keine Mitglieder im Sinne dieser Satzung. Sie zahlen keine Mitgliedsbeiträge.
  4. Die Ehrenmitgliedschaft erlischt
    1. durch schriftliche Verzichtserklärung gegenüber dem Vorstand,
    2. auf Beschluss der Mitgliederversammlung.

Organe des Vereins

Organe des Vereins sind:
  1. die Mitgliederversammlung
  2. der Vorstand

Die Mitgliederversammlung

  1. Die Mitgliederversammlung ist das oberste Organ des Vereins.
  2. Der Mitgliederversammlung gehören alle aktiven Vereinsmitglieder mit je einer Stimme an.
  3. Die Mitgliederversammlung findet in der Regel einmal pro Jahr statt.
  4. Aufgrund der großen räumlichen Entfernungen zwischen den Mitgliedern ist die Durchführung einer Online-Mitgliederversammlung gestattet.
  5. Der Bierkonsum auf Sitzungen der Mitgliederversammlung ist gestattet.
  6. Eine Mitgliederversammlung findet statt
    1. auf Beschluss des Vorstands,
    2. wenn ein Viertel der stimmberechtigten Mitglieder dies unter Angabe der Gründe schriftlich oder per E-Mail vom Vorstand verlangt.
  7. Die Einladung zur Mitgliederversammlung erfolgt durch den Vorstand schriftlich oder per E-Mail mindestens eine Woche vor der Mitgliederversammlung unter Bekanntgabe der Tagesordnung. Eine Beschlussfassung zu folgenden Punkten muss mit dieser Tagesordnung angekündigt werden:
    1. der Ausschluss eines Mitglieds
    2. die Änderung der Satzung
    3. die Wahl des Vorstandes
    4. die Auflösung des Vereins
  8. Die Mitgliederversammlung ist ohne Rücksicht auf die Zahl der Erschienenen beschlussfähig. Satzungsänderungen oder Auflösung des Vereins können jedoch nur beschlossen werden, wenn mehr als drei Viertel der stimmberechtigten Mitglieder erschienen sind.
  9. Beschlüsse der Mitgliederversammlung werden mit einfacher Stimmenmehrheit gefasst, sofern die Satzung nichts anderes verlangt. Bei Stimmengleichheit gilt ein Antrag als abgelehnt.
  10. Es sind sowohl schriftliche als auch Online-Beschlussfassungen gültig.
  11. Zweidrittelmehrheit der Anwesenden ist erforderlich
    1. zur Satzungsänderung,
    2. zum Ausschluss eines Mitglieds,
    3. zur Wahl und zum Ausschluss von Ehrenmitgliedern.
  12. Über die Verhandlungen und Beschlüsse jeder Mitgliederversammlung ist eine Niederschrift zu führen, aus der mindestens die gefassten Beschlüsse (Ergebnisprotokoll) klar hervorgehen müssen. Die Niederschrift ist vom Sitzungsleiter und vom Schriftführer zu unterzeichnen. Sie ist den Mitgliedern binnen eines Monats schriftlich oder per E-Mail zur Kenntnis zu geben. [reicht es nicht, das online zu stellen?]

Aufgaben der Mitgliederversammlung

Die Aufgaben der Mitgliederversammlung sind:
  1. die Bestätigung von Mitgliedschaften,
  2. die Wahl der einzelnen Vorstände,
  3. die Entgegennahme des Jahres- und Kassenberichtes durch den Vorstand und Erteilung der Entlastung,
  4. die Ernennung von Ehrenmitgliedern,
  5. die Beschlussfassung zur Auflösung des Vereins,
  6. die Beschlussfassung über zu [UNTERNEHMUNGEN DES VEREINS...]
  7. die Beschlussfassung über alle Angelegenheiten, die nicht zu den Aufgaben eines anderen Vereinsorgans gehören

Vorstand

  1. Der Verein gibt sich einen Vorstand, ihm können nur natürliche Personen angehören, die aktive Mitglieder des Vereins sind. Er besteht aus dem Vorsitzenden, einem Stellvertreter, dem Kassierer und dem Schriftführer. [alternativ: Vorsitzender + Stellvertreter + Schriftführer. Der Stellvertreter ist der Kassierer.]
  2. Der Vorstand wird von der Mitgliederversammlung aus ihren Reihen jeweils für ein Jahr gewählt; Wiederwahl ist zulässig.
  3. Solange kein neuer Vorstand gebildet ist, führt der alte Vorstand die Geschäfte weiter.
  4. Der Vorstand leitet den Verein. Jedes Vorstandsmitglied alleine ist gerichtlich und außergerichtlich vertretungsberechtigt.
  5. Der Vorstand beschließt über alle Vereinsangelegenheiten, soweit sie nicht eines Beschlusses der Mitgliederversammlung bedürfen. Er führt die Beschlüsse der Mitgliederversammlung aus. [ausschließen, dass irgendwelche inneren Zirkel oder so gebildet werden]
  6. Die Vorstandstätigkeit endet mit dem Erlöschen der Mitgliedschaft.

Vereinsauflösung

  1. Zur Änderung der Vereinszwecke und zur Auflösung des Vereins bedarf es der Zustimmung von drei Vierteln der Mitglieder des Vereins.
  2. Bei Auflösung des Vereins oder bei Wegfall steuerbegünstigter Zwecke fällt das Vermögen des Vereins an den [ANDERE gem. VEREINE ANGEBEN], die es unmittelbar und ausschließlich für gemeinnützige Zwecke im Sinne des [§X] dieser Satzung zu verwenden haben.

Inkrafttreten

Diese Satzung tritt mit Beschlussfassung der Mitgliederversammlung in Kraft.

[ORT], den [DATUM]


Using this page to compile all the ideas for the Dual Head support in darktable. Detachable panels is not the only thing that can be done.

Main idea

The thing is displaying a seconday window that can be moved to the secondary monitor. That window should be a very simple window, with only a center view and upper and botom panels. The upper panel will contain the different modes available in the window (see following) while the bottom panel will contain some utils (lock, zoom level, ...). The modes available will be:

Comments from Robert Bieber*

I'm a little leery of the notion of having a "secondary" window, mainly because it doesn't really fit in with typical UI conventions. The norm for media applications, as far as I've seen, is break-away panels used to distribute elements of the UI however the user wants them, and I'd tend to think we should try to stay with this convention.

In particular, I'd like to see something similar to GIMP's detachable/combineable panels, but perhaps a little more elegant visually. I think it wouldn't be a bad idea to take a look at GIMP's code and see just how hard it would be to adapt their dockable tabs to Darktable.


Usability Issues

We collected some usability issues, some of them might serve as "Easy Coding" task. Every patch solving one of them is highly appreciated! Have a look at them:
UsabilityIssues

add quick tagging functionality

create an overlay similar to dt_control_log() in lighttable mode, if a hotkey is pressed (say @t'). then start typing, and a list of existing tags will try to auto-complete your word (much like in the tagging plugin, but without mouse interaction). if you press return, your tag is added to the currently selected/highlighted image, esc aborts.

Add scalar fallback macros to SSE code

grep mm -r src/* gives all the currently used SSE code, especially the mersenne twister, darktable:source:src/iop/atrous.c, darktable:source:src/develop/imageop.c, and darktable:source:src/iop/demosaic.c.

These should be encapsulated into macros which expand to the real SSE intrinsics only in case it is supported by the current CPU (compile time, to not lose performance).

Alternative: Do the check at runtime when initializing darktable (catch SIGILL, issue a SSE2 op, react), remember if SSE2 is available and let plugins use this information to change set some function pointers when loaded. Will be slightly slower but result in an executable which should run everywhere.

Better handling of removed images

Currently images that are in a collections but that have been removed from the filesystem appear in the lighttable view. We need a way to handle that more properly. either with a marking on the image itself or by removing them entirely from the collection. The exact solution is opened, but should probably be discussed with the devs

Import of duplicates

When importing a filmroll which already has XMP files it only honours those which are directly related to an image (like IMG_0123.CR2 + IMG_0123.CR2.xmp). If there were duplicates there would be other XMP files (IMG_0123_01.CR2.xmp). Reading them as duplicates should be added. I guess we even had that when we still used .dt files.

Cache image properties

Add the color labels, star ratings, selection etc. to the dt_image_t cache and sync in image_cache.c. So expose() doesn't need to go to disk but can read everything from the cache.

Fix UI behaviour: Alt+1 zoom

Fix the Alt-1 zoom in lighttable mode. This key accelerator should set the view to the selected / mouse over image. Currently it always zooms to the top left one. (It should more behave like zoomable lighttable mode, or holding @z'). The code can be found in darktable:source:src/viewslighttable.c.

OpenCL: easier reports

Implement a more user friendly OpenCL state reporting, something that is easy to copy/paste to the mailing list.

Clean up file-lookup

Darktable looks for lots of file to run, including the library file, the cache file, the config file etc... currently the path to some of these path are hardwired, other are configurable from the preference menus. some are configurable at build time, other arn't

we need to have all this cleaned up. In particular it should be possible to have two DT installed, and in possible run DT from the build directory


Easy Coding 2013

Usability Issues

We collected some usability issues, some of them might serve as "Easy Coding" task. Every patch solving one of them is highly appreciated! Have a look at them:
UsabilityIssues

Add scalar fallback macros to SSE code

grep mm -r src/* gives all the currently used SSE code, especially the mersenne twister, darktable:source:src/iop/atrous.c, darktable:source:src/develop/imageop.c, and darktable:source:src/iop/demosaic.c.

These should be encapsulated into macros which expand to the real SSE intrinsics only in case it is supported by the current CPU (compile time, to not lose performance).

Alternative: Do the check at runtime when initializing darktable (catch SIGILL, issue a SSE2 op, react), remember if SSE2 is available and let plugins use this information to change set some function pointers when loaded. Will be slightly slower but result in an executable which should run everywhere.

Better handling of removed images

Currently images that are in a collections but that have been removed from the filesystem appear in the lighttable view. We need a way to handle that more properly. either with a marking on the image itself or by removing them entirely from the collection. The exact solution is opened, but should probably be discussed with the devs

Import of duplicates

When importing a filmroll which already has XMP files it only honours those which are directly related to an image (like IMG_0123.CR2 + IMG_0123.CR2.xmp). If there were duplicates there would be other XMP files (IMG_0123_01.CR2.xmp). Reading them as duplicates should be added. I guess we even had that when we still used .dt files.

Cache image properties

Add the color labels, star ratings, selection etc. to the dt_image_t cache and sync in image_cache.c. So expose() doesn't need to go to disk but can read everything from the cache.

Fix UI behaviour: z preview, stars and colorlabels

When holding @z and scrolling using the arrow keys all different selected images are shown. But if the user tries to apply a star rating or a colorlabel to it, only the first image will get the rating, not the currrent shown image. The code can be found in darktable:source:src/viewslighttable.c.

OpenCL: easier reports

Implement a more user friendly OpenCL state reporting, something that is easy to copy/paste to the mailing list.

Clean up file-lookup

Darktable looks for lots of file to run, including the library file, the cache file, the config file etc... currently the path to some of these path are hardwired, other are configurable from the preference menus. some are configurable at build time, other arn't

we need to have all this cleaned up. In particular it should be possible to have two DT installed, and in possible run DT from the build directory


Feature Detection

Making automatic "tags" based on the features of the image like metadata, colors, shapes. etc.


Folder Module

The idea behind this module is to allow the user to "browse" within his filmrolls showing him a list of devices and filmrolls. The devices can be in a present or not present state, so different storage space can be used while all the information is present in darktable for its usage and processing.

The user will have an internal HDD with this schema:

 ~/pictures/2012/01/201201_filmroll1
                .../201201_filmroll2
                .../201201_filmroll3
                ...

And an external NAS with this schema:

  /media/NAS/Image_Archive/2009/04/200904_filmroll
                           .../05/200905_filmroll
                           ...
                       .../2010/08/201009_filmroll
                           ...
                       .../2011/09/201103_filmroll
                           ...

Once the user imports all his collection into darktable, the Folder module will show the following schema

  [HDD] [Enabled]
    - 201201_filmroll1
    - 201201_filmroll2
    - 201201_filmroll3
    - ...

  [NAS] [Enabled]
    + 2009
       + 04
          - 200904_filmroll
          - ...
       + 05
          - 200905_filmroll
          - ...
       + ...
    + 2010
       + ...

The upper level shown can be selected by the user, so if the level is 0, a plain list of filmrolls is shown, in level 1, the previous dir in path is shown, and so on until the common ancestor is reached, which is never shown. That will imply that it will never show ~/pictures or /media/NAS/Images_Archive

The devices will be shown as present or not, depending if the physical media in which the images are stored is available or not. That will be made by using libgio:"http://developer.gnome.org/gio/stable/" functions.

Moving a filmroll from [HDD] to [NAS] and back should be available, and that will move all the images in the filmroll to the selected device.


Google Summer of Code

This page is a collection of all GSoC related pages.

The current process is Google Summer of Code 2013, and its page is at GSOC_2013. Please check it if you are interested in this effort.



GSOC 2013

This page contains all the information about this year's Summer of Code 2013.
http://www.google-melange.com/gsoc/homepage/google/gsoc2013

The relevant dates are:

If you are a student, please read first GSOC_Intro_for_students page, to understand how the process work.

We have also a GSOC_2013_Ideas page for the different ideas that we propose to be performed under GSOC 2013 program. These are ideas that the developers propose and are willing to mentor, but if you have a different one it will be also welcomed. Go to our #darktable channel in Freenode and we will discuss about it.


GSOC 2013 Ideas

[WIP] Please add here your ideas for the students.

Print view

Add a print view

Enhance snapshots system

Enhance how snapshots systm works

Add a comparing view to lighttable

Add a comparing view two lighttable, showing two images side by side

Job queue

We need to have a queue that will be prioritized in favor of the standard job queue so that when darktable core / mipmap cache whatever is working hard the user
started jobs should be prioritized and executed before the core queue is continuing stealing resources while processing ...
Probably this is simplest implemented by adding an additional queue where prio jobs are pushed to, and when workers are picking jobs they should first pick
from prioritized queue if there are jobs available there.

Simple UI

We have spoken about this a lot of times and it is all about having the most commonly used controls up front for a standard workflow,
simple ui would be something like its own module group without any modules, just a big panel with stuffed controls ...
I'm not talking about every control from every iop here, just those carefully chosen, the panel would have a label header named
like the groups:

-------------------/ Basic |

[ exposure   |        ]
[ black      |        ]
[ exposure   |        ]
[x] highlight recons.
[ temperature|        ]

-------------------/ Color |
[ saturtion  |        ]
[ vibrance   |        ]

-----------------/ Correct |
[ sharpen    |        ]
[ contrast   |        ]
[ local contrast   |  ]

Metadata and IPTC

Add and editor of metadata and IPTC tags. Some ideas are in the MetaData page.


GSOC 2013 Proposals

These are our students' proposals.


GSOC 2013 questionnaire

SoC Information for Google

This is the info that we submit to google as application in Summer of Code (current status: 2013). The submitter automatically becomes primary admin. Most entries are mandatory and have to be filled out before the application can be submitted.

Organization Name:

darktable

Description:

darktable is a free virtual lighttable and darkroom for photographers.

It manages your digital negatives in a database and lets you view them through a zoomable lighttable. It also enables you to develop raw images and enhance them.

This project tries to fill the gap between the many excellent existing free raw converters and image management tools (such as ufraw or f-spot). The user interface is built around efficient caching of image metadata and mipmaps, all stored in a database. The user will always be able to interact, even if the full resolution image is not yet loaded.

All editing is fully non-destructive and only operates on cached image buffers for display. The full image is only converted during export. The frontend is written in gtk+/cairo, the database uses sqlite3, raw image loading is done using rawspeed and libraw as fallback, high-dynamic range, and standard image formats such as jpeg are also supported. The core operates completely on floating point values, so darktable can not only be used for photography but also for scientifically acquired images or output of renderers (high dynamic range).

darktable features parts of its pipeline in OpenCL for fast processing. The core is very small, and every possible task is outsourced to loadable modules, such
as image format for export, light table plugins as the collection interface, and raw pixel processing plugins.

We are slightly over the 200k lines of code (see http://www.ohloh.net/p/darktable/analyses/latest), with three main developers and about 19 active contributors (who submitted more than one patch since release-0.7.1).

Our main features include:

Home page:

http://www.darktable.org/

Main Organization License:

darktable is released under the terms of the GNU general public license version 3 or later.

Why is your organization applying to participate in GSoC 2013? What do you hope to gain by participating?

darktable is a free software project which is in that very interesting phase where it isn't a toy project anymore and can be used for its main purpose, but it still has lots of features that we want to add and not enough history to slow us down. We are also at the stage where the project is a great testbed for people interested in photo processing algorithm and we see many inovative algorithms added by people that want to try new things

There is a lot to do, some easy, some not so.

This is the point where joining an open-source project is the most interesting and the point where manpower is the most needed.

By joining GSoC we want to have new people joining the project with all sorts of itches to scratch. We want to be in contact with people that want to join the free software world and don't know where to start, because we believe that darktable is a great place to start.

Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.

Darktable was part of GSoC in 2011, we mentored a single stundent due to our small mentor manpower but this student turned out to be invaluable. He helped us to get rid of the glade infrastructure, making our UI code much more maintainable and added a keyboard shortcut infrastructure which allows darktable to be highly customizable to each user's need.

This student is now an active member of our community and is still heavily involved

If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6

in 2011 : 1/1

Add a Comment (optional):

(empty)

If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?

we successfuly candidated in 2011 which was our first time
we also applied unsuscessfully in 2012

What is the URL for your ideas page?

https://sourceforge.net/apps/trac/darktable/wiki/GSOC_idea_list

What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2013. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.

The main development mailing list is "darktable-devel@lists.sourceforge.net". An important secondary mean of communications is our IRC channel on Freenode. If you have questions you should ask them in #darktable on irc.freenode.net and wait for a reply (might take some hours!).

What is the main IRC channel for your organization?

#darktable on irc.freenode.net

Add a Comment (optional):

Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2011 site.

1. Basics
1. Write a small introduction to yourself.
1. State your preferred email address.
1. If you have chosen a nick for IRC, what is it?
1. Why do you want to participate in summer of code?
1. What are you studying, subject, level and school?
1. What country are you from, at what time are you most likely to be able to join IRC?
1. Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
1. Experience
1. What programs/software have you worked on before?
1. Have you developed software in a team environment before (as opposed to hacking on something on your own)?
1. Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?
1. Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
1. Photographic experience
1. What type of photos do you take, with what camera, in which format?
1. How do you organise and develop your photos?
1. Do you have a website/flickr account?
1. How proficient are you with post-production software, and which one(s) do you know?
1. Are you familiar with basic photographic data processing (demosaicing, white balance, color management)?
1. If you have contributed any patches to darktable, please list them below. You can also list patches that have been submitted but not committed yet, patches that were refused or patches that have not been specifically written for GSoC. This will help us find out what your work was and how you code.
1. Communication skills
1. Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.
1. What spoken languages are you fluent in?
1. Are you good at interacting with other people?
1. Do you give constructive advice (both as a photographer and as a coder)?
1. Do you receive advice well (both as a photographer and as a coder)?
1. Are you good at sorting useful criticisms from useless ones?
1. How autonomous are you when developing? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want?
1. Project
1. Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?
1. If you have invented your own project, please describe the project and the scope.
1. Why did you choose this project?
1. Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".
1. Include as much technical detail about your implementation as you can.
1. What do you expect to gain from this project?
1. What would make you stay in the darktable community after the conclusion of GSoC?
1. Practical considerations
1. Are you familiar with any of the following tools or languages?

In general please try to be as verbose as possible in your answers and feel free to elaborate.

What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible:

Our mentor is the project founder who is still coding or reviewing most of the commits, and should thus be able to give advice about every part of our code, or at least point to the right developer.

When he is not available, the darktable community is quite helpfull and there is usually someone on the IRC channel able to help.

What is your plan for dealing with disappearing students?

The important part is to avoid it happening in the first place. Students don't disapear without a reason. We intend to keep our eyes and ears open for signs of a student being tired, worried or uninterested by the project. If it were to happen we would try to deal with it as early as possible, including rethinking the goals and planning of the project, having more devs involved with helping the student or dealing with any human relation problem that would appear.

If a student were to disapear entirely, there isn't much left to do except failing him and doing the work ourselves. We plan to have the student's work be public (either in the main git repository or through services like github) so we can pick up wherever he left.

What is your plan for dealing with disappearing mentors?

Our mentor is the founding developer of the project and he volunteered for the job, so we don't expect that to happen.

However, should it happen, we would continue to mentor as a developer community the student until we find a new "official" mentor to take on the job.

What steps will you take to encourage students to interact with your project's community before, during and after the program?

We don't intend to recruit a student that we didn't get to meet on IRC beforehand, and we plan to make that clear. We intend to have students actively participate in the project before the start of GSoC. We have started collecting easy coding tasks on a separate web page to help get quickly into the code.

What will you do to ensure that your accepted students stick with the project after GSoC concludes?

Our community is very active and agreable to be in. This is usually a good motivator. We plan to recruit as much as possible students that are photographers and thus are most interested in the tool. Having an itch to scratch is an important motivator for open-source developers. Appart from that we want our student to be a full-fledge developer at the end of summer of code. In particular he should have full authority on his project, i.e be the dev that handles that part.

Is there anything else you would like to tell the Google Summer of Code program administration team? :

Backup Admin (Link ID):

Admin Agreement:


I want to be one of your Google Summer of Code students, what should I do...

Here is a quick list of things to do at this time:

Information about our Project

The information we provided google about our project can be looked up at the site GSOC_questionnaire.

List of Ideas for the Project (Suggestions from darktable developers)

automated regression tests

This can be facilitated by introducing a commandline-interface to darktable. This should use a raw image and an xmp sidecar file as input and parameters controlling the output module to use.

This can then be used to automatically generate a large set of parameters for all modules and compare output images against ground truth images, which are asserted to be correct by the module programmer. Specific battle tests should also be easy to include into this script.

The output should then be generated as a html or pdf containing statistics about the tests, such as runtime (real and user, to be able to tell how well it scales over multiple cores, also for the OpenCL path), peak memory requirements, and a list of failed tests (best with git blame/email of the module's author) with the actual and expected output images.

If the script detects vast performance differences depending on a particular parameter for a plugin, a gnuplot graph should be generated to document memory usage/performance impact of this parameter.

important problems:

interoperability

important problems:

openfx interface

opencl support tuning

OpenCL support for multi-GPU systems is implemented and working, but the process_cl() callbacks are not implemented yet for all plugins, some might be hard to do (but even more important), such as a lensfun GPU replacement.

important problems:

edge-aware image processing

papers to investigate wrt edge quality and speed:

computational photography

Combine multiple images in light table mode:

important problems

your own ideas

Feel free to come up with you own ideas if none of the above suits you. Discuss them with us in IRC or on the developers list and see if there are objections.

not this year :(

just to keep track of it, but we're not able to mentor this year:


printing view

Darktable is not able to print images in any way. Users must currently use a separate programm for printing

Printing, however, is an important part of the DAM chain and must be done with care. Color management in particular is not handled well by most printing software.

We believe Darktable need a complete view to handle printing (see UserInterfaceMockup) and this is an interesting project to consider.

local edits

Implement masks, local edits, healing tools. This would also imply implementing a method in the processing queue to allow a plugin to be applied several times.

Add masks (from channel, from painted strokes, ..) for each module to the pixelpipeline (and to the opencl version). This could also include sliders to mix the input and output images of a plugin and pass on the result (similar to layers and blend modes in gimp).

Somehow related: settings in multiple copies of a plugin ( *mask, *(1-mask), ..).

This can easily be realised in the pixelpipe, by using the cached input buffer and the processed output buffer (after a call to process() or process_cl()) and the additional mask and overlay settings to create the final output buffer which is then passed on to the next plugin.

important problems

geolocation

Implement geolocation: reading, writing of geo tags, a map view for placing and moving images around, etc.

There already is a branch called "geo" featuring some initial work but is far from being finished.


GSOC Introduction for Students

I want to be one of our students, what should I do

this question deals with the administrative part, it's a sort of todo list

How will we choose our students

The actual process will probably be the mentors meeting in a private channel and discussing. Here are the criterias we expect to use

We are perfectly aware that the choice is subjective, and we will try to describe below how we will juge the subjective part. The students are future community members and we juge their potential as such.

Technical knowledge

We try to juge your technical knowlege, if you are familiar with C, image processing, the libraries we use or that you plan to use.

Social abilities

This is some gut feelings we have about the student, how helpfull to other students, inquisitive, pro-active etc...

we basically see that by knowing you on IRC and the ML

The proposal itself

That's basically the technical part of your proposal (the questionnaire is more about knowing you and practical details we might need) How feasible the proposal seems, how realistic is your planning, how open the proposal is.

If you are worried your proposal is not up to par, don't hesitate to ask us on IRC. If we juge your proposition unrealistic or not detailed enough, we will tell you. And if you ask early you will have time to correct it. That's fair game. We expect you to do that.

What is a good student proposal

the following are two top-level proposals from the Wesnoth project. Use them as examples of what we would love to see :P
Hello and welcome,

http://wiki.wesnoth.org/SummerOfCodeProposal_AI_Improvement_Crab

http://wiki.wesnoth.org/GSoC-WesnothWhiteboard_Gabba

Below is the proposal that was accepted in 2011

BieberProposal

those were great proposals, learn from the best ;)


GSOC proposals

GSOC proposals.


see "for an example of a questionnaire from another project

SoC Information for Google

This is the info that we submit to google as application in Summer of Code (current status: 2011). The submitter automatically becomes primary admin. Most entries are mandatory and have to be filled out before the application can be submitted.

Organization Name:

darktable

Description:

darktable is a free virtual lighttable and darkroom for photographers.

It manages your digital negatives in a database and lets you view them through a zoomable lighttable. It also enables you to develop raw images and enhance them.

This project tries to fill the gap between the many excellent existing free raw converters and image management tools (such as ufraw or f-spot). The user interface is built around efficient caching of image metadata and mipmaps, all stored in a database. The user will always be able to interact, even if the full resolution image is not yet loaded.

All editing is fully non-destructive and only operates on cached image buffers for display. The full image is only converted during export. The frontend is written in gtk+/cairo, the database uses sqlite3, raw image loading is done using rawspeed and libraw as fallback, high-dynamic range, and standard image formats such as jpeg are also supported. The core operates completely on floating point values, so darktable can not only be used for photography but also for scientifically acquired images or output of renderers (high dynamic range).

Darktable features parts of its pipeline in OpenCL for fast processing. The core is very small, and every possible task is outsourced to loadable modules, such
as image format for export, light table plugins as the collection interface, and raw pixel processing plugins.

We are slightly over the 200k lines of code (see [http://www.ohloh.net/p/darktable/analyses/latest":http://wiki.wesnoth.org/SoC_Information_for_Google]), with three main developers and about 19 active contributors (who submitted more than one patch since release-0.7.1).

Our main features include:

Home page:

http://www.darktable.org/

Main Organization License:

darktable is released under the terms of the GNU general public license version 3 or later.

Why is your organization applying to participate in GSoC 2011? What do you hope to gain by participating?

darktable is a free software project which is in that very interesting phase where it isn't a toy project anymore and can be used for its main purpose, but it still has lots of features that we want to add and not enough history to slow us down. We are also at the stage where the project is a great testbed for people interested in photo processing algorithm and we see many inovative algorithms added by people that want to try new things

There is a lot to do, some easy, some not so.

This is the point where joining an open-source project is the most interesting and the point where manpower is the most needed.

By joining GSoC we want to have new people joining the project with all sorts of itches to scratch. We want to be in contact with people that want to join the free software world and don't know where to start, because we believe that darktable is a great place to start.

Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.

Darktable was part of GSoC in 2011, we mentored a single stundent due to our small mentor manpower but this student turned out to be invaluable. He helped us to get rid of the glade infrastructure, making our UI code much more maintainable and added a keyboard shortcut infrastructure which allows darktable to be highly customizable to each user's need.

This student is now an active member of our community and is still heavily involved

If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6

in 2011 : 1/1

Add a Comment (optional):

(empty)

If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?

we successfuly candidated in 2011 which was our first time

What is the URL for your ideas page?

https://sourceforge.net/apps/trac/darktable/wiki/GSOC_idea_list

What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2011. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.

The main development mailing list is "darktable-devel@lists.sourceforge.net". An important secondary mean of communications is our IRC channel on Freenode. If you have questions you should ask them in #darktable on irc.freenode.net and wait for a reply (might take some hours!).

What is the main IRC channel for your organization?

#darktable on irc.freenode.net

Add a Comment (optional):

Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2011 site.

1. Basics
1. Write a small introduction to yourself.
1. State your preferred email address.
1. If you have chosen a nick for IRC, what is it?
1. Why do you want to participate in summer of code?
1. What are you studying, subject, level and school?
1. What country are you from, at what time are you most likely to be able to join IRC?
1. Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.
1. Experience
1. What programs/software have you worked on before?
1. Have you developed software in a team environment before (as opposed to hacking on something on your own)?
1. Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?
1. Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.
1. Photographic experience
1. What type of photos do you take, with what camera, in which format?
1. How do you organise and develop your photos?
1. Do you have a website/flickr account?
1. How proficient are you with post-production software, and which one(s) do you know?
1. Are you familiar with basic photographic data processing (demosaicing, white balance, color management)?
1. If you have contributed any patches to darktable, please list them below. You can also list patches that have been submitted but not committed yet, patches that were refused or patches that have not been specifically written for GSoC. This will help us find out what your work was and how you code.
1. Communication skills
1. Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.
1. What spoken languages are you fluent in?
1. Are you good at interacting with other people?
1. Do you give constructive advice (both as a photographer and as a coder)?
1. Do you receive advice well (both as a photographer and as a coder)?
1. Are you good at sorting useful criticisms from useless ones?
1. How autonomous are you when developing? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want?
1. Project
1. Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?
1. If you have invented your own project, please describe the project and the scope.
1. Why did you choose this project?
1. Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".
1. Include as much technical detail about your implementation as you can.
1. What do you expect to gain from this project?
1. What would make you stay in the darktable community after the conclusion of GSoC?
1. Practical considerations
1. Are you familiar with any of the following tools or languages?

In general please try to be as verbose as possible in your answers and feel free to elaborate.

What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible:

Our mentor is the project founder who is still coding or reviewing most of the commits, and should thus be able to give advice about every part of our code,
or at least point to the right developer.

when he is not available, the darktable community is quite helpfull and there is usually someone on the IRC channel able to help.

What is your plan for dealing with disappearing students?

The important part is to avoid it happening in the first place. Students don't disapear without a reason. We intend to keep our eyes and ears open for signs of a student being tired, worried or uninterested by the project. If it were to happen we would try to deal with it as early as possible, including rethinking the goals and planning of the project, having more devs involved with helping the student or dealing with any human relation problem that would appear.

If a student were to disapear entirely, there isn't much left to do except failing him and doing the work ourselves. We plan to have the student's work be public (either in the main git repository or through services like github) so we can pick up wherever he left.

What is your plan for dealing with disappearing mentors?

Our mentor is the founding developer of the project and he volunteered for the job, so we don't expect that to happen.

However, should it happen, we would continue to mentor as a developer community the student until we find a new "official" mentor to take on the job.

What steps will you take to encourage students to interact with your project's community before, during and after the program?

We don't intend to recruit a student that we didn't get to meet on IRC beforehand, and we plan to make that clear. We intend to have students actively participate in the project before the start of GSoC. We have started collecting easy coding tasks on a separate web page to help get quickly into the code.

What will you do to ensure that your accepted students stick with the project after GSoC concludes?

Our community is very active and agreable to be in. This is usually a good motivator. We plan to recruit as much as possible students that are photographers and thus are most interested in the tool. Having an itch to scratch is an important motivator for open-source developers. Appart from that we want our student to be a full-fledge developer at the end of summer of code. In particular he should have full authority on his project, i.e be the dev that handles that part.

Is there anything else you would like to tell the Google Summer of Code program administration team? :

Backup Admin (Link ID):

Admin Agreement:


General thought about dt and what dt's audience is

Target user

enthusiast photographers that shoot in raw (if not, someone that knows why he doesn't shoot in raw) and has basic knowledge of PostProc notions or is ready to learn them (we can help in that regard, but we should not hide these notions)

Also professional photographer, that can get more from darktable using more advanced or esoteric plugins. Have into account that we ship every plugin in a package, but other programs as Lr only ships a very basic set and then users has to download more plugins if they want to have other tools.

terms the user is expected to know

terms the user is not expected to know, but might learn through DT

terms the user shouldn't need to know to use DT but that can go in usermanual with an explanation for those who want to know more...

expected technical knowledge of user

what DT is/isn't

What part of DAM should/shouldn't DT do

* it should not do image display (slideshows) Slideshow integrated now

suggestions how to streamline dt's gui

we don't want to duplicate code for the gui in simple/advanced modes, but increase positive user experience by making existing functionality more accessible.

unsorted dump

-- I highly disagree: the input and output color profile primarily affect color, and thus should remain in the color category. That said, in most use cases you do not continously need to change the colorin/colorout parameters, so that's probably also no argument to have them in the basic category. But again, Henrik is working on something that might alleviate this problem.

--- doesn't "white balance" primarily affect color but is in "basic"? Morevoer, I often change "Color in" to switch between "enhanced" or "standard" matrix as people appear really red on my 30D pictures :) It seems to me that categorization is really more about taste than anything else, so the customizable category would be the best [OT]

---- White balance does affect color, so does basecurve. But in that train of though exposure should go in the correct category, and I'm quite shure nobody would want that. So yes some exceptions have been made. But I'm not convince about colorin/colorout, I use these plugins a huge deal while creating new enhanced color matrices, so I doubt few people actually used these plugins as much as me, still I think they should remain in the color category.

-- The current plugins are categorized for logical reasons, NOT for convenience, since convenience is relative, and logic is less so. In the future we may have a customizable category or slider pane, which you can build to your own hearts desire.

-- You're basically saying here is that we should abide by anything that Adobe/$VENDOR decides. The whole point of doing open source, is freeing oneself from that...

--- Whichever way you put this, the colorin/colorout plugins obviously fit in the color category, and putting them in basic would remain debatable. And again, Henrik is working on something that most likely will render this discussion moot.

-- We already have lots of mini buttons in the plugin header bar, so adding another doesn't sound that good. Again in general the hide/unhide system is not designed/intended to be used on a continuous basis. It's mainly intended so you can hide plugins you rarely use. Not hide/unhide plugins your regularly use. For plugins that are regularly used you can collapse/expand them.

keyboard shortcut wishes

Home/End/PgUp/PdDown or some equivalents for navigating lighttable in filemanager mode -
-- PgUp/PgDown to flip through images in both modes? (There's also an issue about that)

min/max/default values

please put annoying cases here! plugins should always produce a noticable and mostly good looking result by just switching them on, and they should not break if values are set to their min/max.

-- Amen, I think most plugins have reasonably sane default, maybe some of the newer plugin don't. If you have concrete cases where this happens, please open Trac tickets for each specific case.

this also includes which plugins are visible by default for a new installation and which group they belong to.
-- I should look which plugins are visible by default in a new installation. The plugins grouping should be fine.
-- I actually made some small adjustments to which plugins are visible by default, but this is pretty hard to get right...

-- Please do elaborate a bit on this, since it's not entirely clear what you're getting at

-- Aha, true, good one. The real problem is that the allowed range for the plugin is grossly overscaled, leading to an oversensitive slider.

missing/undescriptive tooltips

put annoying tooltips here (best with suggestions how to replace them)

useless options

put a note here if you feel some particular option/slider/checkbutton should always be left
in its default position (or could be always calculated as an optimal value automatically)
and could therefore be removed from the gui.

-- Automatically calculating optimal values in imaging seems like a pipe dream :)

there are opinions, that alsmost each camera raw convertor processes the raw differently, hence it is hardly justifiable to use e.g. ICC profile from Canon DPP with dt. As a result, best solution is to create own icc profile with dt, which finally leads to a decision to remove "unbreak profile" plugin as being redundant...

-- True, but people will always keep on ask about wanting to use proprietary ICC files, even with suboptimal or unintended results. I build the enhanced color matrices to prevent people from having to deal with ICCs altogether, but obviously this has its limits.

-- Yeah it's not the most elegant name... The description is quite accurate, since it fixes "broken" profiles. But I can see where the confusion happens. "Adjust input profile" would imply the input profile is actually changed, which is completely false. We're open to suggestions how to call the plugin...

-- First off white balance has nothing to do with color in and color out. Second, the whole point of having a white balance plugin and a color correction plugin, is so you can use white balance to do correction, to make your image look "natural", and then use color correction to make it look "nice". This way you can separate correction to get a natural white balance in a clean fashion, which always helps in creating generally usable styles.

--- white balance with color visual approach sounds great to me. I think the so-called "color in" and "color out" were referring to the two sliders "Temperature in" and "temperature out" inside the White Balance plugin. I am all for removing one of them. I do not see why a visual approach of white balance competes with color correction being visual too... [OT]

-- Silly me (about colorin/colorout) I'm actually not sure about that, both slider are indeed rarely used, so removing one might be an option.

-- Every plugin in the pipeline should always be represented by a plugin GUI, since that is the canonical way to change things, everything else is just extra (however nice it may be).

-- There is probably no bigger source of confusion in the world than inconsistency. Unless there is a really strong argument for exceptions we can look at it, I don't see any right now. "We'll cross that bridge when we come to it".

hard to understand methaphors

e.g. 'film roll' versus 'folder' or 'collection' vs 'catalog', 'velvia' vs 'saturation', 'clarity' vs 'local contrast'.

plugin names and control label texts

Usually tab names are nouns, not verbs.

Examples are 'metadata' (that's a geek term, should be 'info' or the
like), 'tagging' (could be 'tag' or 'tags') and most of the names of the
plugins in DT mode.

However, some tabs use verbs instead that then are combined with the
names of the widgets inside the tab to form a sentence conveying the action.

Examples are 'select' (should be 'selection'), 'selected image(s)'
(should be 'catalog'). Here it is doubly weird. In the 1st case the
sentence is correctly formed. E.g. 'select all' or 'select none'. It
breaks down with 'invert selection' (could be 'inverse') and 'select
film roll'.

In 'selected image(s)' this is done completely different. Here the tab
name is not repeated on the widget (good!, it shouldn't be repeated in
case of 'select').

Speaking of tabs: Because the typo is lowercase and same size and same
font and same color as widget labels, they are really not that easy to
make out.
I suggest to use a bold font at least and/or headline capitalization for
tab names to stand out more as different from the normal widget labels.
-- I think we already tried something like this in the past, it didn't look very good back then.

While we are at the topic, there was the idea to have the number of selected
images in the title of that module (see docs/TODO). This would require an
additional callback for modules with which they can supply some string.

Rotating is the 1st thing I do after import, so putting this 'where the
action is', namely on the images on the lighttable itself, makes a lot
of sense to me.

Speaking of which. DT has a weird mix of actions that modify the view,
selection and contents of the images in LT mode, all in the right column.

I.e. The 'select' tab alters selection, 'selected images(s) alters data,
not image data but the catalog itself. 'metadata' and 'tagging' both (!)
alter metadata of images, 'collect images' changes the view of the
catalog (why not 'collect image(s)' in sync with 'select image(s)'? --
I'd just call this 'collection') etc.

I'd put everything that changes the view of the catalog into the top and
bottom bars for starters. Maybe selection could go in there as well.

I also vote for a right mouse button menu that has all selection and
catalog- and styles management and rotation in it. And a few more useful
things.
Here's a screenshot of the RMB menu LR shows in catalog (aka LT) mode:
http://dpexperience.com/wp-content/uploads/2010/03/LR-RS-2.jpg

should "unbreak profile" plugin remain in gui, it could be named "adjust input profile" with a tooltip "change gamma & linearity for weird input ICC profile"
-- As I've commented above, while "Adjust input profile" sounds nice, but it's a false description, a naming like that implies something is done to the input profile, which is false. "unbreak profile", preprocesses input data, so it can be processed using a "broken" input profile. I'm not happy either with "unbreak profile", but every alternative that has been suggested completely misrepresents what it really does.

not going to happen (jo)

-- Those are plugin related settings and thus by defition should be settable in the plugin UI. The preferences dialog should never be abused for plugin settings.
-- And more importantly "match green/green equibrilation" is camera specific. So turning it on application wide is silly.

would be solved by new UI with quick toolbar in bottom panel

-- I have doubts this should even be displayed as a normal plugins, since it should never touch a resulting image. So maybe we could place this in the bottom or top bar?

-- Henrik is working on something that might alleviate these wishes.


principles

derived rules

Bauhaus Widgets guidelines

Appearance

Behaviour

detailed guidelines for plugins

TODO:

list of offenders

Concrete Rules

Spaces and separations

Widgets


Hacking on darktable

1. Discuss your planned changes (if you want feedback)

Of course you can start coding without talking to us beforehand but be prepared that you might waste your time that way. We won't accept every patch just because it's there.

2. Create GitHub account

http://www.github.com

3. Fork darktable into your account

https://github.com/darktable-org/darktable

4. Clone your newly forked copy onto your local workspace

$ git clone git@github.com:[your user]/darktable.git
$ cd darktable

5. Add a remote ref to upstream, for pulling future updates

$ git remote add upstream git://github.com/darktable-org/darktable.git

6. As a precaution, disable merge commits to your master

$ git config branch.master.mergeoptions --ff-only

7. Build darktable

$ ./build.sh

8. Pulling later updates from upstream

$ git pull --rebase upstream master

Please note that --rebase is very important if you do have commits. What happens is that when git pull can't fast forward, it does a merge commit, and a merge commit puts the sucked in changes ON TOP of yours whereas a rebase puts them BELOW yours. In other words a merge commit makes the history a graph, and we prefer a cleaner, easier to follow linear history (hence the rebasing). Further once you do a merge commit it will be difficult to rebase the history before that commit (say you want to combine two commits to one later) as described in point 13. Luckily the option set in step 5 will prevent this from happening.

One way to not forget --rebase the rebase option is you may want to create an alias

$ git config --global alias.up "pull --rebase" 

and then just use the new alias instead of pull

$ git up upstream master

9. Pushing pulled updates (or local commits if you aren't using topic branches) to your private github repository (origin)

$ git push

You might need to say -f to force the changes. Read the note on 12 though before you do it.

10. Make sure there is an issue for the enhancement/fix

http://www.darktable.org/redmine/projects/darktable/issues

11. Create a simple topic branch to isolate that work (just a recommendation)

$ git checkout -b my_cool_feature

12. Make the changes and commit one or more times (Don't forget to push)

$ git commit -m '[Issue #XXXX] My Cool Feature'
$ git push origin my_cool_feature

Note that git push references the branch you are pushing and defaults to master, not your working branch.

Please make sure that your commit messages follow the format that is generally considered nice:
A short summary in the first line, no more than 50 characters long. When you can't put everything in that one line, then add one empty line and then a more verbose description with lines no longer than 78 characters. The reason for this is that commit messages formated like this can nicely be sent as emails and read in the terminal.

13. Rebase your branch against the latest master (applies your patches on top of master)

$ git fetch upstream
$ git rebase -i upstream/master

# if you have conflicts fix them and rerun rebase
# The -f, forces the push, alters history, see note below

$ git push -f origin my_cool_feature

The -i triggers an interactive update which also allows you to combine commits, alter commit messages etc. It's a good idea to make the commit log very nice for external consumption. Note that this alters history, which while great for making a clean patch, is unfriendly to anyone who has forked your branch. Therefore you want to make sure that you either work in a branch that you don't share, or if you do share it, tell them you are about to revise the branch history (and thus, they will then need to rebase on top of your branch once you push it out).

14. Get your changes merged into upstream

  1. Make sure your repo is in sync with other unrelated changes in upstream before requesting your changes be merged into upstream by repeating step 13.
  2. Send a github pull request, by clicking the pull request link while in your repo's fork
  3. An email will automatically be sent to the committers
  4. After review a maintainer will merge your patch, update/resolve issues by request, and reply when complete
  5. Don't forget to switch back to master and pull the updates
    $ git checkout master
    $ git pull --ff-only upstream master
    
  6. To update the master branch of your github repository (otherwise you will see a message like 'Your branch is ahead of 'origin/master' by XXX commits.'
    if you are use 'git status' on your local master branch.
    $ git push origin master
    

Committers

The committers will make sure that the pull request submitted is rebased against the branch in question, and is up-to-date.

The pull request will be merged using the GitHub pull request merge functionality, the below script or a similar method:

#!/bin/bash

git fetch upstream
git checkout master
git rebase upstream/master

cmd="git fetch upstream " 
for var in "$@" 
do
  cmd="$cmd pull/$var/head:pullRequest$var" 
done

$cmd

for var in "$@" 
  do
  echo Merging PR $var
  git checkout pullRequest$var
  git merge --ff-only pullRequest$var
  git branch -D pullRequest$var
done

Information collection for founding an association (german)

draft satzung

Grundlage

des Vereinswesens in Deutschland ist BGB§21-54 [0]

Jährlicher Verwaltungsaufwand

Vorgehensweise Vereinsgründung (allgemein, unabhängig von Gemeinnützigkeit):

1. Satzung

2. Gründung durch mind. 7 Gründungsmitglieder

3. Gründungsversammlung

4. Kopien von Gründungsversammlungs-Protokoll und Satzung

5. Amtsgericht am Ort des Vereinssitzes

Gemeinnützigkeit:

Relevanter Absatz in AO§51-56 [1], definiert mögliche "Gemeinnützige Zwecke" der Körperschaft. Einer oder mehrere dieser Gründe müssen WÖRTLICH in die Satzung übernommen werden, ansonsten wird keine Gemeinnützigkeit anerkannt.

Zuständiger für die Gemeinnützigkeits-Prüfung und -Zulassung (Befreiung von der Körperschaftssteuer) ist das Finanzamt am Ort des Vereinssitzes.

Ablauf für Gründung eines gemeinnützigen Vereins:

0. Finanzamt am Ort des Vereinssitzes

1. - 5. [normale Vereinsgründung hier einfügen]

6. Finanzamt am Ort des Vereinssitzes

Weitere Schritte sollen wir erfragen, wenn wir irgendwo in die Nähe von alldem kommen... :)

Satzung:

Anbei Entwurf einer einfachen Satzung (Vorlage von studentischer Theatergruppe), aus der einiges wörtlich übernommen werden kann und sollte, da speziell Formulierungen für Wahlen des Vorstands etc. sehr speziell sind und die Satzung nicht akzeptiert wird, wenn dort formale Fehler enthalten sind. Das würde bedeuten, den ganzen Aufwand mit Mitgliederversammlung wiederholen zu müssen...

Siehe PDF, §2 (1) - (5)

Weitere relevante Informationen:

[0] BGB§21-54 http://dejure.org/gesetze/BGB/21.html
[1] AO§51-56 http://www.gesetze-im-internet.de/ao_1977/BJNR006130976.html#BJNR006130976BJNG001001301
[2] http://ev.kde.org/corporate/statutes-de.php
[3] http://ev.kde.org/corporate/statutes.php
[4] http://ev.kde.org/donations-taxes-de.php
[5] http://www.bmj.de/SharedDocs/Downloads/DE/Broschueren/DE/Leitfaden_Vereinsrecht.html


IRC Bot

Currently there is one official bot in #darktable:

dtslave

General information

This is a modified supybot (gribble). You can see the version with !version.

There are two ways to give commands to the bot, either with
dtslave: <command>
or
!<command>
Of course you can also use the commands in a query (/query dtslave) when you don't want to spam the channel.

For a full list of available plugins use

!list

For a list of commands a plugin provides use

!list <plugin>

Useful commands


Lighttable Hotkeys

Common
tab Toggles panels on/off
f11 Toggles fullscreen
lighttable mode
e Open the image below mousepointer in developing mode.
z View's the image below mouse pointer in fullscreen, release it to get back to previous view.
ctrl-{1-3} Changes color labels of thumb below mouse pointer
alt-{1-4} Changes the star rating of thumb below mouse pointer
darktable mode
e Goes back to lighttable mode
tethering mode
enter execute a capture job
filmroll window
ctrl-{1-3} Changes color labels of thumb below mouse pointer
alt-{1-4} Changes the star rating of thumb below mouse pointer

This documentation is for the developement version of darktable. for the stable version, please visit the user manual

To access the darktable specific functions you must load the darktable environement:
darktable = require "darktable"

All functions and data are accessed through the darktable module.

This documentation for API version 2.0.0-dev.

This documentation was generated with darktable version 1.5+2099~gf477271.

darktable

The darktable library is the main entry point for all access to the darktable internals.

print

type : function( message : string )

Will print a string to the darktable control log (the long overlayed window that appears over the main panel).

message

type : string

The string to display which should be a single line.

print_error

type : function( message : string )

This function will print its parameter if the Lua logdomain is activated. Start darktable with the "-d lua" command line option to enable the Lua logdomain.

message

type : string

The string to display.

register_event

type : function( event_type : string, callback : function, ... : variable )

This function registers a callback to be called when a given event happens.

Events are documented in the event section.

event_type

type : string

The name of the event to register to.

callback

type : function

The function to call on event. The signature of the function depends on the type of event.

...

type : variable

Some events need extra parameters at registration time; these must be specified here.

register_storage

type : function( plugin_name : string, name : string, [ store : function], [ finalize : function], [ supported : function], [ initialize : function] )

This function will add a new storage implemented in Lua.

A storage is a module that is responsible for handling images once they have been generated during export. Examples of core storages include filesystem, e-mail, facebook...

plugin_name

type : string

A Unique name for the plugin.

name

type : string

A human readable name for the plugin.

store

type : function( storage : types.dt_imageio_module_storage_t, image : types.dt_lua_image_t, format : types.dt_imageio_module_format_t, filename : string, number : integer, total : integer, high_quality : boolean, extra_data : table )

This function is called once for each exported image. Images can be exported in parallel but the calls to this function will be serialized.

storage

type : types.dt_imageio_module_storage_t

The storage object used for the export.

image

type : types.dt_lua_image_t

The exported image object.

format

type : types.dt_imageio_module_format_t

The format object used for the export.

filename

type : string

The name of a temporary file where the processed image is stored.

number

type : integer

The number of the image out of the export series.

total

type : integer

The total number of images in the export series.

high_quality

type : boolean

True if the export is high quality.

extra_data

type : table

An empty Lua table to take extra data. This table is common to the initialize, store and finalize calls in an export serie.

finalize

type : function( storage : types.dt_imageio_module_storage_t, image_table : table, extra_data : table )

This function is called once all images are processed and all store calls are finished.

storage

type : types.dt_imageio_module_storage_t

The storage object used for the export.

image_table

type : table

A table keyed by the exported image objects and valued with the corresponding temporary export filename.

extra_data

type : table

An empty Lua table to store extra data. This table is common to all calls to store and the call to finalize in a given export series.

supported

type : function( storage : types.dt_imageio_module_storage_t, format : types.dt_imageio_module_format_t ) : boolean

A function called to check if a given image format is supported by the Lua storage; this is used to build the dropdown format list for the GUI.

Note that the parameters in the format are the ones currently set in the GUI; the user might change them before export.

storage

type : types.dt_imageio_module_storage_t

The storage object tested.

format

type : types.dt_imageio_module_format_t

The format object to report about.

return

type : boolean

True if the corresponding format is supported.

initialize

type : function( storage : types.dt_imageio_module_storage_t, format : types.dt_imageio_module_format_t, images : table of types.dt_lua_image_t, high_quality : boolean, extra_data : table ) : table or nil

A function called before storage happens

This function can change the list of exported functions

storage

type : types.dt_imageio_module_storage_t

The storage object tested.

format

type : types.dt_imageio_module_format_t

The format object to report about.

images

type : table of types.dt_lua_image_t

A table containing images to be exported.

high_quality

type : boolean

True if the export is high quality.

extra_data

type : table

An empty Lua table to take extra data. This table is common to the initialize, store and finalize calls in an export serie.

return

type : table or nil

The modified table of images to export or nil

If nil (or nothing) is returned, the original list of images will be exported

If a table of images is returned, that table will be used instead. The table can be empty. The images parameter can be modified and returned

films

A table containing all the film objects in the database.

#

type : types.dt_lua_film_t

Each film has a numeric entry in the database.

new

type : function( directory : string ) : types.dt_lua_film_t

Creates a new empty film

see darktable.database.import to import a directory with all its images and to add images to a film

directory

type : string

The directory that the new film will represent. The directory must exist

return

type : types.dt_lua_film_t

The newly created film, or the existing film if the directory is already imported

delete

see types.dt_lua_film_t.delete

new_format

type : function( type : string ) : types.dt_imageio_module_format_t

Creates a new format object to export images

type

type : string

The type of format object to create, one of :

return

type : types.dt_imageio_module_format_t

The newly created object. Exact type depends on the type passed

new_storage

type : function( type : string ) : types.dt_imageio_module_storage_t

Creates a new storage object to export images

type

type : string

The type of storage object to create, one of :

return

type : types.dt_imageio_module_storage_t

The newly created object. Exact type depends on the type passed

gui

This subtable contains function and data to manipulate the darktable user interface with Lua.

Most of these function won't do anything if the GUI is not enabled (i.e you are using the command line version darktabl-cli instead of darktable).

action_images

type : table

A table of types.dt_lua_image_t on which the user expects UI actions to happen.

It is based on both the hovered image and the selection and is consistent with the way darktable works.

It is recommended to use this table to implement Lua actions rather than darktable.gui.hovered or darktable.gui.selection to be consistant with darktable's GUI.

hovered

The image under the cursor or nil if no image is hovered.

selection

type : function( [ selection : table of types.dt_lua_image_t] ) : table of types.dt_lua_image_t

Allows to change the set of selected images.
Attributes : implicit_yield

selection

type : table of types.dt_lua_image_t

A table of images which will define the selected images. If this parameter is not given the selection will be untouched. If an empty table is given the selection will be emptied.

return

type : table of types.dt_lua_image_t

A table containing the selection as it was before the function was called.

current_view

type : function( [ view : types.dt_view_t] ) : types.dt_view_t

Allows to change the current view.

view

type : types.dt_view_t

The view to switch to. If empty the current view is unchanged

return

type : types.dt_view_t

the current view

create_job

type : function( text : string, [ percentage : boolean], [ cancel_callback : function] ) : types.dt_lua_backgroundjob_t

Create a new progress_bar displayed in darktable.gui.libs.backgroundjobs

text

type : string

The text to display in the job entry

percentage

type : boolean

Should a progress bar be displayed

cancel_callback

type : function( job : types.dt_lua_backgroundjob_t )

A function called when the cancel button for that job is pressed

note that the job won't be destroyed automatically. You need to set types.dt_lua_backgroundjob_t.valid to false for that

job

type : types.dt_lua_backgroundjob_t

The job who is being cancelded

return

type : types.dt_lua_backgroundjob_t

The newly created job object

views

The different views in darktable

map

The map view
parent : types.dt_view_t

Attributes : has_tostring
latitude
type : number

The latitude of the center of the map
Attributes : write

longitude
type : number

The longitude of the center of the map
Attributes : write

zoom
type : number

The current zoom level of the map
Attributes : write

darkroom

The darkroom view
parent : types.dt_view_t

Attributes : has_tostring

lighttable

The lighttable view
parent : types.dt_view_t

Attributes : has_tostring

tethering

The tethering view
parent : types.dt_view_t

Attributes : has_tostring

slideshow

The slideshow view
parent : types.dt_view_t

Attributes : has_tostring

libs

This table allows to reference all lib objects

lib are the graphical blocks within each view.

To quickly figure out what lib is what, you can use the following code which will make a given lib blink.

local tested_module="global_toolbox" 
dt.gui.libs[tested_module].visible=false
coroutine.yield("wait_ms",2000)
while true do
    dt.gui.libs[tested_module].visible = not dt.gui.libs[tested_module].visible
    coroutine.yield("wait_ms",2000)
end

snapshots

The UI element that manipulates snapshots in darkroom
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 1000
views :
ratio
type : number

The place in the screen where the line separating the snapshot is. Between 0 and 1
Attributes : write

direction
type : types.snapshot_direction_t

The direction of the snapshot overlay
Attributes : write

#
type : types.dt_lua_snapshot_t

The different snapshots for the image

selected

The currently selected snapshot

take_snapshot
type : function(  )

Take a snapshot of the current image and add it to the UI

The snapshot file will be generated at the next redraw of the main window

max_snapshot
type : number

The maximum number of snapshots

styles

The style selection menu
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 599
views :

metadata_view

The widget displaying metadata about the current image
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 299
views :

metadata

The widget allowing modification of metadata fields on the current image
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 510
views :

hinter

The small line of text at the top of the UI showing the number of selected images
container : DT_UI_CONTAINER_PANEL_TOP_CENTER

parent : types.dt_lib_module_t
position : 1
views :

modulelist

The window allowing to set modules as visible/hidden/favorite
container : DT_UI_CONTAINER_PANEL_RIGHT_BOTTOM

parent : types.dt_lib_module_t
position : 1
views :

filmstrip

The filmstrip at the bottom of some views
container : DT_UI_CONTAINER_PANEL_BOTTOM

parent : types.dt_lib_module_t
position : 1001
views :

viewswitcher

The labels allowing to switch view
container : DT_UI_CONTAINER_PANEL_TOP_RIGHT

parent : types.dt_lib_module_t
position : 1001
views :

darktable_label

The darktable logo in the upper left corner
container : DT_UI_CONTAINER_PANEL_TOP_LEFT

parent : types.dt_lib_module_t
position : 1001
views :

tagging

The tag manipulation UI
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 500
views :

geotagging

The geotagging time synchronisation UI
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 450
views :

recentcollect

The recent collection UI element
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 350
views :

global_toolbox

The common tools to all view (settings, grouping...)
container : DT_UI_CONTAINER_PANEL_CENTER_TOP_RIGHT

parent : types.dt_lib_module_t
position : 1001
views :
grouping
type : boolean

The current status of the image grouping option
Attributes : write

show_overlays
type : boolean

the current status of the image overlays option
Attributes : write

filter

The image-filter menus at the top of the UI
container : DT_UI_CONTAINER_PANEL_CENTER_TOP_CENTER

parent : types.dt_lib_module_t
position : 1001
views :

import

The buttons to start importing images
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 999
views :

ratings

The starts to set the rating of an image
container : DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_LEFT

parent : types.dt_lib_module_t
position : 1002
views :

select

The buttons that allow to quickly change the selection
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 800
views :

collect

The collection UI element that allows to filter images by collection
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 400
views :

colorlabels

The color buttons that allow to set labels on an image
container : DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_LEFT

parent : types.dt_lib_module_t
position : 1001
views :

lighttable_mode

The navigation and zoom level UI in lighttable
container : DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_CENTER

parent : types.dt_lib_module_t
position : 1001
views :

copy_history

The UI element that manipulates history
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 600
views :

image

The UI element that manipulates the current image
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 700
views :

modulegroups

The icons describing the different iop groups
container : DT_UI_CONTAINER_PANEL_RIGHT_TOP

parent : types.dt_lib_module_t
position : 999
views :

module_toolbox

The tools on the bottom line of the UI (overexposure)
container : DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_RIGHT

parent : types.dt_lib_module_t
position : 100
views :

session

The session UI when tethering
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 999
views :

histogram

The histogram widget
container : DT_UI_CONTAINER_PANEL_RIGHT_TOP

parent : types.dt_lib_module_t
position : 1001
views :

export

The export menu
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 0
views :

history

The history manipulation menu
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 900
views :

colorpicker

The colorpicker menu
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 800
views :

navigation

The full image preview to allow navigation
container : DT_UI_CONTAINER_PANEL_LEFT_TOP

parent : types.dt_lib_module_t
position : 1001
views :

masks

The masks window
container : DT_UI_CONTAINER_PANEL_LEFT_CENTER

parent : types.dt_lib_module_t
position : 10
views :

view_toolbox

container : DT_UI_CONTAINER_PANEL_CENTER_BOTTOM_LEFT
parent : types.dt_lib_module_t
position : 100
views :

live_view

The liveview window
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 998
views :

map_settings

The map setting window
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 990
views :

camera

The camera selection UI
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 997
views :

location

The location ui
container : DT_UI_CONTAINER_PANEL_RIGHT_CENTER

parent : types.dt_lib_module_t
position : 999
views :

backgroundjobs

The window displaying the currently running jobs
container : DT_UI_CONTAINER_PANEL_LEFT_BOTTOM

parent : types.dt_lib_module_t
position : 1
views :

tags

Allows access to all existing tags.

#

type : types.dt_lua_tag_t

Each existing tag has a numeric entry in the tags table - use ipairs to iterate over them.

create

type : function( name : string )

Creates a new tag and return it. If the tag exists return the existing tag.

name

type : string

The name of the new tag.

find

type : function( name : string ) : types.dt_lua_tag_t

Returns the tag object or nil if the tag doesn't exist.

name

type : string

The name of the tag to find.

return

type : types.dt_lua_tag_t

The tag object or nil.

delete

type : function( tag : types.dt_lua_tag_t )

Deletes the tag object, detaching it from all images.

tag

type : types.dt_lua_tag_t

The tag to be deleted.

attach

type : function( tag : types.dt_lua_tag_t, image : types.dt_lua_image_t )

Attach a tag to an image; the order of the parameters can be reversed.

tag

type : types.dt_lua_tag_t

The tag to be attached.

image

type : types.dt_lua_image_t

The image to attach the tag to.

detach

type : function( tag : types.dt_lua_tag_t, image : types.dt_lua_image_t )

Detach a tag from an image; the order of the parameters can be reversed.

tag

type : types.dt_lua_tag_t

The tag to be detached.

image

type : types.dt_lua_image_t

The image to detach the tag from.

get_tags

type : function( image : types.dt_lua_image_t ) : table of types.dt_lua_tag_t

Gets all tags attached to an image.

image

type : types.dt_lua_image_t

The image to get the tags from.

return

type : table of types.dt_lua_tag_t

A table of tags that are attached to the image.

configuration

type : table

This table regroups values that describe details of the configuration of darktable.

version

type : string

The version number of darktable.

has_gui

type : boolean

True if darktable has a GUI (launched through the main darktable command, not darktable-cli).

verbose

type : boolean

True if the Lua logdomain is enabled.

tmp_dir

type : string

The name of the directory where darktable will store temporary files.

config_dir

type : string

The name of the directory where darktable will find its global configuration objects (modules).

cache_dir

type : string

The name of the directory where darktable will store its mipmaps.

api_version_major

type : number

The major version number of the lua API.

api_version_minor

type : number

The minor version number of the lua API.

api_version_patch

type : number

The patch version number of the lua API.

api_version_suffix

type : string

The version suffix of the lua API.

api_version_string

type : string

The version description of the lua API. This is a string compatible with the semantic versionning convention

check_version

type : function( module name : string, ... : table... )

Check that a module is compatible with the running version of darktable

Add the following line at the top of your module :

darktable.configuration.check(...,{M,m,p},{M2,m2,p2})

To document that your module has been tested with API version M.m.p and M2.m2.p2.

This will raise an error if the user is running a released version of DT and a warning if he is running a developement version

(the ... here will automatically expand to your module name if used at the top of your script

module name

type : string

The name of the module to report on error

...

type : table...

Tables of API versions that are known to work with the scrip

preferences

type : table

Lua allows you do manipulate preferences. Lua has its own namespace for preferences and you can't access nor write normal darktable preferences.

Preference handling functions take a script parameter. This is a string used to avoid name collision in preferences (i.e namespace). Set it to something unique, usually the name of the script handling the preference.

Preference handling functions can't guess the type of a parameter. You must pass the type of the preference you are handling.

Note that the directory, enum and file type preferences are stored internally as string. The user can only select valid values, but a lua script can set it to any string

register

type : function( script : string, name : string, type : types.lua_pref_type, label : string, tooltip : string, [ default : depends on type], [ min : int or float], [ max : int or float], [ step : float], values : string... )

Creates a new preference entry in the Lua tab of the preference screen. If this function is not called the preference can't be set by the user (you can still read and write invisible preferences).

script

type : string

Invisible prefix to guarantee unicity of preferences.

name

type : string

A unique name used with the script part to identify the preference.

type

type : types.lua_pref_type

The type of the preference - one of the string values described above.

label

type : string

The label displayed in the preference screen.

tooltip

type : string

The tooltip to display in the preference menue.

default

type : depends on type

Default value to use when not set explicitely or by the user.

For the enum type of pref, this is mandatory

min

type : int or float

Minimum value (integer and float preferences only).

max

type : int or float

Maximum value (integer and float preferences only).

step

type : float

Step of the spinner (float preferences only).

values

type : string...

Other allowed values (enum preferences only)

read

type : function( script : string, name : string, type : types.lua_pref_type ) : depends on type

Reads a value from a Lua preference.

script

type : string

Invisible prefix to guarantee unicity of preferences.

name

type : string

The name of the preference displayed in the preference screen.

type

type : types.lua_pref_type

The type of the preference.

return

type : depends on type

The value of the preference.

write

type : function( script : string, name : string, type : types.lua_pref_type, value : depends on type )

Writes a value to a Lua preference.

script

type : string

Invisible prefix to guarantee unicity of preferences.

name

type : string

The name of the preference displayed in the preference screen.

type

type : types.lua_pref_type

The type of the preference.

value

type : depends on type

The value to set the preference to.

styles

This pseudo table allows you to access and manipulate styles.

#

type : types.dt_style_t

Each existing style has a numeric index; you can iterate them using ipairs.

create

type : function( image : types.dt_lua_image_t, name : string, description : string ) : types.dt_style_t

Create a new style based on an image.

image

type : types.dt_lua_image_t

The image to create the style from.

name

type : string

The name to give to the new style.

description

type : string

The description of the new style.

return

type : types.dt_style_t

The new style object.

delete

type : function( style : types.dt_style_t )

Deletes an existing style.

style

type : types.dt_style_t

the style to delete

duplicate

type : function( style : types.dt_style_t, name : string, description : string ) : types.dt_style_t

Create a new style based on an existing style.

style

type : types.dt_style_t

The style to base the new style on.

name

type : string

The new style's name.

description

type : string

The new style's description.

return

type : types.dt_style_t

The new style object.

apply

type : function( style : types.dt_style_t, image : types.dt_lua_image_t )

Apply a style to an image. The order of parameters can be inverted.

style

type : types.dt_style_t

The style to use.

image

type : types.dt_lua_image_t

The image to apply the style to.

import

type : function( filename : string )

Import a style from an external .dtstyle file

filename

type : string

The file to import

export

type : function( style : types.dt_style_t, directory : string, overwrite : boolean )

Export a style to an external .dtstyle file

style

type : types.dt_style_t

The style to export

directory

type : string

The directory to export to

overwrite

type : boolean

Is overwriting an existing file allowed

database

Allows to access the database of images. Note that duplicate images (images with the same RAW but different XMP) will appear multiple times with different duplicate indexes. Also note that all images are here. This table is not influenced by any GUI filtering (collections, stars etc...).

#

type : types.dt_lua_image_t

Each image in the database appears with a numerical index; you can interate them using ipairs.

duplicate

type : function( image : types.dt_lua_image_t ) : types.dt_lua_image_t

Creates a duplicate of an image and returns it.

image

type : types.dt_lua_image_t

the image to duplicate

return

type : types.dt_lua_image_t

The created image if an image is imported or the toplevel film object if a film was imported.

import

type : function( location : string )

Imports new images into the database.

location

type : string

The filename or directory to import images from.

NOTE: If the images are set to be imported recursively in preferences only the toplevel film is returned (the one whose path was given as a parameter).

NOTE2: If the parameter is a directory the call is non-blocking; the film object will not have the newly imported images yet. Use a post-import-film filtering on that film to react when images are actually imported.

move_image

type : function( image : types.dt_lua_image_t, film : types.dt_lua_film_t )

Physically moves an image (and all its duplicates) to another film.

This will move the image file, the related XMP and all XMP for the duplicates to the directory of the new film

Note that the parameter order is not relevant.

image

type : types.dt_lua_image_t

The image to move

film

type : types.dt_lua_film_t

The film to move to

copy_image

type : function( image : types.dt_lua_image_t, film : types.dt_lua_film_t ) : types.dt_lua_image_t

Physically copies an image to another film.

This will copy the image file and the related XMP to the directory of the new film

If there is already a file with the same name as the image file, it wil create a duplicate from that file instead

Note that the parameter order is not relevant.

image

type : types.dt_lua_image_t

The image to copy

film

type : types.dt_lua_film_t

The film to copy to

return

type : types.dt_lua_image_t

The new image

delete

see types.dt_lua_image_t.delete

debug

type : table

This section must be activated separately by calling

require "darktable.debug"

dump

type : function( object : anything, [ name : string], [ known : table] ) : string

This will return a string describing everything Lua knows about an object, used to know what an object is.

This function is recursion-safe and can be used to dump _G if needed.

object

type : anything

The object to dump.

name

type : string

A name to use for the object.

known

type : table

A table of object,string pairs. Any object in that table will not be dumped, the string will be printed instead.

defaults to darktable.debug.known if not set

return

type : string

A string containing a text description of the object - can be very long.

debug

type : boolean

Initialized to false; set it to true to also dump information about metatables.

max_depth

type : number

Initialized to 10; The maximum depth to recursively dump content.

known

type : table

A table containing the default value of darktable.debug.dump.known

type

type : function( object : anything ) : string

Similar to the system function type() but it will return the real type instead of "userdata" for darktable specific objects.

object

type : anything

The object whos type must be reported.

return

type : string

A string describing the type of the object.

types

This section documents types that are specific to darktable's Lua API.

dt_lua_image_t

type : dt_type

Image objects represent an image in the database. This is slightly different from a file on disk since a file can have multiple developements.

Note that this is the real image object; changing the value of a field will immediately change it in darktable and will be reflected on any copy of that image object you may have kept.
Attributes : has_tostring

attach_tag

see darktable.tags.attach

detach_tag

see darktable.tags.detach

get_tags

see darktable.tags.get_tags

create_style

see darktable.styles.create

apply_style

see darktable.styles.apply

duplicate

see darktable.database.duplicate

move

see darktable.database.move_image

copy

see darktable.database.copy_image

id

type : number

A unique id identifying the image in the database.

path

type : string

The file the directory containing the image.

film

type : types.dt_lua_film_t

The film object that contains this image.

filename

type : string

The filename of the image.

duplicate_index

type : number

If there are multiple images based on a same file, each will have a unique number, starting from 0.

publisher

type : string

The publisher field of the image.
Attributes : write

title

type : string

The title field of the image.
Attributes : write

creator

type : string

The creator field of the image.
Attributes : write

rights

type : string

The rights field of the image.
Attributes : write

description

type : string

The description field for the image.
Attributes : write

exif_maker

type : string

The maker exif data.
Attributes : write

exif_model

type : string

The camera model used.
Attributes : write

exif_lens

type : string

The id string of the lens used.
Attributes : write

exif_aperture

type : number

The aperture saved in the exif data.
Attributes : write

exif_exposure

type : number

The exposure time of the image.
Attributes : write

exif_focal_length

type : number

The focal length of the image.
Attributes : write

exif_iso

type : number

The iso used on the image.
Attributes : write

exif_datetime_taken

type : string

The date and time of the image.
Attributes : write

exif_focus_distance

type : number

The distance of the subject.
Attributes : write

exif_crop

type : number

The exif crop data.
Attributes : write

latitude

GPS latitude data of the image, nil if not set.
Attributes : write

longitude

GPS longitude data of the image, nil if not set.
Attributes : write

is_raw

type : boolean

True if the image is a RAW file.

is_ldr

type : boolean

True if the image is a ldr image.

is_hdr

type : boolean

True if the image is a hdr image.

width

type : number

The width of the image.

height

type : number

The height of the image.

rating

type : number

The rating of the image (-1 for rejected).
Attributes : write

red

type : boolean

True if the image has the corresponding colorlabel.
Attributes : write

blue

see types.dt_lua_image_t.red

green

see types.dt_lua_image_t.red

yellow

see types.dt_lua_image_t.red

purple

see types.dt_lua_image_t.red

reset

type : self:function(  )

Removes all processing from the image, reseting it back to its original state

self

type : types.dt_lua_image_t

The image whose history will be deleted

delete

type : self:function(  )

Removes an image from the database

self

type : types.dt_lua_image_t

The image to remove

group_with

type : self:function( [ image : types.dt_lua_image_t] )

Puts the first image in the same group as the second image. If no second image is provided the image will be in its own group.

self

type : types.dt_lua_image_t

The image whose group must be changed.

image

type : types.dt_lua_image_t

The image we want to group with.

make_group_leader

type : self:function(  )

Makes the image the leader of its group.

self

type : types.dt_lua_image_t

The image we want as the leader.

get_group_members

type : self:function(  ) : table of types.dt_lua_image_t

Returns a table containing all types.dt_lua_image_t of the group. The group leader is both at a numeric key and at the "leader" special key (so you probably want to use ipairs to iterate through that table).

self

type : types.dt_lua_image_t

The image whose group we are querying.

return

type : table of types.dt_lua_image_t

A table of image objects containing all images that are in the same group as the image.

group_leader

type : types.dt_lua_image_t

The image which is the leader of the group this image is a member of.

local_copy

type : boolean

True if the image has a copy in the local cache
Attributes : write

drop_cache

type : self:function(  )

drops the cached version of this image.

This function should be called if an image is modified out of darktable to force DT to regenerate the thumbnail

Darktable will regenerate the thumbnail by itself when it is needed

self

type : types.dt_lua_image_t

The image whose cache must be droped.

dt_imageio_module_format_t

type : dt_type

A virtual type representing all format types.

plugin_name

type : string

A unique name for the plugin.

name

type : string

A human readable name for the plugin.

extension

type : string

The typical filename extension for that format.

mime

type : string

The mime type associated with the format.

max_width

type : number

The max width allowed for the format (0 = unlimited).
Attributes : write

max_height

type : number

The max height allowed for the format (0 = unlimited).
Attributes : write

write_image

type : self:function( image : types.dt_lua_image_t, filename : string ) : boolean

Exports an image to a file. This is a blocking operation that will not return until the image is exported.
Attributes : implicit_yield

self

type : types.dt_imageio_module_format_t

The format that will be used to export.

image

type : types.dt_lua_image_t

The image object to export.

filename

type : string

The filename to export to.

return

type : boolean

Returns true on success.

dt_imageio_module_format_data_png

type : dt_type

Type object describing parameters to export to png.
parent : types.dt_imageio_module_format_t

bpp

type : number

The bpp parameter to use when exporting.
Attributes : write

dt_imageio_module_format_data_tiff

type : dt_type

Type object describing parameters to export to tiff.
parent : types.dt_imageio_module_format_t

bpp

type : number

The bpp parameter to use when exporting.
Attributes : write

dt_imageio_module_format_data_exr

type : dt_type

Type object describing parameters to export to exr.
parent : types.dt_imageio_module_format_t

compression

type : string

The compression parameter to use when exporting.
Attributes : write

dt_imageio_module_format_data_copy

type : dt_type

Type object describing parameters to export to copy.
parent : types.dt_imageio_module_format_t

dt_imageio_module_format_data_pfm

type : dt_type

Type object describing parameters to export to pfm.
parent : types.dt_imageio_module_format_t

dt_imageio_module_format_data_jpeg

type : dt_type

Type object describing parameters to export to jpeg.
parent : types.dt_imageio_module_format_t

quality

type : number

The quality to use at export time.
Attributes : write

dt_imageio_module_format_data_ppm

type : dt_type

Type object describing parameters to export to ppm.
parent : types.dt_imageio_module_format_t

dt_imageio_module_format_data_webp

type : dt_type

Type object describing parameters to export to webp.
parent : types.dt_imageio_module_format_t

quality

type : number

The quality to use at export time.
Attributes : write

comp_type

type : types.comp_type_t

The overall quality to use; can be one of "webp_lossy" or "webp_lossless".
Attributes : write

hint

type : types.hint_t

A hint on the overall content of the image.
Attributes : write

dt_imageio_module_format_data_j2k

type : dt_type

Type object describing parameters to export to jpeg2000.
parent : types.dt_imageio_module_format_t

quality

type : number

The quality to use at export time.
Attributes : write

bpp

type : number

The bpp parameter to use when exporting.
Attributes : write

format

type : types.dt_imageio_j2k_format_t

The format to use.
Attributes : write

preset

type : types.dt_imageio_j2k_preset_t

The preset to use.
Attributes : write

dt_imageio_module_storage_t

type : dt_type

A virtual type representing all storage types.

plugin_name

type : string

A unique name for the plugin.
Attributes : write

name

type : string

A human readable name for the plugin.
Attributes : write

width

type : number

The currently selected width for the plugin.
Attributes : write

height

type : number

The currently selected height for the plugin.
Attributes : write

recommended_width

type : number

The recommended width for the plugin.
Attributes : write

recommended_height

type : number

The recommended height for the plugin.
Attributes : write

supports_format

type : self:function( format : types.dt_imageio_module_format_t ) : boolean

Checks if a format is supported by this storage.

self

type : types.dt_imageio_module_storage_t

The storage type to check against.

format

type : types.dt_imageio_module_format_t

The format type to check.

return

type : boolean

True if the format is supported by the storage.

dt_imageio_module_storage_data_email

type : dt_type

An object containing parameters to export to email.
parent : types.dt_imageio_module_storage_t

dt_imageio_module_storage_data_flickr

type : dt_type

An object containing parameters to export to flickr.
parent : types.dt_imageio_module_storage_t

dt_imageio_module_storage_data_facebook

type : dt_type

An object containing parameters to export to facebook.
parent : types.dt_imageio_module_storage_t

dt_imageio_module_storage_data_latex

type : dt_type

An object containing parameters to export to latex.
parent : types.dt_imageio_module_storage_t

filename

type : string

The filename to export to.
Attributes : write

title

type : string

The title to use for export.
Attributes : write

dt_imageio_module_storage_data_picasa

type : dt_type

An object containing parameters to export to picasa.
parent : types.dt_imageio_module_storage_t

type : dt_type

An object containing parameters to export to gallery.
parent : types.dt_imageio_module_storage_t

filename

type : string

The filename to export to.
Attributes : write

title

type : string

The title to use for export.
Attributes : write

dt_imageio_module_storage_data_disk

type : dt_type

An object containing parameters to export to disk.
parent : types.dt_imageio_module_storage_t

filename

type : string

The filename to export to.
Attributes : write

dt_lua_film_t

type : dt_type

A film in darktable; this represents a directory containing imported images.
Attributes : has_tostring

move_image

see darktable.database.move_image

copy_image

see darktable.database.copy_image

#

type : types.dt_lua_image_t

The different images within the film.

id

type : number

A unique numeric id used by this film.
Attributes : write

path

type : string

The path represented by this film.
Attributes : write

delete

type : self:function( [ force : Boolean] )

Removes the film from the database.

self

type : types.dt_lua_film_t

The film to remove.

force

type : Boolean

Force removal, even if the film is not empty.

dt_style_t

type : dt_type

A style that can be applied to an image.
Attributes : has_tostring

delete

see darktable.styles.delete

duplicate

see darktable.styles.duplicate

apply

see darktable.styles.apply

export

see darktable.styles.export

name

type : string

The name of the style.

description

type : string

The description of the style.

#

type : types.dt_style_item_t

The different items that make the style.

dt_style_item_t

type : dt_type

An element that is part of a style.
Attributes : has_tostring

name

type : string

The name of the style item.

num

type : number

The position of the style item within its style.

dt_lua_tag_t

type : dt_type

A tag that can be attached to an image.
Attributes : has_tostring

delete

see darktable.tags.delete

attach

see darktable.tags.attach

detach

see darktable.tags.detach

name

type : string

The name of the tag.

#

type : types.dt_lua_image_t

The images that have that tag attached to them.

dt_lib_module_t

type : dt_type

The type of a UI lib

id

type : string

A unit string identifying the lib

name

type : string

The translated title of the UI element

version

type : number

The version of the internal data of this lib

visible

type : boolean

Allow to make a lib module completely invisible to the user.

Note that if the module is invisible the user will have no way to restore it without lua
Attributes : implicit_yield write

container

type : types.dt_ui_container_t

The location of the lib in the darktable UI

expandable

type : boolean

True if the lib can be expanded/retracted

expanded

type : boolean

True if the lib is expanded
Attributes : write

position

type : number

A value deciding the position of the lib within its container

views

type : table

A table of all the views that display this widget

reset

type : self:function(  )

A function to reset the lib to its default values

This function will do nothing if the lib is not visible or can't be reset

self

type : types.dt_lib_module_t

The lib to reset

on_screen

type : boolean

True if the lib is currently visible on the screen

dt_view_t

type : dt_type

A darktable view

id

type : string

A unique string identifying the view

name

type : string

The name of the view

dt_lua_backgroundjob_t

type : dt_type

A lua-managed entry in the backgroundjob lib

percent

type : number

The value of the progress bar, between 0 and 1. will return nil if there is no progress bar, will raise an error if read or written on an invalid job
Attributes : write

valid

type : boolean

True if the job is displayed, set it to false to destroy the entry

An invalid job cannot be made valid again
Attributes : write

dt_lua_snapshot_t

type : dt_type

The description of a snapshot in the snapshot lib
Attributes : has_tostring

filename

type : string

The filename of an image containing the snapshot

select

type : self:function(  )

Activates this snapshot on the display. To deactivate all snapshot you need to call this function on the active snapshot

self

type : types.dt_lua_snapshot_t

The snapshot to activate

name

type : string

The name of the snapshot, as seen in the UI

hint_t

type : enum

a hint on the way to encode a webp image
values :

dt_ui_container_t

type : enum

A place in the darktable UI where a lib can be placed
values :

snapshot_direction_t

type : enum

Which part of the main window is occupied by a snapshot
values :

dt_imageio_j2k_format_t

type : enum

J2K format type
values :

dt_imageio_j2k_preset_t

type : enum

J2K preset type
values :

yield_type

type : enum

What type of event to wait for
values :

comp_type_t

type : enum

Type of compression for webp
values :

lua_pref_type

type : enum

The type of value to save in a preference
values :

dt_imageio_exr_compression_t

type : enum

undocumented types.dt_imageio_exr_compression_t
values :

events

This section documents events that can be used to trigger Lua callbacks.

intermediate-export-image

type : event

This event is called each time an image is exported, once for each image after the image has been processed to an image format but before the storage has moved the image to its final destination.

callback

type : function( event : string, image : types.dt_lua_image_t, filename : string, format : types.dt_imageio_module_format_t, storage : types.dt_imageio_module_storage_t )

event

type : string

The name of the event that triggered the callback.

image

type : types.dt_lua_image_t

The image object that has been exported.

filename

type : string

The name of the file that is the result of the image being processed.

format

type : types.dt_imageio_module_format_t

The format used to export the image.

storage

type : types.dt_imageio_module_storage_t

The storage used to export the image (can be nil).

extra_registration_parameters

This event has no extra registration parameters.

post-import-image

type : event

This event is triggered whenever a new image is imported into the database.

This event can be registered multiple times, all callbacks will be called.

callback

type : function( event : string, image : types.dt_lua_image_t )

event

type : string

The name of the event that triggered the callback.

image

type : types.dt_lua_image_t

The image object that has been exported.

extra_registration_parameters

This event has no extra registration parameters.

shortcut

type : event

This event registers a new keyboad shortcut. The shortcut isn't bound to any key until the users does so in the preference panel.

The event is triggered whenever the shortcut is triggered.
This event can only be registered once per value of shortcut.

callback

type : function( event : string, shortcut : string )

event

type : string

The name of the event that triggered the callback.

shortcut

type : string

The tooltip string that was given at registration time.

extra_registration_parameters

tooltip

type : string

The string that will be displayed on the shortcut preference panel describing the shortcut.

post-import-film

type : event

This event is triggered when an film import is finished (all post-import-image callbacks have already been triggered). This event can be registered multiple times.

callback

type : function( event : string, film : types.dt_lua_film_t )

event

type : string

The name of the event that triggered the callback.

film

type : types.dt_lua_film_t

The new film that has been added. If multiple films were added recursively only the top level film is reported.

extra_registration_parameters

This event has no extra registration parameters.

view-changed

type : event

This event is triggered after the user changed the active view

callback

type : function( old_view : types.dt_view_t, new_view : types.dt_view_t )

old_view

type : types.dt_view_t

The view that we just left

new_view

type : types.dt_view_t

The view we are now in

extra_registration_parameters

This event has no extra registration parameters.

global_toolbox-grouping_toggle

type : event

This event is triggered after the user toggled the grouping button.

callback

type : function( toggle : boolean )

toggle

type : boolean

the new grouping status.

extra_registration_parameters

This event has no extra registration parameters.

global_toolbox-overlay_toggle

type : event

This event is triggered after the user toggled the overlay button.

callback

type : function( toggle : boolean )

toggle

type : boolean

the new overlay status.

extra_registration_parameters

This event has no extra registration parameters.

attributes

This section documents various attributes used throughout the documentation.

write

This object is a variable that can be written to.

has_tostring

This object has a specific reimplementation of the "tostring" method that allows pretty-printing it.

implicit_yield

This call will release the Lua lock while executing, thus allowing other Lua callbacks to run.

parent

This object inherits some methods from another object. You can call the methods from the parent on the child object

system

This section documents changes to system functions.

coroutine

yield

type : function( type : types.yield_type, extra : variable ) : variable

Lua functions can yield at any point. The parameters and return types depend on why we want to yield.

A callback that is yielding allows other Lua code to run.

type

type : types.yield_type

The type of yield.

extra

type : variable

An extra parameter: integer for "wait_ms", open file for "file_readable", string for "run_command".

return

type : variable

Nothing for "wait_ms" and "file_readable"; the returned code of the command for "run_command".


LuaScripts for darktable 1.4

This page is a list of scripts provided by beta testers of the lua API. There is no guarentee whatsoever that they will work. The API is still in beta and might have changed since the script was uploaded.

This page contains scripts for version 1.4 of darktable.

For scripts for version 1.6 and above, see the separate github repository

mosaic.lua Simple mosaic script

This script is an example of storage implemented in lua. This is not complete nor polished but it shows how to implement a storage module in lua.

the script must be saved in ~/.config/darktable/lua/ (the directory might not exist)

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "mosaic"

a new entry mosaic generator will be added to the storage list. Using it will create a mosaic of selected images in a temporary directory

thanks to hal_from_2001 for the idea an the original implementation

(gm montage?)

save_selection.lua Selection manipulation shortcuts

This script will add a couple of shortcuts to help manipulate selection.

the script must be saved in ~/.config/darktable/lua/ (the directory might not exist)

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "save_selection"

These shortcuts allow you to save and restore the current selection to/from five different save bufffers.

There is also a shortcut to exchange the current selection with the content of a fast buffer.

hugin.lua Call hugin panorama stitcher

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "hugin"

Select input images for a panorama, call this and proceed in hugin.

reject_removed.lua Rejects removed images

Select some images, export them, manually delete some exported images, then call this script - it will mark removed [exported] images as rejected.

tagmanipulation.lua Copy attach and detach tags from images

Three shortcuts will be registered for copying, attaching and detaching tags. You have to assign the shortcut keys within the configuration tap shortcuts -> Lua. Select one image and copy the tags by hitting your shortcut. Select images and hit your shortcut for attaching tags to single or multiple images. You can detach all tags from an image execpt those containing 'darktable' with the 3rd shortcut.

gps_select.lua Select all images with or without GPS informations

Two shortcuts will be registered for selecting images with or without GPS information. You have to assign the shortcut keys within the configuration tap shortcuts -> Lua.

the script must be saved in ~/.config/darktable/lua/ (the directory might not exist)

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "gps_select"

kml_export.lua KML Export of GeoTaged Images

This script adds the new export "KML export". The export creates a KML file and thumbnails of all exported images.
In the Lua options tab in the options you can set the export folder, if you want a path connecting the images and if you want to open the file after export.

To use this script you need the Xdg-utils and ImageMagick installed. The KML files can be opened with GoogleEarth or Marble.

the script must be saved in ~/.config/darktable/lua/ (the directory might not exist)

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "kml_export"

calcDistance.lua Calculate the distance from latitude and longitude in km

  1. Save the script in ~/.config/darktable/lua/ (the directory might not exist)
  2. Add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)
    require "calcDistance"
  3. Assign the shortcut keys within the configuration tab Shortcuts -> Lua.
  4. Select or highlight two images and hit your shortcut to calculate the distance between the images.

videot.lua Video export

This script adds the new export "Video Export". The export creates a video of all exported images.
In the Lua options tab in the options you can set the export folder, the frames per second and if you want to open the file after export.

To use this script you need the Xdg-utils and mencoder installed.

the script must be saved in ~/.config/darktable/lua/ (the directory might not exist)

add the following line in the file ~/.config/darktable/luarc (again, the file might not exist)

require "video"

readtagsfromfile.lua Read tags from textfile and create new tags in darktable

One shortcut will be registered for reading tags from inputfile ".config/darktable/tagfile.txt". You have to assign the shortcut key within the configuration tap shortcuts -> Lua. Select image and hit your shortcut for the script. The new tags appear in the taglist. There is no correlation to selected images. Please change path to file in the script according to your need.

the script must be saved in ~/.config/darktable/lua/

add the following line in the file ~/.config/darktable/luarc

require "readtagsfromfile"

comfort_ratings.lua Decrease / Increase star ratings on key press

  1. Save the script in ~/.config/darktable/lua/
  2. Add the following line to the file ~/.config/darktable/luarc
    require "comfort_ratings"
  3. Assign the shortcut keys within the configuration tab Shortcuts -> Lua.
  4. Select or highlight image(s) and hit your shortcut to decrease/increase the current star rating.

selectgroup.lua Extend selection to all images grouped with the current images

  1. Save the script in ~/.config/darktable/lua/
  2. Add the following line to the file ~/.config/darktable/luarc
    require "selectgroup"
  3. Assign the shortcut keys within the configuration tab Shortcuts -> Lua.
  4. Select or highlight image(s) and hit your shortcut to extend your selection to all images grouped with the selected/highlighted images.

pentax-lens-fix.lua Fixes EXIF lens description for Tokina AT-X Pro AF 28-70 f/2.8 and Sigma 30mm f/1.4 EX DC on Pentax

  1. Save the script in ~/.config/darktable/lua/
  2. Add the following line to the file ~/.config/darktable/luarc
 require "pentax-lens-fix" 
  1. Assign the shortcut keys within the configuration tab Shortcuts -> Lua.
  2. Select or highlight image(s) and hit your shortcut to change the EXIF lens information.

LuaUsage

This page documents the principles of lua developement.

A note about beta

The lua API is still in beta. This has multiple implications you should be aware of when writing lua code

Basic principles

At startup, darktable will run two lua scripts

This is the only time darktable will run lua scripts by itself. Scripts can register callbacks to perform actions. See the corresponding section in LuaAPI

Debugging lua code

enabling log

the first step to debugging lua is to enable lua logging. this is is done by enabling the lua logdomain with the command line argument -d lua

analyzing data

Darktable provides some debugging helpers. Below is an example

dt_debug = require "darktable.debug" 
dt_debug.debug.debug = true

print(dt_debug.dump(_G,"Global environement")

the main function provided is darktable.debug.dump(object,name) This function returns a string that describes object. The object can be anything and this function will use its knowledge of the DT API to be smart about the type of objects

the boolean variable darktable.debug.debug is a boolean initialized to false. When this variable is true, dt_debug.dump will also dump metatables for objects. You usually only want to see this to debug the internals of darktable's lua API

debugging unnprotected calls

when experimenting with lua, darktable might crash with the following message :

PANIC: unprotected error in call to Lua API (some message here)

this is always a bug in the lua API. Please open a bug report and attach the script that caused it to the bug report

Handling scripts

darktable will look for lua modules in the system provided lua path, but it will also look into the following places

In other words, if you place a file called c.lua in the directory ~/.config/darktable/lua/a/b/ then require "a.b.c" will find your script.

The normal way to install a script is to copy it in ~/.config/darktable/lua/ then adding a require line to the file ~/.config/darktable/luarc

Yielding from lua code

Lua code in DT is allowed to yield (see the yield system call in the lua documentation)

Lua code that yields allows other lua callbacks to run, be aware of that

It is important to yield whenever you have some code that you expect to block to allow other lua code to run.

In particular you should always yield when calling an external program, particularly if it's a long, image processing task.

see LuaAPI for details about the syntax of the yield call in Darktable


General concept about masks in darktable

PRINCIPLES:

DEFINITIONS:

DERIVED PRINCIPLES:

DETAILS:

  1. The mask itself (the bitmap) is not stored in the db, only the parameters of the mask generators
  2. Masks are used as soon as the blend mode of an iop is not "off".
  3. The mask manager module should be the central point to work with masks.
  4. The blendif mask generator is special in one way: splines get created by the user and can have arbitrary forms, the blendif settings depend on the actual pixel data of a module. therefore a masks derived from splines can easily be reused while the reusing of a mask created with blendif need special consideration from the user. It has to be clear that a mask generated from blendif can be copied to another iop, but only the mask is reused, not the blendif generator.
  5. Since masks are living outside of the modules the masks manager has to be located in the left panel of the darkroom.
  6. Working with masks includes creating masks, editing masks, (re-) naming masks, duplicating masks, importing masks, linking masks, exporting masks and combining multiple mask generators or masks into new compound masks.
  7. The mask module also needs to make it easy to see a list of all masks of the image, to identify the masks and relating mask generators and possibly to filter masks (used/unused, linked ...).
  8. Linked masks and masks generators allow multiple iops to share the exact same mask and mask generators, editing the mask in one iop is also changing all linked instances.
  9. Every module that allows mask usage can have either no or exactly one mask assigned at any point in time.
  10. The GUI should be as simple as possible while being as informative as possible. It should be enough to add a single dropdown field which contains all current masks and mask generators -- including mask generators of mask groups, possibly in tree form -- and an entry for "no mask". If a mask is used, the field could read "2 shapes + blendif" for example, maybe a better solution can be found.
  11. The usage of masks may not limit the usage of blending, both methods to influence the result of a module have to be usable at the same time in a single module.
  12. When duplicating mask generator groups, the whole stack of elements has to be duplicated.
  13. When editing a mask on canvas, only the edited mask is to be shown. however, when editing mask generator groups, all elements of the group have to be shown, but only the controls of the currently edited mask generator.
  14. In order to be able to create complex masks from simple mask generators the mask generators have to be able to punch holes into other masks. Either by explicitly setting mask modes for mask generators in groups or by other means. This together with groups allows to combine masks using boolean operations.
  15. Masks have to support feathering. the falloff has to be controllable. for circles a single value for the whole mask might be enough, for curve mask generators this has to be configurable individually for different parts of the mask (one way would be to have the setting per node).
  16. Possible types for vector mask generators include circles and freeform masks. the latter have to support both curved line segments as well as straight borders, and both cups nodes as well as round nodes. fancy forms like stars are not needed, may however be provided as predefined shapes.
  17. In the future there should be support for a "draw masks" generator. It should not store the bitmap mask but vectorize the strokes. The way to do that should be a curve for the center of the stroke together with the width of the stroke, adjustable at every position of the line (similar to the falloff). Pressure readings from the input device should be used for the stroke width and/or falloff when possible.
  18. It should be possible to bake mask groups into a single mask, provided the implementation allows it.
  19. It might be worthwhile to use svg syntax to store paths (at least for export/import) so that they can be used in external programs like inkscape. Care has to be taken however to correctly import masks that come from an external application and that contain features we don't support in our user interface.
  20. In general masks have to be transformation aware (they have to cover the same part of the image before and after lens correction). however there should be a way to make masks "static" for when they don't follow image features but have a meaning of their own (for example letters or a logo). this should be exposed in the masks manager with a toggle able lock icon or something similar.

Streamlining the UI for masks

Currently all drawn mask types (circle, brush, etc.) use some kind of key+mouse wheel combination to change the attributes of that mask. To streamline the UI for the upcoming 1.4 release, which is the first "public" release with masks, the combination should be standardized if possible.

Current Situation

Circle
  1. ctrl + scroll to adjust the opacity
  2. scroll inside of form to adjust the total size
  3. scroll inside of the feather area of form to adjust the size of the feather
  4. right click on form to deleted the mask
Ellipse
  1. ctrl + scroll to adjust the opacity
  2. ctrl + click&drag in vicinity of form to adjust the orientation
  3. click & drag on node to adjust the eccentricity
  4. scroll inside of form to adjust the total size
  5. scroll inside of the feather area of form to adjust the size of the feather
  6. right click on form to deleted the mask
Polygon
  1. ctrl + scroll to adjust the opacity
  2. scroll inside of form to adjust the total size
  3. scroll inside of the feather area of form to adjust the size of the feather
  4. click & drag on node of the main form to adjust the position of the node
  5. click & drag on node of the feather form to adjust the width of the feather at the selected node
  6. click & drag on segment to adjust the position of the segment
  7. click & drag on handle of selected node to adjust the curvature of the node
  8. ctrl + scroll to adjust the opacity
  9. ctrl + click on segment to add a new node
  10. ctrl + click on node to toggle between sharp corner or bezier corner
  11. right click on node to deleted this node
  12. right click on segment to deleted the mask
Gradient
  1. ctrl + scroll to adjust the opacity
  2. scroll in the vicinity of one line (either middle line or feather line) to adjust the feather width
  3. click & drag on handle to adjust the rotation of the gradient
  4. click & drag in the vicinity of one of the lines to adjust the position of the mask
  5. right click in the vicinity of one line (either middle line or feather line) to deleted the mask
Brush
  1. ctrl + scroll to adjust the opacity
    Before painting:
  2. scroll to adjust the total size
  3. shift + scroll to adjust the ratio solid <-> feather area
    After painting:
  4. scroll inside of the feather area of mask (more in vicinity of the feather line) to adjust the size of the feather
  5. scroll inside of the feather area of mask (in vicinity of the main line) to adjust the ratio solid <-> feather area
  6. right click in the vicinity of one line (either middle line or feather line) to deleted the mask
  7. click & drag on node of the main form to adjust the position of the node
  8. click & drag on segment to adjust the position of the segment
  9. click & drag on handle of selected node to adjust the curvature of the node
  10. ctrl + click on segment to add a new node
  11. right click on node to deleted this node
  12. right click in the vicinity of one line (either middle line or feather line) to deleted the mask

Problem

As listed above, the usage of the key + mouse combinations differ from mask to mask. This can irritate new users and will lead to a lot of questions to which the answer is always "rtfm". This could be avoided if the UI can be standardized.

First proposal for changes:

Use the same control scheme for as much mask types (and similar iops maybe):
  1. ctrl + scroll to adjust the opacity - Already implemented for all mask types
  2. Always use simple scroll for the size adjustment of the form and only for the complete form (which means dotted line for brush mask) - The decision which element to resize by hovering near one of the elements can be quite frustrating especially for the polygon mask and the brush mask.
  3. Always use shift + scroll for the adjustment of the feather area or ratio solid <-> feather - This simplifies the work and solves the problem above that sometimes the right selection of an element (form or feather area) by hovering is difficult for some masks.
  4. Always use shift + click & drag to adjust the orientation of a form - Advantage: the handles of the gradient mask can be eliminated. This could also be used for other iops like the GND.
  5. Similar to ctrl + click to add a node in a segment, use ctrl + right click to delete a node - it often happens that the whole form is deleted if you don't hit the node you wish to delete.
  6. Merge circle and ellipse - use ctrl + click on node to set eccentricity like a circle and use shift + click & drag to adjust the rotation - Advantage: One icon less.
  7. Add in changing mouse icons - For example pointer with "+" sign if ctrl is pressed and hovering over a segment where a node can be added. Or a pointer with a rotation symbol if the form can be rotated if ctrl is pressed.

It may be useful to copy some general behavior from the darktable ui to masks:
For example shift + double click to reset the feather area or ratio solid <-> feather area

Situation after proposal

Circle - merged with ellipse
Ellipse - including circle
  1. ctrl + scroll to adjust the opacity
  2. shift + click & drag in vicinity of form to adjust the orientation
  3. click & drag on node to adjust the eccentricity
  4. ctrl + click on node to reset the eccentricity to "circle"
  5. scroll inside of form to adjust the total size
  6. shift + scroll inside of form to adjust the size of the feather
  7. right click on form to deleted the mask
Polygon
  1. ctrl + scroll to adjust the opacity
  2. scroll inside of form to adjust the total size
  3. shift + scroll inside of the feather area of form to adjust the size of the feather
  4. click & drag on node of the main form to adjust the position of the node
  5. click & drag on node of the feather form to adjust the width of the feather at the selected node
  6. click & drag on segment to adjust the position of the segment
  7. click & drag on handle of selected node to adjust the curvature of the node
  8. ctrl + scroll to adjust the opacity
  9. ctrl + click on segment to add a new node
  10. ctrl + click on node to toggle between sharp corner or bezier corner
  11. ctrl + right click on node to deleted this node
  12. right click on segment to deleted the mask
Gradient
  1. ctrl + scroll to adjust the opacity
  2. scroll or shift + scroll in the vicinity of one line (either middle line or feather line) to adjust the feather width - One could argue that the "size" of the gradient is indeed the feather area
  3. shift + click & drag to adjust the rotation of the gradient
  4. click & drag in the vicinity of one of the lines to adjust the position of the mask
  5. right click in the vicinity of one line (either middle line or feather line) to deleted the mask
Brush
  1. ctrl + scroll to adjust the opacity
    Before painting:
  2. scroll to adjust the total size
  3. shift + scroll to adjust the ratio solid <-> feather area
    After painting:
  4. scroll inside of the feather area of mask to adjust the size of the feather
  5. shift + scroll inside of the feather area of mask to adjust the ratio solid <-> feather area
  6. right click in the vicinity of one line (either middle line or feather line) to deleted the mask
  7. click & drag on node of the main form to adjust the position of the node
  8. click & drag on segment to adjust the position of the segment
  9. click & drag on handle of selected node to adjust the curvature of the node
  10. ctrl + click on segment to add a new node
  11. ctrl + right click on node to deleted this node
  12. right click in the vicinity of one line (either middle line or feather line) to deleted the mask

MetaData

We already have the meta data plugin on the left which shows stuff for the selected image.

We also have tagging in lighttable mode.

What we miss is a plugin to add title, description, ' to an image.

Proposal

Add a plugin to lighttable mode, allowing to edit meta data for the selected images. Some of it should also be displayed in the meta data viewer on the left. Maybe even on the thumbnail (not sure about that though). Provided we want dt to be a complete DAM solution, any IPTC Core 1.1, possibly IPTC Extension 1.1 and proprietary fields should be editable (in a separate window?)

Problems

The meta data editor must display the current values for the selected image. But what if it is not the same for all images? Say the author is the same, but the title differs. What shall we display then? Maybe indicate that there are different values and replace the input line with an editable drop down box (GtkComboBoxEntry), which defaults to "do not change", and containing all the other values for the selected images? Autocompletion should be used. Each metadata field could have options for replacing (use current value to replace any existing ones), update (add current value to the existing ones - this probably affects only tags), clear (get rid of any existing values).

Implementation

Implementation is in git master.

Meta Data

What meta data do we want to store with images and according to which standard (probably prefer IPTC Core 1.1 and IPTC Extension 1.1 + darktable or other widely used namespaces for those not covered)?

Field already in DB schema already in XMP file XMP namespace used
Title yes, as caption yes dc:title
Copyright Notice yes, as license yes dc:rights
Keywords yes (tags) yes dc:subject
Hierarchical Keywords not yet not yet lr:hierarchicalSubject
Description yes, as description yes dc:description
Creator yes, post-0.7 branch yes, post-0.7 branch dc:creator
Publisher yes, post-0.7 branch yes, post-0.7 branch dc:publisher

What about date? Let the user change the date taken from exif?

What about geo references? I guess that would need some osm/googlemaps connection. Reverse geonames lookup (like "plus storing in IPTC Ext 1.1 (Location Shown) would be nice. (Location Shown is preferred to be used if both Location Created and Location Shown are equal.) Note that Country, Province/State, City, Sublocation as per IPTC IIM and their counterparts in IPTC Core 1.1 (photoshop.* and Iptc4xmpCore.*) are of legacy status, since it is not clear if they refer to image subject or camera location.

What about hierarchy of tags (according to info on page 62 in MWG guide [http://www.metadataworkinggroup.com/pdf/mwg_guidance.pdf":http://ws.geonames.org/findNearby?lat=47.3&lng=9]) or lightroom?)

What about basic syncing among compatible namespaces? (MWG guide page 23?) I suppose that IPTC IIM to IPTC Core 1.1 could be sufficient.

What about possibility to create new, "proprietary" EXIF tags to store user-specific/user-defined data like DarkTable:Version, DarkTable:DBID e.t.c.?

dc:title, dc:rights, dc:description support alternative languages.

EXIF:UserComment

Anything else missing?

Metadata browsing

I think the current way of browsing the database by metadata in darktable is quite limited, and becomes very cumbersome as soon as you have a lot of keywords/tags. It also does not really take advantage of hierarchical keywords and the organisation that can be gained by it. I've given this quite a bit of thought because I have been searching for a good photography DAM solution on linux for quite a while. I've therefore created some gui mockups of what I think a perfect metadata browser would look like and how it would work. I've created a new page for it's discussion.

MetadataBrowserGui


Metadata browsing in darktable

A powerful metadata browsing capability is IMO essential in a DAM solution. I think bibble5 is quite powerful and its interface is almost there, but sometimes lacking a bit. It also only provides for one way of organising ones tags/keywords. So although my ideas are somewhat inspired by bibble5 they also go quite a bit beyond it.

First what metadata do we want to browse.

1. Film rolls (these are essentially albums and just a special case of metadata IMO)
2. information taken from image exif, such as aperture, shutter speed, focal length ... Date and time is probably one of them as well, however it is better dealt with by a timeline browser.
3. Data that we added to the files. These are ratings, colour labels, and (hierarchical) keywords. IPTC data probably also belongs here.

For exif data, ratings, IPTC data and colour labels things are quite straight forward, these almost always fit best into a tree view. However, with respect to keywords or tags there is essentially two approaches. Some people like to tag their images very hierarchical i.e. People|Friends|Sarah, why other people don't use any hierarchy at all, i.e. tagging simply Sarah, Joseph... The first group is best served by tree-view browsing, the second group is better served by tag-clouds, i.e. a list of words with different font sizes depending on the amount the words has been used.

To allow both groups (and people in-between) to work productively a metadata browsing interface should, allow switching between the two systems. However it should be possible to look at a hierarchically tagged library using a tag cloud and vice-versa without loosing significant functionality.

Idea

Add the metadata browsing to the library panel on the left and add a small presets button to switch between tree-view and tag-cloud browsing.

Tree-view

The layout of the typical library panel with tree-view metadata browsing is shown in figure 1.

It still contains the import buttons, the recently used film rolls list. The all film rolls list. The open and remove buttons have been removed. I think they are redundant clicking on a film roll should open it. Selecting a film roll and clicking delete should remove it. Also with respect to the recently used film rolls, this could be changed to recently used metadata browsing.

Below the film rolls list is a new tree-view for metadata browsing. It contains the main categories: Exif, IPTC, Rating, Colour label and Keywords(tags). Each of these can be expended. Now to select images there are essentially two operators we have to allow, AND and OR.

The OR operation is shown in figure 2, essentially by selecting specific tags/keyworks using either shift-left mouse button or ctrl-left mouse button, we select different tags, these tags are combined with OR and all images matching this query are displayed in the centre. Note this also applies to the selected film rolls, however the operation between film rolls and metadata tags is always AND. So in this example all images from the film-rolls (Wedding1 or Wedding2) and (Aperatures F1.4 or F8) will be displayed.

To perform an AND operation we use the double click. However it acts slightly differently. In figure 3 all film rolls are selected. If we now double click on the Groom, its keyword is highlighted in a different colour, and the keyword list is updated to only display keywords that are on images with the keyword Groom (figure 4).

Note that the film rolls list has also been updated as there were no pictures with the Keyword groom in the Test film roll. We can now select multiple other keywords using ctrl-left mouse, e.g. to display pictures of the (Groom) AND (the Bride OR the Mother of the Bride). The double click therefore corresponds to something like an operation like (Selected object) AND (everything we are selecting now). If we now double click on a second item, e.g the mother of the bride, the display will be updated again to only show photos (and keywords) with the groom AND the mother of the bride (figure 5). Now what do we do in the case when we had already selected the mother of the bride with ctrl-left mouse button, and now double click on the groom. This case will be different to the above, it is now (groom OR mother of the bride) AND (...) and the colours are slightly different. This is shown in figure 6, note that the ceremony tag is still displayed, although we did not have images of the groom and the mother at the ceremony.

Further comments:

Tag cloud

Figure 7 shows the library panel in tag-cloud mode. In this mode the keywords are displayed as an alphabetical list, with different font sizes depending on how often they appear. For hierarchical keywords all levels are displayed as single keywords. However on a keyword it will display the full hierarchical keyword as a tooltip (figure 8). If there exists two hierarchical keywords, with the same last keyword, e.g. People|Friends|Susan and People|Family|Susan both will be displayed and you can distinguish between them using the tooltips. Otherwise the tag-cloud view acts the same as the tree-view.

Some discussion points

Flame away ;)


memory savings

more powerful snapshot/comparison plugin

Currently, dt is published with a snapshot plugin within the darkroom mode.
It allows to take a snapshot of an image at a given stage of its development, in order to compare it with any other stage of development. This is achieved by halving the image by a vertical centred line.

what to do would be


Not So Easy Coding 2013

more powerful snapshot/comparison plugin

Currently, dt is published with a snapshot plugin within the darkroom mode.
It allows to take a snapshot of an image at a given stage of its development, in order to compare it with any other stage of development. This is achieved by halving the image by a vertical centred line.

what to do would be

(For review: this is mostly a proposal for GSOC)


Wiki Page Templates

_(since 0.11

The default content for a new wiki page can be chosen from a list of page templates.

That list is made up from all the existing wiki pages having a name starting with PageTemplates/.
The initial content of a new page will simply be the content of the chosen template page, or a blank page if the special (blank page) entry is selected. When there's actually no wiki pages matching that prefix, the initial content will always be the blank page and the list selector will not be shown (i.e. this matches the behavior we had up to now).

To create a new template, simply create a new page having a name starting with PageTemplates/.

(Hint: one could even create a !PageTemplates/Template for facilitating the creation of new templates!)

Available templates:
TitleIndex(PageTemplates/)

----
See also: TracWiki


Pipeline 2.0

to be discussed at LGM 2014.

color management

denoising

compatibility


Features under consideration

Here is a list of features that are being planned, developed or modified.

Import

Export

Capture

Lighttable

Darkroom

Quality


[NAME] plug-in

Introduction

The [NAME] plug-in forms part of the YYYYYYYYYYYY plug-in group and is used to [make ZZZZZZZZZZ changes to a photograph].

It is generally used as part of the [Import/Lighttable/Darkroom/Export - delete as appropriate] process of Darktable's

workflow.

Screenshot of the plug-in - insert screenshot here [use a close-up, showing all parameters of the relevant plug-in, but no

items from other plug-ins - to avoid confusion]

This page is correct for the following stable versions of Darktable

Reasons for use

The [NAME] plug-in is used to ... [manipulate/adjust/enhance/reduce/maximise/minimise/remove - delete as appropriate] the XXXXXXXXX aspect of your photos. [Expand further here to either give more detail on generic reasons for use, or to explain other reasons for use.]

What this plug-in actually does

This plug-in affects the [contrast/highlights/underexposed/overexposed] aspects of a photograph and .... [insert a slightly technical explanation of what the plug-in does - since this allows people to learn the underlying theory behind any manipulations and improve their knowledge over time. Please note - this is not the place for a full technical thesis, but more a very simple explanation of how the plug-in achieves its effect]

Parameters and settings that can be changed

The following [parameters/settings] can be changed within this plug-in:

AAAAAAAA

This parameter is represented by a [slider/graphics box/whatever....] and can be found in the [right/left]-hand panel of the [import/Lighttable/Darkroom/export - delete as appropriate] view.
Settings range from [0 to 100] where 0 shows/changes .... and where 100 shows/changes...

BBBBBBBB

This parameter is represented by a [slider/graphics box/whatever....] and can be found in the [right/left]-hand panel of the [import/Lighttable/Darkroom/export - delete as appropriate] view.
Settings range from [0 to 100] where 0 shows/changes .... and where 100 shows/changes...

CCCCCCCC

This parameter is represented by a [slider/graphics box/whatever....] and can be found in the [right/left]-hand panel of the [import/Lighttable/Darkroom/export - delete as appropriate] view.
Settings range from [0 to 100] where 0 shows/changes .... and where 100 shows/changes...

DDDDDDDD

This parameter is represented by a [slider/graphics box/whatever....] and can be found in the [right/left]-hand panel of the [import/Lighttable/Darkroom/export - delete as appropriate] view.
Settings range from [0 to 100] where 0 shows/changes .... and where 100 shows/changes...

Generally recommended settings for this plug-in

Whilst users may choose any settings they wish to create the look that they desire, the following settings are generally recommended for this plug-in.

Parameter AAAAAAAA

Useful settings generally range from [25 to 75]. Lower values can lead to... and higher values will lead to....

Parameter BBBBBBBB

Useful settings generally range from [25 to 75]. Lower values can lead to... and higher values will lead to....

Parameter CCCCCCCC

Useful settings generally range from [25 to 75]. Lower values can lead to... and higher values will lead to....

Parameter DDDDDDDD

Useful settings generally range from [25 to 75]. Lower values can lead to... and higher values will lead to....

[Other general comments about the parameters and their use (either alone, or in combination with one another)]

Example usage

Example 1

The [NAME] plug-in allows you to [manipulate/adjust/enhance/reduce/maximise/minimise/remove - delete as appropriate] VVVVVVVVVV to ....

In this example, you can see how the [NAME] plug-in [manipulates/adjusts/enhances/reduces/maximises/minimises/removes] ZZZZZZZZ and allows ....

Before photo screenshot - insert screenshot here
[Explanation of the original photo and what is hoped to improve/change]

Parameters used/suggested screenshot - insert screenshot here
[Explanation of the parameters used, and why - focusing on the reasons for using the values that you did.]

After photo screenshot to show changes - insert screenshot here
[Explanation of the photo following plug-in improvements and what has improved/changed]

NB.[Important to ensure that the before and after screenshots show only the effect of this plug-in, not a combination of other unspecified plug-ins or a stack of other adjustments. This example should focus on just the changes and improvements that can be achieved through the use of this plug-in. DELETE THIS TEXT ONCE THE EXAMPLE IS CREATED]

Example 2

The [NAME] plug-in allows you to [manipulate/adjust/enhance/reduce/maximise/minimise/remove - delete as appropriate] VVVVVVVVVV to ....

In this example, you can see how the [NAME] plug-in [manipulates/adjusts/enhances/reduces/maximises/minimises/removes] ZZZZZZZZ and allows ....

Before photo screenshot - insert screenshot here
[Explanation of the original photo and what is hoped to improve/change]

Parameters used/suggested screenshot - insert screenshot here
[Explanation of the parameters used, and why - focusing on the reasons for using the values that you did.]

After photo screenshot to show changes - insert screenshot here
[Explanation of the photo following plug-in improvements and what has improved/changed]

NB.[Important to ensure that the before and after screenshots show only the effect of this plug-in, not a combination of other unspecified plug-ins or a stack of other adjustments. This example should focus on just the changes and improvements that can be achieved through the use of this plug-in. DELETE THIS TEXT ONCE THE EXAMPLE IS CREATED]

[Insert other examples as required]

Caveats

[Input any warnings about using this plug-in in conjunction with others that may negatively affect it, or where you should choose to use either this plug-in or another, but not both - or delete this line.]

[Input any details about how extreme settings may affect the photos - or delete this line.]

[None]

See also

Darktable book [link to static generic 'current version' page]

Darktable's online manual [link to front page] - [PLUG-IN NAME - link to exact relevant page]

Relevant Blog entries concerning this plugin Online tutorials showing how to use this plug-in Online videos showing this plug-in in action

Source code


Print Mode Specs

(this isn't a finished specification, it was just came to mind quickly, so it's just a quick and dirty braindump at this point)

Darktable current has no way to print images...

My current workflow is:
  1. Export from Darktable to 16 TIFF (AdobeRGB)
  2. transfrom to printer profile using tificc to move the image to the printers native colorspace
  3. open the transformed image in Eye of GNOME, and sent to my printer
    (Eye of GNOME allow simple adjustments like leaving an unprinted border)

Current Linux has some color management print infrastructure via colord, but currently there is no integration with the (GTK) print dialog, so can setup a single printer associated profile which is transparently used (there is no explicitly sign of this in the print dialog). So this is major nuisance if you regular print use different paper types (not so uncommon, since there is a huge selection of fine-art papers available on the market)...

Another disadvantage of solving this print color management via cups is that print profile rendering intents are inherently tied to the source working space. For relative colorimetric this isn't an issue since practically there is no gamut mapping happening (making this the only safe rendering intent to use without user interaction/verification). Perceptual (and to less importance Saturation) rendering intents are gamut mapped and need to mapped to a specific source gamut (typically AdobeRGB), this source gamut however is as far as I'm aware never stored in the printer icc, so there is no way to cups to "see" which the matching source gamut would be. Thus this is always something that the end-user needs to manually control, if he wants to use anything but relative colorimetric.

All issues considered it would make sense to implement a print mode in Darktable on the assumption someone is willing to invest the required effort.

The following items are in my opinion critical:
  1. Print preview where you can see a small "paper" rendering with your image with some simple controls so the printable area can be shrunk to leave a unprinted border. When a print profile below has been specified it also makes a LOT of sense to softproof this preview by default (possibly including paper white simulation).
  2. Just like export in 1.2, allow the application of a "export/print/-time-only" style (think for fancy borders/watermarks)
  3. output sharpening (this should probably do clever stuff with paper size/viewing distance to come up with unsharp mask parameters)
  4. output print profile (sRGB by default for non profiled printers)
  5. print profile rendering intent
From a color management point of view we'd be effectively:
  1. Doing an normal export at 16bit bitmap in AdobeRGB (if a print profile has been specified)
  2. Transform that bitmap to the print colorspace
  3. Send to the printer keeping in mind the border
    In the future it's likely there will be a mechanism we could use to tag our files, so we can reliably suppress colord/cups' color management and override it with our own (for increase flexibility, keeping in mind the concerns expressed earlier)
The reason I want to use AdobeRGB as a connection space for the print profile has a number of reasons:
  1. AdobeRGB has a gamut that's large enough that most printers gamut's will be covered
  2. AdobeRGB has a nice smooth 2.2 gamma, without the weird notch sRGB has
  3. Most paper manufacturer seem to deliver profiles that are gamut mapped against AdobeRGB, subtly indicating that this may very well be common practise in the industry.
Some may wonder why we can't transform directly to the printer own RGB colorspace, and we can't for several reasons:
  1. We have modules operating on output rgb, which may not have the expection result in a printer's rgb colorspace
  2. The rendering intent/gamut mapping reasons as expressed above.

It has been suggested that adding PDF export would be nice too, but without a fully compliant PDF/X implementation I'm not sure I see the value in that, and thus might better be left to specialized tools like Scribus.

Related artwork:

Just digged out from somewhere deep: some UI mockups by Roberto concerning the print view:



Hi, here is my final proposal, I've already submitted to the google. So welcome to comment on the register site.

1.Basics

1.Write a small introduction to yourself.

My name is Fufeng Yao. I'm on my second year of a master's degree in fundamental software at institute of software chinese academy of science.

2.State your preferred email address.

yffbrave[at]gmail.com

3.If you have chosen a nick for IRC, what is it?

yffbrave

4.Why do you want to participate in summer of code?

I've been looking forward to joining in some open source projects and now it's a big chance. I love programming and open source spirit, so I want to contribute and improve myself.

5.What are you studying, subject, level and school?

Now I mainly focus on the virtualization technology & the security of operating system

6.What country are you from, at what time are you most likely to be able to join IRC?

China. UTC 8:00~16:00 usually, but flexible.

Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when.

Both answers are no.

2.Experience

1.What programs/software have you worked on before?

When I was an undergraduate, I worked on a "garage management system" and "brickbreaker game" both with a partner and some other little programming tasks such as lexical & grammar analyzer implemented by myself. Now I'm a graduate. I devote myself into my research field, but lately in my spare time, I also tried to write a sudoku app of Android just for fun.

2.Have you developed software in a team environment before (as opposed to hacking on something on your own)?

Yes. My friend and I co-completed a garage management system in Java. My workload occupied 40%.

3.Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?

No, this is my first year.

4.Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.

No, this will be my first open source project if I'm able to be accepted.

5.Photographic experience

A.What type of photos do you take, with what camera, in which format?
I have not a camera now, but I_m planning to buy one.
B.How do you organise and develop your photos?
Regretfully, I have no experience about developing photos.
C.Do you have a website/flickr account?
No.
D.How proficient are you with post-production software, and which one(s) do you know?
I_m not familiar with post-production, but I know Photoshop is very powerful.
E.Are you familiar with basic photographic data processing (demosaicing, white balance, color management)?
Only a little, but I think I will lean fast with strong interest.

6.If you have contributed any patches to darktable, please list them below. You can also list patches that have been submitted but not committed yet, patches that were refused or patches that have not been specifically written for GSoC. This will help us find out what your work was and how you code.

I've tried to solve an easy coding task "Add tooltips to all controls and button" and submitted a patch.

I_ve submitted a patch solving the mismatch between snapshot and original.

Though both were not successful and not accepted, I became familiar with the code base, it_s the good side.

3.Communication skills

1.Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.

I can write fluent English though I'm not a native.

2.What spoken languages are you fluent in?

Chinese

3.Are you good at interacting with other people?

Yes.

4.Do you give constructive advice (both as a photographer and as a coder)?

Yes, I will if I have.

5.Do you receive advice well (both as a photographer and as a coder)?

Yes.

6.Are you good at sorting useful criticisms from useless ones?

Yes.

7.How autonomous are you when developing? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want?

Well, it depends. The GSoC idea I'll set about working on, for instance, I'd rather have certainty through extensive discussion. In addition, if there is no time limit, I'd love to discover or to explore.

4.Project

1.Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?

Yes, I selected Real powerful snapshot plugin.

2.If you have invented your own project, please describe the project and the scope.

3.Why did you choose this project?

I used the darktable and found the snapshot module was not very satisfactory. It has some bugs and lacks important functions such as zooming.

This results in poor user experience and restricts the power of darktable. So I decided to improve snapshot.

4.Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then".

First, I want to say I have no vacation plan this summer. So I have plenty of time to dedicate to the google summer of code.

And here is my plan which staring time is 23 May, as Google suggests. But it's not hard to find some preparing work will have already began after 25 April.

A.legacy code cleanup (1 week)
B.Implementing the side-by-side comparison between snapshot and current image. (1 week)
This idea came from discussion on IRC. Why not? The more options, the better.
C.Implementing the split comparison. (3 weeks)
This task includes two subtasks: vertical split (2 weeks) and horizontal split (1 week). Both will have the capability of zooming and dragging.
D.Implementing the free-drag comparison. (3 weeks)
This big task will be divided into 2 parts.
Part 1 (1 week): Implementing the rotation & translation of the separation line.
Part 2 (2 weeks): Implementing the combination zooming & combination dragging.
E.Optimizing current implementation (2 weeks)
F.GUI support & Debugging. (2 weeks)

5.Include as much technical detail about your implementation as you can.

A.legacy code cleanup

Current implementation of snapshot can_t adapt to the requirement of zooming and dragging. So I decide to revamp this component. I will add a pointer to dt_dev_pixelpipe_t in the struct dt_gui_snapshot and delete snapshot_image in the struct dt_gui_gtk_t. Meanwhile, delete the function of reading & writing png, add the function of creating pixelpipe because I need to record the image state when user clicked the snapshot button.

B.Implementing the side-by-side comparison between snapshot and current image

This is relatively simple. Because the two parts do not rely on each other, I just need to recompute the scale and paint snapshot and current image independently. I won_t implement the zooming cauz it will duplicate with following modes and I think it_s pretty good to give user a full view of what he has done.

There is a little trick here. If the width of image is larger than the height, I will show in top/bottom fashion. Otherwise in left/right fashion.

C.Implementing the split comparison

Current implementation of snapshot is based on vertical split. But it compares two different part of the same image. This is fine but I will add an option to compare the same part of the two images.What I need to record is the scale and the coordinate of the image. This coordinate is the offset relative to the top left of the view window. If we add the half of window_s width to the x coordinate, the image will shift right half width of window. Then we pass these parameters to the snapshot component. We use scale parameter to zoom then we cut the width down to a half and use cairo functions to draw on the view window. At last the snapshot will show on the left part of window with the same content and scale.

In order to response to the users_ input, we need add event handler. Specifically, we need modify handlers of center widget which include scroll-event, motion-notify-event, expose-event and button-press-event. When these events happen, we judge which part it happens on, left or right, then we update our parameters and pass them to the other part. At last we redraw the whole window.

For the horizontal split, it_s basically the same way to deal, we just change width into height and draw the separation line horizontally. Both situations need two pixelpipes, one for the image and one for the snapshot.

D.Implementing the free-drag comparison

For part 1, thanks to the people on IRC, I browsed the code of vignette plugin and it gives me many hints. When turning this mode on, we draw a crosshair around a circle on the line and a half circle on the endpoint of the line. We need a couple of variables to record info: (x, y) for central crosshair, (x1, 0) for intersection of top border, (x2, height) for intersection of bottom border, delta for offset angle from north up.

Using (x1, 0) and (x2, height), we can define two clip regions, then we can draw snapshot and image on each of them, which is similar to the current implementation. But this time, we must be able to zoom and drag the snapshot and image seamlessly as if they are exactly the same one.

For part 2, we have two situations:

1) If we translate the separation line, the angle won_t change, so we only need to recompute the intersections according to the new (x, y) and delta. If we rotate the separation line, we need use the (x, y) and the new delta to compute the new intersections. But both will only change the combining position, the whole image will keep consistent.

2) If we zoom and drag, except for computing the new (x, y) and the new intersections, we also need change the content in the window. This is something like split comparison I listed above. We need to record the scale and coordinate of the image in order to draw the image and snapshot on the proper position.

E.Optimizing current implementation

This is a tricky part. If I success, I can gain the improving performance. But if not, I_ve got nothing and waste of two weeks.

Currently I need to use pixelpipe to achieve my goal. An option is recording all the operations before clicking the snapshot button. When we need to use snapshot, we create the pixelpipe based on the original image and all the recorded operations. This method will save lots of memory because we allocate memory when we need, instead of keeping one pixelpipe for each snapshot. But now I_ve no idea whether this method is faster or slower than my implementation.

Another option is like current implementation, we write the whole image info into the png, not just the current view in the window. This is feasible and memory saved but reading png from disk is low speed. So this option may be not very suitable.

Anyway, I will keep researching and I hope I can find some smart solutions.

F.GUI support & Debugging

When all above is done, I think I need to add some buttons in the darkroom mode, or just utilize the right mouse button to switch between these four modes. Now this is not decided, but it_s easy to implement.

At last, I will commit my code to the community to collect feedbacks and bug reports. This will help me improve my working.

6.What do you expect to gain from this project?

I want to gain the programming experience and fun during my vacation. Finally, I want to be a long term contributor for darktable.

7.What would make you stay in the darktable community after the conclusion of GSoC?

There are two reasons.

First, as a programmer, I want to contribute my code and do what I can do to help community grow.

Second, as a user, I think darktable is cool and photographing is my hobby, so I want to use it and give my feedback to the community during my daily life.

5.Practical considerations

1.Are you familiar with any of the following tools or languages?

git (used for all commits)

I'm a elementary user and can do some basic operations

C99 (language used for all the normal source code)

Familiar. It is my principal programming language.

sqlite3/SQL

Not familiar, but I can learn if I need to use it.

OpenCL

Not familiar

OpenMP

Not familiar

gtk/cairo

Elementary, but it won't be a problem to implement a widget or draw something based on it.

SSE intrinsics/optimized programming

Basic concepts but no practical experience.

cmake

Like git, I started to use it lately.

2.Which tools do you normally use for development? Why do you use them?

Eclipse is my main IDE for C/C++/Java. Because eclipse provide rich tools/plugins to increase productivity. I'm very familiar with it.

3.What programming languages are you fluent in?

C, C++, Java.

4.Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail. If you are willing to do so, please do list a phone number (including international code) so that we are able to contact you. You should probably only add this number in the application for you submit to Google since the info in the wiki is available in public. We will not make any use of your number unless some case of "there is no way to contact you" does arise!

I don't mind & I will provide my phone number during my submit.


Rebel sample files


Film Scanning

The aim is to provide darktable with functionality to handle the complete workflow of "digitial" development of analogue film slides.

Features

The most features will be biased to the workflow of scanning negatives.

Scanning session

A scanner session should resemble the same approach of a session within Tethering view. That means a user defines a job code which in turns creates a film roll were all scanned images will be imported to.

This requires a rather big refactor of the current implementation of tethering / camera import that uses a commonly shared approach to import images into darktable. The main approach would be to break out this functionality from the specific camera import dialog and implement a common/import_session.c to handle all the current features so it easily could be shared between, tethering, camera import and scan. The camera import options should be removed from camera import dialog into preferences panel which currently is wrong place even for tethering.

Automatic image enhancments

In contrast to "scan raw" without any further image processing we should provide automatic enhancements by analyzing the preview scan.

Automatic area hinting

When a scan preview has been finished the user should select "areas" to be scanned. There should be support for several areas to be defined and each area is scan in a background batch job.
The automatic area hinting feature should detect areas in the image. That means that if the user scans a negative strip with 3 images, three areas should be automatically be selected for further fine tuning by the user before starting the scan job.

Support several scanners available in SANE backend

There should be no restriction / choice of what scanner to be used. The available scanners should be easily selected in the scan view to ease the work with several scanners in the same session.

Background scanner batch jobs

When user starts a batch scan for a session this should lock the scanner and scan batch in background. If possible and if SANE let us do it, a user could choose to use another scanner for the session and start creating a new batch while the first batch is on going. This will mean that if a user have 2 scanners, he could double the scan rate of photos by doing the batches in paralell.

Support for iterative scans

We need to investigate this but the process is to scan an image several times and average the result to iron out sensor noise.

Support for bracket scan (HDR)

This feature will enable you to scan an image three times with different brightness levels and then combine the three scan into a HDR image. This is very useful if you are restricted to a 8bit color depth scanner and can with this feature gain additional dynamic range in your scanned photos.

Support IR channel dust removal

Some scanners have an additional feature to include a IR scan which is used to detect dusts on the film, we should definitely support this and find a nice algorithm for it. See http://files.support.epson.com/htmldocs/prv5ph/prv5phug/featr_3.htm for reference. I have verified that SANE does support this and also have constants to detect scanned frames with IR channel.


SelectionProposal

In general, all the ratings done should show a toast message saying that the rating has been applied, and the affected images.


Development wiki

This is darktable's development wiki.

Are you looking for the user's wiki?
Or for screencasts, books and manuals ?

If you have urgent questions join us on freenode IRC, channel #darktable.
More informations on how to get in contact can be found here.


Snapshots

What snapshots do now

Right now snapshots work by saving a png file of the cairo surface to temp dir. When one is selected, the image is split, showing in one half the snapshot and in the other half the image. If the image is zoomed or panned,or the window size is changed, the snapshot remains as it was taken originally, making a weird effect.

The snapshots are completely static, as they are files, and not stored with the image, so going back to lighttable make them disappear. But this allow to make a comparison from one image to the next one by using an already taken snapshot.

Proposal

The proposal intends to keep the possibilities that the current implementation have but at the same time increase the possibilities of the system by making them more powerful and, and also improve the UI behaviour.

The steps are:

Related Artwork

Just digged out from the shadows: some UI mockups related to snapshots by Roberto


Tagging

Types


Trac Navigation

Starting with Trac 0.11, it is now possible to customize the main and meta navigation entries in some basic ways.

The new [mainnav] and [metanav] configuration sections can now be used to customize the text and link used for the navigation items, or even to disable them.

[mainnav] corresponds to the main navigation bar, the one containing entries such as Wiki, Timeline, Roadmap, Browse Source and so on. This navigation bar is meant to access the default page of the main modules enabled in Trac and accessible for the current user.

[metanav] corresponds to the meta navigation bar, by default positioned above the main navigation bar and below the Search box. It contains the Log in, Logout, Help/Guide etc. entries. This navigation bar is meant to access some global information about the Trac project and the current user.

Note that it is still not possible to customize the contextual navigation bar, i.e. the one usually placed below the main navigation bar.

Example

In the following example, we rename the link to the Wiki start "Home", and hide the "Help/Guide" link.
We also make the "View Tickets" entry link to a specific report.

Relevant excerpt from the TracIni:

[mainnav]
wiki.label = Home
tickets.href = /report/24

[metanav]
help = disabled

----
See also: TracInterfaceCustomization, the TracHacks:NavAddPlugin (still needed for adding entries)


Translating darktable Through git

This is a guide on how to translate darktable through pull requests in git. This is the preferred way, since updates are more likely to get overlooked or forgotten on the mailing list, whereas through pull requests, the developers will keep receiving reminders until an update is implemented.

This guide assumes that your language is already present in darktable. If not, please consult the darktable developers mailing list to have your language added.

Setting Up Git On Your System

Prerequisites

  1. Go to the darktable GitHub page and click the "Fork" icon in the top, right corner. By now you have a complete copy (a "fork") of the darktable repository on your GitHub account.
  2. Start up a terminal, and cd to the place where you want to store a copy of the darktable repository. Then, write the following command to clone your GitHub fork of the repository into the current directory:
    git clone https://github.com/MYGITHUBNAME/darktable.git
    
  3. cd into your newly cloned repository, and assign a remote called "upstream" to the original darktable repository (your fork is referenced to as "origin"):
    cd darktable
    git remote add upstream https://github.com/darktable-org/darktable.git
    

Working Routine

These are the steps you would typically follow, every time you want to work on your translation.

  1. Fetch any new changes to the source code from the original darktable repository "upstream":
    git fetch upstream
    
  2. Optionally change to a non-master branch, in this case darktable-2.0.x. You would typically do this when the project is about to make a new release. If you work on a non-master branch, you will need to change master into the branch name in all steps below. If you want to work on master branch, you can skip this step. Or if you already changed into another branch and want to change back to master, do this step, but with master instead of the branch name. To see which branch you're working on, do git status.
    git checkout darktable-2.0.x
    
  3. Now, merge the fetches changes into you working files:
    git merge upstream/master
    
  4. Build darktable (takes a while), cd into the po directory where translations are, and update your language file to reflect the newest text strings found in the source files:
    ./build.sh
    cd po
    intltool-update da #change da into your language
    
  5. Start up your po editor and start translating.
  6. Tell git to include your changed file into the next commit, then do the actual commit, and then push your commit to your fork on GitHub:
    git add da.po  #change into your po file
    git commit -m 'Updated Danish translation'  #obviously change comment to fit your language
    git push origin master
    

    If fact, you can do several commits before pushing, and you can push several times before going to the next step.
  7. Go to the GitHib page for your darktable fork. Click to see details of your latest commit(s). There you'll be presented with an option to create a pull request. When you've done so, you have told the darktable developers that your changes are ready for merging into the actual darktable repository.

There's a very recommendable free book about git available at: http://git-scm.com/book


Triager Guide

This page is an introductory guide for triagers.

Triagers can be widely defined as anybody that want to help darktable deal with its bugs or feature requests but don't necessarly have coding skills.

As a triager your responsabilities will mainly involve

Overall this requires a lot of common sense, a bit of social skill, and some time.

So, how do you deal deal with entries ? basically you follow them through the whole Bug_Workflow until they are dealt with. You are the first contact point for any bug.

How to deal with bugs

here we are going to discuss bugs. Bugs are reports by users that expected a certain behaviour, but darktable reacted in a way that they consider wrong. The most important thing with bugs is to try to reproduce them, the second most important thing is to try to find duplicates

It is important to try to reproduce them because a lot of bugs are discovered by developers and fixed before being reported and other developers can spend quite some time trying to reproduce a bug that is already fixed. This is something that doesn't need any coding skills but needs to be done. It's a work for the triager.

try the steps that the bug reporter stated.If it doesn't work, make sure you are using the same version as he is, ask him for details, be sure that he reported the exact version number (especially if he reported a bug on a git build)

If you are still unable to reproduce, you will have to guide the bug reporter through all the steps to enrich the bug report. Not as easy as doing it yourself, but again it's a job that needs to be done

The other way of dealing with a new bug is to close it. Don't be shy, as a triager you should feel free to take that action. In particular hunting for duplicates or bugs fixed in master but not in the stable version of darktable is an important job. There are bug status to signal that which allows the developer to quickly find bugs that are easy to port or have a fix ready.

Last but not least, a lot of bugs are due to user errors. By trying to reproduce and starting a dialog with the bug reporter you can find out these and help reduce the load on developers by closing such bugs

Once the bug is reproduced you should try to "explore" the bug. The exact nature of what you do depends on the type of bugs and common sense is your guide here, but here are a few ideas of how to enrich the bug

TODO


Upcoming styles sharing platform

Concept

The concept is to have a nice platform for sharing darktable styles. This is related to the feature #8747. The work is initiated and an example is set up at http://darktablestyles.sourceforge.net.

Features

Use cases

Uploading a style

This is done inside darktable itself. Feature #9239. Select a style, select an image to represent the style, click upload. A new dialog pops up. Enter name and description. Enter username and password (for the redmine account, authenticated through the rest api).

The before and after images are rendered automatically. The before image is created by removing all modules that are included in the style from the duplicated image. The after image is done by applying the style to another duplicate. Both images are exported with max width 800px and max height 600px. Thumbnails are generated server side.

The user must also accept the user agreement which says roughly that images are published with the Creative Commons BY-NC-SA 3.0 Unported License, the style is released under another license (thoughts here about which license to use?), and that no sexually explicit, violent material may be uploaded etc. The developers (we) may at any time delete a style without letting the user know.

Browse/sort styles

Go to the main page for the sharing platform. At the moment that is http://darktablestyles.sourceforge.net. It should probably be located at www.darktable.org/styles or www.darktable.org/resources/styles and found in the [resources] tab in the top menu.

This first page will give you an overview of all styles found. You're given the option to "Sort styles by rating, popular, newest, name, author". This may be extended if there is a need for that. Each style is displayed with some extra information depending on what sorting criteria you've selected; if rating - the current rating is shown, if newest - the upload date is shown etc.

View details

Clicking a thumbnail or name of a style in the overview will bring you to the details page (show-style.php). Style name, description, rating, download stats, author, upload date, preview images etc. are shown.

Downloading a style

In the details page you can easily download a style by clicking "Download style" in the left panel. This will get the style from the database (stored in binary format) and record that the style have been downloaded +1 time.

The style's filename will be [id]-[name].dtstyle, so that every style will have it's unique filename. Any whitespace in the style name will be replaced with a dash (like-this).

Rating a style

Rating a style is done in the details page. Click the corresponding star in the rating bar underneath the preview image. The ip is logged to prevent multiple ratings from the same user/computer. One vote per ip and style is allowed. No interaction with accounts is done here.

Preview images for each style

Each thumbnail in the overview page is by default the after image. On hover it is shifted to the before image. This way the user can easily see what the style's affect will be.

In the detailed page the same approach is used. Hover over thumbnail to switch between after/before image. Here you can also click the thumb to bring up a big preview (max 800x600px) in a lightbox. Hovering here will also switch after/before image. You may also toggle with [t] on the keyboard, or clicking [t] in the instruction below the image. This way one can also preview styles on a tablet, smartphone etc., although that will probably not be the case too often. (Since the styles will be used on the computer they will likely be browsed there too)

Remove a style

At the moment there is no way to delete a style from the website. One idea from the irc is to have a link like "Report style", which gives the admins a hint about a style to remove. There one could also specify the reason why.

Some kind of backend for deleting styles must be implemented, and deletion only possible by admins (and maybe the author).

There is no consensus whether users should be able to remove their own styles.

Commenting a style

Right now there is no way to comment a style. It would be really nice if it's possible to reuse the wordpress comment feature, but it's pretty tricky to implement on non-wordpress-pages IIRC.

Pagination

There is no pagination in the overview page at the moment. It would probably be a nice thing to have.

Approve a style

Styles uploaded to the website should be placed in a moderation queue. Before going live they should be approved or denied by an admin. Once a user have one style approved he/she should be able to upload styles directly without any further approval required.


Usability Issues

Not for discussions. Please just note down what distracts you from your optimal workflow in darktable. Try to summarize this as short as possible.

Lighttable

Import

Export

Tags

Collections

Darkroom


Darktable 1.0 The Future's So Bright, I Gotta Wear Shades

Some time ago I put some screenshots with comments about darktable alternative UI. In this months darktable evolution was incredible in most areas but imho the UI area was not so enchanced as the others. So I collect last months ideas and put in this new mockup. I have no interest to criticize and begin discussions, only show some ideas that if any of the developers think that could be improved and used in dt, great. That's all

Please put any comments and opinions below the screenshots! (and please, with tranquility) Roberto Quintero

LIGHTTABLE

Left panel

I draw a new module for importing images using a more like explorer window. Is more graphical and I think more user friendly. The question is determine the methods of importing images. At the end we could import folders or images so I put two buttons, one for import folder or folders ( with the recursive option in the open dialog ) that automatically add any folder as collection, and the second button that add one or more images but without creating any collection, but there is no problem as the search mode below is divided in search in collections or search in all images ( both the imported with the folders or imported individually ).

The second module is the "collection & images" option. I think that is really to complicate to join the folders search and the images search, so why not the option to select one of the two options. If you want to search using the collections criteria you activate the "collections" button and then you have all the possible options under this criteria ( by most recent used collection, by date, by size, by name, etc ) and of course you could add more rules. If you want to search using the images criteria you activate the "images" button and then have all the possible options under this criteria ( camera, history, title ) plus the add more rules.

One question, when you pick in a collection the rest dissapear from the list, why ? if you want to change to another collection you must delete the rule to see again the list of collections.( I think the recent collections plugin below is redundant) This is uncomfortable and slowly, and don't understand the practical reason. Anybody could explain me the advantages of this change ? And plus, if you maintain the actual interface you could add an option, so if you select two or more collections with the mouse and ctrl key ( or another hot key) you add all the selected collections to the lighttable window.

Right panel

Only a few changes but I think important.

The first delete the rotate icons from the selected images module. Sorry but there is no sense to have this icons inside this plugin. Ilogically, uncomfortable and difficult to find and mix icons with text in the same kind of dialog.

The second the hdr button in the selected images. With a software like Luminance or the excellent tutorials and software from Guillermo Luijk "http://www.guillermoluijk.com/tutorial/hdr/index.htm" why this limited and incomplete tool ?

The third, I added in the "selected images" module the option "move to". Am I the only one who needs sometimes to move one or more images to different collections without leave the program ? If the answer is yes, sorry.

And at last the inclusion of the horizontal displacement bar below the organize and export menues as I explained in the darkroom mode.

lighttable organize module

!"darktable 1 mode lighttable module organize.jpg"!

lighttable export module

!darktable 1 mode lighttable module export.jpg!

CAPTURE

capture basic module

!darktable 1 mode capture module basic.jpg!

capture advanced module

!darktable 1 mode capture module advanced.jpg!

DARKROOM

Left panel

First I maintain the histogram in the left ( yes I know you prefer in the right but advantages to the left are more ). One, as histogram is one of the most used visual tools you could always change the settings of the modules seeing the impact in the histogram without any scrolling, and two, there is no wasted space in the right because is on the left, where there is more space.

Second, the history & snapshot module. I added some options that I think are useful. As this is a future proposal, if we have in the 1.0 version layers we could put a menu of this layers in the history & snapshot module, so you could activate and deactivate all the efects produced with the layers in this window. Apart when you click in the activate/deactivate button of an applied module plugin you see in the right panel automatically the module with the modified values so you could change the values again without incremental history stack, and at last if you want to compare different snapshots only clicking in the ones you want they appear in a subdivided screen.

referring to the image module basic : In the stack you have a big button in a separate line to take a snapshot. How about having a small [take snapshot] button on the right side of each level of the stack? This could be a very small camera icon which can then be replaced by the text "snapshot 1" when a snapshot has been taken. Not intrusive and saves screen space. This snapshot button could even only appear when the mouse pointer hovers over the each stack level. a related issue is #8769 (RW)

Third, the more plugins in the left. As they are increasing, now 42, we need more space, and we have it but... in the left column.

Right panel

First, and the more important. What happend with the sliders? I think that now they are h... stetically, less usables and make confusion. I explain it. First, now appears that we have one box for the name of the effect and another to move the values, and that's not right it's the same. Second you have two vertical arrows that are so little that are difficult to use ( I don't wanna know how people with a 14" display do ) and they are in vertical position when the movement of the slider is in horizontal, what's that ? Plus the letters and the numbers aren't in the same line so it appear is a bug of the software, not the design of the ui. The progress bar inside of the bar has the same size so you don't know that the lighter bar is the progress bar not another. And around the design, the bar in the right corners is rounded but in the left is square.

Second, a new displacement bar just below the modules group options. For what. Well I think if is possible to resolve the problem of excesive menues ( basic, color, correct, etc ) or alternative excesive scrolling. So I draw a new like scroll to move in the horizontal direction. So what I get without any appreciable waste of space is a bar that if I move, appears from left to right( or right to left ) new plugins of this module group, so when the modules grow, the bar has more movement to show all the modules but never have to scroll from top to bottom, only a little from left to right and viceversa.

In older screenshots I use icons for modules group, vertical tabs and horizontal tabs (with two and three rows). None of them you like it. Well, in new versions Henrik create it because for his workflow is good (at this time we have two modules horizontal rows). Of course Henrik is one of the core developers, but I think is not serious criticize one method ( see the Pascal responses to my screenshots ) and now, as you need for your own workflow put as a new organization mode. So, imho if the option I proposed is bad isn't possible that is good if a core developer do the same.

darkroom basic module

!darktable 1 mode darkroom module basic.jpg!

darkroom color module

!darktable 1 mode darkroom module color tab 1.jpg!
!darktable 1 mode darkroom module color tab 2.jpg!
!darktable 1 mode darkroom module color tab 3.jpg!

darkroom correct module

!darktable 1 mode darkroom module correct tab 1.jpg!
!darktable 1 mode darkroom module correct tab 2.jpg!
!darktable 1 mode darkroom module correct tab 3.jpg!

darkroom effect module

!darktable 1 mode darkroom module effect tab 1.jpg!
!darktable 1 mode darkroom module effect tab 2.jpg!
!darktable 1 mode darkroom module effect tab 3.jpg!
!darktable 1 mode darkroom module effect tab 4.jpg!
!darktable 1 mode darkroom module effect tab 5.jpg!

darkroom active module

!darktable 1 mode darkroom module active.jpg!

PRINT

print basic module

!darktable 1 mode print module basic.jpg!

print advanced module

!darktable 1 mode print module advanced.jpg!

MODULE HEADERS / LOGOS

(Simon)

Since our module base is growing fast I'd like to start a discussion about how to improve this UI area.

I hope this will not end up in a huge "let's change the whole UI" discussion but more in one that focuses on the right dr panel / iops and does not end in talk.

I tried to put together the needs of the darkroom UI with respect to usability and a good workflow:

Furthermore here are some points that could lead (in my humble opinion) to a less cluttered and more straight UI without removing any controls or similar (like proposed a few times):

I tried to do some mockups on how modules could look like, as well as how the darkroom UI changes with that in general. Remarks:

OTHERS

Desire to improve the presentation of the histogram.
!representation de l'histogramme.jpg!

Slider bookmarks idea:


Version 0.8.5 Roadmap


Notes on darktable v1.0

Showstoppers

Things that have to be addressed / solved before we can release:

Once a new filmroll is imported, one would expect it to be displayed in the centerview, but that is not the case. The filmroll is selected in the collections module, but the center view is not updated. Changing something in the collection filter, makes it to be displayed. Something similar happens when all the rules are deleted, and the filmroll filter is selected by default.

A dt_update_collection is missing somewhere.

User Interface

look and feel [done]

needs a serious overhaul, for a more balanced and uniform look, as sketched in the GuiGuidelines

Header [done]

The new interface does now also have a header which is divided into 3 containers where the left and right container
is allocated for the identity plate respectively the view switcher tool.
However there is a center container which today is empty and might be used for something useful without unweighting
the user interface, one thought I had was to but a hinter into there, like context aware hinter with short phrases like 2/3 lines
of helping texts like.

   "when you hover over a thumbnail you can
    press the z key to preview the image in
    fullscreen for a closer look" 

This can be used by less intrusive information such as when changing filter/collection it can show how many images are shown in the collection and same goes for selections ...
another dt_control_log() alternative ...

Core

jpeg support [pending]

Support for jpeg is not optimal, as it is quite slow. That makes darktable slow for people shooting only jpegs.

image struct caching [pending]

image_cache.c caches sql queries related to images. it should also cache color labels, to avoid additional queries during redrawing.

exported images are not shown in Windows (7,XP)

Windows viewer just shows a black area (XP) or reports that this image can't be shown (7)

Lighttable

Image selection [done - can be improved]

Image selection behaviour is pretty strange and can lead to strange results due to
it's fully possible to have images selected in other collections not shown to the end user.
This is error prone if for example someone has a few images selected, and changes
the collection and finds two images he wants to physically delete, he ctrl clicks
each of them and hit delete button and images selected before this two will also
be deleted ... :)

UI glitches [pending]

Fix some UI glitches and minor bugs, as the one that makes the decoration (NEF; CR2; ...) of the exposes only being loaded when hoovering over the image for some of them when the zoom level is high (usually >10)
Additional to this, we might consider to draw the always show reject indication to make that clear to the end user ...

keywords plugin [pending]

Keyword plugin allow reordering the tags by drag and drop, and also grouping them. In this case, the tag list in the tagging module in the right panel should be notified and updated, so the tags match.
Also, if not rule is selected in collect plugin, the tag rule should be added as rule 0, not as rule 1.

Darkroom

UI glitches [almost done?]

- modules such as auto exposure and others that use the colorpicker will use the mode (area or point) that is selected in pick color plugin,
which is quite counterintuitive, add proxy function to colorpicker so that iops that are reusing it can set preferable method and size eg. dt_view_activate_area_colorpicker(80%)

Tethering

Import

Import dialog doesn't implement vars available on export as $EXIF_* group, which are useful if the images are being imported a few days after they are taken, and it is important the imagename of dirname has the actual date of the session (Henrik reports that this is an issue in libgphoto API) [not to be done]

Import dialog shouldn't close if no image is selected, unless Cancel is pressed. [pending]

Override current date field usage is not clear. [pending]

Updating

We need to ensure that the update path from 0.9.3 to 1.0 is clean

gconf
Get rid of gconf completely, make sure we don't use the settings stored in it.

thumbnail size
Set a "sane" default value (1200x1024)? [done - 1300x1000]


Versions


White balance presets

Upgrade the camera firmware (use a full, known reliable battery), be aware that it can brick your camera if done improperly (having the latest firmware is preferable, but not critical, if you are uncomfortable with the risks involved in upgrading your camera you should not attempt it).

Shoot a single RAW file for each of the camera's white balance presets (make sure you don't have any white balance finetuning enabled). Image content doesn't matter. This is usually 5-10 shots. Make sure you have a recent version of ExifTool installed. You can download the latest exiftool from http://www.sno.phy.queensu.ca/~phil/exiftool/ I find the version in Ubuntu is too old.

Some cameras optionally offer the ability to tune their white balance presets. You can include these as well (but the numbers of shots increase rapidly, as there are typically 5-10 base presets, offering as much as 19 steps of finetuning per preset). For the time being you need to shoot either all or none of the finetuning steps as darktable hasn't implemented finetuning interpolation yet. If you do, use only the blue-amber axis, leave the green-purple axis centered (0). This will enable the fine tune slider in the white balance module of darktable.

There's a few different scripts floating around to help you extract the white balance info from your images. The ruby version in the darktable tools directory seems to be the most up-to-date.

sudo apt-get install git ruby ruby-nokogiri libimage-exiftool-perl
mkdir wd && cd wd
tar xvzf /Downloads/Image-ExifTool-10.36.tar.gz # this is the exiftool download
export PATH=$PATH:
/wd/Image-ExifTool-10.36
git clone https://github.com/darktable-org/darktable.git
cd &lt;directory with your white balance images&gt;
rm -rf ~/white_balance.txt
for file in *; do ~/wd/darktable/tools/extract_wb "$file" >> ~/white_balance.txt ; echo >> ~/white_balance.txt ; done

Now, have a look in the ~/white_balance.txt file. You will see the extracted white balance information for each image that you made. For me, I got more than one line per image, so I had to go through and select the one that was the setting that I set the camera to. Delete the other lines so you end up with one line per image. If you did the image fine tune, you may need to update the column that specifies the fine-tune.

Add a comment to the top of your file with camera name and version like this:

/* Fujifilm X-T10 Firmware Version 1.21 */

Now, you can either just post this info into a redmine issue:

https://redmine.darktable.org/projects/darktable

Or you can test them out first by copy/pasting them into the source code of darktable and building and installing to test. If you're running darktable 2.0.x, the instructions are here:

Building darktable 2.0

Version 2.2 rc is here:

Building darktable 2.2

After you check out the tag for the version you want to build, you need to copy your new white balance values into this file:

~/wd/darktable/src/external/wb_presets.c

Then you build and install, and run your newly installed darktable by doing:

/opt/darktable/bin/darktable

Make sure you back up your database before running your modified darktable version though!

cd ~/.config
cp -a ./darktable ./darktable.bak

darktable development wiki

This wiki is the development wiki for darktable. If you are looking for tutorials or user related informations please have a look at the user's wiki.

darktable Development Guidelines

Bug_Workflow

Contributing Code: Patches, Forks, Pull Requests

Triager_Guide

Meetings & Internal Matters

Dev Meeting Agenda

Information collection for founding an association (german)

darktable Development

GuiGuidelines - we try to smooth darktable's gui.

UsabilityIssues - self explaining.

GuiCleanup - buttons in the wrong place? undescriptive labels on controls? suggestions for enhancements here.

UserInterfaceMockup - New user interface proposals and discussion.

Masks UI Specs - User Interface Specification for Masks

MetadataBrowserGui - mock-up for possible new interface for collection plugin

Print Mode Specs - Print Mode Specs

Dual Head Support Dual head support in Darktable

Foldermodule - Folder module

Coding Style - How to write code for darktable

Hacking on darktable - Getting started for hacking on darktable

LuaUsage - How to script darktable with lua

Snapshots - Enhanced snapshots in darktable

Scanning - Film scanning feature

Darktable on OS X - Building from git sources on OS X

Building darktable 2.0 - Building darktable with gtk3

Building darktable 2.2 - Building darktable version 2.2

Building darktable 2.6 - Building darktable version 2.6

GSoC participation

darktable took part in the 2011 GSoC run. Find all pages related to the Google Summer of Code here, including student's proposals and instructions.
GSOC

Darktable Styles

DarktableStyles - User generated style

Upcoming styles sharing platform - A nice place to share the styles

Versions and roadmap

Versions

Misc

IRC_Bot

Rebel sample files (Testing, this, do not enter :)

White balance presets How to create white balance presets for your camera


Workflow Compositor

The Workflow Compositor would provide a modular, or node based, interface for users to construct chains of image processing functions. Each node represents an input, processing, logic, scripting, or output module. Nodes have input and/or output connectors, and are 'wired' together in arbitrary order.

Examples of Nodal/Modular interfaces

Blender3D Composite Editor
Nodebox
Synapse - node based compositor