Commit graph

749 commits

Author SHA1 Message Date
n3f4s 72bda973f4 Pull path from pipe when -n given 2021-11-30 18:09:29 +00:00
Maxim Karasev f58e81288b Rename imv-folder to imv-dir
There is no such thing as 'folder' in Unix. We only have directories
(also sometimes called 'catalogs').
2021-09-29 21:17:05 +00:00
Maxim Karasev daea88c572 Simplify imv-folder script
This changes make it more portable by removing bash dependency and not
using GNU-specific 'sort' syntax. Also this fixes issue with selected
image not being displayed first.
2021-09-29 21:17:05 +00:00
Issam E. Maghni ac30f34bd3 cairo: Replace <cairo/cairo.h> by <cairo.h>
See https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/doc/tutorial/src/include/cairo-tutorial.h
2021-09-05 17:59:51 +00:00
Harry Jeffery 6fffe14458 Release v4.3.0 2021-08-05 22:20:41 +01:00
Ivan Oleynikov f71548ce45 Make freeimage backend have preceedence over libjpeg
The current implementation of freeimage backend automatically rotates the
images based on EXIF info. Libjpeg backed doesn't do that (although libjpeg
itself may be able to, I didn't check). This commit makes Imv use freeimage for
jpeg files when both backends are available to enable automatic image rotation
when possible.

A cleaner solution could be to add automatic rotaiton functionality to libjpeg
backend as well, but this quick hack is better than nothing ☺
2021-08-05 21:01:30 +00:00
kat witch b194997c20 Fix lack of X11 window deletion event handling 2021-07-29 17:02:35 +00:00
Ivan Oleynikov 33560e8e2e WIP: Use set_size instead of set_absolute_size for font
This seems to have a better behavior, this way, the fonts in Imv seem to have
the same size as the fonts in other programs (Sway, Waybar) when configured in
the same way.
2021-07-29 17:01:31 +00:00
Ivan Oleynikov 3c1d27d885 Scale fonts when Wayland updates scaling factor
Before this commit, the code in src/wl_window.c seemed to handle the Wayland
scaling [1] correctly, it was sending resize events to imv to update the buffer
size accordingly. One thing it didn't update is the scaling of fonts that Pango
renders on Cairo.

This commit simply forwards the scaling factor (computed as [1] requests)
together with updated buffer dimentions in resize event, and when the resize
event is handled it calls cairo_surface_set_device_scale to notify Pango/Cairo
of the scaling.

For X11, I simply assume the scaline factor is always 1. This seems to be what
the old code did: `grep scale src/x11_window.c` gives no matches. AFAIK, X11
does not have an established way of telling clients what scaling factor to use
(and never updates it at runtime).

[1]: https://wayland-book.com/surfaces-in-depth/hidpi.html
2021-07-29 17:01:31 +00:00
Harry Jeffery eeaf5e3cb9 Also suppress TIFF errors from stdin 2021-07-09 00:18:47 +01:00
Harry Jeffery e7c564f051 Fix missing m dependency for imv-msg
Fixes #328
2021-07-09 00:07:08 +01:00
Harry Jeffery 8d91875207 Suppress annoying TIFF errors
Fixes #252
2021-07-09 00:00:44 +01:00
Harry Jeffery 27df0fb8fe Fix image skipping when reading slow filesystems
Fixes #201
2021-07-08 23:46:16 +01:00
somini ebef68aece Add a contrib-commands option
This includes the commands available in contrib/. It's enabled by
default.

I moved the manpage and desktop file to their regular locations to avoid
complicating the meson file too much. They won't be installed when you
disable the contrib commands.
2021-07-08 23:30:24 +01:00
somini 9557a4b112 Move imv-folder files to contrib
See #261
2021-07-08 23:30:24 +01:00
somini b557c56d44 Tweak imv-folder file sorting
Make sure to version-sort the files. Requires a non-POSIX `sort`, which
should be a mild requirement.

See
d12470375a (commitcomment-44048679)
2021-07-08 23:30:24 +01:00
somini c415c456ea Fix imv-folder usage with sub-folders with images
See https://github.com/eXeC64/imv/pull/225#discussion_r494270357
2021-07-08 23:30:24 +01:00
somini 673e54710a Keep the folder order when using imv-folder
Guaranteed-ish by most shells, see https://unix.stackexchange.com/a/368507.

See #229
2021-07-08 23:30:24 +01:00
somini 38eee61beb Include support for imv-folder
This is a wrapper to open all images in a folder.

Includes:
- Script itself
- Man page
- Desktop file
- Necessary Makefile changes

Fix #223
2021-07-08 23:30:24 +01:00
Ronan Dalton eccd3cf912 Fix zoom speed dependence on buffer/image width 2021-07-08 23:17:35 +01:00
n3f4s 22cd0b3813 Don't stop listing files in dir when stat fail
Check errno when stat fail during traversal of a directory: doesn't stop
traversing for all stat errors
2021-07-08 23:16:08 +01:00
mx deb8b5a864 fix double-free when backend libjpeg is used 2021-06-24 21:22:13 +01:00
Aleksander Szczygieł ff0b802c03 Resolve path in imv_navigator_find_path()
All items' pathes are resolved in add_item() so path used in imv_navigator_find_path() should be resolved too. This patch fixes #308
2021-04-14 15:33:32 +01:00
Hugo Barrera 478310d0c6 List image/heif as a supported mime type
`imv` now supports HEIC, but other applications (e.g.: file managers) cannot determine this, since it's not listed as a supported mime type.

Adding this entry allows such applications to determine that `imv` can handle HEIC files.
2021-04-14 15:32:01 +01:00
Haelwenn (lanodan) Monnier 70a70727b7 Fallback to 'opengl' when dependency('gl') fails
This allows for imv to work on a system where libX11 is fully removed
2021-04-14 15:31:37 +01:00
Pascal Sommer 8e46aa0238 use exponential increments for zooming 2021-04-14 15:29:38 +01:00
Matthias Coppens 2c0f10a91b Include string header 2021-04-14 15:28:52 +01:00
Harry Jeffery 1b85ba53b0 Wayland: Perform display roundtrip after changing scale
Fixes #305
2021-01-09 16:15:10 +00:00
Harry Jeffery a4bb341a9b Release v4.2.0 2020-12-17 20:30:42 +00:00
Harry Jeffery 49ba898e92 Fix first/last image indexing bug
Fixes #301
2020-12-17 20:18:09 +00:00
Matthias Coppens e3f135a0ad Add include limits.h 2020-12-17 19:48:00 +00:00
Mark Stosberg df51acbf15 Add default keybinding for image rotation
This is the same key binding used by Eye of Gnome for a 90 degree clockwise image rotation for people coming from that image viewer.
2020-12-03 01:19:58 +00:00
Scott Moreau 91e06fff2d wayland: Fix initial black screen due to size of 0x0
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/master/stable/xdg-shell/xdg-shell.xml#L1037
states regarding xdg_toplevel.configure "The width and height arguments specify a hint to the window". imv
was using these dimensions even if they are 0x0, which is valid for the compositor to send. Clearly this is
a bad hint and should be ignored. This patch does that, and fixes #293.
2020-12-02 00:20:01 +00:00
Stephan Lachnit 84a1f7aa83 Use system inih if available
* inih is now widely available as a system library
* if not, a fallback from Wrap DB can be used

Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2020-12-02 00:19:14 +00:00
Érico Rolim 82960d3c41 imv: don't rely on glibc's lack of FILE sync on exit.
This issue was spotted on musl, where killing imv with the Q shortcut
while it was waiting for image paths in stdin led to the application
hanging until stdin received an EOF manually with ^D, since the stdin
stream was locked by the fgets() function.

Switching to pipes and a helper thread allows us to use read() for
reading from STDIN_FILENO while still taking advantage of the fgets()
logic for handling newlines and buffer size. read() is a thread
cancellation point (fgets() is only an optional one), which makes it
possible to cancel the helper thread cleanly and force the thread using
fgets() to exit when the write-end of the pipe it's reading from is
closed.
2020-12-02 00:11:51 +00:00
Érico Rolim 489421b9e7 imv, ipc: improve error checking for ipc creation.
Since this isn't essential functionality, it's ok to simply not provide
it. In cases where XDG_RUNTIME_DIR was empty (but not unset) or set to a
directory where the user didn't have write permissions, socket creation
would fail and lead to segmentation faults in imv, due to the return
value of imv_ipc_create() not being checked.
2020-11-16 22:12:07 +00:00
Érico Rolim 6cb2b8495f imv: fix stdin prompt and use fputs.
Add newline to the prompt for reading paths from stdin.

Since string formatting isn't being used, it's possible to use fputs()
directly in the logging callback in imv.c.
2020-11-16 22:11:32 +00:00
Harry Jeffery ac331f12fa Document 'crop' scaling mode 2020-11-16 22:08:21 +00:00
Érico Rolim 5a28494594 .builds/ubuntu.yml: fix image name. 2020-11-16 22:02:29 +00:00
Simon Ser cb7b5fcd5d Make tests and man pages optional
Allows to build imv without these extra features.
2020-11-16 22:01:46 +00:00
Harry Jeffery 0131ab6f97 Fix bug handling multi-key binds 2020-08-31 14:21:24 +01:00
Torstein Husebø 90cc7adbd2 treewide: fix typos 2020-08-31 13:56:50 +01:00
Harry Jeffery e18b7bca0b Add missing documentation for overlay_position_bottom 2020-08-31 13:58:01 +01:00
Andreas Stallinger df0d1cf7c2 colored overlay: config options in man, split rgba
split color_rgba into color_rgb and alpha
added configuration options to man pages

cleanup gitignore: the man pages output is now in the build directory,
so there is no to ignore man pages individually
2020-08-31 13:53:03 +01:00
Andreas Stallinger d1e4f7fcff colored overlay
* first steps for colored overlay
* overlay color wip
* add option for overlay position
    if overlay_positiion_bottom is true overlay is at the bottom
* remove enum for overlay position
2020-08-31 13:53:03 +01:00
Tuomas Siipola afe155dcea Support rotate and flip commands on SVG 2020-07-21 01:54:17 +01:00
Andreas Stallinger bb4a609cc0 FreeBSD: use librsvg2-rust instead of librsvg2
the library is rewritten in rust and on freebsd there is an other
package for it.
2020-07-21 01:52:50 +01:00
Clownacy 61533df66c Sort directory entries alphabetically
Previously, they would be sorted by however readdir returned them.

I suppose a proper configuration option to control sorting would be
nice, but for now, I think replacing forced random order with forced
alphabetical order is an improvement.
2020-07-21 01:52:17 +01:00
Aleksei Bavshin 500a6b3acc Use private mapping for memfd with keymap.
mmap with MAP_SHARED would fail if the compositor provides a read-only
descriptor with keymap. And at least weston applies F_SEAL_WRITE to the
memfd if supported by the platform.

Fixes #263
2020-07-21 01:50:01 +01:00
Manuel Zimmermann 767ce08307 README: Improve build instructions
The .gitignore file ignores the directory build/, therefore it makes
most sense to use this directory in the example as well.
2020-07-21 01:47:55 +01:00