BestImageViewer / geeqie

claiming to be the best image viewer / photo collection browser
http://www.geeqie.org/
GNU General Public License v2.0
471 stars 77 forks source link

Geeqie image set workflows [high level design] #989

Open xsdg opened 2 years ago

xsdg commented 2 years ago

This builds on a short conversation between @xsdg and @caclark, here: https://www.freelists.org/post/geeqie/Any-good-way-to-set-marks-keywords-given-a-list-of-files

So, figuring out a consistent UX between Collections, marks, etc. is something we've already thought about previously, as at least documented in: https://github.com/BestImageViewer/geeqie/issues/443 "Integrate Collections into main window" https://github.com/BestImageViewer/geeqie/issues/461 "Pan View high-level design"

We agreed at the time (and I still agree) that the intent of marks is to be a temporary scratch-pad for doing work in geeqie, which gets persisted in other ways (such as keywords, or collections)

I think it makes sense to think of the different kinds of image "sets" that geeqie supports and the workflows that make sense among them. I'm starting a list off the top of my head, but I expect it to be incomplete right now (because I'm forgetful, because this is a quick sketch, and also because I expect that no single person understands Geeqie's entire feature set). Please add things that I missed.

Image views

1) List view in the file browser 2) Icon view in the file browser 3) Pan view 4) Collection view

Image sets

Subsets of image sets

Workflows

Loading

Creating a collection

1) From the UI, "Add to collection" from a variety of context menus. Can be used to bulk-add multi-selected images with one click. 2) From the CLI, you can manually create a file with the .gqv header and footer 3) Are there others?

Setting keywords

1) Can use info sidebar to add keywords to one or more images 2) Keywords and marks can be directly linked, so that applying a keyword automatically sets the mark, and setting the mark automatically applies the keyword. (Likewise, unsetting mark/removing keyword) 3) Are there others?

Setting marks

1) Can use number keys to set or unset a given mark on a given image or multi-selected image subset. 2) Can use any of a variety of boolean operations (for instance, AND) to apply any image selection to a given mark 3) Aforementioned linked keywords/marks behavior 3) Are there others?

Unsupported workflows

With the strong caveat that I am very likely to be missing important features (for one, I don't understand what geeqie -l does), here are some clear features that seem to be missing: 1) There should be some simple way to apply a keyword to all of the images in a Collection.

caclark commented 2 years ago

By marks (not persistent; must be loaded into a running geeqie instance somehow)

Marks are persistent if Edit/Preferences/Behavior/Save Marks On Exit is set.

Load a collection ("Open collection…" from UI. Can someone explain how geeqie -l [collections] is supposed to work?)

geeqie --list <files> will open geeqie with <files> in a new Collection with the title Untitled<n>. If geeqie is already running, executing this command does not work correctly - that is a bug/feature.

In my comment in #443 I said that symlinks were not possible - however files with the same name can be handled by auto-rename, and symlinks do work across file systems.

Some ideas for integrating Collections into the main window are:

  1. When a collection is selected, hide the files pane and insert the Collection window in its place. Each time a collection is opened, a new standard geeqie window containing all 3 panes will be opened, with the Collection window in place of the files pane.

The folders pane will contain confusing information. It will be necessary to amend some main menu items e.g. back/forward image. There should be an obvious sign to the user that they are using collection objects and not the original files.

2. Create another set of files pane routines - view-collections, view-collections-list and view-collections-icons. What does the user expect to be working with? If the expectation is image files, maybe one of the following solutions would be better.

3. Instead of using a text file to hold Collection data, use symlinks. Under $HOME/.local/share/geeqie/collections create a folder for each collection. Create a symlink for each collection member.

Geeqie's drag-and-drop must be amended to create a file symlink in these folders when a drop is made. Some right-click menus must be changed. The user can screw things up because this is just another system folder that can be accessed by any program. Perhaps AppArmor or something else can be used to limit access to these folders only to geeqie, but that is just too complicated.

This still might be ok, because if the user is going to make a drag-and-drop to a collection folder, they will probably use the geeqie user interface to do it. However if they do use a standard file manager to DnD to one of these folders, things will get messy.

4. As above, but create the collection folders under /tmp/.geeqie-collections/<collection-name>. Symlink $HOME/.local/share/geeqie/collections/<collection-name> to /tmp/.geeqie-collections/<collection-name>.

There is still the possibility the user can screw things up, but they are less likely to mess around with hidden folders in /tmp. When geeqie is opened, the collections /tmp folders will be created in a background task. When geeqie is closed, the contents of the collection folders will be written back to the .gqv files, and anything other than a symlink to an existing file discarded.

Manual ordering is essential for Collections - I assume gio metadata can be used for this.

This seems like one of the worst hacks I have ever come up with. At this point I usually conclude that the original design is wrong - but it is too late for that.