No description
Find a file
2026-09-09 21:09:18 -04:00
libdingus revendor libdingus 2026-03-21 18:07:02 -04:00
config.ini more refactor progress 2026-09-03 21:48:14 -04:00
config.odin fix config dir creation; update screenshot 2026-09-09 20:08:23 -04:00
FiraCode-Regular.LICENSE add license for FiraCode 2025-07-12 11:49:05 -04:00
FiraCode-Regular.ttf initial 2025-07-12 11:20:45 -04:00
image.odin factor out useless procs for image frame handling 2026-09-09 21:09:18 -04:00
init.odin more refactor progress 2026-09-03 21:48:14 -04:00
input.odin more refactor progress 2026-09-03 21:48:14 -04:00
iv.rdi decouple animation timing from application framerate; consolidate animated and non-animated image loading 2026-09-09 19:54:40 -04:00
LICENSE initial 2025-07-12 11:20:45 -04:00
main.odin factor out useless procs for image frame handling 2026-09-09 21:09:18 -04:00
README.md update readme 2026-09-09 20:10:28 -04:00
render.odin remove unused ui.odin file 2026-09-09 20:44:52 -04:00
screenshot.png update screenshot 2026-09-09 20:09:06 -04:00

iv - image viewer

This repo contains an in-development simple image viewer written in Odin. As development is ongoing, many things are subject to change.

Current features:

  • Loads static and animated images through SDL2_image.
  • Uses vim-like key bindings. Keys can be rebound in config.ini and are loaded at runtime. Key names must match Odin's SDL2 Keycode enum. See the included config for examples.
  • Displays a status bar and optional on-screen key hints. Their text size and opacity are configurable.
  • Supports fit, fill, original-size, and manual zoom modes.
  • Supports keyboard movement, mouse panning, and mouse-wheel zooming.

Building requires Odin, SDL2, SDL2_image, and SDL2_ttf:

odin build .
./iv path/to/image

Configuration is loaded from config.ini in the current directory or $XDG_CONFIG_HOME/iv/config.ini (usually ~/.config/iv/config.ini). The current directory takes precedence.

The UI font can be replaced at compile time with -define:FONT=<font_file>. Fira Code is included as the default.

Screenshot:

screenshot