easymodo / qimgv

Image viewer. Fast, easy to use. Optional video support.
GNU General Public License v3.0
2.44k stars 170 forks source link
c-plus-plus cross-platform image-viewer libmpv linux qt qt5 qt6 video webm webm-support windows

:exclamation: Updates may be slow due to war in Ukraine :sunflower: :sunflower: :sunflower:

qimgv | Current version: 1.0.2

Image viewer. Fast, easy to use. Optional video support.

Screenshots

Main window & panel Folder view Settings window
img1 img2 img3

Key features:

Default control scheme:

Action Shortcut
Next image Right arrow / MouseWheel
Previous image Left arrow / MouseWheel
Goto first image Home
Goto last image End
Zoom in Ctrl+MouseWheel / Crtl+Up
Zoom out Ctrl+MouseWheel / Crtl+Down
Zoom (alt. method) Hold right mouse button & move up / down
Fit mode: window 1
Fit mode: width 2
Fit mode: 1:1 (no scaling) 3
Switch fit modes Space
Toggle fullscreen mode DoubleClick / F / F11
Exit fullscreen mode Esc
Show EXIF panel I
Crop image X
Resize image R
Rotate left Ctrl+L
Rotate Right Ctrl+R
Open containing directory Ctrl+D
Slideshow mode ~
Shuffle mode Ctrl+~
Quick copy C
Quick move M
Move to trash Delete
Delete file Shift+Delete
Save Ctrl+S
Save As Ctrl+Shift+S
Folder view Enter / Backspace
Open Ctrl+O
Print / Export PDF Ctrl+P
Settings P
Exit application Esc / Ctrl+Q / Alt+X / MiddleClick

... and more.

Note: you can configure every shortcut by going to Settings > Controls

User interface

The idea is to have a uncluttered, simple and easy to use UI. You can see UI elements only when you need them.

There is a pull-down panel with thumbnails, as well as folder view. You can also bring up a context menu via right click.

Using quick copy / quick move panels

Bring up the panel with C or M shortcut. You will see 9 destination directories, click on the folder icon to change them.

With panel visible, use 1 - 9 keys to copy/move current image to corresponding directory.

When you are done press C or M again to hide the panel.

Running scripts

You can run custom scripts on a current image.

Open Settings > Scripts. Press Add. Here you can choose between a shell command and a shell script.

Example of a command:

convert %file% %file%_.pdf

Example of a shell script file ($1 will be image path):

#!/bin/bash
gimp "$1"

Note: The script file must be an executable. Also, "shebang" (#!/bin/bash) needs to be present.

When you've created your script go to Settings > Controls > Add, then select it and assign a shortcut like for any regular action.

HiDPI (Linux / MacOS only)

If qimgv appears too small / too big on your display, you can override the scale factor. Example:

QT_SCALE_FACTOR="1.5" qimgv /path/to/image.png

You can put it in qimgv.desktop file to make it permanent. Using values less than 1.0 is not supported.

qimgv should also obey the global scale factor set in KDE's systemsettings.

High quality scaling

qimgv supports nicer scaling filters when compiled with opencv support (ON by default, but might vary depending on your linux distribution). Filter options are available in Settings > Scaling. Bicubic or bilinear+sharpen is recommended.

Additional image formats

qimgv can open some extra formats via third-party image plugins. All of them are included with windows package.

Format Plugin
JPEG-XL github.com/novomesk/qt-jpegxl-image-plugin
AVIF github.com/novomesk/qt-avif-image-plugin
APNG github.com/Skycoder42/QtApng
HEIF / HEIC github.com/jakar/qt-heif-image-plugin
RAW https://gitlab.com/mardy/qtraw

Installation

Windows builds

Grab the latest release here

Windows builds are portable (everything is contained within install folder). Installer additionally sets up file associations.

NOTE: -video variants include mpv for video support

GNU+Linux

Arch Linux / Manjaro / etc.

AUR package:

qimgv-git

Ubuntu / Linux Mint / Pop!_OS / etc.

sudo apt install qimgv

Fedora

sudo dnf install qimgv

OpenSUSE

zypper install qimgv

Gentoo

emerge qimgv

Void linux

xbps-install -S qimgv

Alpine Linux

apk add qimgv

BSD

FreeBSD

pkg install qimgv

This list may be incomplete.

Compiling from source

See Compiling qimgv from source on the wiki

Donate

If you wish to give me a few bucks, please consider donating to the Ukrainian Army instead:

https://savelife.in.ua/en/donate-en/#donate-army-card-once

https://u24.gov.ua/

This directly increases the chances of me being able to work on this in future