Commit Graph

63 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 796b05c9a5
Integrate online reverse image search
This makes use of our image processing capabilities in order to
turn arbitrary image files into normalized thumbnails,
upload them to a temporary host, and pass the resulting URI
to a search provider.

In future, fiv should ideally run the upload itself,
so that its status and any errors are obvious to the user,
as well as to get rid of the script's dependency on jq.
2023-03-15 05:52:32 +01:00
Přemysl Eric Janouch 95bc91e020
Find system libraries using proper names
Fixes Meson warnings.
2023-03-03 12:14:06 +01:00
Přemysl Eric Janouch 0317b88c87
Don't require asciidoctor or a2x, import liberty 2022-10-09 01:24:03 +02:00
Přemysl Eric Janouch 9fb90607ad
Add a traditional manual page for fiv 2022-08-24 05:23:34 +02:00
Přemysl Eric Janouch dd09af34b7
Make binaries say what git commit they come from
The manual skipping of the initial "v" from tag names is unfortunate,
but still a bit better than further cluttering up the build system.
2022-08-13 12:42:21 +02:00
Přemysl Eric Janouch dcbc8a90b4
meson.build: add a bunch of validating tests 2022-08-12 15:49:57 +02:00
Přemysl Eric Janouch 1a163bdb8b
Resolve a few issues with MSYS2 cross-builds
- Fix launching of subprocesses (missing gspawn helpers).
 - Discard unused GSettings schemas.
 - Make the program find its user guide.
 - Bundle a somewhat suboptimal version of ExifTool.
2022-08-11 16:10:04 +02:00
Přemysl Eric Janouch cf19f82875
Automate Windows builds, add icons to executables
Scripts have been ported from sdtui, and adjusted for Meson.

The port is broken through and through on WINE,
but sort-of works natively.
2022-08-11 00:19:59 +02:00
Přemysl Eric Janouch 701846ab39
Support opening collections of files
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.
2022-08-08 18:06:50 +02:00
Přemysl Eric Janouch fa034a1a6a
Handle gdk-pixbuf's dynamic format support better
If we use it, install an update script.
2022-07-25 19:05:37 +02:00
Přemysl Eric Janouch dcc5b6c719
Use GSettings for a new native window toggle
Also, redo desktop files handling.
2022-07-25 19:05:27 +02:00
Přemysl Eric Janouch a1b2225750
Move the browser's popup menu to its own file 2022-07-04 20:44:47 +02:00
Přemysl Eric Janouch 81145064de
Generate TIFF structs/enums from a text file
This is to make the tables much easier to maintain.
2022-06-10 02:18:14 +02:00
Přemysl Eric Janouch 60a8ee7a80
Build tools with Meson as well 2022-06-10 02:08:56 +02:00
Přemysl Eric Janouch 024b5117b4
Get rid of our spng dependency
Thumbnails can be properly loaded using Wuffs now.
2022-06-04 23:14:15 +02:00
Přemysl Eric Janouch a68a73cf5c
Don't mention gdk-pixbuf as a direct dependency
It's a similar case to Cairo.
2022-02-19 22:02:22 +01:00
Přemysl Eric Janouch 433ede4bf1
Add a lossless JPEG cropper
This is more of an MVP, as metadata probably need adjustments.
2022-02-19 20:48:38 +01:00
Přemysl Eric Janouch ee71fb0dd0
Start a basic user guide
Move some information out there from the README.
2022-01-25 05:54:00 +01:00
Přemysl Eric Janouch a7e638207f
Fix Meson
The disabler, for some reason, bubbles up to its target.
2022-01-23 04:44:41 +01:00
Přemysl Eric Janouch 4ba1d85363
Add preliminary support for resvg
It claims better SVG support, but it sucks for a plethora of reasons.
2022-01-21 09:14:19 +01:00
Přemysl Eric Janouch 45238d78cd
Mesonize JPEG Quant Smooth
Now SIMD works on amd64, although the build remains questionable,
because it assumes that all of its compiler flags will work.

This way we lose an uncomfortable git submodule.

Also, add Meson subprojects to .gitignore.
2022-01-19 01:11:47 +01:00
Přemysl Eric Janouch feda4fd70f
Don't force sanitizers in debug builds 2022-01-07 08:37:18 +01:00
Přemysl Eric Janouch 6869816cc4
Fix desktop file regeneration with certain AWKs 2022-01-07 06:47:13 +01:00
Přemysl Eric Janouch 077747f428
Improve desktop file regeneration 2022-01-06 11:44:01 +01:00
Přemysl Eric Janouch bb67df716c
Mildly improve Ubuntu 20.04 compatibility 2022-01-06 08:39:33 +01:00
Přemysl Eric Janouch 685defa684
Rename the whole project shorter
There is no point in claiming speed, it turns out to be a strange focus
to have, considering the amount of available innovations to make.

The new name does not appear to be taken by anything important.
2022-01-05 04:45:46 +01:00
Přemysl Eric Janouch bf47782f0a
Move thumbnails into their own source file
And clean up identifiers.
2021-12-28 20:18:25 +01:00
Přemysl Eric Janouch 336053f24d
Implement trivial wide thumbnail production
Also make libwebp a required dependency.
2021-12-27 21:51:01 +01:00
Přemysl Eric Janouch 40c1f8327e
Use Little CMS for JPEG colour management 2021-12-24 14:19:22 +01:00
Přemysl Eric Janouch 2d4cab52b3
Integrate jpeg-quantsmooth
Also, don't pointlessly store JPEGs in an ARGB Cairo surface.
2021-12-22 14:20:39 +01:00
Přemysl Eric Janouch b78010ccb1
Adopt shorter identifiers
Also, slightly reformat the source code according to clang-format.
2021-12-18 07:04:01 +01:00
Přemysl Eric Janouch ea2d159773
Clean up dependencies 2021-12-15 03:29:47 +01:00
Přemysl Eric Janouch 4f035bc6b1
Allow saving the current frame/page in WebP
Also support saving just the metadata.
2021-12-15 02:45:20 +01:00
Přemysl Eric Janouch 006e547deb
Read out Exif and ICC profiles from WebP 2021-12-12 21:31:30 +01:00
Přemysl Eric Janouch caca14036c
Add preliminary direct support for WebP 2021-12-12 19:15:34 +01:00
Přemysl Eric Janouch ac70c7724b
Add preliminary HEIF/AVIF support
The gdk-pixbuf plugin does not work here, for whatever reason.

Moreover, close integration exposes higher bit depths, metadata,
and auxiliary images.

The library is awful and copylefted, but it's the only reasonable
thing that works.
2021-12-11 16:11:25 +01:00
Přemysl Eric Janouch 0d9cb78f03
Force sanitizers for debug builds 2021-11-30 22:53:01 +01:00
Přemysl Eric Janouch 666bfc0759
Support using libtiff directly
Multiple directories are read as multiple pages.

The error handling is mildly questionable, as is libtiff.
2021-11-28 02:20:23 +01:00
Přemysl Eric Janouch 047e49051b
Register for opening directories 2021-11-22 20:37:16 +01:00
Přemysl Eric Janouch 8376ae9c4a
Add some custom action buttons to the sidebar
So far they're inactive, and do not do anything.

Change the icon for the current directory to stand out.
2021-11-20 22:02:02 +01:00
Přemysl Eric Janouch 35500b8697
Readjust meson.build to jpakkane's brain damage 2021-11-20 14:35:17 +01:00
Přemysl Eric Janouch 803f841463
Fix key handling and Meson 2021-11-20 14:28:32 +01:00
Přemysl Eric Janouch 216767d7ee
Add a customized sidebar widget
Slowly eliminating all potential uses of GTK+'s standalone
file open dialog, which is highly duplicitous.
2021-11-19 20:03:43 +01:00
Přemysl Eric Janouch f8526d486a
Do not lie as much in the desktop file 2021-11-18 13:41:58 +01:00
Přemysl Eric Janouch db7a28b187
Add support for opening Xcursor files
Sadly, they don't have a canonical extension, and they don't show up
in the browser.  We might want to employ some level of sniffing.
The first 16 bytes are enough to identify a lot.
2021-11-17 13:49:15 +01:00
Přemysl Eric Janouch 7dba21c6d8
Use the hand/pointer cursor in the browser
Also, fix the build.
2021-11-13 09:21:28 +01:00
Přemysl Eric Janouch d20c6469c0
Clean up 2021-11-13 09:06:01 +01:00
Přemysl Eric Janouch f7c1006053
Actually add gdk-pixbuf to dependencies 2021-11-12 13:42:59 +01:00
Přemysl Eric Janouch f74e7c34d5
Tell wrapped spng to give us a static library 2021-11-12 13:02:57 +01:00
Přemysl Eric Janouch 21b110a7d6
Use spng to load thumbnails
Speed matters here, and this makes us about 20 percent faster
at loading large directories.

Moreover, libpng's PNG_ALPHA_BROKEN is indeed broken.

Thumbnails have a fairly fixed format, so there are very few practical
corner cases that could have been missed.
2021-11-12 11:45:34 +01:00