Přemysl Eric Janouch
701846ab39
Implement a process-local VFS to enable grouping together arbitrary URIs passed via program arguments, DnD, or the file open dialog. This VFS contains FivCollectionFile objects, which act as "simple" proxies over arbitrary GFiles. Their true URIs may be retrieved through the "standard::target-uri" attribute, in a similar way to GVfs's "recent" and "trash" backends. (The main reason we proxy rather than just hackishly return foreign GFiles from the VFS is that loading them would switch the current directory, and break iteration as a result. We could also keep the collection outside of GVfs, but that would result in considerable special-casing, and the author wouldn't gain intimate knowledge of GIO.) There is no perceived need to keep old collections when opening new ones, so we simply change and reload the contents when needed. Similarly, there is no intention to make the VFS writeable. The process-locality of this and other URI schemes has proven to be rather annoying when passing files to other applications, however most of the resulting complexity appears to be essential rather than accidental. Note that the GTK+ file chooser widget is retarded, and doesn't recognize URIs that lack the authority part in the location bar. |
||
---|---|---|
docs | ||
resources | ||
subprojects | ||
tools | ||
wuffs-mirror-release-c@123a5c6ede | ||
.clang-format | ||
.gitignore | ||
.gitmodules | ||
fiv-browse.desktop | ||
fiv-browser.c | ||
fiv-browser.h | ||
fiv-collection.c | ||
fiv-collection.h | ||
fiv-context-menu.c | ||
fiv-context-menu.h | ||
fiv-io-benchmark.c | ||
fiv-io.c | ||
fiv-io.h | ||
fiv-jpegcrop.c | ||
fiv-jpegcrop.desktop | ||
fiv-sidebar.c | ||
fiv-sidebar.h | ||
fiv-thumbnail.c | ||
fiv-thumbnail.h | ||
fiv-update-desktop-files.in | ||
fiv-view.c | ||
fiv-view.h | ||
fiv.c | ||
fiv.desktop | ||
fiv.gschema.xml | ||
fiv.svg | ||
LICENSE | ||
meson_options.txt | ||
meson.build | ||
README.adoc | ||
tiff-tables.awk | ||
tiff-tables.db | ||
xdg.c | ||
xdg.h |
fiv
fiv is a slightly unconventional, general-purpose image browser and viewer for Linux (that said, macOS and Windows ports are possible).
Features
-
Uses a compact thumbnail view, helping you browse collections comfortably.
-
Supports BMP, (A)PNG, GIF, TGA, JPEG, WebP directly, plus optionally raw photos, HEIC, AVIF, SVG, X11 cursors and TIFF, or whatever your gdk-pixbuf modules manage to load.
-
Employs high-performance file format libraries: Wuffs and libjpeg-turbo.
-
Makes use of 30-bit X.org visuals, whenever it’s possible and appropriate.
-
Has a notion of pages, and tries to load all included content within files.
-
Can keep the zoom and position when browsing, to help with comparing zoomed-in images.
Explicit non-goals
-
Editing—that’s what editors are for, be it GIMP or Rawtherapee; nothing beyond the most basic of adjustments is desired.
-
Following the latest GNOME HIG to the letter—header bars are deliberately avoided, for their general user hostility.
-
Memory efficiency is secondary to both performance and development effort.
Aspirations
Show colours as accurately as hardware allows. Open everything. Be fast. Not necessarily in this order.
Packages
Regular releases are sporadic. git master should be stable enough. You can get a package with the latest development version from Archlinux’s AUR.
Building and Running
Build dependencies: Meson, pkg-config
Runtime dependencies: gtk+-3.0, glib>=2.64, pixman-1, shared-mime-info,
libturbojpeg, libwebp
Optional dependencies: lcms2, LibRaw, librsvg-2.0, xcursor, libheif, libtiff,
ExifTool, resvg (unstable API, needs to be requested explicitly)
$ git clone --recursive https://git.janouch.name/p/fiv.git $ meson builddir $ cd builddir $ meson compile
Considering the vast amount of dynamically-linked dependencies, do not attempt
direct installations via ninja install
. To test the program:
$ meson devenv fiv
The lossless JPEG cropper is intended to be invoked from a context menu.
Documentation
For information concerning usage, refer to the user guide, which can be invoked from within the program by pressing F1.
Contributing and Support
Use https://git.janouch.name/p/fiv to report any bugs, request features,
or submit pull requests. git send-email
is tolerated. If you want to discuss
the project, feel free to join me at ircs://irc.janouch.name, channel #dev.
Bitcoin donations are accepted at: 12r5uEWEgcHC46xd64tt3hHt9EUvYYDHe9
License
This software is released under the terms of the 0BSD license, the text of which is included within the package along with the list of authors.