Age | Commit message (Collapse) | Author |
|
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 ☺
|
|
|
|
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.
|
|
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
|
|
|
|
Fixes #328
|
|
Fixes #252
|
|
Fixes #201
|
|
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.
|
|
See #261
|
|
Make sure to version-sort the files. Requires a non-POSIX `sort`, which
should be a mild requirement.
See
https://github.com/eXeC64/imv/commit/d12470375a33230ffaaea407237125f18f812781#commitcomment-44048679
|
|
See https://github.com/eXeC64/imv/pull/225#discussion_r494270357
|
|
Guaranteed-ish by most shells, see https://unix.stackexchange.com/a/368507.
See #229
|
|
This is a wrapper to open all images in a folder.
Includes:
- Script itself
- Man page
- Desktop file
- Necessary Makefile changes
Fix #223
|
|
|
|
Check errno when stat fail during traversal of a directory: doesn't stop
traversing for all stat errors
|
|
|
|
All items' pathes are resolved in add_item() so path used in imv_navigator_find_path() should be resolved too. This patch fixes #308
|
|
`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.
|
|
This allows for imv to work on a system where libX11 is fully removed
|
|
|
|
|
|
Fixes #305
|
|
|
|
Fixes #301
|
|
|
|
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.
|
|
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.
|
|
* 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>
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
|
|
Allows to build imv without these extra features.
|
|
|
|
|
|
|
|
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
|
|
* 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
|
|
|
|
the library is rewritten in rust and on freebsd there is an other
package for it.
|
|
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.
|
|
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
|
|
The .gitignore file ignores the directory build/, therefore it makes
most sense to use this directory in the example as well.
|
|
It's not documented when this value should be freed but other GLX
applications free it here.
|
|
|
|
|
|
Calling `rsvg_handle_close` doesn't do anything here because the handle
is already constructed with data or file. `g_object_unref` is called
instead to free memory.
|
|
|