* DONE The Quest for Simple Convenient Linux Image Viewers :blog:tech:foss:cli:linux: CLOSED: [2024-10-17 Thu 16:41] :PROPERTIES: :ID: linux-image-viewer-terminal :CREATED: [2024-10-15] :END: :LOGBOOK: - State "DONE" from "DRAFT" [2024-10-17 Thu 16:41] - State "DRAFT" from [2024-10-17 Thu 14:00] :END: I like simplicity, but I also like convenience. The Linux command line offers a lot of that, though the latter sometimes needs some searching. So also in the case of image viewers. Over the course of the last months, I have developed two primary use-cases: Previewing a bunch of images directly in the terminal, first with generic iterm, then within kitty - images was one of the reasons prompting me to switch to it. The second one is a quick popup window, as KDE's ~showfoto~ is only marginally faster than the full-blown ~digikam~ which takes multiple seconds to start, with a lot of bells and whistles and pop-ups. In the terminal, I quickly sorted out [[https://github.com/ichinaski/pxl][pxl]] and ~catimg~ because of inferior quality. ~cacaview~ converts images into colorful ASCII-Art, but is very coarse and pops up if you are in a graphical session and I found no way to turn that off, making it unsuitable for my uses. I took [[https://github.com/hzeller/timg][timg]], [[https://github.com/atanunq/viu][viu]] and [[https://github.com/stefanhaustein/TerminalImageViewer][tiv]] into a detailed comparison using a [[https://forge.ftt.gmbh/janek/dotfiles/src/commit/109db5cebb4096ad3783650f675eb280e419da42/.local/bin/scripts/test-tiv][little helper script]] to vary the width as seen below: [[img:timg-comparison.png]] Both ~timg~ and ~viu~ supported kitty at the time of the test, and while ~viu~ creates a smooth image in normal terminals, the jaggedness of ~tiv~ preserves a lot more details. ~timg~ hits a very good middle ground on these, and also allows previewing pdfs directly without conversion and can show images in grids, making it perfect for my previews. ~tiv~ supports a directory mode while ~viu~ only shows one image at a time, keeping ~timg~ as a clear winner. ~ueberzug~ also looked interesting, but more appropriate for integration with other applications. ~lsix~ is also an interesting alternative to kitty with its sixel protocol because it natively lists images in a grid with their names, but so far kitty served me well enough to not give this a second thought, though recent developments highlight sixel as a more established standard. For the popup version for use from ~xdg-open~, I wanted quick opening, ability to easily navigate back and forth in the folder of the image and focus capture with quick quitting. ~w3m~ is interesting cause it is also a browser, but seemed a bit clunky for this usecase. ~qiv~ fell out cause I tested it on KDE Plasma, where the popup window did not capture focus. ~feh~ also did not cut it, leaving me with the unmaintained ~sxiv~ and its various forks. Today I experimented with ~nsxiv~, ~pqiv~ and ~vimiv~, with the latter as clear winner because of its ability to easily navigate between and within images with familiar vim shortcuts.