Towards an Efficient Linux Photographic Workflow

digiKam is the cornerstone of my photographic workflow. This powerful and versatile photo management application has all tools and features necessary for transferring, organizing, processing, and managing photos, RAW files, and videos. But even though digiKam can handle practically any photographic task you throw at it, there is still room for optimizing and improving parts of the Linux-based photographic workflow.

Importing, Organizing, and Processing

Although digiKam features a rather capable import tool, I use a custom Bash shell script instead. It transfers photos and RAW files, renames them in the yyyyMMdd-mmhhss format, and puts them in a separate directory named by the current date. The script is faster than digiKam’s import tool, and it allows me to quickly offload files from a storage card without starting digiKam.

Once the photos and RAW files have been transferred, I enable the MIME Type filter in digiKam to show only JPEG photos and quickly prioritize them using picks. I assign the Accepted pick to photos that are worth keeping and processing, and I use the Pending pick to mark photos that I plan to process later.

After the photos have been prioritized, I move the accepted images and their RAW files into the appropriate target albums. I prefer to organize photos by camera model, so I have separate albums for each of my current and previous cameras. To process the added photos, I enable a filter that displays photos flagged as accepted. Once the photos have been processed, I tag them and add a brief description containing the camera model, lens, and other info I might find useful.

Each RAW file and its accompanying JPEG files are then stacked together using the grouping feature in digiKam. This way, each stack contains a RAW file, an original JPEG from the camera, and a processed JPEG — with the latter being on top of the stack. It’s possible that a similar system can be implemented more efficiently using the versioning functionality in digiKam, but I prefer to do this manually.

digiKam is a do-it-all photo management application

Color labels help me to keep track of the current status of each photo. I use orange labels to mark processed photos ready to be uploaded on EyeEm, and magenta labels for photos published on EyeEm and selected for the EyeEm Collection.

Pixeluvo is a nimble and user-friendly photo editor

Since digiKam retouching tools are somewhat limited, a dedicated photo editor is an essential tool in my photographic toolbox. Although the GIMP seems like a natural choice, I never really warmed to it. Instead, I use Pixeluvo for all my photo retouching needs. It’s a closed-source commercial application, but it’s reasonably priced and it runs on Linux. More importantly, Pixeluvo features a polished and well-thought-out interface and the application has a very gentle learning curve.


Since none of my cameras have GPS capabilities, I use the excellent GPS Logger app on my Android device to record tracks in the GPX format.

GPS Logger makes it possible to record tracks in the GPX format

Geotagging photos is then a matter of geocorrelating them using a Bash shell one-liner. Sometimes I only need to add geographical coordinates of the city and country where the photos were taken. In this case, I use my own geophotobash script. In addition to geotagging photos, the script also renames them, and it can organize photos into directories by city and country too.


To keep my photos safe, I use rclone and Little Backup Box. The former is configured to work with the HubiC storage service for offsite backup, while the latter transforms a Raspberry Pi Zero into a diminutive mobile backup device (see DIY Mobile Backup Device for Photographers). To back up photos and RAW files on external USB drives, I use the good old rsync tool.

Tiny Raspberry Pi Zero-based photo backup device runs the Little Backup Box script

Sharing and Publishing

EyeEm is my photo sharing platform of choice. While this service might not be as popular as Instagram, it has several important advantages. Firstly, it allows you to upload photos from the desktop, and the service features a solid upload tool. Secondly, EyeEm lets you sell photos, and the service partners with Getty Images and Alamy to tap into their extensive network of photo buyers.

EyeEm is a solid photo sharing platform

I don’t expect to make any money off my photos (in fact, I’m yet to make my first sale), but I like the features and functionality EyeEm offers. On top of that, their support is excellent. In addition to EyeEm, I also use my own Mejiro application to publish my photos on the web.

Final Word

I always look for ways to improve my Linux photographic workflows, so if you have any comments, ideas, and suggestions, please share them in the comment area.

I write about Linux and Open Source for a living. I’m an amateur photographer, and I use Linux as my photography platform. I’m the author of the Linux Photography book on setting up an automated and streamlined photographic workflow on Linux.