not all WMs support `_NET_WM_NAME` and `_NET_WM_ICON_NAME`
this patch sets `WM_NAME` and `WM_ICON_NAME` inside win_set_title()
Closes: https://github.com/nsxiv/nsxiv/issues/233
remove some non-posix extensions which slipped through and adjust ci to
new Makefile changes
users can still overwrite the variables explicitly by using
`make VAR=VALUE`
packagers can also add extra libs to LDLIBS, we're internally using
NSXIV_LDLIBS now.
* [ci] fix broken ci
* [ci] enable higher optimization level and lto
higher optimization levels enable more warnings and deeper analysis.
likewise, lto can catch a couple errors which typically goes unnoticed
without it.
this allows for configuring thumbnail mode mouse bindings similar to
image mode bindings.
however we can't put the thumbnails bindings into the existing buttons[]
array due to fallthrough. For example M3 would switch mode and then end
up selecting an image.
which is why thumbnail bindings have been put into it's own array
`buttons_tns[]` and `buttons[]` has been renamed to `buttons_img[]` for
consistency.
Closes: https://github.com/nsxiv/nsxiv/issues/131
fixes all -Wshadow related warnings (on gcc). this would allow us to use
`-Wshadow` in github workflow (https://github.com/nsxiv/nsxiv/pull/195).
i've thought about adding `-Wshadow` to our Makefile as well, but
decided against it to keep the Makefile CFLAGS barebore/minimal.
currently if the keyhandler invocation fails, for example due to it not
being present, the statusbar does not reset and stays on "getting
keyhandler input" message.
now the return value from run_key_handler() is used to determine if the
function was successful or not. and if the function failed, we call
handle_key_handler() with false which resets the statusbar.
we also no longer call redraw() within run_key_handler() and instead assign
it's return value to dirty which does a redraw if true.
byteorder_t and size_readable is not used anywhere within the code.
byteorder_t seems to be a remain from some time sxiv handled exif data itself instead of relying on a library, introduced in 691c6d7, and probably became irrelevant when libexif was added as dependency again. And size_readable from some time it displayed the file size in the window title, introduced in bad9a70.
rendering is a pretty expensive operation, especially when scaling with
anti-aliasing. by waiting for the image to render before setting
timeout, the actual timeout ends up being (render time + actual delay).
this pretty much fixes the slowdown entirely on all the images i've
tested. it should also improve things noticeably even in cases where
the delay between frames is shorter than how fast we can render.
although on such images, the issue may not be fixed entirely.
Closes: https://github.com/nsxiv/nsxiv/issues/70
since Imlib2 v1.7.5, it is capable of parsing exif data on jpeg files
and auto orienting them. this caused nsxiv to rotate the image twice.
Closes: https://github.com/nsxiv/nsxiv/issues/187
The problem:
1. For the most people imlib2's default 4MiB is unreasonably low;
2. Hardcoding cache size to ~256MiB has performance benefits and doesn't
increase RAM usage too much on relatively modern systems;
3. But we can't do that, because that would be detrimental to low spec systems
that (apparently) not (?) building nsxiv from source, as been discussed
#171
Solution:
Calculate cache size based on total memory.
Default is set as 3%, which means:
* ~245MiB for 8GiB
* ~30MiB for 1GiB
* and so on
CACHE_SIZE_LIMIT (256MiB by default) sets the highest possible value. And in
case we cannot determine the total memory (e.g since _SC_PHYS_PAGES isn't
POSIX) use CACHE_SIZE_FALLBACK (32MiB by default) instead.
Co-authored-by: NRK <nrk@disroot.org>
compilation currently fails with `make HAVE_LIBFONTS=0` due to
`EXIT_SUCCESS` not being defined. I assume Xft.h includes stdlib.h which
is why compilation works with HAVE_LIBFONTS=1
this switches to using 0 as cg_quit argument in keybindings. if my
interpretation of the C99 standard is correct, then 0 and EXIT_SUCCESS
means the same thing.
> If the value of status is zero or EXIT_SUCCESS, an
> implementation-defined form of the status successful termination is
> returned.
* Move `-T` option in manpage
The `-T` option breaks the alphabetical order of options in both the
SYNOPSIS and OPTION sections
* Reword "on bottom of" in manpage
* Pluralize "count pixel"
* Fix typos
* Reword `M` keyboard binding description
* rename info bar -> statusbar for consistency
* document all the thumbnail bindings
* Add website to HOMEPAGE section
* Add missing maintainers
* Sort maintainers by activity
Co-authored-by: NRK <nrk@disroot.org>
* specifies the function argument type in commands.h compared to leaving
it unspecified. all the functions in cmd_t must have arg_t as it's
argument.
* changes to commands.h will now trigger a rebuild - this restores old
behavior prior to 12efa0e
* cg_quit now uses it's argument as exit status
* DestroyNotify invokes cg_quit rather than calling exit directly.
* Explicitly pass EXIT_SUCCESS to cgquit in keybinding
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
now that imlib2 (v1.7.5) is able to load the first frame of an
animated-webp file, we no longer need the `is_webp` check to bypass
imlib2.
ref: https://phab.enlightenment.org/T8964
* fix compile error
* use variable instead of macro
* Revert "use variable instead of macro"
This reverts commit a14ef0b231c50e49906761010a4d4231ce4e3e36.
* use local variable instead of macro
* Revert "use local variable instead of macro"
This reverts commit 7e049d55d94f5c003d90e1a10187356f6a7f54b2.
When rendering images, destination image width and height may become
zero due to float-to-int conversion after zoom calculation, later
crashing when creating an image using those dimensions. This sets
a minimum of 1 to both variables.
Closes#82
* fix: send implicit_mod to process_bindings
this solves the edge case where someone might have `ShiftMask + A` in
their keybindings compared to a plain `A`.
Closes: https://github.com/nsxiv/nsxiv/pull/166#issuecomment-978853136
* code-style: smuggle small style fix in
win_draw_bar now mimics autoreload_nop.c functions
with this patch certain gif images will fail to play. one other problem
here is that it suddenly breaks the loop without free-ing data and rows,
leading to a memory leak.
regardless, this needs to be investigated further.
here's an example image where this happens:
https://i.postimg.cc/SQf1TJJg/awoo-study.gif
This reverts commit cca7834e67.
by default imlib2 uses a 4mb cache, which is quite small. this allows
users who have more memory to spare to set a bigger cache size and avoid
reloading an already viewed image if it fits into the cache.
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
with the exception of arrays, all other var names in config.h are in ALL
CAPS. since keyhandler_abort is an unreleased feature, it should be okay
to rename it for consistency.
though.. in the future we should be more careful about naming when
adding new vars to config.h (or the codebase in general.)