
Security News
Software Engineering Daily Podcast: Feross on AI, Open Source, and Supply Chain Risk
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.
pmv
Advanced tools
A TUI (Text User Interface) image viewer optimized for the Kitty terminal using the Kitty Graphics Protocol. View images and PDFs directly in your terminal with keyboard navigation and lazy loading.
pillow - Image processing (required)pdf2image - PDF support (optional)poppler-utils - System package for PDF rendering (optional)Prerequisite: Have uv installed. See https://docs.astral.sh/uv/
uv pip install -e .
# Run the CLI (after install places the script on PATH for the venv)
pmv images/
uv run main.py images/
# Installs an isolated tool environment and exposes `pmv` on PATH
uv tool install --reinstall .
# Use anywhere
pmv images/
# Upgrade later from the same source
uv tool install --reinstall .
# Uninstall
uv tool uninstall pmv
# Clone or navigate to the project directory
cd /path/to/pymv
# Install the package
pip install -e .
# Or install dependencies manually
pip install pillow pdf2image
For PDF viewing, install additional dependencies:
# Install Python package
pip install pdf2image
# Install system package for PDF rendering
# On Debian/Ubuntu:
sudo apt install poppler-utils
# On macOS:
brew install poppler
# On Fedora/RHEL:
sudo dnf install poppler-utils
# View a single image
pmv image.jpg
# View multiple images
pmv image1.jpg image2.png image3.gif
# View all images in a folder
pmv /path/to/images/
# View images using wildcards
pmv *.jpg
# Mix folders and files
pmv folder1/ folder2/ image.png
# Recursively scan folders for images
pmv -r /path/to/images/
pmv --recursive ~/Pictures/
# View PDF file (each page as an image)
pmv --pdf document.pdf
# Skip Kitty terminal check (use at your own risk)
pmv --skip-check image.jpg
# Get help
pmv --help
Once the viewer is running, use these controls to navigate:
| Key | Action |
|---|---|
| Arrow Left / Right | Navigate between images |
| A / D | Navigate between images (alternative) |
| H / L | Navigate between images (Vim-style) |
| Q or ESC | Quit the viewer |
pmv *.png
pmv -r ~/Pictures/
pmv --pdf report.pdf
pmv ~/photo1.jpg ~/Documents/diagram.png ~/Downloads/screenshot.png
pmv ~/Photos/ ~/Screenshots/ ~/Downloads/
pymv/
├── main.py # Main entry point and CLI
├── show_image.py # Backward compatibility wrapper
├── pyproject.toml # Project configuration and metadata
├── README.md # This file
├── image_viewer/ # Core modules
│ ├── __init__.py # Module exports
│ ├── cache.py # LRU image caching system
│ ├── kitty.py # Kitty graphics protocol implementation
│ ├── pdf_processor.py # PDF to image conversion
│ ├── processor.py # Image loading and processing
│ ├── show.py # Display utilities
│ ├── terminal.py # Terminal helper functions
│ └── viewer.py # Main TUI viewer with navigation
├── images/ # Sample images (if any)
└── pdfs/ # Sample PDFs (if any)
The project is organized into modular components:
Make sure you're running the application inside the Kitty terminal. If you're certain you're using Kitty but still get this error, you can bypass the check:
pmv --skip-check image.jpg
Ensure you have the required dependencies installed:
pip install pdf2image
# Install poppler-utils
# On Debian/Ubuntu:
sudo apt install poppler-utils
# On macOS:
brew install poppler
--skip-check if terminal detection failsThe viewer uses lazy loading and caching to optimize performance. Images are only loaded when viewed, and recently viewed images are cached for quick access.
Build wheel and source distributions:
uv build
ls dist/
To contribute or modify the project:
uv pip install -e .pmv test_images/This project is open source. See LICENSE file for details (if available).
Contributions are welcome! Please feel free to submit issues or pull requests.
Built with:
FAQs
A TUI image viewer for Kitty terminal with keyboard navigation and PDF support
We found that pmv demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.

Security News
Rust’s crates.io team is advancing an RFC to add a Security tab that surfaces RustSec vulnerability and unsoundness advisories directly on crate pages.