Skip to content

Latest commit

 

History

History
89 lines (62 loc) · 5.42 KB

README.md

File metadata and controls

89 lines (62 loc) · 5.42 KB

Pixie: an opiniated photo management app for minimalists.

In a nutshell

  • small app that you run locally, it loads pictures from given directories
  • use vim-style keybinds to navigate, and add/remove tags to pictures
  • easily create edits of pictures, and optionally tag them the same way.
  • use script to generate export/album directories by finding all pictures matching certain criteria.

Photo storage & workflow ideology.

I like plain simple directories of pictures. I like directories of pictures which I can upload to my albums online, or directories of pictures to stream to my TV (not necessarily the same ones, organised the same way, and not neccesarily the same resolution), and I want to keep a copy of pictures exactly the way they came from my devices (so that syncing is trivial). But I want minimal amount of manual hassle, and minimal redundancy. I especially want no filesystem mess.

I want to have alternative versions of certain images, without polluting my "source" directories, and the ability to select which version of an image goes into which album(s).

I want to be able to add metadata to pictures, but without modifying the pictures themselves, and in a simple, open format. Any picture should be able to appear in 0, 1 or more photo albums (or more generally "exported directories"), without moving or copying files.

When composing albums, I want to filter down (i often make N pictures of the same thing), and select the best pictures, even across different devices (directories representing them), but without messing in the original files directory.

I want software that makes this easier, but doesn't hide anything from me. The process should be transparant and only be a thin layer over standard filesytme structures.

Photo management workflow assumptions.

  1. You have one or more directories that contain the pictures you pull from your devices or friends, and the directories remain untouched (other than the occasional sync to bring it up to date). No renames, file modifications, or deletes that don't have corresponding deletes on the device. This allows for trivial syncing/backups. My directories are named like photos/originals/dieter-sony-dsc
  2. any modifications done to pictures are saved in files in a separate directory. (such as photos/edits/dieter-sony-dsc). The filename of an edit looks like <original-basename>-<name of edit>.<original-extension>.
  3. You assign tags to pictures based on their contents or desired goal (i.e. whether it should go in a certain album or not).
  4. Exported directories (for photo albums for uploading or streaming to media) are generated by looking for files with certain tags in the aforementioned source and edits directories. They can be erased and regenerated at any point. They merely contain symlinks.

For 1 I use rsync, Pixie makes 2 and 3 as quick and easy as possible and generate_albums.sh takes care of 4.

It is conceivable that with the advent of new technology some of these things may change, however a simple file layout that works on all posix file systems is very valuable (i.e. just directories, files and symlinks).

Installation

Install tmsu, Go (aka golang) and graphicsmagick (for gothum) Then:

export GOPATH=~/go
go get github.com/stvp/go-toml-config
go get github.com/mattn/go-sqlite3
go get github.com/Dieterbe/gothum
go get github.com/Dieterbe/pixie
cd ~/go/src/github.com/Dieterbe/pixie
go run pixie.go

getting started

  • create a tmsu database (~/.tmsu/default.db must exist, you can do this by typing tmsu files --all)
  • update config.ini to point to the db and thumbnail directories, and to use your preferred image editor for edits (optional). Note that on Linux you probably already have a thumbnails dir from various desktop apps, it's best to use the existing one, that way multiple apps (incl pixie) can work with the same thumbnails.
  • configure keyboard shortcuts in partials/photos.html
  • go run pixie.go, load http://localhost:8080 in browser
  • Enter a directory (full path) that contains pictures. If you want to use the edits feature, then some parent of the path has to be 'originals'. (e.g. if '/foo/bar/originals/john-import-from-camera' contains your pictures, then pixie knows to put edits in '/foo/bar/edits/john-import-from-camera')

TODO

  • using multiple directories in the UI at the same time (e.g. if you have pics of the same thing taken with different camera's), by sorting and merging the image lists by time, you can more easily select the best ones.
  • a way to have "mirror directories", of files smaller than the originals, but bigger than thumbnails; so that export directories can point to those files. (this also means that not every file should have be mirrored, only the ones which are used)

Creating edits

use the keybind you defined to trigger the editor. pixie will create the edits dir (and any parent dirs) if needed, and copy the currently focused picture in there (so that you don't accidentially save changes to the original). Pixie makes the tmp file unwriteable, so after your changes, just use the 'save as' feature of your editor and save the image as <original-name>-<description-of-edit>.<ext> (e.g. IMG_20131019_125436-cropped-and-sharpened.jpg). To abort, just exit the editor. Pixie will remove the tempfile and load the edit to the right of your original (there's keybinds to navigate left-right) and allow you to tag the picture just like any other.