currently the code-base doesn't make use of variable length array
despite being -std=c99. it was irresponsible of me to introduce VLA in
here.
since this function will be called quite often, i did not want to make
calls to malloc and free as they have some overhead.
512 should be sufficient enough and probably is far bigger than any
window title bar can display anyways.
currently the README only mentions what deps are optional but has no
info on what they do. we had an issue where a user was confused about
what libexif is used for : https://github.com/nsxiv/nsxiv/issues/58
this makes it clear what each of the optional deps do so that users can
make more informed decision on weather they want something or not.
* add -0 for outputting null-terminated list
this doesn't add much, if any, additional complexity to the codebase and
can be quite handy for scripting purposes.
Closes: https://github.com/nsxiv/nsxiv/issues/67
* Fix typo
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
Previous the code only allowed ShiftMask,ControlMask or Mod1Mask to be
used in keybindings and the presence of any others modifiers would be
ignored. Most problems generally allow certain modifiers to be be
ignored but not most and certainly don't allow Super-A to be treated
like A.
Now users can use any modifiers they want in keybindings and can also
ignore any modifiers they want. By default only ModMask2 (commonly
numlock is ignored)
Co-authored-by: N-R-K <79544946+N-R-K@users.noreply.github.com>
* Fix font memory leak.
This memory leak has always been present in sxiv.
The font opened on window.c:58 was never closed, so I closed it, fixing a 2kB memory leak.
* document changes
Co-authored-by: NRK <nrk@disroot.org>
If the user closed our window, the program won't automatically be die.
It may look dead as there would be no graphical indication that it was
running, but it still would be using/wasting the same resources.
Now the program will abruptly exit when its window is killed.
* Added simple configure script
Added simple script to autodetect if optional dependencies are installed
and enable/disable them as needed. Note this solution uses the compiler
directly instead of an external program like pkgconfig so it doesn't
require any extra dependencies. It is intended to work with any
arbitrary compiler; it has been tested with tcc and gcc.
There are some "breaking" changes hidden here
- HAVE_GIFLIB was renamed to HAVE_LIBGIF to match HAVE_LIBEXIF
- Simply typing `make` will no longer try to build with optional
dependencies
* use implicit RM variable
* General clean-up in configure
- Use printf instead of echo
- Format style
* honor env PREFIX, use LDLIBS
* Revert "General clean-up in configure"
This reverts commit 8683c179dbf273a330f9a224a4d481a7bea42c5f.
* honor env LDFLAGS if set
* Don't set OPTIONAL_LIBS in configure
* make OBJ all caps
* follow suckless style build system
- remove configure script.
- HAVE_LIBGIF and HAVE_LIBEXIF defaults back to 1
- unload several varibales onto config.mk
- make version all-caps
- add -O2 optimization
- use CPPFLAGS for includes and defines
* Revert "follow suckless style build system"
This reverts commit 8bf75b1f68d72df349edba8d998d4659dd956dd8.
* Generate config.mk from make
* Inlined configure in Makefile
* update docs
* cleanups
- changes to config.mk should trigger a rebuild
- remove potentially confusing variables form Makefile
* Use install instead of mkdir/cp/chmod when sensible
* fixup! Inlined configure in Makefile
* Don't generate config.mk on rm -f *.o sxiv
* update docs and cleanups
- make config.mk silent
- mention editing config.mk in README
* fallback to 0 if user edits config.mk in unexpected way
* add comment on config.mk
* remove invalid comment
configure script is removed
* slight restructure
- make version all caps
- restructure variables that users may want to edit to top
- use CPPFLAGS for defines
- add some comments
- remove needless echos since we have verbose output now
* add echos back
Co-authored-by: NRK <nrk@disroot.org>
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* add new keybind, Ctrl-a to toggle animation
Closes: https://github.com/nsxiv/nsxiv/issues/27
* Format consistency
This keeps in line with other actions that have multiple keybinds
Co-authored-by: eylles <ed.ylles1997@gmail.com>
Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* set bar and text colors independently
* change xresources to Program.class.resource
* rename color variables to win/bar_bg/fg
* change default bar colors to match window colors
Set the _NET_WM_PID and WM_CLIENT_MACHINE X properties
Co-authored-by: Leon Kowarschick <lkowarschick@gmail.com>
Co-authored-by: Kian Kasad <kian@kasad.com>
Co-authored-by: NRK <nrk@disroot.org>
* Update manpage for marking commands
* Fix hyphen-used-as-minus-sign and typo lintian warning in manpage
this fix was originally made by the debian mantainer for sxiv Daniel Echeverry <epsilon77@gmail.com>
Co-authored-by: Mihail Snitkovski <msnitkovski@gmail.com>
When the window is mapped, some ICCCM WM_HINTS are set.
The input field is set to true and state is set to NormalState.
To quote the spec, "The input field is used to communicate to the window
manager the input focus model used by the client" and "[c]lients with
the Passive and Locally Active models should set the input flag to
True". sxiv falls under the Passive Input model, since it expects keyboard
input, but only listens for key events on its single, top-level window instead
of subordinate windows (Locally Active) or the root window (Globally Active).
From the end users prospective, all EWMH/ICCCM compliant WMs (especially
the minimalistic ones) will allow the user to focus sxiv, which will
allow sxiv to receive key events. If the input field is not set, WMs are
allowed to assume that sxiv doesn't require focus.