summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2022-03-03Release version 29v29N-R-K
2022-03-02fix: window title not working on certain WMsNRK
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
2022-03-02always initialize window titleNRK
before if exec/win-title didn't exist then window title wouldn't be set. this patch makes it so window title is always set to something.
2022-03-02code-style: slight cleanupsNRK
* put TOP_STATUSBAR under the HAVE_LIBFONTS guard * change get_win_title param to take unsigned char ptr * init UTF8_STRING like other atoms
2022-02-27Makefile: cleanup non-posix stuff (#225)N-R-K
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.
2022-02-26add config.h option for top statusbar (#231)N-R-K
Closes: https://github.com/nsxiv/nsxiv/issues/230 Co-authored-by: mamg22 <45301823+mamg22@users.noreply.github.com>
2022-02-24Add libXft-bgra to FAQ in readme (#229)Berke Kocaoğlu
Co-authored-by: NRK <nrk@disroot.org> Co-authored-by: eylles <ed.ylles1997@gmail.com> Co-authored-by: explosion-mental <explosion0mental@gmail.com> Co-authored-by: mamg22 <marcomonizg@gmail.com>
2022-02-23use win-title script for customizing window title (#213)N-R-K
this removes the cli flag `-T` as well as related config.h options. Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2022-02-20Add reuseable abstraction over fork/exec/dup2 (#211)N-R-K
2022-02-20Fix broken ci and enable higher level optimization (#220)N-R-K
* [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.
2022-02-17declare internal variables as staticNRK
2022-02-17code-style: prefer calloc over malloc+memsetNRK
2022-02-13update copyright yearNRK
2022-01-15Add keybind to scroll to image center (#203)Nick Hanley
There are keybinds for scrolling to the edges of an image but there's no way back to the center. This is particularly annoying while zooming.
2022-01-10make thumbnail bindings configureable via config.h (#167)N-R-K
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
2022-01-08Document development workflow for maintainers (#202)mamg22
Co-authored-by: NRK <nrk@disroot.org> Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2022-01-06[ci] separate dep from buildNRK
removes /dev/null redirections from the dep step so in case some dep fails to install/compile we will have the log.
2022-01-06[ci] fetch tcc from a known working commitNRK
avoids our ci failing in case there's a faulty new commit on tcc.
2022-01-06add additional warning and -Werror to github workflowNRK
2022-01-06fix -Wwrite-strings related warningsNRK
2022-01-06fix tcc warningNRK
2022-01-06fix -Wmaybe-uninitialized warningNRK
2022-01-06fix -Wstrict-prototype warningNRK
looks like i missed one in ff88908
2022-01-06fix -Wshadow related warningsNRK
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.
2022-01-03fix: reset statusbar after failed keyhandler (#191)N-R-K
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.
2022-01-02remove unused function and typedef (#199)N-R-K
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.
2022-01-02fix: animation slowdown when zoomed in (#200)N-R-K
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
2022-01-01fix: jpeg exif orientation on Imlib2 v1.7.5 (#188)N-R-K
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
2022-01-01Allow setting cache size based on memory percentage (#184)MahouShoujoMivutilde
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>
2021-12-30fix: broken compilation when using HAVE_LIBFONTS=0 (#194)N-R-K
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.
2021-12-29add github actions (#195)NRK
this runs both default and minimal build with gcc, clang and tcc.
2021-12-24Cleanup manpage (#186)mamg22
* 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>
2021-12-19specify func argument and related cleanup (#183)N-R-K
* 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>
2021-12-12README: Fix version badge (#185)Sanjay Pavan
2021-12-12refactor: move shared code into a functionNRK
2021-12-12img_load_webp: close the file handler and use errnoNRK
2021-12-12img_load_webp: simplify multi-frame allocationNRK
C89 standard specifies: If ptr is a null pointer, the realloc function behaves like the malloc function for the specified size.
2021-12-12img_load_webp: remove unnecessary castingNRK
2021-12-12remove unneeded animated-webp hacksNRK
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
2021-12-12Release version 28v28N-R-K
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-12-09fix: compile error (#182)N-R-K
* 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.
2021-12-01bring back zoom_levels (#156)N-R-K
this still keeps the shorter zoom logic, but adds back the zoom_levels array so that stay close to sxiv. for users who would like to have the zoom step behavior see: https://github.com/nsxiv/nsxiv/pull/156#issuecomment-975182631
2021-12-01clarify project goals (#173)N-R-K
Closes: https://github.com/nsxiv/nsxiv/issues/148
2021-12-01fix crash when zooming out on small images (#178)mamg22
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
2021-12-01fix: send implicit_mod to process_bindings (#176)N-R-K
* 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
2021-11-26Reference customization in readme (#175)Berke Kocaoğlu
* Document customization more thoroughly * sneak a small doc change in at the request of explosion-mental: https://github.com/nsxiv/nsxiv/pull/170#issuecomment-979600811 Co-authored-by: NRK <nrk@disroot.org>
2021-11-26fix: img_load_gif: out-of-bound accessNRK
according to imlib2's gif loader, bg should already be transparent black if bg > cmap->ColorCount
2021-11-26Revert "fix: out-of-bounds access when bg not in color map"NRK
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 cca7834e6718c6ff64da42ed5e9770880a3e8ff6.
2021-11-25allow configuring imlib2's cache size (#171)N-R-K
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>
2021-11-24switch back to whitelisting modifers (#150)N-R-K
* Revert "Allow any set of modifiers to be used in keybindings" this keeps things equal with sxiv while giving users possibility to customize USED_MODMASK if they wish. This reverts commit 3234b0e521cca006a94cb135a88d146122d7f66d. Closes: https://github.com/nsxiv/nsxiv/issues/149 Closes: https://github.com/nsxiv/nsxiv/issues/123 Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>