diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | CHANGELOG.md | 182 | ||||
-rw-r--r-- | CONTRIBUTING.md | 23 | ||||
-rw-r--r-- | Makefile | 40 | ||||
-rw-r--r-- | README.md | 229 | ||||
-rw-r--r-- | TODO | 5 | ||||
-rw-r--r-- | TODO.md | 8 | ||||
-rw-r--r-- | autoreload_inotify.c | 10 | ||||
-rw-r--r-- | autoreload_nop.c | 10 | ||||
-rw-r--r-- | commands.c | 10 | ||||
-rw-r--r-- | config.def.h | 2 | ||||
-rwxr-xr-x | exec/image-info | 6 | ||||
-rwxr-xr-x | exec/key-handler | 6 | ||||
-rw-r--r-- | icon/128x128.png | bin | 542 -> 1066 bytes | |||
-rw-r--r-- | icon/16x16.png | bin | 178 -> 262 bytes | |||
-rw-r--r-- | icon/32x32.png | bin | 221 -> 421 bytes | |||
-rw-r--r-- | icon/48x48.png | bin | 282 -> 507 bytes | |||
-rw-r--r-- | icon/64x64.png | bin | 319 -> 620 bytes | |||
-rw-r--r-- | icon/Makefile | 4 | ||||
-rw-r--r-- | image.c | 10 | ||||
-rw-r--r-- | main.c | 17 | ||||
-rw-r--r-- | nsxiv.1 (renamed from sxiv.1) | 69 | ||||
-rw-r--r-- | nsxiv.desktop (renamed from sxiv.desktop) | 6 | ||||
-rw-r--r-- | nsxiv.h (renamed from sxiv.h) | 14 | ||||
-rw-r--r-- | options.c | 14 | ||||
-rw-r--r-- | thumbs.c | 17 | ||||
-rw-r--r-- | util.c | 10 | ||||
-rw-r--r-- | window.c | 18 |
28 files changed, 405 insertions, 307 deletions
@@ -2,5 +2,5 @@ config.h version.h *.d *.o -sxiv +nsxiv config.mk diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a9c2498 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,182 @@ +nsxiv +----- + +**Stable releases** + +**[v27](https://github.com/nsxiv/nsxiv/archive/v27.tar.gz)** +*(September 14, 2021)* + +Changes: + * Re-release under the name nsxiv + * Sxiv.foreground and Sxiv.background changed to Nsxiv.window.foreground and Nsxiv.window.background + * Rework the build system (#19). Now by default we'll build with only optional dependencies that are already installed +Added: + * Fill scale mode (#2) + * Configurable X window title (via `config.h` and the `-T` flag) (#23) + * Support custom bar colors via Xresources (#19) + * Toggle animation playback with Ctrl-a (#33) + * Set `_NET_WM_PID` and `WM_CLIENT_MACHINE` X properties (#13) + * Set ICCCM WM manager hints (#12) +Fixes: + * Cli flag `-G` not initially setting gamma (#31) + * Wrong keybinding description in the manpage (#14) + * .desktop entry not advertising webp support (#15) + * Prevent crash when embedded into transparent window (#3) + * Rare crash when showing some GIFs (#41) + * Rare event when nsxiv wouldn't close after window being destroyed (#53) + + +sxiv +---- + +**Stable releases** + +**[v26](https://github.com/nsxiv/nsxiv/archive/v26.tar.gz)** +*(January 16, 2020)* + + * Maintenance release + +**[v25](https://github.com/nsxiv/nsxiv/archive/v25.tar.gz)** +*(January 26, 2019)* + + * Support font fallback for missing glyphs + * Fix busy loop when built without inotify + * Use background/foreground colors from X resource database + +**[v24](https://github.com/nsxiv/nsxiv/archive/v24.tar.gz)** +*(October 27, 2017)* + + * Automatically reload the current image whenever it changes + * Support embedding into other X windows with -e (e.g. tabbed) + * New option -p prevents sxiv from creating cache and temporary files + * Simpler mouse mappings, the most basic features are accessible with the + mouse only (navigate, zoom, pan) + +**[v1.3.2](https://github.com/nsxiv/nsxiv/archive/v1.3.2.tar.gz)** +*(December 20, 2015)* + + * external key handler gets file paths on stdin, not as arguments + * Cache out-of-view thumbnails in the background + * Apply gamma correction to thumbnails + +**[v1.3.1](https://github.com/nsxiv/nsxiv/archive/v1.3.1.tar.gz)** +*(November 16, 2014)* + + * Fixed build error, caused by delayed config.h creation + * Fixed segfault when run with -c + +**[v1.3](https://github.com/nsxiv/nsxiv/archive/v1.3.tar.gz)** +*(October 24, 2014)* + + * Extract thumbnails from EXIF tags (requires libexif) + * Zoomable thumbnails, supported sizes defined in config.h + * Fixed build error with giflib version >= 5.1.0 + +**[v1.2](https://github.com/nsxiv/nsxiv/archive/v1.2.tar.gz)** +*(April 24, 2014)* + + * Added external key handler, called on keys prefixed with `Ctrl-x` + * New keybinding `{`/`}` to change gamma (by András Mohari) + * Support for slideshows, enabled with `-S` option & toggled with `s` + * Added application icon (created by 0ion9) + * Checkerboard background for alpha layer + * Option `-o` only prints files marked with `m` key + * Fixed rotation/flipping of multi-frame images (gifs) + +**[v1.1.1](https://github.com/nsxiv/nsxiv/archive/v1.1.1.tar.gz)** +*(June 2, 2013)* + + * Various bug fixes + +**[v1.1](https://github.com/nsxiv/nsxiv/archive/v1.1.tar.gz)** +*(March 30, 2013)* + + * Added status bar on bottom of window with customizable content + * New keyboard shortcuts `\`/`|`: flip image vertically/horizontally + * New keyboard shortcut `Ctrl-6`: go to last/alternate image + * Added own EXIF orientation handling, removed dependency on libexif + * Fixed various bugs + +**[v1.0](https://github.com/nsxiv/nsxiv/archive/v1.0.tar.gz)** +*(October 31, 2011)* + + * Support for multi-frame images & GIF animations + * POSIX compliant (IEEE Std 1003.1-2001) + +**[v0.9](https://github.com/nsxiv/nsxiv/archive/v0.9.tar.gz)** +*(August 17, 2011)* + + * Made key and mouse mappings fully configurable in config.h + * Complete code refactoring + +**[v0.8.2](https://github.com/nsxiv/nsxiv/archive/v0.8.2.tar.gz)** +*(June 29, 2011)* + + * POSIX-compliant Makefile; compiles under NetBSD + +**[v0.8.1](https://github.com/nsxiv/nsxiv/archive/v0.8.1.tar.gz)** +*(May 8, 2011)* + + * Fixed fullscreen under window managers, which are not fully EWMH-compliant + +**[v0.8](https://github.com/nsxiv/nsxiv/archive/v0.8.tar.gz)** +*(April 18, 2011)* + + * Support for thumbnail caching + * Ability to run external commands (e.g. jpegtran, convert) on current image + +**[v0.7](https://github.com/nsxiv/nsxiv/archive/v0.7.tar.gz)** +*(February 26, 2011)* + + * Sort directory entries when using `-r` command line option + * Hide cursor in image mode + * Full functional thumbnail mode, use Return key to switch between image and + thumbnail mode + +**[v0.6](https://github.com/nsxiv/nsxiv/archive/v0.6.tar.gz)** +*(February 16, 2011)* + + * Bug fix: Correctly display filenames with umlauts in window title + * Basic support of thumbnails + +**[v0.5](https://github.com/nsxiv/nsxiv/archive/v0.5.tar.gz)** +*(February 6, 2011)* + + * New command line option: `-r`: open all images in given directories + * New key shortcuts: `w`: resize image to fit into window; `W`: resize window + to fit to image + +**[v0.4](https://github.com/nsxiv/nsxiv/archive/v0.4.tar.gz)** +*(February 1, 2011)* + + * New command line option: `-F`, `-g`: use fixed window dimensions and apply + a given window geometry + * New key shortcut: `r`: reload current image + +**[v0.3.1](https://github.com/nsxiv/nsxiv/archive/v0.3.1.tar.gz)** +*(January 30, 2011)* + + * Bug fix: Do not set setuid bit on executable when using `make install` + * Pan image with mouse while pressing middle mouse button + +**[v0.3](https://github.com/nsxiv/nsxiv/archive/v0.3.tar.gz)** +*(January 29, 2011)* + + * New command line options: `-d`, `-f`, `-p`, `-s`, `-v`, `-w`, `-Z`, `-z` + * More mouse mappings: Go to next/previous image with left/right click, + scroll image with mouse wheel (horizontally if Shift key is pressed), + zoom image with mouse wheel if Ctrl key is pressed + +**[v0.2](https://github.com/nsxiv/nsxiv/archive/v0.2.tar.gz)** +*(January 23, 2011)* + + * Bug fix: Handle window resizes correctly + * New keyboard shortcuts: `g`/`G`: go to first/last image; `[`/`]`: go 10 + images back/forward + * Support for mouse wheel zooming (by Dave Reisner) + * Added fullscreen mode + +**[v0.1](https://github.com/nsxiv/nsxiv/archive/v0.1.tar.gz)** +*(January 21, 2011)* + + * Initial release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2f5c295 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,23 @@ +Contribution Guideline +---------------------- + +The scope and aim of nsxiv are: + + * Bug fixes and maintenance + * Prioritize extensibility and simplicity + * Do not make the codebase more complex, keep it simple to hack on + * Do not add extra dependency (if we do, add compile time switch to disable it) + * New features may be added if it cannot be achieved (easily) via a shell script, + doesn't break backwards compatibility and doesn't violate any of the above rules. + +When contributing, make sure: + + * Your contribution falls under nsxiv's scope and aim + * You follow the existing code style (see [.editorconfig](.editorconfig)) + * You open the pull request from a new branch, not from master + +If your contribution is not suitable for general use, it will not be included in nsxiv. +For changes that are very much up to preference, such as changing values in config.h, +please do not open a pull request unless you have an objective explanation. + +See [TODO.md](TODO.md) or the [open issues](https://github.com/nsxiv/nsxiv/issues) to find something to work on. @@ -3,8 +3,8 @@ ifneq (clean,$(filter clean,$(MAKECMDGOALS))) -include config.mk endif -# sxiv version -VERSION = 26 +# nsxiv version +VERSION = 27 # PREFIX for install PREFIX ?= /usr/local @@ -40,9 +40,9 @@ OBJS = autoreload_$(AUTORELOAD).o commands.o image.o main.o options.o \ .SUFFIXES: .SUFFIXES: .c .o -all: sxiv +all: nsxiv -sxiv: $(OBJS) +nsxiv: $(OBJS) @echo "LINK $@" $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) @@ -50,7 +50,7 @@ sxiv: $(OBJS) @echo "CC $@" $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< -$(OBJS): Makefile sxiv.h commands.lst config.h config.mk +$(OBJS): Makefile nsxiv.h commands.lst config.h config.mk options.o: version.h window.o: icon/data.h @@ -73,24 +73,24 @@ version.h: Makefile .git/index echo "#define VERSION \"$${v:-$(VERSION)}\"" >$@ clean: - $(RM) *.o sxiv + $(RM) *.o nsxiv install: all - @echo "INSTALL bin/sxiv" - install -Dt $(DESTDIR)$(PREFIX)/bin sxiv - @echo "INSTALL sxiv.1" + @echo "INSTALL bin/nsxiv" + install -Dt $(DESTDIR)$(PREFIX)/bin nsxiv + @echo "INSTALL nsxiv.1" mkdir -p $(DESTDIR)$(MANPREFIX)/man1 - sed "s!PREFIX!$(PREFIX)!g; s!VERSION!$(VERSION)!g" sxiv.1 \ - >$(DESTDIR)$(MANPREFIX)/man1/sxiv.1 - chmod 644 $(DESTDIR)$(MANPREFIX)/man1/sxiv.1 - @echo "INSTALL share/sxiv/" - install -Dt $(DESTDIR)$(PREFIX)/share/sxiv/exec exec/* + sed "s!PREFIX!$(PREFIX)!g; s!VERSION!$(VERSION)!g" nsxiv.1 \ + >$(DESTDIR)$(MANPREFIX)/man1/nsxiv.1 + chmod 644 $(DESTDIR)$(MANPREFIX)/man1/nsxiv.1 + @echo "INSTALL share/nsxiv/" + install -Dt $(DESTDIR)$(PREFIX)/share/nsxiv/exec exec/* uninstall: - @echo "REMOVE bin/sxiv" - rm -f $(DESTDIR)$(PREFIX)/bin/sxiv - @echo "REMOVE sxiv.1" - rm -f $(DESTDIR)$(MANPREFIX)/man1/sxiv.1 - @echo "REMOVE share/sxiv/" - rm -rf $(DESTDIR)$(PREFIX)/share/sxiv + @echo "REMOVE bin/nsxiv" + rm -f $(DESTDIR)$(PREFIX)/bin/nsxiv + @echo "REMOVE nsxiv.1" + rm -f $(DESTDIR)$(MANPREFIX)/man1/nsxiv.1 + @echo "REMOVE share/nsxiv/" + rm -rf $(DESTDIR)$(PREFIX)/share/nsxiv @@ -1,11 +1,16 @@ -![sxiv](http://muennich.github.com/sxiv/img/logo.png "sxiv") +![nsxiv](https://raw.githubusercontent.com/nsxiv/nsxiv/gh-pages/img/logo.png "nsxiv") -**Simple X Image Viewer** +**Neo (or New or Not) Simple (or Small or Suckless) X Image Viewer** +-------------------------------------------------------------------- -The sole purpose of sxiv is to be the perfect image viewer for me. It is free -software so that you can use it and modify it for your needs. Please file a bug -report if something does not work as documented or expected. Contributions are -welcome but there is no guarantee that they will be incorporated. +nsxiv is a fork of now unmaintained [sxiv](https://github.com/muennich/sxiv) +with the purpose of maintaining it and adding simple, sensible features. +nsxiv is free software licensed under GPLv2 and aims to be easy to modify and customize. + +Please file a bug report if something does not work as documented or +expected in *this* repository, after making sure you are using the latest +release of nsxiv. Contributions are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md) +for details. Features @@ -16,26 +21,27 @@ Features * Thumbnail mode: grid of selectable previews of all images * Ability to cache thumbnails for fast re-loading * Basic support for multi-frame images -* Load all frames from GIF files and play GIF animations +* Play GIF animations * Display image information in status bar +* Display image name/path in X title Screenshots ----------- -**Image mode:** +**Image mode: (Default colors)** -![Image](http://muennich.github.com/sxiv/img/image.png "Image mode") +![Image](https://raw.githubusercontent.com/nsxiv/nsxiv/gh-pages/img/image.png "Image mode") -**Thumbnail mode:** +**Thumbnail mode: (Custom colors)** -![Thumb](http://muennich.github.com/sxiv/img/thumb.png "Thumb mode") +![Thumb](https://raw.githubusercontent.com/nsxiv/nsxiv/gh-pages/img/thumb.png "Thumb mode") Dependencies ------------ -sxiv requires the following software to be installed: +nsxiv requires the following software to be installed: * Imlib2 * X11 @@ -46,37 +52,39 @@ sxiv requires the following software to be installed: * libexif (optional, automatically enabled if installed) Please make sure to install the corresponding development packages in case that -you want to build sxiv on a distribution with separate runtime and development -packages (e.g. *-dev on Debian). +you want to build nsxiv on a distribution with separate runtime and development +packages (e.g. \*-dev on Debian). Building -------- -sxiv is built using the commands: +nsxiv is built using the commands: $ make - # make install - -Please note, that the latter one requires root privileges. -By default, sxiv is installed using the prefix "/usr/local", so the full path -of the executable will be "/usr/local/bin/sxiv". Running make will automatically detect if libexif and libgif are available and enable them if so. CLI arguments will override any automatic detection. For example: - $ make HAVE_LIBGIF=0 + $ make HAVE_LIBGIF=0 will always disable libgif. Alternatively, they can be disabled via editing `config.mk`. -You can install sxiv into a directory of your choice by changing the second -command to: +Installing nsxiv: + + # make install + +Please note, that this requires root privileges. +By default, nsxiv is installed using the prefix "/usr/local", so the full path +of the executable will be "/usr/local/bin/nsxiv". + +You can install nsxiv into a directory of your choice by changing this command to: - # make PREFIX="/your/dir" install + $ make PREFIX="/your/dir" install -The build-time specific settings of sxiv can be found in the file *config.h*. +The build-time specific settings of nsxiv can be found in the file *config.h*. Please check and change them, so that they fit your needs. If the file *config.h* does not already exist, then you have to create it with the following command: @@ -87,167 +95,32 @@ the following command: Usage ----- -Please see the [man page](http://muennich.github.com/sxiv/sxiv.1.html) for -information on how to use sxiv. - - -Download & Changelog --------------------- - -You can [browse](https://github.com/muennich/sxiv) the source code repository -on GitHub or get a copy using git with the following command: - - git clone https://github.com/muennich/sxiv.git - -**Stable releases** - -**[v26](https://github.com/muennich/sxiv/archive/v26.tar.gz)** -*(January 16, 2020)* - - * Maintenance release - -**[v25](https://github.com/muennich/sxiv/archive/v25.tar.gz)** -*(January 26, 2019)* - - * Support font fallback for missing glyphs - * Fix busy loop when built without inotify - * Use background/foreground colors from X resource database - -**[v24](https://github.com/muennich/sxiv/archive/v24.tar.gz)** -*(October 27, 2017)* - - * Automatically reload the current image whenever it changes - * Support embedding into other X windows with -e (e.g. tabbed) - * New option -p prevents sxiv from creating cache and temporary files - * Simpler mouse mappings, the most basic features are accessible with the - mouse only (navigate, zoom, pan) - -**[v1.3.2](https://github.com/muennich/sxiv/archive/v1.3.2.tar.gz)** -*(December 20, 2015)* - - * external key handler gets file paths on stdin, not as arguments - * Cache out-of-view thumbnails in the background - * Apply gamma correction to thumbnails - -**[v1.3.1](https://github.com/muennich/sxiv/archive/v1.3.1.tar.gz)** -*(November 16, 2014)* - - * Fixed build error, caused by delayed config.h creation - * Fixed segfault when run with -c - -**[v1.3](https://github.com/muennich/sxiv/archive/v1.3.tar.gz)** -*(October 24, 2014)* - - * Extract thumbnails from EXIF tags (requires libexif) - * Zoomable thumbnails, supported sizes defined in config.h - * Fixed build error with giflib version >= 5.1.0 +Please see man page for information on how to use nsxiv. To do so, execute the +following after the installation: -**[v1.2](https://github.com/muennich/sxiv/archive/v1.2.tar.gz)** -*(April 24, 2014)* + $ man nsxiv - * Added external key handler, called on keys prefixed with `Ctrl-x` - * New keybinding `{`/`}` to change gamma (by András Mohari) - * Support for slideshows, enabled with `-S` option & toggled with `s` - * Added application icon (created by 0ion9) - * Checkerboard background for alpha layer - * Option `-o` only prints files marked with `m` key - * Fixed rotation/flipping of multi-frame images (gifs) -**[v1.1.1](https://github.com/muennich/sxiv/archive/v1.1.1.tar.gz)** -*(June 2, 2013)* - - * Various bug fixes - -**[v1.1](https://github.com/muennich/sxiv/archive/v1.1.tar.gz)** -*(March 30, 2013)* - - * Added status bar on bottom of window with customizable content - * New keyboard shortcuts `\`/`|`: flip image vertically/horizontally - * New keyboard shortcut `Ctrl-6`: go to last/alternate image - * Added own EXIF orientation handling, removed dependency on libexif - * Fixed various bugs - -**[v1.0](https://github.com/muennich/sxiv/archive/v1.0.tar.gz)** -*(October 31, 2011)* - - * Support for multi-frame images & GIF animations - * POSIX compliant (IEEE Std 1003.1-2001) - -**[v0.9](https://github.com/muennich/sxiv/archive/v0.9.tar.gz)** -*(August 17, 2011)* - - * Made key and mouse mappings fully configurable in config.h - * Complete code refactoring - -**[v0.8.2](https://github.com/muennich/sxiv/archive/v0.8.2.tar.gz)** -*(June 29, 2011)* - - * POSIX-compliant Makefile; compiles under NetBSD - -**[v0.8.1](https://github.com/muennich/sxiv/archive/v0.8.1.tar.gz)** -*(May 8, 2011)* - - * Fixed fullscreen under window managers, which are not fully EWMH-compliant - -**[v0.8](https://github.com/muennich/sxiv/archive/v0.8.tar.gz)** -*(April 18, 2011)* - - * Support for thumbnail caching - * Ability to run external commands (e.g. jpegtran, convert) on current image - -**[v0.7](https://github.com/muennich/sxiv/archive/v0.7.tar.gz)** -*(February 26, 2011)* - - * Sort directory entries when using `-r` command line option - * Hide cursor in image mode - * Full functional thumbnail mode, use Return key to switch between image and - thumbnail mode - -**[v0.6](https://github.com/muennich/sxiv/archive/v0.6.tar.gz)** -*(February 16, 2011)* - - * Bug fix: Correctly display filenames with umlauts in window title - * Basic support of thumbnails - -**[v0.5](https://github.com/muennich/sxiv/archive/v0.5.tar.gz)** -*(February 6, 2011)* - - * New command line option: `-r`: open all images in given directories - * New key shortcuts: `w`: resize image to fit into window; `W`: resize window - to fit to image - -**[v0.4](https://github.com/muennich/sxiv/archive/v0.4.tar.gz)** -*(February 1, 2011)* - - * New command line option: `-F`, `-g`: use fixed window dimensions and apply - a given window geometry - * New key shortcut: `r`: reload current image - -**[v0.3.1](https://github.com/muennich/sxiv/archive/v0.3.1.tar.gz)** -*(January 30, 2011)* +F.A.Q +----- - * Bug fix: Do not set setuid bit on executable when using `make install` - * Pan image with mouse while pressing middle mouse button +* Can I open remote urls with nsxiv? <br> +Yes, see [nsxiv-url](https://github.com/nsxiv/nsxiv/wiki/nsxiv-url) -**[v0.3](https://github.com/muennich/sxiv/archive/v0.3.tar.gz)** -*(January 29, 2011)* +* Can I open all the images in a directory? <br> +Yes, see [nsxiv-rifle](https://github.com/nsxiv/nsxiv/wiki/nsxiv-rifle) - * New command line options: `-d`, `-f`, `-p`, `-s`, `-v`, `-w`, `-Z`, `-z` - * More mouse mappings: Go to next/previous image with left/right click, - scroll image with mouse wheel (horizontally if Shift key is pressed), - zoom image with mouse wheel if Ctrl key is pressed +* Can I set default arguments for nsxiv? <br> +Yes, see [nsxiv-env](https://github.com/nsxiv/nsxiv/wiki/nsxiv-env) -**[v0.2](https://github.com/muennich/sxiv/archive/v0.2.tar.gz)** -*(January 23, 2011)* +* Can I pipe images into nsxiv? <br> +No, not yet. See https://github.com/nsxiv/nsxiv/issues/32 - * Bug fix: Handle window resizes correctly - * New keyboard shortcuts: `g`/`G`: go to first/last image; `[`/`]`: go 10 - images back/forward - * Support for mouse wheel zooming (by Dave Reisner) - * Added fullscreen mode -**[v0.1](https://github.com/muennich/sxiv/archive/v0.1.tar.gz)** -*(January 21, 2011)* +Download +-------- - * Initial release +You can [browse](https://github.com/nsxiv/nsxiv) the source code repository +on GitHub or get a copy using git with the following command: + $ git clone https://github.com/nsxiv/nsxiv.git @@ -1,5 +0,0 @@ -- Load all frames from TIFF files. We have to write our own loader for this to - happen--just like we did for GIF images--because Imlib2 does not support - multiple frames. Issue #241. -- Add support for more embedded thumbnail formats. Right now, sxiv seems to use - the smallest one. Issue #238. @@ -0,0 +1,8 @@ +To Do +----- + + * Add support for more embedded thumbnail formats. Right now, nsxiv seems to use + the smallest one. [Issue #238](https://github.com/muennich/sxiv/issues/238). + * Load all frames from TIFF files. We have to write our own loader for this to + happen--just like we did for GIF images--because Imlib2 does not support + multiple frames. [Issue #241](https://github.com/muennich/sxiv/issues/241). diff --git a/autoreload_inotify.c b/autoreload_inotify.c index 7c5b09a..7982e0d 100644 --- a/autoreload_inotify.c +++ b/autoreload_inotify.c @@ -1,22 +1,22 @@ /* Copyright 2017 Max Voit, Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #include <errno.h> #include <stdlib.h> diff --git a/autoreload_nop.c b/autoreload_nop.c index a0427af..4f5702f 100644 --- a/autoreload_nop.c +++ b/autoreload_nop.c @@ -1,22 +1,22 @@ /* Copyright 2017 Max Voit * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" void arl_init(arl_t *arl) { @@ -1,22 +1,22 @@ /* Copyright 2011, 2012, 2014 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _IMAGE_CONFIG #include "config.h" diff --git a/config.def.h b/config.def.h index 449f43b..0d0b6a9 100644 --- a/config.def.h +++ b/config.def.h @@ -16,7 +16,7 @@ enum { #ifdef _TITLE_CONFIG /* default title prefix */ -static const char *TITLE_PREFIX = "sxiv - "; +static const char *TITLE_PREFIX = "nsxiv - "; /* default title suffixmode, available options are: * SUFFIX_EMPTY diff --git a/exec/image-info b/exec/image-info index da610cf..f608527 100755 --- a/exec/image-info +++ b/exec/image-info @@ -1,8 +1,8 @@ #!/bin/sh -# Example for $XDG_CONFIG_HOME/sxiv/exec/image-info -# Called by sxiv(1) whenever an image gets loaded. -# The output is displayed in sxiv's status bar. +# Example for $XDG_CONFIG_HOME/nsxiv/exec/image-info +# Called by nsxiv(1) whenever an image gets loaded. +# The output is displayed in nsxiv's status bar. # Arguments: # $1: path to image file # $2: image width diff --git a/exec/key-handler b/exec/key-handler index 3b50e4c..614e1ec 100755 --- a/exec/key-handler +++ b/exec/key-handler @@ -1,11 +1,11 @@ #!/bin/sh -# Example for $XDG_CONFIG_HOME/sxiv/exec/key-handler -# Called by sxiv(1) after the external prefix key (C-x by default) is pressed. +# Example for $XDG_CONFIG_HOME/nsxiv/exec/key-handler +# Called by nsxiv(1) after the external prefix key (C-x by default) is pressed. # The next key combo is passed as its first argument. Passed via stdin are the # images to act upon, one path per line: all marked images, if in thumbnail # mode and at least one image has been marked, otherwise the current image. -# sxiv(1) blocks until this script terminates. It then checks which images +# nsxiv(1) blocks until this script terminates. It then checks which images # have been modified and reloads them. # The key combo argument has the following form: "[C-][M-][S-]KEY", diff --git a/icon/128x128.png b/icon/128x128.png Binary files differindex 3076cd7..d45250b 100644 --- a/icon/128x128.png +++ b/icon/128x128.png diff --git a/icon/16x16.png b/icon/16x16.png Binary files differindex c5cff99..a19074a 100644 --- a/icon/16x16.png +++ b/icon/16x16.png diff --git a/icon/32x32.png b/icon/32x32.png Binary files differindex 01a62f4..e18ccf8 100644 --- a/icon/32x32.png +++ b/icon/32x32.png diff --git a/icon/48x48.png b/icon/48x48.png Binary files differindex 0bea30c..442a96c 100644 --- a/icon/48x48.png +++ b/icon/48x48.png diff --git a/icon/64x64.png b/icon/64x64.png Binary files differindex fb509c6..3ce0d27 100644 --- a/icon/64x64.png +++ b/icon/64x64.png diff --git a/icon/Makefile b/icon/Makefile index bbb4786..f660cc5 100644 --- a/icon/Makefile +++ b/icon/Makefile @@ -7,6 +7,6 @@ install: for f in $(ICONS); do \ dir="$(DESTDIR)$(PREFIX)/share/icons/hicolor/$${f%.png}/apps"; \ mkdir -p "$$dir"; \ - cp "$$f" "$$dir/sxiv.png"; \ - chmod 644 "$$dir/sxiv.png"; \ + cp "$$f" "$$dir/nsxiv.png"; \ + chmod 644 "$$dir/nsxiv.png"; \ done @@ -1,22 +1,22 @@ /* Copyright 2011, 2012 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _IMAGE_CONFIG #include "config.h" @@ -1,22 +1,22 @@ /* Copyright 2011-2013 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _MAPPINGS_CONFIG #include "config.h" @@ -136,7 +136,7 @@ void remove_file(int n, bool manual) if (filecnt == 1) { if (!manual) - fprintf(stderr, "sxiv: no more files to display, aborting\n"); + fprintf(stderr, "nsxiv: no more files to display, aborting\n"); exit(manual ? EXIT_SUCCESS : EXIT_FAILURE); } if (files[n].flags & FF_MARK) @@ -919,11 +919,12 @@ int main(int argc, char **argv) if (homedir != NULL) { extcmd_t *cmd[] = { &info.f, &keyhandler.f }; const char *name[] = { "image-info", "key-handler" }; + const char *s = "/nsxiv/exec/"; for (i = 0; i < ARRLEN(cmd); i++) { - n = strlen(homedir) + strlen(dsuffix) + strlen(name[i]) + 12; + n = strlen(homedir) + strlen(dsuffix) + strlen(name[i]) + strlen(s) + 1; cmd[i]->cmd = (char*) emalloc(n); - snprintf(cmd[i]->cmd, n, "%s%s/sxiv/exec/%s", homedir, dsuffix, name[i]); + snprintf(cmd[i]->cmd, n, "%s%s%s%s", homedir, dsuffix, s, name[i]); if (access(cmd[i]->cmd, X_OK) != 0) cmd[i]->err = errno; } @@ -1,8 +1,8 @@ -.TH SXIV 1 sxiv\-VERSION +.TH NSXIV 1 nsxiv\-VERSION .SH NAME -sxiv \- Simple X Image Viewer +nsxiv \- Simple X Image Viewer .SH SYNOPSIS -.B sxiv +.B nsxiv .RB [ \-abcfhiopqrtvZ ] .RB [ \-A .IR FRAMERATE ] @@ -26,7 +26,7 @@ sxiv \- Simple X Image Viewer .IR ZOOM ] .IR FILE ... .SH DESCRIPTION -sxiv is a simple image viewer for X. +nsxiv is a simple image viewer for X. .P It has two modes of operation: image and thumbnail mode. The default is image mode, in which only the current image is shown. In thumbnail mode a grid of @@ -50,7 +50,7 @@ Do not show info bar on bottom of window. Remove all orphaned cache files from the thumbnail cache directory and exit. .TP .BI "\-e " WID -Embed sxiv's window into window whose ID is +Embed nsxiv's window into window whose ID is .IR WID . .TP .B \-f @@ -64,7 +64,7 @@ Set window position and size. See section GEOMETRY SPECIFICATIONS of X(7) for more information on GEOMETRY argument. .TP .BI "\-N " NAME -Set the resource name of sxiv's X window to NAME. +Set the resource name of nsxiv's X window to NAME. .TP .BI "\-T " TITLE Set the window title to TITLE. Use the format `prefix:suffixmode'. Any string @@ -77,7 +77,7 @@ literal is accepted for prefix, and the format of suffixmode is: 2 Full path to file .EE -By defualt, prefix is set to "sxiv - " and suffixmode is set to 1 (basename). +By defualt, prefix is set to "nsxiv - " and suffixmode is set to 1 (basename). .TP .BI "\-n " NUM Start at picture number NUM. @@ -92,10 +92,10 @@ Read names of files to open from standard input. Also done if FILE is `-'. Write list of all marked files to standard output when quitting. In combination with .B \-i -sxiv can be used as a visual filter/pipe. +nsxiv can be used as a visual filter/pipe. .TP .B \-p -Enable private mode, in which sxiv does not write any cache or temporary files. +Enable private mode, in which nsxiv does not write any cache or temporary files. .TP .B \-q Be quiet, disable warnings to standard error stream. @@ -134,7 +134,7 @@ Prefix the next command with a number (denoted via .IR count ). .TP .B q -Quit sxiv. +Quit nsxiv. .TP .B Return Switch to thumbnail mode / open selected image in image mode. @@ -414,35 +414,35 @@ Name of Xft bar font Please see xrdb(1) on how to change them. .SH STATUS BAR The information displayed on the left side of the status bar can be replaced -with the output of a user-provided script, which is called by sxiv whenever an +with the output of a user-provided script, which is called by nsxiv whenever an image gets loaded. The path of this script is -.I $XDG_CONFIG_HOME/sxiv/exec/image-info +.I $XDG_CONFIG_HOME/nsxiv/exec/image-info and the arguments given to it are: 1) path to image file, 2) image width, 3) image height. .P -There is also an example script installed together with sxiv as -.IR PREFIX/share/sxiv/exec/image-info . +There is also an example script installed together with nsxiv as +.IR PREFIX/share/nsxiv/exec/image-info . .SH EXTERNAL KEY HANDLER Additional external keyboard commands can be defined using a handler program located in -.IR $XDG_CONFIG_HOME/sxiv/exec/key-handler . +.IR $XDG_CONFIG_HOME/nsxiv/exec/key-handler . The handler is invoked by pressing .BR Ctrl-x . The next key combo is passed as its first argument. Passed via stdin are the images to act upon, one path per line: all marked images, if in thumbnail mode and at least one image has been marked, otherwise the current image. -sxiv(1) will block until the handler terminates. It then checks which images +nsxiv(1) will block until the handler terminates. It then checks which images have been modified and reloads them. The key combo argument has the following form: "[C-][M-][S-]KEY", where C/M/S indicate Ctrl/Meta(Alt)/Shift modifier states and KEY is the X keysym as listed in /usr/include/X11/keysymdef.h without the "XK_" prefix. -There is also an example script installed together with sxiv as -.IR PREFIX/share/sxiv/exec/key-handler . +There is also an example script installed together with nsxiv as +.IR PREFIX/share/nsxiv/exec/key-handler . .SH THUMBNAIL CACHING -sxiv stores all thumbnails under -.IR $XDG_CACHE_HOME/sxiv/ . +nsxiv stores all thumbnails under +.IR $XDG_CACHE_HOME/nsxiv/ . .P Use the command line option .I \-c @@ -452,20 +452,35 @@ afterwards inside the cache directory to remove empty subdirectories: .RS find . \-depth \-type d \-empty ! \-name '.' \-exec rmdir {} \\; .RE -.SH AUTHOR +.SH ORIGINAL AUTHOR .EX -Bert Muennich <ber.t at posteo.de> +Bert Muennich <ber.t at posteo.de> +.EE +.SH CURRENT MAINTAINERS +.EX +Anupam Ashish Minz +Berke Kocaoğlu <berke.kocaoglu at metu.edu.tr> +Guilherme Freire +Kian Kasad <kian at kasad.com> +N-R-K <nrk at disroot.org> +Stein Gunnar Bakkeby <bakkeby at gmail.com> +TAAPArthur <taaparthur at gmail.com> +explosion-mental <explosion0mental at gmail.com> +eylles <ed.ylles1997 at gmail.com> +qsmodo .EE .SH CONTRIBUTORS .EX -Bastien Dejean <nihilhill at gmail.com> -Dave Reisner <d at falconindy.com> -Fung SzeTat <sthorde at gmail.com> -Max Voit <mvdev at with-eyes.net> +Bastien Dejean <nihilhill at gmail.com> +Dave Reisner <d at falconindy.com> +Fung SzeTat <sthorde at gmail.com> +Max Voit <mvdev at with-eyes.net> + +For additional contributors, run `git shortlog -s` in the nsxiv repository. .EE .SH HOMEPAGE .EX -https://github.com/muennich/sxiv +https://github.com/nsxiv/nsxiv .EE .SH SEE ALSO .BR X (7), diff --git a/sxiv.desktop b/nsxiv.desktop index 46826be..1e1e611 100644 --- a/sxiv.desktop +++ b/nsxiv.desktop @@ -1,8 +1,8 @@ [Desktop Entry] Type=Application -Name=sxiv +Name=nsxiv GenericName=Image Viewer -Exec=sxiv %F +Exec=nsxiv %F MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;image/x-bmp;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-tga;image/x-xpixmap;image/webp; NoDisplay=true -Icon=sxiv +Icon=nsxiv @@ -1,23 +1,23 @@ /* Copyright 2011 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef SXIV_H -#define SXIV_H +#ifndef NSXIV_H +#define NSXIV_H #include <stdarg.h> #include <stdbool.h> @@ -456,5 +456,5 @@ void win_set_title(win_t*, const char*); void win_set_cursor(win_t*, cursor_t); void win_cursor_pos(win_t*, int*, int*); -#endif /* SXIV_H */ +#endif /* NSXIV_H */ @@ -1,22 +1,22 @@ /* Copyright 2011 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _IMAGE_CONFIG #define _TITLE_CONFIG #include "config.h" @@ -31,14 +31,14 @@ const opt_t *options = (const opt_t*) &_options; void print_usage(void) { - printf("usage: sxiv [-abcfhiopqrtvZ] [-A FRAMERATE] [-e WID] [-G GAMMA] " + printf("usage: nsxiv [-abcfhiopqrtvZ] [-A FRAMERATE] [-e WID] [-G GAMMA] " "[-g GEOMETRY] [-N NAME] [-T TITLE] [-n NUM] [-S DELAY] [-s MODE] " "[-z ZOOM] FILES...\n"); } void print_version(void) { - puts("sxiv " VERSION); + puts("nsxiv " VERSION); } void parse_options(int argc, char **argv) @@ -1,22 +1,22 @@ /* Copyright 2011 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _THUMBS_CONFIG #include "config.h" @@ -172,10 +172,11 @@ void tns_init(tns_t *tns, fileinfo_t *files, const int *cnt, int *sel, dsuffix = "/.cache"; } if (homedir != NULL) { + const char *s = "/nsxiv"; free(cache_dir); - len = strlen(homedir) + strlen(dsuffix) + 6; + len = strlen(homedir) + strlen(dsuffix) + strlen(s) + 1; cache_dir = (char*) emalloc(len); - snprintf(cache_dir, len, "%s%s/sxiv", homedir, dsuffix); + snprintf(cache_dir, len, "%s%s%s", homedir, dsuffix, s); } else { error(0, 0, "Cache directory not found"); } @@ -272,7 +273,7 @@ bool tns_load(tns_t *tns, int n, bool force, bool cache_only) ExifContent *ifd; ExifByteOrder byte_order; int tmpfd; - char tmppath[] = "/tmp/sxiv-XXXXXX"; + char tmppath[] = "/tmp/nsxiv-XXXXXX"; Imlib_Image tmpim; if ((ed = exif_data_new_from_file(file->path)) != NULL) { @@ -1,22 +1,22 @@ /* Copyright 2011 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #include <stdlib.h> #include <string.h> @@ -1,22 +1,22 @@ /* Copyright 2011-2013 Bert Muennich * - * This file is part of sxiv. + * This file is a part of nsxiv. * - * sxiv is free software; you can redistribute it and/or modify + * nsxiv is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * - * sxiv is distributed in the hope that it will be useful, + * nsxiv is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with sxiv. If not, see <http://www.gnu.org/licenses/>. + * along with nsxiv. If not, see <http://www.gnu.org/licenses/>. */ -#include "sxiv.h" +#include "nsxiv.h" #define _WINDOW_CONFIG #include "config.h" #include "icon/data.h" @@ -30,7 +30,7 @@ #include <X11/Xatom.h> #include <X11/Xresource.h> -#define RES_CLASS "Sxiv" +#define RES_CLASS "Nsxiv" enum { H_TEXT_PAD = 5, @@ -277,11 +277,11 @@ void win_open(win_t *win) free(icon_data); /* These two atoms won't change and thus only need to be set once. */ - XStoreName(win->env.dpy, win->xwin, "sxiv"); - XSetIconName(win->env.dpy, win->xwin, "sxiv"); + XStoreName(win->env.dpy, win->xwin, "nsxiv"); + XSetIconName(win->env.dpy, win->xwin, "nsxiv"); classhint.res_class = RES_CLASS; - classhint.res_name = options->res_name != NULL ? options->res_name : "sxiv"; + classhint.res_name = options->res_name != NULL ? options->res_name : "nsxiv"; XSetClassHint(e->dpy, win->xwin, &classhint); XSetWMProtocols(e->dpy, win->xwin, &atoms[ATOM_WM_DELETE_WINDOW], 1); |