Commit graph

32 commits

Author SHA1 Message Date
NRK 55d60319db allow disabling animation playback via -A 0
ref: https://codeberg.org/nsxiv/nsxiv/issues/404
2024-08-02 11:08:47 +00:00
NRK 11558c9fcf allow disabling thumbnail mode via --thumbnail=no
the short opt -t does not accept optional argument since it'd
break short option chaining.

e.g `nsxiv -tp` currently works as `nsxiv -t -p` but if `-t`
accepted optional argument then it'd stop working since "p" will
be interpreted as argument to `-t` instead of being a flag.

ref: https://codeberg.org/nsxiv/nsxiv/issues/404
2024-08-02 11:08:44 +00:00
NRK b3eab414dd add a migration document (#507)
this should've been added ages ago back when `nsxiv` was first
released. but even now, there's still plently of people who
might be looking to migrate.

so add a simple MIGRATION.md which covers some of the
differences to be aware of when migrating.

this does not cover patches and `config.h` since any conflicts
in patches would be evident anyways.

ref: https://codeberg.org/nsxiv/nsxiv/issues/369
ref: https://codeberg.org/nsxiv/nsxiv/issues/506
ref: https://codeberg.org/nsxiv/nsxiv/issues/420

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/507
Reviewed-by: eylles <eylles@noreply.codeberg.org>
2024-06-27 08:07:44 +00:00
NRK 0620d473c2 allow {white,black}listing thumbnail cache dirs (#461)
this adds the cli flags --cache-{allow,deny} along with
corresponding config.h vars which allows the user to control
which directories will have thumbnail cache written.

this is a more general version of the `cache-whitelist` patch
that existed in the nsxiv-extra repo:
https://codeberg.org/nsxiv/nsxiv-extra/src/commit/21cb27cee7/patches/cache-whitelist

Closes: https://codeberg.org/nsxiv/nsxiv/issues/454
2024-06-20 10:50:19 +00:00
fxdn 437e060021 document Xresources application namespace explicitly (#488)
A decent amount of users have been confused by this.
So make it more explicit to avoid confusion.

Co-authored-by: NRK <nrk@disroot.org>
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/488
Reviewed-by: NRK <nrk@disroot.org>
Co-authored-by: fxdn <fxdn@noreply.codeberg.org>
Co-committed-by: fxdn <fxdn@noreply.codeberg.org>
2024-02-17 08:14:05 +00:00
NRK 0faff1866d ci: adjust clang-tidy checks
disable misc-include-cleaner, it nags about "directly" including
things like "stdbool.h" instead of relying on "nsxiv.h" for it.

also disable bugprone-switch-missing-default-case which nags
about missing `default` switch cases.
2024-02-09 01:55:53 +00:00
NRK 70cbe59daa ci: various fixes (#478)
- "branches" option got removed, change to "when -> branches"
- "pipeline" option got removed, change to "steps"
- install codespell in a virtual-env since alpine complains otherwise
2023-10-02 09:43:46 +00:00
NRK a9e13042d4 Release version 32 2023-10-01 17:32:32 +06:00
NRK e1b851c488 remove legacy multi-frame loaders
this removes the legacy gif and webp loaders. moving forward
multi-frame/animated images will be loaded by imlib2 itself.

Closes: https://codeberg.org/nsxiv/nsxiv/issues/397
2023-10-01 17:30:15 +06:00
NRK d19924f288 various README nits (#470)
don't capitalize "berg" in "Codeberg" spelling. Codeberg's official
sites does not seem to do so.

switch from "GPLv2" to "GPL-2.0-or-later" according to the spdx short
identifier: https://spdx.org/licenses/GPL-2.0-or-later.html

explicitly mention that Imlib2 needs to be built with X11 support.

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/470
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
2023-08-31 18:06:43 +00:00
padv cc132dd365 fix: brightness keybindings on manpage (#467)
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/467
Reviewed-by: NRK <nrk@disroot.org>
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
Co-authored-by: padv <pascal.devuyst@gmail.com>
Co-committed-by: padv <pascal.devuyst@gmail.com>
2023-08-22 18:08:29 +00:00
NRK 28018e92d3 CI: misc cleanups + faster analysis (#449)
* switch to git ls-files to avoid picking up any other local .c files
* enable assertions during static analysis since we used some assertions to
  disable/silence certain warnings.
* update TCC commit hash to a more recent one
* parallelize static analysis

cppcheck already has -j argument to parallelize it's analysis and
provide results faster, clang-tidy unfortunately doesn't.

so use xargs -P to archive parallel execution. on my system this brings
down the analysis time from ~27s to ~5s.
2023-06-15 15:25:54 +00:00
NRK c03ec39437 update documentation (#448)
the fedora copr repo is no longer being updated since the maintainer of
it, mamg22, no longer uses nsxiv in his daily setup (and thus stopped
contributing to nsxiv as well).

he has requested the repo and his email to be removed from the project.
so go ahead and honor that request.

also take this as an opportunity to remove some long inactive
maintainers from the CURRENT MAINTAINERS section of the manpage.

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/448
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
2023-05-28 06:49:07 +00:00
NRK 5c6745436f [ci]: silence false positive warning
clang-tidy currently flags the following:

	util.c:57:8: error: 'ptr' may be set to null if 'realloc' fails, which may result in a leak of the original buffer [bugprone-suspicious-realloc-usage,-warnings-as-errors]
	        ptr = realloc(ptr, size);

the analysis here is correct, but if realloc fails, we simply exit so
there's no real "leak".

moreover this check is not very useful for nsxiv's codebase because we
do not use naked realloc(), instead we use the erealloc wrapper that
exits on failure. so just disable the warning entirely instead of
changing the source code to silence the false positive.
2023-05-13 23:28:27 +06:00
eylles 733916ad70 add a pick quit keybind (#432)
The last time[0] this was discussed, no-one was against it but no-one
was confident in it either and so it was added to nsxiv-extra as a
patch.

But now that enough time has passed, it seems like there's a pretty high
demand for something like this because there's plenty of use-cases that
use nsxiv as a "picker" where it's meant to quickly pick a single file.

And so add this as a convenient default key-bind.

[0]: https://codeberg.org/nsxiv/nsxiv-record/pulls/42

Co-authored-by: eylles <ed.ylles1997@gmail.com>
Co-authored-by: NRK <nrk@disroot.org>
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/432
Reviewed-by: NRK <nrk@disroot.org>
Co-authored-by: eylles <eylles@noreply.codeberg.org>
Co-committed-by: eylles <eylles@noreply.codeberg.org>
2023-04-14 19:45:39 +00:00
NRK 54bfc5db04 fix a typpo in CHANGELOG.md 2023-03-17 08:13:31 +06:00
NRK 502b30301c document handling of empty X resources values
since 5cab2fb we reject empty X resources value to support use-cases
like this: https://codeberg.org/nsxiv/nsxiv/issues/339
this issue was also bought up by GRFreire in:
https://codeberg.org/nsxiv/nsxiv-record/pulls/115#issuecomment-474831

this suggests that this is a use-case that a decent amount of users
might be interested in. so document the behavior so it's more easily
visible.
2023-03-17 08:07:39 +06:00
NRK 157646f54c etc changes related to code-style docs
* Add a "Code Style" section in CONTRIBUTING
* Move .clang-format to etc/
* Add a short comment on clang-format and editorconfig file
2023-03-11 18:37:08 +06:00
NRK 8f0322c2e3 Release version 31
Co-authored-by: Berke Kocaoğlu <kberke@metu.edu.tr>
2023-01-28 16:31:23 +06:00
NRK 12d635bc6e manpage: update MAINTAINERS section
removes a couple maintainers who have never been active in the
development.

there are a couple other maintainers have not been active in a while,
but was somewhat active in the past. so keep their names in it
(for now at least).

also re-arrange the entires a bit based on activity.
2023-01-28 16:29:36 +06:00
NRK f288efcece manpage: remove special casing CONTRIBUTORS
this section was added almost 10 years ago (see commit 60f84190f) back
when sxiv was pretty new and didn't have many contributors.

the situation has obviously changed now, especially with `nsxiv` we have
a fair amount of contributors now. so it makes no sense to special case
a couple of them.
2023-01-28 16:29:36 +06:00
NRK 1f788a318b add cli flag --alpha-layer
now that we have long-opts, we don't have to worry about exhausting the
alphabet list for short-opts. so adding a cli flag to set/unset the
checker background makes sense.

ref: https://codeberg.org/nsxiv/nsxiv/issues/404
2023-01-28 10:23:11 +00:00
NRK a924fe004d [ci]: fix things (#400)
for the spellcheck issue, the solution was to just bypass the system
package manager and use pip.

and the macos workaround is taken from here:
https://github.com/actions/setup-python/issues/577

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/400
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
2023-01-12 04:52:28 +00:00
NRK 76c2b81b60 add support for multi-frame images via imlib2 (#373)
this will be a massive change compared to the usual stuff. however the
gains will be worth it:

* we gain lots of additional animated image support.
* and we'll gain _even_ more format support as imlib2 adds them, without needing
  any change in our code-base.
* about ~300 LoC will be purged once we remove our internal gif and webp loader.

as for when to remove the internal loaders, a good time might be when debian
upgrades their imlib2, currently it seems to be at v1.7.5, which doesn't support
animated images.

as of now, nsxiv will continue to build with the internal gif/webp loaders
(assuming they were enabled in config.mk) if imlib2 version is below 1.8.0 and
will print out a deprecation notice.

and if imlib2 version supports multi-frame then it will simply ignore the
internal loaders and use the imlib2 one.

in other words, users shouldn't need to do anything on their side. everything
that previously functioned will continue to function regardless of the user's
imlib2 version (though they might see the annoying deprecation notice if the
imlib2 version doesn't support multi-frame images).

known issue:

* image loading performance can be noticeably worse in
  imlib2 versions below 1.9.0

Closes: https://codeberg.org/nsxiv/nsxiv/issues/301
Closes: https://codeberg.org/nsxiv/nsxiv/issues/300
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/373
Reviewed-by: TAAPArthur <taaparthur@noreply.codeberg.org>
2023-01-08 10:02:56 +00:00
Berke Kocaoğlu 95bc9b463b add brightness and contrast (#396)
* Imlib2 supports modifying gamma, brightness and contrast directly
  while sxiv only supports gamma. Makes sense to extend it to brightness
  and contrast as well.

* Since color corrections need to be aware of each other, they have been
  refactored into one centralized function.

* This also makes the code more hackable as it makes it easier to add
  more color correction functions without them interfering with each
  other.

Co-authored-by: 0ion9 <finticemo@gmail.com>
Co-authored-by: NRK <nrk@disroot.org>
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/396
Reviewed-by: NRK <nrk@disroot.org>
Reviewed-by: TAAPArthur <taaparthur@noreply.codeberg.org>
Co-authored-by: Berke Kocaoğlu <kberke@metu.edu.tr>
Co-committed-by: Berke Kocaoğlu <kberke@metu.edu.tr>
2022-12-22 11:21:40 +00:00
NRK 9cb9a54944 [ci]: make it easy to run analysis locally (#395)
allows for developers to more easily run the analysis locally before
opening a pull request if they wish.

also disables a noisy warning (bugprone-assignment-in-if-condition)
producing too many false positives.

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/395
Reviewed-by: Berke Kocaoğlu <kberke@metu.edu.tr>
Co-authored-by: NRK <nrk@disroot.org>
Co-committed-by: NRK <nrk@disroot.org>
2022-12-02 10:50:15 +00:00
NRK aa56aa2303 [ci]: try building all combination with tcc (#338)
this will hopefully catch issues like [337] in the future.

not using gcc and/or clang since we have 5 build options right now,
which means 2^5 = 32 different combination. using gcc/clang would take
too much resources and time; meanwhile tcc is lightning fast.

[337]: https://codeberg.org/nsxiv/nsxiv/pulls/337

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/338
Reviewed-by: eylles <eylles@noreply.codeberg.org>
2022-10-07 15:37:44 +02:00
NRK 88a480c938 allow disabling anti-aliasing via cli flag
simply running nsxiv with `--anti-alias` will enable anti-aliasing, and
running it with `--anti-alias=no` will disable it.

the cli flag will overwrite the config.h default.

Closes: https://codeberg.org/nsxiv/nsxiv/issues/349
2022-09-10 19:43:07 +06:00
NRK ba39006574 [ci]: disable noisy checks (#365)
* disable `cert-err33-c` and `readability-identifier-length` check
  which causes warnings on clang-tidy v14.
* disable all "readability" checks by default, instead just opt-into the
  useful ones (such as duplicate include).

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/365
Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2022-09-05 03:47:32 +02:00
NRK 32bfe58915 Misc docs cleanup (#362)
* link to online man-page
* rename: "N-R-K" -> "NRK"
* separate multiple links with a comma.
  otherwise the links get messed up due to `[] []` being valid syntax for
  reference style links with the 2nd `[]` serving as `id`.
* prefer codeberg links over github ones

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/362
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
2022-08-19 08:36:53 +02:00
NRK 216f312578 add support for long-opts (#332)
Uses [optparse] to add support for long-opts. optparse is posix
compliant with getopt(3) and thus would be backwards compatible.
It does not have any dependency (not even the c standard library!) and
is C89 compatible and thus fits our current code-style.

[optparse]: https://github.com/skeeto/optparse

Note that we're using a couple `pragma`-s to silence some harmless
warnings. This should be portable because these pragma-s don't change the
behavior of the program. Furthermore, C standard mandates that unknown
pragma's should be ignored by the compiler and thus would not result in
build failure on compilers which do not recognize them.

Closes: https://codeberg.org/nsxiv/nsxiv/issues/328
Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/332
Reviewed-by: eylles <eylles@noreply.codeberg.org>
2022-08-16 10:43:50 +02:00
NRK fb9686c650 Move uncritical files into etc/ (#350)
This is mainly just to reduce the amount of files in the project root.
The criteria of what gets into `etc/` are the following:

* The file should not be necessary for building nsxiv. This excludes the
  `icon/*` stuff since that's needed by `window.c`.
* The file shouldn't have any valid reason to stay in the project root.
  This excludes things like `README.md`, `.gitignore` etc.

Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/350
Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
2022-08-09 16:21:52 +02:00