Commit Graph

837 Commits

Author SHA1 Message Date
0262988671 rename: keyhandler_abort -> KEYHANDLER_ABORT (#172)
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.)
2021-11-24 14:38:25 +03:00
7d87e6e412 add related projects and some doc fixes (#170)
* README: add related projects

Closes: https://github.com/nsxiv/nsxiv/issues/169

* fix readme feature section

correct animations part (we support webp animation as well) and mention
key-handler

* remove duplicate Contribution Guideline heading
2021-11-23 07:27:14 +00:00
c6275374b0 mark functions and vars as static (#146)
the goal here to mark functions and variables not used outside the
translation unit as static. main reason for this is cleanliness. however
as a side-effect this can help compilers optimize better as it now has
guarantee that a certain function won't be called outside of that
translation unit.

one other side-effect of this is that accessing these vars/function from
config.h is now different.

if one wants to access a static var/func from different translation unit
in config.h, he would have to create a wrapper function under the right
ifdef. for static functions one would also need to forward declare it.
here's a dummy example of accessing the function `run_key_handler` from
config.h under _MAPPINGS_CONFIG

```
static void run_key_handler(const char *, unsigned);
bool send_with_ctrl(arg_t key) {
	run_key_handler(XKeysymToString(key), ControlMask);
	return false;
}
```
2021-11-20 03:51:49 +00:00
NRK
43fcd2e02e set env var NSXIV_USING_NULL for key-handler and update docs
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-11-19 17:02:50 +06:00
NRK
2df33208d7 apply -0 to stdin/-i as well
while i was initially against this since it can be done via `xargs -0`.
the problem with this approach is that there's a limit to how many args
a command can recieve, leading to problem like this [0] when opening
large (1k~) amount of images.

there's no limit on how big stdin can be, so being able to read a
null-separated list from stdin doesn't have this problem.

[0]: https://github.com/ranger/ranger/pull/2307#issuecomment-818683515
2021-11-19 17:02:50 +06:00
4a282da692 use dedicated function to process key/button bindings (#166)
Co-authored-by: Arthur Williams <taaparthur@gmail.com>
2021-11-19 05:49:42 +00:00
8f6ba7b868 Embed new nsxiv icon (#163)
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
Co-authored-by: NRK <nrk@disroot.org>
2021-11-13 17:43:15 +00:00
a841d1c8de Adding shields.io badges for Readme (#159)
* shields.io badges for Readme

* Changed up the colors a little bit

* Once again a color change

* Changed badge from code size to total lines
2021-11-06 02:02:02 -06:00
22a6911484 Update FAQ regarding piping images (#158) 2021-11-05 07:17:08 +03:00
36f42081d0 make width of navigation area configurable (#155)
this allows users to configure navigation width from config.h. it also
allows disabling the navigation function entirely by using a 0 width.

one extra functionality this adds is being able to define an absolute
width (in pixels) instead of just percentage via `NAV_IS_REL`.

Co-authored-by: NRK <nrk@disroot.org>
2021-11-04 04:20:28 +00:00
abf316a066 add links to labels in CONTRIBUTING (#154) 2021-11-03 05:28:12 +00:00
d8a4d71af1 fix: man page title for neo sxiv (#152) 2021-11-01 03:13:40 +00:00
NRK
d0b5005a02 -0 sends NULL separated file-list to key-handler
with this change `-0` is turned into a more generic switch which can be
used to send NULL-separated file-list to the key-handler as well.
this also means `-0` no longer implicitly enables `-o`

Closes: https://github.com/nsxiv/nsxiv/issues/140
2021-10-29 17:45:55 -06:00
8934744c60 Add colors and fonts to config.h (#115)
Adds a set of config vars to control window fg/bg, bar fg/bg, mark
color and bar font. This allows everything that can be done from
.Xresources to be configurable from config.h.

Co-authored-by: N-R-K <79544946+N-R-K@users.noreply.github.com>
2021-10-29 12:53:49 +06:00
850bc788c3 code-style: general cleanups (#137)
* tns_clean_cache: remove unused function arg

* remove malloc casting

* improve consistency

use sizeof(T) at the end

* avoid comparing integers of different signedness

* use Window type for embed and parent

* remove unnecessary comparisons

* remove cpp style comments

* improve consistency: remove comma from the end of enumerator list

* Removed useless _IMAGE_CONFIG defines

* consistency: use the same order as snprintf

* Resolve c89 warnings


Co-authored-by: uidops <uidops@protonmail.com>
Co-authored-by: Arthur Williams <taaparthur@gmail.com>
2021-10-29 02:00:53 +06:00
03eb664e89 remove unnecessary animated webp related check
this code snippet was introduced in
2703809a23
but does not seem to be needed.

from what i can tell this is some sort of hack that might've been needed
back when we didn't bypass imlib2 when loading webp.
2021-10-28 16:45:26 +06:00
5b3221cfa6 update copyright notice (#139) 2021-10-28 16:41:16 +06:00
f46d30591a eleminate padding from struct img on 64bit systems (#136)
on 64bit systems this reduces the size of the struct from 104 bytes down
to 96 bytes.

on 32bits system this change shouldn't have any affect.
2021-10-28 16:38:32 +06:00
7e7eaf08f1 fix: memory leak due to not destroying XrmDatabase (#134) 2021-10-28 01:57:03 +00:00
57754572bc Add default key-binding for DRAG_RELATIVE (#117)
Ctrl-Button1 now has a relative drag using the XC_fleur cursor.
XC_fleur is normally the cursor for "size all" action, which has 4
arrows pointing to 4 directions.

Co-authored-by: NRK <nrk@disroot.org>
2021-10-27 09:02:07 +06:00
1f01c670c5 fix: memory leak in img_load_webp (#135)
if `multi.cap` is >0 that means `multi.frames` has already been malloc-ed. by
unconditionally malloc-ing again, we're losing all the old memory.

this makes it so we're only malloc-ing (or realloc-ing) when needed.
2021-10-26 17:41:11 +00:00
bbebd45ce6 code-style: remove extra casts (#130)
Co-authored-by: N-R-K <79544946+N-R-K@users.noreply.github.com>
2021-10-24 06:41:17 +06:00
7b08b0a31b remove TODO.md (#127)
it's one extra file that serves no real purpose. Instead TODO.md has
been converted into open issues:
https://github.com/nsxiv/nsxiv/issues/126
https://github.com/nsxiv/nsxiv/issues/125

Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-10-19 13:24:22 +00:00
804a0f4304 README: add package manager section (#111)
Closes: https://github.com/nsxiv/nsxiv/issues/72
2021-10-19 13:00:23 +00:00
7b37a6272f Revert "Fix in tabbed with alpha patch (#3)" (#121)
This reverts commit c7ca547b55.

cd710f5 fixed the issue with embedding into a parent that has alpha and
partially reverted c7ca547

this commit fully reverts c7ca547 , as these changes aren't needed for
embedding into an alpha-parent.
2021-10-16 18:00:46 +00:00
12efa0e3b4 Add ability to bind arbitrary functions.
Before all the predated commands where kept in an array and their
indexes were used in bindings. This meant that users couldn't add their
own functions from the config file. Now key/mouse bindings have been
changed to to store the function ptr (wrapped in a cmd_t struct to also
store the mode) directly instead.

General cleanup done in this commit:
Defined `MODE_ALL` instead of using magic number.

For example, suppose one had bindings like:
{ 0,                   XK_q,             g_quit,                     None },
{ ShitMask,            XK_q,             {quit_err},                 None }
{ ControlMask,         XK_q,             {quit_err, .mode=MODE_IMAGE}, None }

The existing binding `q` has been left unchanged and is defined the same
way. However, the new hypothetical binding `Shift-q` can be used to call
the custom function quit_err in any mode (default). `Ctrl-q` on the
other hand will be called only on image mode.

Closes #50
2021-10-13 06:05:00 +06:00
5c6947c1c6 Make imgcursor a config variable.
Previously, the value of imgcursor was determined by where a pointer
binding was set to a ci_cursor_navigate. If it was then the pointer
would change to left/right arrows depending on the position relative to
the window. Now the user has full control of over it which also allows
them to preserve the behavior in case they wrap the function.
2021-10-13 06:05:00 +06:00
cd710f583f Fix behaviour when TrueColor / 24 bit depth is not available (#114)
* Fix regression introduced in c7ca547 which made nsxiv not start in
  non-TrueColor X server.
* Introduce a new fix for embedding into tabbed-alpha. 
* Fixes a visual glitch from original sxiv when drawing transparent images in 8
  bit depth. In 8 bit PseudoColor, `.pixel` is just an index into the 256
  defined colors and thus trying to extract rgb bits from it would result in
  visual glitch. The values `.color.red` on the other hand and so on are always
  integers between 0 and 0xFFFF representing the color as expected.
* Use XColor for win_bg/fg and mrk_fg

Co-authored-by: NRK <nrk@disroot.org>
2021-10-11 23:46:35 +00:00
1449bfc5e9 code-style: fix consistency issues all over the codebase (#94)
* remove duplicate comment
* remove empty tabs and blank lines
* move macros and globals ontop
* comment to seprate function implementation
* fix alignment
* switch to *argv[] similar to other suckless code
* kill all empty last lines
* append comment to endif
* reuse existing ARRLEN macro
* comment fall through
* use while (true) everywhere

Co-authored-by: NRK <nrk@disroot.org>
2021-10-11 09:07:18 +06:00
675db4bbb6 Make statusbar optional (#95)
libXft and libfontconfig are now optional dependencies which can be
disabled via `HAVE_LIBFONTS=0`. Disabling them means disabling the
statusbar. This also does not search for freetype2 header if disabled.

Co-authored-by: NRK <nrk@disroot.org>
2021-10-10 02:17:50 +06:00
6ce94e3e3b add statusbar message upon key-hander activation (#98)
Currently when running the key-handler the statusbar shows a
"Running key-handler..." message, but there's no indication of the prefix key
being pressed.

There's a slight functional benefit of this patch in the sense
that users can visually tell if the key-handler is listening on input or if the
key-handler has been aborted or not.
2021-10-07 00:37:34 +00:00
e8d08ba67e Rework build system v2 (#71)
* Remove non-POSIX extensions and commands
* Drop autodetection in favor of OPT_DEP_DEFAULT
* Use += for LDLIBS as some BSD distros need to add extra flags
* Change DOCPREFIX -> EGPREFIX
* Use ?= for MANPREFIX and EGPREFIX
* Update docs

With this, we should have a stable build system. No further significant
changes should be needed.
2021-10-03 16:52:12 +00:00
1dc936d0ee Move over to nsxiv-extra (#100)
* change wiki links to nsxiv-extra

* add User patches section

* link to Project-Scope and Contribution-Guideline directly
2021-10-01 23:29:38 -06:00
d3a296a0be fix wrong bar.* defaults in manpage (#106) 2021-10-02 03:50:06 +06:00
065562d3c5 update outdated comment in config.def.h (#105)
we're not using 'background', 'foreground' and 'font' anymore.
see: 0b20783 and f7557c5
2021-09-30 07:46:14 +00:00
0c66c0e25f make ten_ms local to run (#101)
ten_ms needed to be a global but after the following commit
3724d3fc17 this no longer holds true.
it can simply be local to run, as it's not used anywhere else.
2021-09-29 06:51:13 +03:00
80c5a1cd9f fix: crashing on bad exif thumbnail (#75)
this does not need to be a fatal error.
if im is NULL we're going to load it with imlib2 anyways.

one other problem this solves is that before, due to the fatal error,
the tmpfile opened under /tmp wouldn't get cleaned up.

Closes: https://github.com/nsxiv/nsxiv/issues/69
2021-09-29 06:44:46 +03:00
0ee05d29f0 Clarify comment in example key-handler (#89)
currently, the key-handler will not receive the `S-` modifier if there's
a capital equivalent of that KEY.
if https://github.com/nsxiv/nsxiv/pull/78 is to be merged, then this
behaviour may change.

however as it currently stands, we should fix the comment. we can update
it later if needed.

Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-09-28 10:19:41 +00:00
a2339e70fd Use zoom steps instead of hard-coding levels (#92)
Co-authored-by: NRK <nrk@disroot.org>
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-09-25 11:11:21 +06:00
696f68753f Rename icon & desktop and add install-all in Makefile (#96)
* Rename in Makefile

Renamed {icon,desktop} => install-{icon,desktop}

* Add install-all in Makefile

* Added .PHONY targets and renamed icon_cleanup

Added .PHONY targets and renamed icon_cleanup to uninstall_icon

* Update README.md

Co-authored-by: TAAPArthur <taaparthur@gmail.com>
2021-09-25 05:00:21 +00:00
NRK
4ec8fd5377 make keyhandler abort key configurable via config.h 2021-09-24 17:29:30 +06:00
NRK
3bec517655 fix: unable to bind anything to XK_Escape 2021-09-24 17:29:30 +06:00
af98249b68 Add animated webp support (#20)
Co-authored-by: NRK <nrk@disroot.org>
Co-authored-by: Stein Gunnar Bakkeby <bakkeby@gmail.com>
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
2021-09-24 17:27:22 +06:00
0e7ab7e5c3 Fix consistency in readme (#93) 2021-09-24 05:07:27 +00:00
de9a285ff2 Add desktop and icon rules to Makefile, document icon installation (#80)
Co-authored-by: NRK <nrk@disroot.org>
2021-09-23 02:17:52 +00:00
9e22f32c07 Change location of example scripts (#86)
* Use DOCPREFIX similar to MANPREFIX

Co-authored-by: NRK <nrk@disroot.org>
2021-09-22 18:36:55 +00:00
NRK
915a7fd384 switch -0 to bottom in options.c 2021-09-21 23:37:59 +03:00
NRK
09d4b70349 add 0 to print_usage 2021-09-21 23:37:59 +03:00
NRK
ff8a8469fe move -0 to bottom in the manpage 2021-09-21 23:37:59 +03:00
NRK
1f69a05abc document new -0 option in manpage 2021-09-21 23:37:59 +03:00