Go to the previous / next image in the current folder. Neighbouring images are pre-decoded into the VRAM cache, so switching is instant.
Space / Shift+Space
Next / previous image. While a slideshow is running, pauses and resumes the slideshow instead.
Mouse Wheel
Previous / next image when scrolled over the main window. Direction can be reversed with MOUSE_VERTICAL_REVERSE_SCROLL_DIRECTION in Constants.h.
Home / End
Jump to the first / last image of the folder.
Backspace
Smart jump between the first and the last image of the folder β goes to whichever end is further away from the current position.
Shift+Backspace
Return to the image you were viewing before the first / last jump.
E
Toggle between the current image and the previously viewed one β an image-level Back button.
Q
Toggle between the current folder and the previously opened folder.
Page Up / Page Down
Walk the History panel's list one folder up / down, visiting only the non-favorite entries. The list order is never changed β the centre overlay reports the same row number the panel shows.
Insert / Delete
Same walk restricted to the favorites, so the two pairs of keys never land on each other's entries.
J / Ctrl+G
Open the Jump-to panel: type an image number and press Enter to go straight to it. Typing @ inside the panel switches to Find mode.
Ctrl+F
Open the Find panel β fuzzy filename search with wildcard support: * matches any characters, ? matches exactly one (e.g. *.jpg or photo_??_2024.*). Searches the current folder and the VRAM cache. details
L
Reveal the current file in Windows Explorer (opens its folder with the file pre-selected).
Horizontal Wheel
Cycle through the folders of your navigation history β one folder change per wheel notches. The folder snapshot is refreshed with in the History panel.
F2
Open-file dialog.
Alt+Up / Alt+Down
WALK THE FOLDER TREE. Alt+Up opens the parent folder β the same key Explorer uses β and Alt+Down steps into the first subfolder. details
Alt+Left / Alt+Right
Previous / next SIBLING folder β sideways through the tree, in Explorer's own name order (StrCmpLogicalW, so "Trip 10" comes after "Trip 2"). details
Drag & Drop
Drop an image file or an entire folder onto the window to open it. details
πZoom, Pan & View Modes8
Up / Down
Zoom in / out by Γ per step.
Num + / Num β
Zoom in / out β same steps as Up / Down.
Num *
Reset zoom and pan back to the active view mode's default fit.
0
Type an exact zoom percentage.
Ctrl+Wheel
Zoom in / out centered on the mouse cursor.
W / A / S / D
Pan the viewport when the image is larger than the window β px per press (DPI-scaled).
1 β 5
Select the view mode: 1 Fit to view (keeps aspect ratio) β’ 2 Fit to width (stretches) β’ 3 Fit to height (stretches) β’ 4 Fill window (stretches) β’ 5 Original size, 1:1 pixels (keeps aspect ratio).
Y
Toggle viewport lock. When ON, zoom and pan carry over to the next image instead of resetting β so flipping through same-framed shots keeps the same detail on screen at the same magnification. details
π±Mouse Controls10
βΉ Button roles
The roles below assume SWAP_MOUSE_BUTTONS = true in Constants.h (the shipped default). Set it to false to exchange the left and right button functions.
LMB hold / drag
Quick Γ zoom centered on the cursor; dragging pans while zoomed. Zoom and pan revert the moment the button is released.
LMB double-click
Toggle fullscreen.
RMB drag
Move the window.
RMB + LMB
Reveal the current file in Windows Explorer.
RMB + Wheel
Zoom in / out while the right button is held.
RMB + Horizontal Wheel
Live-resize the window from its center β 20 px per wheel notch.
MMB click
Full visual reset: zoom, pan and opacity return to defaults, the window is resized to its default dimensions and centered on the current monitor.
MMB drag
Live-resize the window.
Shift+Wheel
Adjust window opacity in % steps.
πͺWindow Management10
Shift+W / Shift+A / Shift+S / Shift+D
Nudge the window px up / left / down / right per keypress (DPI-scaled).
Alt+W / Alt+A / Alt+S / Alt+D
Snap the window to the top / left / bottom / right half of the work area.
Alt+Q / Alt+E / Alt+Z / Alt+C
Snap the window to the top-left / top-right / bottom-left / bottom-right quarter of the work area.
Alt+X
Reset to defaults β window size, position and all effects (same as ).
Shift+Num + / Shift+β β’ Shift+= / Shift+-
Grow / shrink the window by px per side while keeping it centered.
Ctrl+Space
Toggle: first press fits the viewer to the work area (monitor minus taskbar), shrinking further to avoid any visible panel (F3 cache strip, F6 directory strip, spawned directory panels). details
Ctrl+M
Move the window to the next monitor, wrapping round at the last. Monitors are ordered left to right by their desktop coordinates. details
Drag near screen edge
Releasing a window drag within px of a screen edge snaps the window to that edge.
F / Enter / Ctrl+Shift+T
Toggle borderless fullscreen on the current monitor. (F11 no longer does this β it is the mirroring toggle.)
Ctrl+T / Ctrl+A
Toggle always-on-top β the main window and every visible panel stay above all other windows.
π§°Panels & Tools9
F1
Toggle this help window. Scroll with the wheel, Page Up / Page Down, Home and End. exports the full help to a text file on the Desktop.
M
Toggle the Image Info panel β full EXIF metadata (camera, lens, exposure, GPS) including the embedded preview thumbnail. details
K
Toggle the Statistics panel β decode time, codec used, file details and cache information for the current image.
F3 / F4
Toggle the VRAM cache strip / move it to the next free screen edge. It shows every image currently decoded in GPU memory and updates live as you browse.
F6 / F7 β’ Right Shift
Toggle the current-directory strip / move it to the next free screen edge. Right Shift is an alternative toggle key for .
F5
Reload the current directory from disk β picks up newly added, deleted or renamed files without leaving the folder.
Ctrl+F3
Clear the VRAM cache. Images are re-decoded on demand afterwards. (Moved from F12, which is now the mirroring toggle.)
Esc / Ctrl+W
Close the focused panel β works in every panel window.
MMB click
Middle-mouse-button click on any floating panel (Help, EXIF, Stats, Jump-to, Find) or on any directory / cache strip closes that panel immediately.
πΌThumbnail Strips10
Mouse Wheel
Scroll the strip. Hold Shift to scroll 3Γ faster.
B
Toggle wheel wrap-around. When ON, scrolling past the last thumbnail jumps back to the first β and scrolling before the first jumps to the last. Each wrap shows a message in the center overlay. details
U
Toggle thumbnail strip visual effects on/off (master runtime switch). Effects include: rounded corners (corner overdraw), accent-color glow border on the selected thumbnail, and a subtle hover-scale⦠details
Left Click
Open the clicked thumbnail in the main viewer. Thumbnails from another folder (e.g. in the cache strip) are opened as new files.
Click + drag
Grab the strip and drag it to scroll freely.
Scrollbar edge
Every strip has a thin scrollbar on its inner edge β click and drag it to scrub through large folders quickly.
Drag thumbnail β other strip
Drag a thumbnail from one directory strip onto another to MOVE the file there. Hold Ctrl while dropping to COPY instead β the mouse cursor shows which operation is active. details
MMB click
Close the strip. Works on the directory strip and every spawned directory panel.
Click to make active
Clicking any directory strip makes it the active panel. All subsequent folder navigation β including History Enter and folder changes β targets the last-clicked strip. details
Right Click
Context menu on any thumbnail: Copy, Cut, Delete and Paste. Copy / Cut use the Windows clipboard, so files can also be pasted in Explorer. A cut file is shown dimmed until it is pasted. details
πHistory Panel11
Tab
Toggle the History panel β the list of recently opened folders. Navigate with the mouse or arrow keys.
Ctrl+Tab
Toggle the full (uncapped) history view and refresh the folder snapshot used by horizontal-wheel navigation.
Type anything
Filters the list as you type β fuzzy by default, wildcard when the query contains * or ?, the same matcher Find and this Help panel use. Matched characters are highlighted inside each row. details
Enter
Open the hovered folder in the main viewer.
Shift+Enter
Spawn a floating directory strip for the hovered folder without leaving the current one β up to strips (top, left, right, bottom). details
MMB click on a row
Toggle a floating directory strip for the hovered folder: spawns one if none is open, or hides the existing one. The History panel itself stays open.
Space
Toggle favorite on the hovered entry. Favorites survive history clears.
Ctrl+Delete
Delete the hovered entry. restores the last deleted one.
Home / End / Page Up / Page Down / Insert / Delete
Not captured by this panel β they reach the viewer as usual, so you can walk images and folders while watching the list highlight follow you.
Ctrl+Shift+Delete
Clear the entire history but keep all favorites.
Ctrl+Alt+Shift+Delete
Clear all favorites but keep the history.
βΆSlideshow5
Ctrl+F1
Start / stop the slideshow.
Space (while running)
Pause / resume the slideshow.
R (while running)
Toggle loop β restart from the first image after the last.
S (while running)
Toggle shuffle β show the playlist in random order.
T (while running)
Step to the next slide transition ( in total, wraps around). Slideshow βΊ Transition in the tray or right-click menu controls this in two parts: which transitions are in play details
βΉInfo Overlays4
I / Ctrl+0
Master toggle β show / hide all overlay slots at once.
Ctrl+1 β Ctrl+9
Cycle a slot of the 3Γ3 grid: Compact (one line) β Full (two lines) β Off. Assignments: 1 index + filename β’ 3 zoom % β’ 5 center message area β’ 7 active effects + folder name β’ 9 dimensions + fileβ¦ details
O
Cycle the overlay layout: Grid β Stacked β Summary.
P
Toggle the semi-transparent background behind overlay text β the text itself always stays visible.
π¨Effects & Color14
R / Shift+R
Rotate 90Β° clockwise / counter-clockwise.
H / V
Flip horizontally / vertically.
Ctrl+Delete
Toggle desaturate β drops all colour. Switch Sepia on afterwards to tint the result.
Ctrl+Insert
Toggle color inversion (negative).
Ctrl+Home
Toggle sepia tone.
Ctrl+End
Toggle solarize β inverts only tones above % brightness.
Ctrl+Page Up
Toggle outline β GPU edge detection.
Ctrl+Page Down
Toggle black & white threshold β pixels brighter than % become white, the rest black.
Ctrl+[ / Ctrl+]
Saturation β / + in steps (0 = grayscale, maximum ).
Ctrl+\ / Ctrl+'
Brightness + / β in steps (range Β±).
Ctrl+/ / Ctrl+.
Contrast + / β in steps (maximum ).
Ctrl+= / Ctrl+-
Gamma + / β in steps (range β ).
Num 0
Reset every color adjustment and effect back to neutral.
`
Effects bypass β temporarily view the untouched original; press again to re-apply all active effects.
πΎFiles, Clipboard & Sorting7
Ctrl+C
Copy the current image to the clipboard.
Ctrl+S
Save As β choose the format in the dialog (PNG, JPEG, BMP, TIFF, GIF). Rotation, flips and all color effects are baked into the saved file.
Ctrl+Alt+Shift+0
Sort by name (natural Explorer order). Press again to reverse AβZ / ZβA.
Ctrl+Alt+Shift+9
Sort by date modified. Press again to switch newest β oldest.
Ctrl+Alt+Shift+8
Sort by file size. Press again to switch largest β smallest.
Ctrl+Alt+Shift+7
Sort by extension. Press again to reverse AβZ / ZβA.
Ctrl+Alt+Shift+6
Sort by physical disk order β reads files in on-disk sequence, the fastest option for mechanical hard drives.
βApplication & Appearance12
Esc / Ctrl+W
Hide to the system tray β the process stays resident so the next open is instant. Extra running instances are closed.
Ctrl+Q
Hard quit β fully removes the process from memory.
Ctrl+N
Open a new independent QIV window.
F8
Open the Dedicated panel: configure a named instance β its own images and promotions folders, promotion pacing, monitor and slideshow options β then generate a shortcut for it. details
If qIV crashes
A crash writes a dump file NEXT TO THE EXECUTABLE, named QuickImageViewer_crash_<date>_<time>_<pid>.dmp. details
Supporting qIV
qIV is one person's work, given away complete: no advertising, no telemetry, no paid tier and no feature held back. details
N
Toggle all panels: closes every floating panel and directory strip if any is open, otherwise restores exactly the set the last close hid. Main viewer stays.
Shift+Delete
Reset everything β window layout and all effects return to defaults.
Ctrl+Alt+Num + / Ctrl+Alt+Num β
Theme brightness: step all panel colors lighter / darker at runtime.
Open the Local Server panel β the listener THIS instance runs, and nothing else. qIV can listen on a TCP port and be driven over the network β next, goto, zoom, open, slideshow details
TCP / IP menu β Announce (beacon)
Publish this listener on the local network so a phone or another qIV FINDS it in a list instead of being told an address. details
Ctrl+Alt+S
Start or stop that listener without opening its panel. The same two actions as the panel's Start and Stop buttons, on one key details
Ctrl+F9
My Clients β every peer currently connected to the listener above, with its address, the name it gave itself, whether it is encrypted, and how long it has been on. details
F10
Open Remote Servers β everything about the instances this copy can drive. details
Ctrl+F10
Remote Commands β type a command and send it to the instances YOU TICK in this panel's own SEND TO box, which lists everything currently connected with a checkbox, name and address each. details
F11
MIRRORING on/off. While on, every command you give here is also sent to the instances listed in Remote Servers (F10) β navigation, zoom, effects, view mode, sort order, slideshow. details
Ctrl+Enter
SEND THIS POSITION to the instances under Control (the ticked rows in Ctrl+F11). Prepare a picture here, press it, and those screens show that picture details
Alt+Enter
STREAM THIS IMAGE to the instances under Control, shown ONCE β and change nothing else about them. details
Ctrl+Alt+Enter
ASK FOR THE IMAGE another instance is displaying, and show it here β once. The same transfer as Alt+Enter, inbound: that instance reads whatever is on its screen and sends the bytes, so this worksβ¦ details
Ctrl+Shift+Enter
The Ctrl+Enter push, WIDENED: send this folder, sort order and position to EVERY connected instance rather than only the ones ticked under Control (Ctrl+F11). details
Ctrl+F12
Server Log β every line that crossed the wire, both directions, in one list: number, who sent it, the command, who received it, the reply, the time, and how long it took. details
While connected
A connection β driving another instance, or being driven by one β puts the viewer into a restricted mode, and leaves it when the last connection drops. details
Driving another machine
An instance on the SAME computer is mirrored exactly β it shares the folder, so image numbers mean the same picture on both. details
F12
While mirroring, also execute the command HERE. Off (the default) makes this viewer a pure remote control: it drives the other screens and its own display stays where it is. details
qIV Remote (Android)
THE PHONE CLIENT, and the reason F9 is worth switching on even if you never drive a second PC. It speaks this same protocol β the verbs listed by `help` details
πSystem Tray48
Double-click tray icon
Restore the main window to the foreground.
Restore QuickImageViewer
Show and bring the main window to the front.
Help / Shortcuts
Open this help window directly from the tray.
Exit Completely
Remove the tray icon, destroy the window and fully exit the process.
Settings βΊ Keep in Background
When enabled, closing the window (Esc / Ctrl+W) hides QIV to the tray instead of exiting β the process stays resident for an instant re-open. details
Settings βΊ Run on Startup
Write / remove the Windows startup registry entry (HKCU\\β¦\\Run) so QIV launches automatically with Windows. details
Settings βΊ Thumbnail Effects
Master switch for thumbnail strip visual effects: glow border on the selected thumbnail, rounded-corner overdraw, and hover-scale enlarge.
Settings βΊ History βΊ Tab Opens Full List
When enabled, Tab opens the full (uncapped) history view. When disabled, Tab caps the list at Rows Shown in Panel. details
Settings βΊ Info Overlays
Show / hide all nine overlay text slots at once.
Overlays βΊ Font / Font Size / Font Colorβ¦
Typeface, point size and colour for every overlay slot. Font Color opens the standard colour picker; the size is shown in its own label. details
Overlays βΊ Bot Left βΊ Folder Name / Full Path
The bottom-left slot can name the folder holding the current image in one of two ways: π the leaf folder alone, or π the whole path. They are a radio pair because they are one line in two spellings details
Overlays βΊ Layout / Message Duration
Layout picks Grid, Stacked or Summary β the same three O cycles through. Message Duration is how long a centre-screen message stays up, in milliseconds.
Settings βΊ Open Thumbnail Strip on Start
Automatically open the directory thumbnail strip on every launch.
Settings βΊ Overlay Background
Toggle the semi-transparent background panel behind overlay text.
Settings βΊ Swap Mouse Buttons
Exchange left and right button roles: hold-to-zoom β drag-to-move-window.
Settings βΊ Invert Scroll Direction
Reverse vertical mouse wheel for image navigation.
Settings βΊ Invert Horizontal Scroll
Reverse horizontal wheel direction used for folder history navigation.
Settings βΊ Start in Fullscreen
Open in fullscreen mode on every launch.
Settings βΊ VRAM Cache Size
How many images to keep decoded in GPU memory (0 β 999). Click to open a numeric input dialog; current value is shown in the label.
Settings βΊ Window Width / Height
Default window dimensions in pixels (240 β 16000). Used by Ctrl+Space restore and window-reset commands.
Settings βΊ History βΊ Record Folders I Visit
Master switch for recording folder history. OFF stops new folders reaching both the list and qivHistory.txt. Nothing already saved is removed β that is what Clear History is for details
Settings βΊ History βΊ Record Only Folders With Images
ON by default. Folders with no images in them are not recorded. This is what keeps the Alt-arrow folder walk from filling the history with folders you merely stepped through: the walk lands in every⦠details
Settings βΊ History βΊ Rows Shown in Panel
How many history rows the panel draws (0 β 999). Display only β it does not affect what is recorded or saved.
Settings βΊ History βΊ Favorite Rows Shown in Panel
How many favorite rows the panel draws (0 β 999). Display only, and bounded in practice by Favorites You Can Add.
Settings βΊ History βΊ Favorites You Can Add
How many folders may be starred at once (0 β 999). Starring another is refused when full. This number also caps qivFavorites.txt itself, on load, on merge and on save details
Settings βΊ History βΊ Folders Saved to File
How many folders qivHistory.txt keeps (1 β 99999). The oldest are dropped past this.
Settings βΊ History βΊ Remove Invalid Folders
Drops history rows that cannot be parsed as a path, that point at a folder which no longer exists, or that hold no images. Favorites are kept whatever their state. details
Settings βΊ History βΊ Remove Duplicates
Collapses repeated folders to one row each, keeping the most recent. Usually removes nothing from the list β the real work is rewriting the append-only file, which is where repeats accumulate.
Settings βΊ History βΊ Clear History
Removes every non-favorite folder from the list and from qivHistory.txt. Favorites are untouched.
Settings βΊ History βΊ Clear Favorites
Un-stars every favorite and empties qivFavorites.txt. The folders themselves stay in the history β only the star goes.
Settings βΊ History βΊ Clear History and Favorites
Empties both lists and both files in one action. Each of the three clears backs its file up first, so any of them can be undone with Backup && Export βΊ Restore History && Favorites.
Settings βΊ History βΊ Open History File
Selects qivHistory.txt in Explorer, next to qivFavorites.txt and the QivBackup folder.
Settings βΊ Dir Thumb Cache
Memory budget in MB for the directory thumbnail bitmap store (100 β 64000 MB).
Settings βΊ Preload Lookaside
How many images ahead and behind the current one to pre-decode into GPU memory in the background (1 β 99).
Settings βΊ Overlay Message Duration
How long center overlay messages remain visible in milliseconds (250 β 10000 ms).
Backup && Export βΊ Export / Import Settings
Save all settings to a UTF-8 INI file, or load a previously exported one. Import requires a confirmation dialog and applies all values immediately, including theme, overlays and sort order. details
Backup && Export βΊ Backup Logs
Zips the whole logs folder β general and network together β to a location you choose. One-way: logs are a record, so there is nothing to restore them into. details
Zips qivLocalServer.ini, qivRemoteServers.ini and qivRemoteServerBlacklist.ini β none of which are in the registry, so the settings export above never covered them. details
Backup && Export βΊ Backup / Restore History && Favorites
Zips qivHistory.txt and qivFavorites.txt, and restores them from a previously written archive.
Settings βΊ Restore Defaults
Reset every setting to its compiled-in default value after a confirmation dialog. History and favorites are not affected.
View Mode submenu
Pick the default fit mode applied to newly loaded images: 1 Fit to view (keeps aspect) β’ 2 Fit to width β’ 3 Fit to height β’ 4 Stretch to window β’ 5 Original size, 1:1 pixels. details
Slideshow submenu
Configure slideshow defaults: interval (100 β 60000 ms), loop, shuffle, and transition type ( styles, plus Random). All changes persist immediately.
Sort submenu
Choose the playlist sort order (Name / Date Modified / Size / Type / Disk Order) and toggle Reverse Order. Takes effect immediately on the current folder.
Backup βΊ Backup History && Favorites
Export the history and favorites files into a ZIP archive (file-save dialog). The default filename includes today's date.
Backup βΊ Restore History && Favorites
Restore from a previously created ZIP backup after a confirmation dialog. Overwrites current history and favorites in memory and on disk.
Logging βΊ General Log
Record what qIV itself did β started, closed, and whether the previous run ended abnormally, naming the crash dump when there is one. details
Logging βΊ TCP/IP Log
Write every line exchanged with a remote client to disk β the same traffic the Server Log panel shows (Ctrl+F12). details
Logging βΊ Open Log Folder
Open logs\\ in Explorer. Files land in logs\\general\\ and logs\\network\\ beside the EXE, rotate every 5000 lines, and use the standard time [thread] LEVEL message layout that LogViewPlus and lnav⦠details
π₯Dedicated Screens13
F8
Open the Dedicated panel. A dedicated screen is a separate copy of qIV with its own settings file beside it β normally parked fullscreen on one monitor running a slideshow. details
Dedicated βΊ Generate App
Copy this executable to a chosen folder as qIV_dedicated_<name>.exe. The name is what keeps screens apart: its settings, folder lists, single-instance identity and shortcut are all derived from it.
Dedicated βΊ Generate Config
Write that copy's .ini next to it, holding every setting shown in the panel. The panel edits the CONFIG only β it never changes the app you are using.
Dedicated βΊ Add Images / Add Promotions
Append a folder to the screen's image list (.qim) or promotion list (.qpr). Duplicates are reported and skipped. Missing list files are created.
Dedicated βΊ Add Startup / Remove Startup
Create or delete a shortcut in shell:startup pointing at the copy with -dedicated -config "<its .ini>", so the screen starts itself after a reboot.
Dedicated βΊ Test Config / Test Images / Test Promos
Check one thing at a time: the .ini, the image list, or the promotion list. The list tests count the images actually found per folder and flag folders that are missing or empty details
Promotions
A SECOND playlist, never merged into the images. Shown occasionally between them and invisible to the image counter and arrow keys. Weighted order favours files whose name ends in #N details
Promotion pacing
Two independent triggers, each a (from, to) pair: 0 = off, a single value is an exact cadence, a range is re-rolled each time so it never looks mechanical. Count them in images, in seconds, or both details
Kiosk lock
Tick "Kiosk lock" in the panel and the screen ignores every key and every click, so a passer-by cannot pause the slideshow or reach the panels. The tray icon keeps working details
Always on top
Keeps the screen above every other window, so nothing that pops up can cover it. Ctrl+T toggles it live; the panel sets it for a generated screen.
Keep display awake
Blocks the screensaver and display sleep while the window is on screen. Leave it off and Windows eventually blanks the display with nobody there to wake it β and with the kiosk lock on, nobody could. details
Isolation
A dedicated screen writes NOTHING to the registry: settings live in its .ini, and it keeps no history or favorites. details
Turning any copy portable
Put an .ini beside any copy and it reads settings from that file instead of the registry. With Dedicated=0 inside, it stays an ordinary viewer β history, favorites and all β just portable.
β¨Command-Line Arguments29
"path\\to\\image.jpg"
Positional argument β open this image at startup and browse its folder.
-startFolder <path>
Open this folder at startup β used as the browse source or, combined with -slideshow, as the slideshow source.
-background
Start hidden in the system tray (service mode). QIV waits in RAM and opens instantly when an image is requested.
-fullscreen
Start in fullscreen.
-windowedView
Start windowed β the default; useful as an explicit override.
-alwaysOnTop
Keep the window above all others from launch (also accepted: -awaysOnTop).
-monitorNum#N
Open centered on monitor N (1-based). Example: -monitorNum#2.
-slideshow
Auto-start a slideshow after the content is loaded.
-slideshowInterval N
Seconds between slides (whole number). Example: -slideshowInterval 8.
Use a custom set of transitions, mirroring List mode in the menu. Accepts names or the numbers shown beside them β "Fade,Iris,Spin" or "6,8,17". Unknown entries are ignored.
-slideshowTransitionSource=<none|all|list>
Which transitions are in play: the single one picked, all of them, or only the custom list.
-slideshowTransitionOrder=<sequential|random>
How the next transition is drawn from that set.
-slideshowTransitionShuffle
Legacy shorthand for source=all order=random.
-hideMouse
Hide the mouse cursor at startup.
-lock
KIOSK mode β all keyboard and mouse input is ignored. Combine with -fullscreen -slideshow for unattended public displays. The tray icon stays live and is the only way to unlock. details
-keepDisplayAwake
Block the screensaver and display sleep while the window is on screen.
-dedicated
Run as a dedicated screen: no registry writes at all, no history or favorites, its own icon, mutex and window class β safe alongside any number of other instances. details
-config <path>
Use this .ini instead of the one named after the exe. Generated startup shortcuts pass it, so one executable can serve several configured screens.
-instance=<name>
Name this instance. Everything that keeps screens apart derives from it: settings file, folder lists, mutex and window class.
-instanceDesc=<text>
Free-text description, shown on the generated shortcut.
-promoOrder=<sequential|weighted>
How the next promotion is chosen. Weighted favours files whose name ends in #N.
-promoEveryImages=<from>-<to>
Show a promotion every N images. 0 = off; "5-0" is exactly every 5th; "5-15" is re-rolled between 5 and 15.
-promoEverySeconds=<from>-<to>
Same, counted in seconds. Runs independently of the image counter β whichever comes due first shows a promotion.
-runOnStartup
Write or refresh the Windows startup registry entry (HKCU\\β¦\\Run) so QIV launches automatically with Windows β equivalent to enabling "Run on startup" from the tray icon. details
qIV_dedicated_Lobby.exe -dedicated -config "D:\\Screens\\qIV_dedicated_Lobby.ini" β the form the Dedicated panel writes into a startup shortcut. details
In depth
The 64 shortcuts above whose behaviour needs more than a line. Every one is linked from its row.
Ctrl+FImage Navigation
Open the Find panel β fuzzy filename search with wildcard support: * matches any characters, ? matches exactly one (e.g. *.jpg or photo_??_2024.*). Searches the current folder and the VRAM cache. Typing # inside switches to Jump-to.
Alt+Up / Alt+DownImage Navigation
WALK THE FOLDER TREE. Alt+Up opens the parent folder β the same key Explorer uses β and Alt+Down steps into the first subfolder.
These reach folders you have never opened, which is what separates them from the history keys below: those only revisit folders you have already been in.
A folder with no pictures in it is a normal stop on the way, not a dead end β the placeholder names it and the same keys carry on.
Alt+Left / Alt+RightImage Navigation
Previous / next SIBLING folder β sideways through the tree, in Explorer's own name order (StrCmpLogicalW, so "Trip 10" comes after "Trip 2").
Each landing shows the folder and its POSITION, 3/12, so the ends of the run are visible before you reach them.
WRAPS from the last folder back to the first by default; the tray's Settings βΊ Folder Walk Wraps Around turns that off, and then the ends stop and say so. A lone subfolder never wraps β reopening the folder already open would look like nothing happened.
Drag & DropImage Navigation
Drop an image file or an entire folder onto the window to open it.
DROPPING SEVERAL AT ONCE opens the first. Pictures dropped together from ONE folder are all there already β opening any image builds the playlist from its whole folder, so the rest are an arrow key away. Anything that cannot come along β a second folder, a file from somewhere else β is counted in a message rather than dropped in silence.
YZoom, Pan & View Modes
Toggle viewport lock. When ON, zoom and pan carry over to the next image instead of resetting β so flipping through same-framed shots keeps the same detail on screen at the same magnification. Rotation and flips still reset, because each file's EXIF orientation tag owns those. Startup default: ONOFF (IS_LOCK_VIEWPORT in Constants.h).
Ctrl+SpaceWindow Management
Toggle: first press fits the viewer to the work area (monitor minus taskbar), shrinking further to avoid any visible panel (F3 cache strip, F6 directory strip, spawned directory panels). Second press restores the default window size (baseWidth Γ baseHeight from Constants.h), centered on the current monitor.
Ctrl+MWindow Management
Move the window to the next monitor, wrapping round at the last. Monitors are ordered left to right by their desktop coordinates. Position and size are carried across proportionally, so a screen of a different resolution does not leave the window half off the edge; in fullscreen the window simply fills the new monitor.
MPanels & Tools
Toggle the Image Info panel β full EXIF metadata (camera, lens, exposure, GPS) including the embedded preview thumbnail.
GPS IS RESOLVED OFFLINE, with no network call of any kind. The GeoNames data β 170,387 cities, 3,865 states and provinces, 47,549 districts and 252 countries β is zlib-compressed inside the executable, so a photo's coordinates become a city, district, state, country, capital, continent, currency, phone prefix and timezone with nothing leaving this machine and nothing to configure. It works with the network cable out.
BThumbnail Strips
Toggle wheel wrap-around. When ON, scrolling past the last thumbnail jumps back to the first β and scrolling before the first jumps to the last. Each wrap shows a message in the center overlay. Startup default: ONOFF (THUMBNAIL_PANEL_WHEEL_WRAP_AROUND in Constants.h).
UThumbnail Strips
Toggle thumbnail strip visual effects on/off (master runtime switch). Effects include: rounded corners (corner overdraw), accent-color glow border on the selected thumbnail, and a subtle hover-scale enlarge on the hovered thumbnail. Each effect can also be individually disabled in Constants.h (ThumbnailPanel::ThumbnailEffects). Startup default: ONOFF.
Drag thumbnail β other stripThumbnail Strips
Drag a thumbnail from one directory strip onto another to MOVE the file there. Hold Ctrl while dropping to COPY instead β the mouse cursor shows which operation is active. Both strips refresh automatically and files can be restored from the Recycle Bin.
Click to make activeThumbnail Strips
Clicking any directory strip makes it the active panel. All subsequent folder navigation β including History Enter and folder changes β targets the last-clicked strip. Only one strip is active at a time; the primary strip is the fallback when no spawned panel has been clicked.
Right ClickThumbnail Strips
Context menu on any thumbnail: Copy, Cut, Delete and Paste. Copy / Cut use the Windows clipboard, so files can also be pasted in Explorer. A cut file is shown dimmed until it is pasted. Delete sends the file to the Recycle Bin. Paste drops clipboard files into the strip's folder. Also: Select All, Select Inverse (flips the current selection) and Select None.
Type anythingHistory Panel
Filters the list as you type β fuzzy by default, wildcard when the query contains * or ?, the same matcher Find and this Help panel use. Matched characters are highlighted inside each row. Escape clears the filter; when it is already empty, Escape closes the panel. Space toggles a favorite while the filter is empty and types a space once it is not.
Shift+EnterHistory Panel
Spawn a floating directory strip for the hovered folder without leaving the current one β up to strips (top, left, right, bottom). If a strip is already open for that folder, this hides it instead (toggle). Great for comparing folders.
T (while running)Slideshow
Step to the next slide transition ( in total, wraps around). Slideshow βΊ Transition in the tray or right-click menu controls this in two parts: which transitions are in play β None (just the one you tick), All, or List (only the ones you tick) β and the order they play in, Sequential (the menu's numbered order) or Random. In List mode the numbered rows become checkboxes.
Ctrl+1 β Ctrl+9Info Overlays
Cycle a slot of the 3Γ3 grid: Compact (one line) β Full (two lines) β Off. Assignments: 1 index + filename β’ 3 zoom % β’ 5 center message area β’ 7 active effects + folder name β’ 9 dimensions + file size. Slots 2, 4, 6, 8 show the thumbnail-strip selection count for the panel on that edge. Slot 5 has no compact form, so it cycles On β Off.
F8Application & Appearance
Open the Dedicated panel: configure a named instance β its own images and promotions folders, promotion pacing, monitor and slideshow options β then generate a shortcut for it. Drop that shortcut in shell:startup and the screen starts itself.
If qIV crashesApplication & Appearance
A crash writes a dump file NEXT TO THE EXECUTABLE, named QuickImageViewer_crash_<date>_<time>_<pid>.dmp.
NOTHING IS SENT ANYWHERE. qIV has no telemetry and makes no network call of its own β the file is written to your disk and stays there. Attaching it to a GitHub issue is entirely your choice, and it is the difference between a bug that gets fixed and one that stays a mystery, because it holds the exact stack the process died on.
WHAT IS IN IT: a snapshot of the program's internal state, including open file paths and window titles β and NOT the contents of your images. If a path in it is sensitive, say so in the issue instead of attaching the file.
Supporting qIVApplication & Appearance
qIV is one person's work, given away complete: no advertising, no telemetry, no paid tier and no feature held back.
If it earns a place in your day, sponsorship is what buys the time to keep building it β github.com/sponsors/icyhoty2k, or ko-fi.com/ivanhristovyanev if you would rather not need a GitHub account. A star on the repository, a bug report with a dump attached, or telling someone about it all help more than they look like they do.
THE LICENCE IS AGPLv3: use it, study it, change it, share it. Building qIV or its remote subsystem into a product you do not intend to open-source β signage, kiosks, retail or museum displays, industrial or medical stations β is what the separate commercial licence is for. icyhoty2k@gmail.com.
F9Remote Control & Mirroring
Open the Local Server panel β the listener THIS instance runs, and nothing else. qIV can listen on a TCP port and be driven over the network β next, goto, zoom, open, slideshow β from a script, a phone, a home-automation system, or another qIV instance.
The listener is OFF unless you switch it on here, in the instance's .ini, or with -remote on the command line. It also needs a NAME and a PORT: an empty AllowList denies every connection, and a driving instance identifies this one by its name, so it will not start without one.
THE PROTOCOL DESCRIBES ITSELF. Send `help` and the answer lists every command this build accepts, one per line, with whether it takes a value, what it does and what the value means β pipe-separated, so a client can build its own command list from that one call instead of carrying a copy that goes stale. `ping` checks liveness, `version` reports the app and protocol version. It is plain UTF-8 text: netcat, curl, telnet and a five-line script are all first-class clients.
ENCRYPTION IS DECIDED BY THE ADDRESS, never negotiated. A peer on this machine (127.x, ::1, localhost) gets plaintext; EVERY other peer, your own LAN included, gets TLS 1.2/1.3 from the first byte. One listener on 0.0.0.0 serves both. The certificate is self-signed and the client PINS it by the SHA-256 fingerprint shown at the bottom of this panel β read it off here and type it into the client. There is no plaintext fallback for anything to strip.
A PASSWORD IS COMPULSORY off loopback and the server refuses to start without one. It never crosses the wire: this end stores a PBKDF2-HMAC-SHA256 digest and the client answers an HMAC over a fresh nonce, so each guess costs the guesser a full derivation. Five failures from one address inside ten minutes blacklists it automatically, every failure is answered a second late, and a peer that connects and then says nothing is dropped after ten seconds.
ALLOWLIST AND BLACKLIST take addresses, never domain names β a rule is matched against the address a connection actually arrived from. Five forms: * for everything, 192.168.1.* as a TEXT prefix, 192.168.0.0/24 as CIDR (2001:db8::/32 works too), 192.168.0.10-50 as a range (or the long 192.168.0.10-192.168.1.5), and a bare address for one host. Mind the star: it compares CHARACTERS, so 192.168.1* without the dot also covers 192.168.10.x β use /24 when the boundary matters. Anything that cannot match an address is dropped when you save, and the panel names what it dropped.
What this instance connects OUT to lives in Remote Servers (F10). F9 is what others connect to; F10 is what this connects to.
WHO is connected right now is Ctrl+F9, not here.
TCP / IP menu β Announce (beacon)Remote Control & Mirroring
Publish this listener on the local network so a phone or another qIV FINDS it in a list instead of being told an address. mDNS / DNS-SD, service type _qiv._tcp, answered by the Android app's own discovery β nothing to install at either end. Off by default.
IT ANNOUNCES THE INSTANCE NAME AND THE PORT, AND NOTHING ELSE. Never a password, never whether one is set, never a path, never a file name, never the AllowList. A signpost that describes the lock on the door is a worse signpost.
DISCOVERY IS NOT ACCESS. Being findable changes nothing about who may connect: the AllowList, the password challenge and TLS all still apply, so someone who discovers this instance and is not allowed in gets exactly as far as someone who guessed the address.
IT ONLY ANNOUNCES WHEN THERE IS SOMETHING TO REACH β the setting on, the listener actually running, and a bind address other than loopback. A beacon with no listener behind it advertises a service that refuses every connection, and on 127.0.0.1 it would promise something nobody who hears it can use. When the tick is on and one of those is missing, the F9 panel says which β and the menu says WILL ANNOUNCE rather than claiming it did.
Ctrl+Alt+SRemote Control & Mirroring
Start or stop that listener without opening its panel. The same two actions as the panel's Start and Stop buttons, on one key β it reports the address and port it came up on, or why it would not start.
IT CONFIGURES NOTHING. The name, port, password and AllowList are whatever this instance already holds β qivLocalServer.ini is read at startup, with any -remote switches layered on top β and this only switches the listener on and off. So it works from a cold start on a configured machine, without opening the panel at all. A server that has never been configured still has to be set up there once.
It does NOT re-read the .ini; opening the panel does that. Editing the file by hand while qIV is running therefore needs one F9 to be picked up.
LOCAL ONLY, deliberately. It has no place in the command table, so nothing can send it over the network β a client that stopped the listener would be cutting the connection it sent the command on, and could never turn it back on. It is not mirrored either: fanning it out would silence every screen at once, each needing a hand at its own keyboard to recover.
Ctrl+F9Remote Control & Mirroring
My Clients β every peer currently connected to the listener above, with its address, the name it gave itself, whether it is encrypted, and how long it has been on. The list refreshes itself while the panel is open.
THREE WAYS TO GET RID OF ONE, and the middle one is the useful one:
KICK closes the connection. Against a person that is enough; against anything automated it is useless, because it reconnects inside a second.
KICK FOR N closes it AND refuses that peer for the number of minutes you type. This is what answers a bot: it outlasts a retry loop and then forgets by itself. The block is held in memory only β restarting qIV clears every one of them, which is also how you undo shutting yourself out.
BAN writes the address to qivRemoteServerBlacklist.ini and it survives restarts. Undo it by editing or deleting that file.
For an IPv6 peer all three act on its /64 rather than the single address, and the panel says so before it does it β blocking one IPv6 address is close to useless, since the peer has billions of others in the same prefix.
None of this is reachable over the wire: a connected client cannot kick or ban anything, including you.
F10Remote Control & Mirroring
Open Remote Servers β everything about the instances this copy can drive.
Top: address, port, password, name and optional exe. Connect && Save proves the target answers before recording it, then writes it to qivRemoteServers.ini beside the exe and starts driving it β so an address is typed once.
Below: one row per instance. The dot starts a stopped instance or shuts down a running one; Connect/Disconnect brings the link up or down (a remote can be listed without being dialled).
WATCHING an instance moved to Ctrl+F11, along with the rest of the who-drives-whom controls. This console is about which instances exist and how to reach them.
IDENTIFY makes that screen say its own name in the middle of its window. Two identical viewers side by side are otherwise anonymous, and this tells you which row drives which without walking over to them. Available on connected rows only. On the wire it is `msg <text>`, so a script can put any message on any instance's screen.
The form at the top is READ-ONLY until you say otherwise. Clicking a row loads it there so you can read it; pressing UPDATE unlocks the fields, and SAVE or CANCEL locks them again. New clears the form and unlocks it for a fresh remote. Without the lock a stray click on an address plus one keystroke could quietly repoint a working remote at nothing. Esc backs out one step at a time: out of a field, then out of edit mode, then closes the panel.
Connect all / Disconnect all act on every row, F5 polls them, and Sync all pushes this viewer's view and effect state to all of them at once.
Ctrl+F10Remote Control & Mirroring
Remote Commands β type a command and send it to the instances YOU TICK in this panel's own SEND TO box, which lists everything currently connected with a checkbox, name and address each. Its own selection on purpose: the Ctrl+F11 Control ticks decide where keystrokes go, and lining up one screen by hand should not change what F11 drives afterwards. Everything connected starts ticked; All / None sit on the box's header. The manual counterpart to mirroring: F11 forwards what you DO, this sends what you TYPE, including the commands that have no key at all β msgRemote, OpenFile, JumpToImage, SlideshowSetInterval, EnableRemoteLog.
Every command has ONE wire name, and it is spelled exactly like its Command.h enumerator β no short aliases to remember or confuse.
BROWSE FIRST: the full command list is permanently on the left, scrollable and filterable β nobody remembers ninety wire names. The list shows NAMES only, in two blues: the second one marks a command that TAKES A VALUE (the header says so). Highlighting one explains it along the TOP: what the command does over the list, what its value means over the Value box, on one line β with units, limits and an example where there is one to give. The list comes from the same table the wire parser accepts, so a name shown here cannot come back "unknown command".
Type to filter (it matches the descriptions too). ARROWS and PgUp/PgDn move the highlight wherever the caret is. TAB swaps Filter and Value. ENTER in the filter takes the highlighted command β straight to Value if it needs one, otherwise it sends. ENTER in Value sends. ESC clears, then closes. Clicking a command selects it; it never sends on its own.
THE BOX ALONG THE BOTTOM IS A LOG of the whole session: every line you sent and every answer, numbered β β for a send, β for a reply, with the instance that answered and its round trip. NEWEST AT THE TOP, so what just came back is there without scrolling β the opposite of the Ctrl+F12 wire log, which is a transcript you read forwards. It scrolls, and it holds your place if you have scrolled into the history.
It keeps growing while you work and survives closing the panel; only Clear empties it, which also restarts the numbering at 1.
Each instance answers separately. Tick ALSO RUN IT HERE to include this viewer β off by default, since the usual reason to type a command here is to do something to the other screens. The LOG button beside Clear jumps to the Ctrl+F12 wire log, which carries the matching button back.
F11Remote Control & Mirroring
MIRRORING on/off. While on, every command you give here is also sent to the instances listed in Remote Servers (F10) β navigation, zoom, effects, view mode, sort order, slideshow. Panels, window geometry, quit and hide are deliberately never forwarded: one keypress must not close or move every screen at once. Always OFF at startup.
Both switches are also in the right-click menu under REMOTEACTIVATION, as checkboxes β which is the only way to READ them without changing them, since the overlay they announce themselves on fades. That submenu also says how many instances are connected and how many are actually being driven.
F11 asks nothing and puts nothing up β it is only the toggle. Which of the connected instances it drives is set in the Ctrl+F11 panel, and shown on screen each time mirroring goes on. Everything connected is driven to begin with; if you have unticked all of them, F11 says so instead of switching on and forwarding to nobody.
CTRL+F11 opens Mirroring: one row per CONNECTED instance, with three controls each, in the order you ask them β IDENTIFY makes that screen say its own name so you can tell two identical viewers apart; the CONTROL tick says whether F11 drives it; and WATCH is the other direction, where that instance reports what it does and this viewer follows along, which is how you see a screen running its own slideshow (one at a time β it is a radio button). Plus All, None, Sync now, and the two mirroring switches themselves as toggle buttons β F11 (send anything at all) and F12 (also run it here) β which light up while they are on. It is a real window β leave it open beside the pictures while you work; it refreshes itself as instances connect and drop, and every tick takes effect immediately. Sync now pushes this viewer's folder, current image and view state to the ticked instances, the same push as Sync all in Remote Servers. Rows that are listed but not connected do not appear β connect them in F10 first. The selection lasts for this session only and is echoed in the Remote Servers header.
Ctrl+EnterRemote Control & Mirroring
SEND THIS POSITION to the instances under Control (the ticked rows in Ctrl+F11). Prepare a picture here, press it, and those screens show that picture β the point being that they carry on doing whatever they were doing. A target running a fullscreen slideshow keeps running it, in its own view mode with its own effects, and simply continues from the image you sent. Folder, sort order and position are the ONLY things sent; that is why this is not Sync, which stamps this viewer's whole look onto the far end.
It works out what to send by ASKING first. Already in the same folder in the same order? Then just the position β one line, no rescan, no flicker, so you can walk a folder here and push each picture as you reach it. In a different folder? Then the folder, then the sort order, then β after waiting for that instance's own scan to finish β the image. Sending the position before the scan lands is the race this avoids.
Same-machine instances only: a folder path and an image number are both meaningless against another machine's files, and ticked rows elsewhere are reported as skipped rather than silently left out. Independent of F11 β mirroring can be off. Plain Enter is still fullscreen.
Alt+EnterRemote Control & Mirroring
STREAM THIS IMAGE to the instances under Control, shown ONCE β and change nothing else about them. No folder, no sort order, no playlist position: the picture goes up in place of the slide currently showing, and afterwards that instance carries on from exactly where it was, as if nothing had happened. An advert dropped into a running slideshow is the case it was built for.
THE PICTURE'S OWN BYTES TRAVEL, base64-encoded across several protocol lines, and the far end decodes them with its own decoder. So this works to an instance on ANOTHER MACHINE, which Ctrl+Enter cannot β a folder path and an image number are only meaningful against the far end's own disk. The file name rides along for one reason: its extension is what picks the decoder.
With a slideshow running it appears at the NEXT slide boundary, so the picture already on screen is not cut short, and it occupies one slide. With no slideshow it appears at once and stays until something else changes the image there. Either way it is gone the moment the picture changes β it never enters that instance's playlist, and both the received file and its cache entry are thrown away rather than left sitting in memory.
CTRL+Enter is the other depth of the same act: that one MOVES the far end to your picture and it stays there. Plain Enter is still fullscreen.
Ctrl+Alt+EnterRemote Control & Mirroring
ASK FOR THE IMAGE another instance is displaying, and show it here β once. The same transfer as Alt+Enter, inbound: that instance reads whatever is on its screen and sends the bytes, so this works from a machine in another room just as well as from one beside you.
ONE instance answers, because the answer is a picture and this screen shows one at a time: the instance being WATCHED (Ctrl+F11's β) if there is one β you are already following that screen β otherwise the first connected row under Control. The overlay names which one was asked, so a narrowed selection is never ambiguous.
What comes back is shown the way any one-shot image is: it never enters this viewer's playlist, nothing about the folder, sort order or position moves, and it is gone the moment the picture changes β but unlike an arriving advert it appears IMMEDIATELY, without waiting for a slide boundary, because you asked for it at this keyboard.
All three of these β and the wire commands behind them β are in the Ctrl+F10 Remote Commands list, which is where to test them by hand.
Ctrl+Shift+EnterRemote Control & Mirroring
The Ctrl+Enter push, WIDENED: send this folder, sort order and position to EVERY connected instance rather than only the ones ticked under Control (Ctrl+F11).
For lining up a whole wall at once without first going to a panel to tick rows you are about to untick again. Still same-machine only, for the same reason Ctrl+Enter is β a folder path and an image number are read against the far end's own disk, and choosing more targets cannot change that. Instances on other machines are skipped and counted, and the overlay says how many.
Ctrl+F12Remote Control & Mirroring
Server Log β every line that crossed the wire, both directions, in one list: number, who sent it, the command, who received it, the reply, the time, and how long it took. A mirroring session is a conversation, so both directions share one table in the order things actually happened.
CONNECTIONS ARE LOGGED TOO, as pairs, and the Sender column names WHO β the peer's address with its source port, 192.168.0.7:51423 or [2001:db8::1]:51423. The port is what tells two connections apart: one phone reconnecting every few minutes, or two instances on one box, are otherwise identical in every column, and an arrival could not be paired with its own departure. Command rows name the peer the same way, so a line and the connection that carried it match up. The departure also fills the Ξ column with HOW LONG the session lasted.
An arrival says whether it is plaintext or TLS; the matching departure says WHY it ended β closed by peer, send failed, authentication failed, server shutting down, or a TLS handshake that never completed. A connection still open is an arrival with nothing under it yet, so the list answers who is on this machine right now. Connections that never became clients are here as well β refused for being blacklisted, not on the AllowList, or over the connection limit β and on a listener anyone can reach, those are the lines worth reading first.
RECORDING IS OFF by default and costs nothing while it is off. The Recording button starts it β and tells every connected instance to start too, because a log of one end of a conversation answers half the question. Opening this panel does not start recording.
Two live counts sit at the right of the button row: CONNECTIONS n/m β how many listed targets are actually connected β and CONTROL n/m β how many of those F11 actually drives. They are TOGGLE buttons for the panels behind those numbers: pressing one opens the F10 console or the Ctrl+F11 panel and brings it to the front, pressing it again closes it. They light up while that panel is open; dimmed digits mean the count is zero.
Clear empties it (entry numbers carry on, so a number never means two different exchanges). Save writes a tab-separated UTF-8 file; Load β the button or Ctrl+O while the panel has focus β reads one back, REPLACING what is in memory, which is also how a rotated TCP/IP log file from the logs folder is opened. Click #, Time or Ξ time to sort, and again to reverse β the text columns do not sort, because grouping a conversation by sender destroys the ordering that makes it one. The newest 20000 entries are kept; older ones are dropped.
The list follows the newest entry until you scroll up, and follows again when you scroll back to the bottom.
DOUBLE-CLICK A ROW (or select it and press Enter) to open it in its own window with every field on its own line, wrapped and untrimmed β the table has to ellipsise a long command or reply, and that window is where the full text lives. Previous / Next step through the list in whatever order it is currently sorted, and the list's selection follows along, so closing the window leaves you where you finished reading. Copy puts the whole entry on the clipboard.
While connectedRemote Control & Mirroring
A connection β driving another instance, or being driven by one β puts the viewer into a restricted mode, and leaves it when the last connection drops.
Refused while connected: sort by Disk Order (physical order differs per drive, so two instances would order their playlists differently), Find, and anything that changes the folder β delete, cut, paste, drag-drop and Ctrl+S. Adding or removing one file shifts every image number after it, which is exactly what the two instances rely on to stay on the same picture. Each refusal says so on screen. Copy to clipboard still works: it reads a file and writes nothing.
Connecting while already sorted by disk order switches you to sort by Name.
Delete, move, paste and save are additionally NEVER reachable over the network, whatever the password or allow-list says.
Driving another machineRemote Control & Mirroring
An instance on the SAME computer is mirrored exactly β it shares the folder, so image numbers mean the same picture on both. An instance on ANOTHER computer gets the portable commands only: navigation, zoom, effects, view mode and slideshow, applied to its own content. Image numbers and folder paths are not sent there, because a path from this machine names nothing on that one. The Remote Servers marks those rows (remote), and its start button cannot launch them β nothing here can start a process on another machine.
THE EXCEPTION IS A STREAMED IMAGE. Alt+Enter and Ctrl+Alt+Enter send the picture's own bytes rather than a path, so they work to any machine: the far end decodes what it receives, and nothing about the transfer depends on it being able to read your disk. Both ends must be recent enough to know the streaming commands (remote protocol v2) β an older one is refused with a message that says so rather than being left to fail.
F12Remote Control & Mirroring
While mirroring, also execute the command HERE. Off (the default) makes this viewer a pure remote control: it drives the other screens and its own display stays where it is. Has no effect while mirroring is off. Always OFF at startup.
qIV Remote (Android)Remote Control & Mirroring
THE PHONE CLIENT, and the reason F9 is worth switching on even if you never drive a second PC. It speaks this same protocol β the verbs listed by `help` β so it is a real client rather than a screen share.
IT DRIVES THE VIEWER: next / previous, first / last, slideshow with its interval, pause, loop and shuffle, zoom, rotate, flip, all five view modes, the colour effects, fullscreen, always-on-top, panels and the overlay. This viewer's folder history goes down to the phone too, so a folder here is one tap away there.
PICTURES TRAVEL BOTH WAYS, which is the part a remote control usually cannot do at all. The phone's live preview asks for the displayed image SCALED and re-encoded before it leaves this machine β 25-40x fewer bytes than the original. Save asks for the ORIGINAL FILE separately and writes it into the phone's gallery, because a re-encoded preview is not the file anyone meant to keep. Pushing the other way sends the phone photo's own bytes here, and it is shown ONCE, over whatever is up: no folder change, no sort order change, no playlist move, and a running slideshow carries on with it occupying a single slide.
PRESENTATION MODE is the picture and two large next/previous buttons, sized to press without looking. Bind the connection and the preview follows this viewer by itself β change the picture here, it appears there.
SAME RULES AS ANY OTHER CLIENT. TLS with the pinned certificate off loopback, the password answered by challenge-response so it never crosses the wire, and the AllowList above still decides who may connect at all. Turn Local Server on here first; the app's About screen walks through it, and its demo mode runs every screen against a viewer that does not exist if you want to look before opening a port.
Settings βΊ Keep in BackgroundSystem Tray
When enabled, closing the window (Esc / Ctrl+W) hides QIV to the tray instead of exiting β the process stays resident for an instant re-open. When disabled (or if more than one instance is running), Esc / Ctrl+W closes the window entirely.
Settings βΊ Run on StartupSystem Tray
Write / remove the Windows startup registry entry (HKCU\\β¦\\Run) so QIV launches automatically with Windows. Dedicated instances write their own separate entry and do not conflict with the normal instance.
Settings βΊ History βΊ Tab Opens Full ListSystem Tray
When enabled, Tab opens the full (uncapped) history view. When disabled, Tab caps the list at Rows Shown in Panel. Ctrl+Tab opens the full list once whatever this is set to, so the setting decides the DEFAULT rather than the only way in.
Overlays βΊ Font / Font Size / Font Colorβ¦System Tray
Typeface, point size and colour for every overlay slot. Font Color opens the standard colour picker; the size is shown in its own label. All three are persisted, so a wall of screens can be made readable from across a room once and left alone.
Overlays βΊ Bot Left βΊ Folder Name / Full PathSystem Tray
The bottom-left slot can name the folder holding the current image in one of two ways: π the leaf folder alone, or π the whole path. They are a radio pair because they are one line in two spellings β showing both would print the folder name twice, once on its own and once as the tail of the path above it. Clicking the lit one turns it off, which is how you get neither. In Summary layout the line moves to the top-left slot instead.
Settings βΊ History βΊ Record Folders I VisitSystem Tray
Master switch for recording folder history. OFF stops new folders reaching both the list and qivHistory.txt. Nothing already saved is removed β that is what Clear History is for β and navigation itself is unaffected: the folder walk, the placeholder and the overlay folder line all keep working.
Settings βΊ History βΊ Record Only Folders With ImagesSystem Tray
ON by default. Folders with no images in them are not recorded. This is what keeps the Alt-arrow folder walk from filling the history with folders you merely stepped through: the walk lands in every child of a parent, images or not. A folder DROPPED on the window is recorded either way β that is a deliberate act, not walk noise.
Settings βΊ History βΊ Favorites You Can AddSystem Tray
How many folders may be starred at once (0 β 999). Starring another is refused when full. This number also caps qivFavorites.txt itself, on load, on merge and on save β so LOWERING IT DROPS favorites past the new limit the next time the file is written.
Settings βΊ History βΊ Remove Invalid FoldersSystem Tray
Drops history rows that cannot be parsed as a path, that point at a folder which no longer exists, or that hold no images. Favorites are kept whatever their state. Rows the background scan has not reached yet are KEPT and reported, so a run started early is partial and says so rather than looking complete.
Save all settings to a UTF-8 INI file, or load a previously exported one. Import requires a confirmation dialog and applies all values immediately, including theme, overlays and sort order. Covers the REGISTRY settings only β the TCP/IP .ini files have their own pair below.
Backup && Export βΊ Backup LogsSystem Tray
Zips the whole logs folder β general and network together β to a location you choose. One-way: logs are a record, so there is nothing to restore them into. Says so plainly when neither log has written anything yet.
Zips qivLocalServer.ini, qivRemoteServers.ini and qivRemoteServerBlacklist.ini β none of which are in the registry, so the settings export above never covered them. Restore asks per file before replacing one that already exists, and needs a restart: a running listener keeps the settings it started with. The archive holds your allow-list and the stored password hash, so keep it as private as the configuration itself.
View Mode submenuSystem Tray
Pick the default fit mode applied to newly loaded images: 1 Fit to view (keeps aspect) β’ 2 Fit to width β’ 3 Fit to height β’ 4 Stretch to window β’ 5 Original size, 1:1 pixels. The current mode is shown with a radio-button check.
Logging βΊ General LogSystem Tray
Record what qIV itself did β started, closed, and whether the previous run ended abnormally, naming the crash dump when there is one. Off by default and remembered across restarts, because the screen that misbehaves at four in the morning is the one nobody was watching.
Logging βΊ TCP/IP LogSystem Tray
Write every line exchanged with a remote client to disk β the same traffic the Server Log panel shows (Ctrl+F12). Independent of that panel's Recording button: this captures whether or not the panel is recording.
Logging βΊ Open Log FolderSystem Tray
Open logs\\ in Explorer. Files land in logs\\general\\ and logs\\network\\ beside the EXE, rotate every 5000 lines, and use the standard time [thread] LEVEL message layout that LogViewPlus and lnav read without configuration. A rotated TCP/IP file reopens in the Server Log panel with Ctrl+O. Writing runs on its own thread, so a slow disk never stalls the viewer.
F8Dedicated Screens
Open the Dedicated panel. A dedicated screen is a separate copy of qIV with its own settings file beside it β normally parked fullscreen on one monitor running a slideshow. Any number can run at once alongside the main app without sharing anything.
Dedicated βΊ Test Config / Test Images / Test PromosDedicated Screens
Check one thing at a time: the .ini, the image list, or the promotion list. The list tests count the images actually found per folder and flag folders that are missing or empty β a folder that exists but holds nothing decodable looks fine until the screen goes blank.
PromotionsDedicated Screens
A SECOND playlist, never merged into the images. Shown occasionally between them and invisible to the image counter and arrow keys. Weighted order favours files whose name ends in #N β "sale#500.jpg" is 500x likelier than a file with no suffix (1 to 65535).
Promotion pacingDedicated Screens
Two independent triggers, each a (from, to) pair: 0 = off, a single value is an exact cadence, a range is re-rolled each time so it never looks mechanical. Count them in images, in seconds, or both β whichever comes due first shows a promotion. Promotions can hold the screen for their own dwell time.
Kiosk lockDedicated Screens
Tick "Kiosk lock" in the panel and the screen ignores every key and every click, so a passer-by cannot pause the slideshow or reach the panels. The tray icon keeps working β its menu runs its own message loop, so it is unaffected β and Settings > Kiosk Lock there is the only way back in. Available to the main app too, from the same tray item or -lock.
Keep display awakeDedicated Screens
Blocks the screensaver and display sleep while the window is on screen. Leave it off and Windows eventually blanks the display with nobody there to wake it β and with the kiosk lock on, nobody could. Released automatically when the window hides to the tray.
IsolationDedicated Screens
A dedicated screen writes NOTHING to the registry: settings live in its .ini, and it keeps no history or favorites. Its own mutex and window class mean a file opened from Explorer can never land on a slideshow instead of the main window.
-slideshowTransition=<type>Command-Line Arguments
Slide transition by name: Cut, Fade, Dissolve, Ripple, Flicker, SlideLeft, SlideRight, SlideUp, SlideDown, SlideDiagonal, DriftLeft, DriftUp, ZoomIn, ZoomOut, SoftZoom, Spin, SpinZoom, Swing, Bounce, Slam or Iris. Example: -slideshowTransition=Fade.
-lockCommand-Line Arguments
KIOSK mode β all keyboard and mouse input is ignored. Combine with -fullscreen -slideshow for unattended public displays. The tray icon stays live and is the only way to unlock. The switch only forces the lock on for one launch; the stored setting is left alone.
-dedicatedCommand-Line Arguments
Run as a dedicated screen: no registry writes at all, no history or favorites, its own icon, mutex and window class β safe alongside any number of other instances. Settings come from the .ini beside the exe.
-runOnStartupCommand-Line Arguments
Write or refresh the Windows startup registry entry (HKCU\\β¦\\Run) so QIV launches automatically with Windows β equivalent to enabling "Run on startup" from the tray icon. Useful after moving the exe or for scripted first-run setup. Dedicated instances write their own separate entry.
Example β dedicated screenCommand-Line Arguments
qIV_dedicated_Lobby.exe -dedicated -config "D:\\Screens\\qIV_dedicated_Lobby.ini" β the form the Dedicated panel writes into a startup shortcut. Folders and every setting come from the .ini and its .qim / .qpr lists.