SlopScore
10 crowdincl. 1 critic

pdfless

A less(1)-like full-screen pager for PDF, Markdown (with Mermaid), Office, and image files, designed for terminals that support iTerm2's inline image protocol. Browse them using the same keystrokes you'd use to view a text file with `less`.
Open repo on GitHubgithub.com/ktabe/pdfless
Python · ★ 1 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 1 hour ago by ktabe · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-11: A less(1)-like full-screen pager for PDF, Markdown (with Mermaid), Office, and image files, designed for termi; its own README says "Acknowledgements The code for this program was written by Claude Code ( License MIT (LICENSE)". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as ktabe. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
A less(1)-like full-screen pager for PDF, Markdown (with Mermaid), Office, and image files, designed for terminals that support iTerm2's inline image protocol. Browse them using the same keystrokes you'd use to view a text file with `less`.
topics
document-viewerimage-vieweriterm2lesslibreofficemarkdown-viewermermaidoffice-viewerpagerpdfpdf-viewerwezterm
created
2026-09-09 · pushed 1 hour ago · 262 commits · 3 contributors
release
v1.1.0 · 2026-09-10
languages
Python 100%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
python
topic (detected)
document-viewerimage-vieweriterm2lesslibreofficemarkdown-viewermermaidoffice-viewerpagerpdfpdf-viewerwezterm
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: A less(1)-like full-screen pager for PDF, Markdown (with Mermaid), Office, and image files, designed for termi; its own README says "Acknowledgements The code for this program was written by Claude Code ( License MIT (LICENSE)". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

pdfless

日本語

A full-screen pager for PDFs and images, with familiar less(1) keybindings. View documents directly in your terminal, locally or over SSH.

pdfless requires a terminal that supports iTerm2's inline image protocol. It has been tested with iTerm2 and WezTerm.


Major Features

  • Display PDF, image (PNG/JPEG/GIF...), and plain text files on a terminal.
  • Office documents, SVG, and Markdown are also supported with additional dependencies.
  • Scroll, zoom, and pan with the keyboard or mouse.
  • View paginated documents continuously, with adjacent pages on screen together.
  • Search PDF text and follow external and internal PDF links.
  • Jump to a section from the table of contents: a PDF's bookmarks, Markdown headings, and Word headings or PowerPoint slide titles (with LibreOffice).
  • Switch to text mode to read or copy extracted text.
  • Show a clickable and draggable scrollbar.
  • Show page thumbnails down the left edge, and click one to go to its page.
  • Open multiple files and switch between them.
  • Reload the current file automatically when it changes (in follow mode).

Installation

You need Python 3.9+, uv, and a compatible terminal. PDF viewing also requires Poppler. Poppler is not needed for plain image files.

Install the prerequisites:

# macOS (Homebrew)
brew install uv poppler

# Ubuntu / Debian
sudo apt install poppler-utils
curl -LsSf https://astral.sh/uv/install.sh | sh

Clone the repository and open a file. uv installs the Python dependencies automatically on the first run.

git clone https://github.com/ktabe/pdfless.git
cd pdfless
./pdfless.py document.pdf

To run it as pdfless, copy the script to a writable directory on your PATH:

cp pdfless.py /usr/local/bin/pdfless
chmod +x /usr/local/bin/pdfless

Alternatively, install the Python dependencies and run without uv:

pip install pillow pypdf markdown weasyprint merm
python3 pdfless.py document.pdf

To check what is installed, run pdfless --doctor. It lists the programs and Python libraries pdfless uses, says what will not work without the missing ones, and exits with status 1 if Poppler is missing. Inside tmux, it also checks the tmux settings.

For other document types, see Additional formats. For use inside tmux, see Caveats.

Usage

pdfless document.pdf           # Open a PDF
pdfless image.png              # Open an image
pdfless notes.txt              # Open a text file
pdfless report.pdf chart.png   # Open multiple files
pdfless slides/                # Open the files in a directory
pdfless -p 10 document.pdf     # Start on page 10
pdfless -h slides.pdf          # Fit each page to the terminal height
pdfless -f document.pdf        # Reload when the file changes
pdfless -F document.pdf        # Quit if the document fits on one screen
cat document.pdf | pdfless     # Read from standard input

With multiple files open, use :n / :p (or } / {) to switch files, or O to pick one from a list. A directory stands for the files directly in it, sorted by name (ignoring case, as ls does); hidden files and subdirectories are left out. With no filename, or with - as the filename, pdfless reads standard input.

Common operations

The following examples show common ways to adjust the view and move through a document. The complete list of keyboard and mouse controls is in Keyboard and mouse controls.

Fit and navigate pages

Pages fit the terminal width by default. Press m to fit the current page to the terminal height, or M to return to fitting it to the width.

Fit to width

Press + / - to zoom in or out. Use h / l (or the arrow keys) to pan, and press 0 to reset the zoom and position.

Fit to height

Zoom and pan

Search

Press / and enter a pattern to search forward, or ? to search backward. Matches are boxed in image mode and highlighted in text mode. Use n / p to move between matches.

Search in image mode

Press t to switch to extracted text, then search or copy it using the terminal's normal selection controls. Press T to switch directly to a clean copying view.

Search in text mode

Table of contents

Press o or TAB to open the table of contents. Select a heading with j / k or the mouse, then press ENTER or click it to jump to that section. Use [ / ] to go back and forward through positions jumped to from the outline or an internal link.

Table of contents

PDF hyperlinks

Click a PDF link to open an external URL in the system browser or follow an internal link. The [ / ] keys return to the previous or next position.

PDF hyperlinks

Choose a file

When multiple files are open, press O to show the file chooser. Move with j / k or the mouse wheel, then press ENTER or click a file to open it. Press q to close the chooser. :n / :p and } / { switch to the next or previous file without opening the chooser.

File chooser

Page thumbnails

In image mode, press S to show or hide page thumbnails on the left. The current page is framed, and clicking a thumbnail moves to that page. Press s to move focus to the thumbnails; select one with j / k and press ENTER to open it. Press q or s to return to the page while leaving the thumbnails visible. The sidebar requires a terminal at least 60 columns wide.

Page thumbnails

Other display modes

Press c to toggle continuous mode. This displays the pages continuously, so you can scroll from one page to the next without switching pages.

Continuous mode

Image files open directly in image mode. Press t or T to view image information and metadata in text mode.

Image file

Press F1 or :h to open the keyboard help. Press q to close it.

Keyboard help

Options

Option Description
--help Show command-line help.
-v, --version Show the version.
-p, --page PAGE Start on the given page in the first file (default: 1).
-h, --fit-height Fit pages to the terminal height instead of its width.
-k, --keep Leave the last page on screen when quitting.
-f, --follow Start in follow mode: check the current file for changes every 3 seconds and reload it, preserving the page and display mode.
-F, --quit-if-one-screen Print a single-page document fit to height and quit immediately; in text mode, quit if no scrolling is needed. Otherwise start normally. Applies only when one file is given.
-N, --line-numbers Show line numbers in text mode.
-S, --chop-long-lines Pan across long lines instead of wrapping them in text mode.
-B, --no-border Hide page borders in text mode.
-E, --no-eol-mark Hide end-of-line markers in text mode.
--no-scrollbar Hide the scrollbar.
--sidebar Show page thumbnails down the left edge in image mode. Toggle at any time with S; s moves to them to pick one.
--wheel-scroll-step N Scroll N lines per mouse-wheel step in image mode (default: 2).
-s, --rendering-scale N Set the rendering scale for image-based Quick Look previews (default: 1). Higher values improve sharpness at the cost of rendering time.
-c, --continuous Scroll through pages continuously, so the bottom of one page and the top of the next can be on screen together. In text mode, a paginated document (PDF, or a format rendered to PDF) is shown as one run of text with a separator line between pages. Toggle at any time with c.
--no-incremental-scroll Redraw the full page image on every scroll.
-d, --debug Print debugging information to standard error.
--remote-resources Let a Markdown file load images and stylesheets from the network. By default only local files (such as a relative-path image) are loaded, so viewing a file never makes network requests.
--no-cache Render afresh without reading or writing the persistent cache.
--clear-cache Delete the persistent cache and exit without opening any files.
--doctor Check for the programs and libraries pdfless uses, report what is missing, and exit.

Note that -h means fit to height; use --help for command-line help. Follow mode watches only the currently displayed file. Press F to toggle it on or off at any time, or use -f/--follow to enable it at startup. The status line shows follow while the mode is active.

Keyboard and mouse controls

^ denotes Ctrl. Many commands accept the same keys as less(1).

Navigation

Keys Action
e, ^E, j, ^N, Enter, Down Scroll down one line.
y, ^Y, k, ^K, ^P, Up Scroll up one line.
f, ^F, ^V, Space, PageDown Scroll forward one window.
b, ^B, Esc-v, PageUp Scroll backward one window.
d, ^D / u, ^U Scroll forward / backward half a window.
g / G Go to the top / bottom of the current page. In text mode, prefix with a number to go to that line, e.g. 10g.
<, Home / >, End Go to the first / last page. Prefix with a number to go to that page, e.g. 10<.
n / p Next / previous page, or next / previous match while a search is active.
:n / :p, } / { Next / previous file.
x / X First / last file. Prefix x with a number to select that file.
O List the files, with the current one selected. Move with j/k or the mouse wheel, then press ENTER or click a file to open it. Press q to close the list.

Zoom and pan

Keys Action
+, = / - Zoom in / out.
0 Reset zoom and pan.
m / M Fit to height / width.
h, Left / l, Right Pan left / right.
H, Shift-Left / L, Shift-Right Go to the left / right edge.
K, U, Shift-Up / J, D, Shift-Down Go to the top / bottom of the current page.

Search

Keys Action
/pattern Enter Search forward.
?pattern Enter Search backward.
/ Enter / ? Enter Repeat the previous pattern forward / backward.
N / P Next / previous match.
q, Esc While a search is active, clear it (a second q quits).

While entering a search pattern with / or ?, use the following keys to edit the input. These bindings apply only while the search prompt is active.

Keys Action
^B, Left Move the cursor one character left.
^F, Right Move the cursor one character right.
^A Move to the beginning of the input.
^E Move to the end of the input.
^U Delete from the cursor to the beginning of the input.
^K Delete from the cursor to the end of the input.
^D, Delete Delete the character to the right of the cursor.
^H, Backspace Delete the character to the left of the cursor.
^T Toggle whether a regular expression may match across line breaks (shown as Multi-line in the prompt).
Esc, ^C Cancel the search.

Search is case-insensitive and supports Python regular expressions. Before matching, it normalizes Unicode width and composition (NFKC): 第5回 finds 第5回, データ finds half-width データ or decomposed kana, and file finds the fi ligature. Spaces next to Japanese or Chinese text are ignored, so プロジェクトX also finds the プロジェクト X a Word document's PDF often reads as. Elsewhere, any run of spaces matches one space.

The kind of pattern determines how line breaks are handled:

  • A pattern without regular-expression syntax is searched as a literal string and may cross line breaks. An invalid regular expression is also treated as literal text.
  • A valid regular expression matches within one printed line, as in less. While entering the pattern, press ^T to toggle Multi-line mode and let it match across line breaks as well.

For example:

Pattern Also finds
第5回 第5回
プロジェクトX プロジェクト X
project plan project at the end of one line and plan at the start of the next
project.*plan with ^T project and plan across one or more line breaks

Matches are boxed in PDF image mode and highlighted in text mode.

Search requires text: it is available for PDFs with extractable text, plain text files, and supported formats rendered to PDF. It is unavailable for plain images and previews without extractable text. While a search is active, n / p move between matches rather than pages.

Display and interaction

Keys or gesture Action
t Toggle text mode: extracted text for supported documents, raw source for Markdown, or image information and metadata for image files. The view stays at the same place in the document.
T Toggle text mode with a clean display for copying, combining the functions of t and C.
B Toggle page borders in text mode (on by default, except for a plain text file and a Markdown file's source, which start without one). Borders are hidden while lines wrap.
W, -S Toggle line wrapping in text mode. Plain text wraps by default; other formats do not.
E Toggle end-of-line markers in text mode (shown by default).
#, -N, -n Toggle line numbers in text mode (hidden by default).
C Toggle a clean text display for copying, restoring previous settings on the second press.
c Toggle continuous view (-c/--continuous) in image or text mode while keeping the current position.
r Toggle the scrollbar (shown by default).
S Show or hide page thumbnails down the left edge (image mode, in a terminal at least 60 columns wide). The page being viewed is framed. Click a thumbnail to go to its page; the mouse wheel over them, or their own scrollbar on the right of them, scrolls them.
s Move to the page thumbnails (showing them if needed) to pick one: move with j/k, press ENTER to go to that page (t/T: in text mode), or q/s to go back to the page with the thumbnails left up.
F Toggle automatic reloading when the current file changes. Follow mode is off at startup unless -f/--follow is specified.
Click a PDF link Open a URL in the system browser (http, https and mailto links only; others are just shown on the status line) or follow an internal link.
[ / ] Go back / forward through the positions internal links and the table of contents (o) jumped from.
o, TAB Show the table of contents (a PDF's bookmarks, or a document's headings), with the current section selected. Move with j/k or the mouse wheel, then press ENTER or click an entry to jump there. Press q to close it.
Click or drag the scrollbar Jump to a document position in image mode. In text mode, the scrollbar is display-only.
Mouse wheel Scroll by two lines in image mode (configurable) or one line in text mode.
v Open the file in its default app (macOS only) and switch follow mode on, so an edit made there is picked up automatically.
^L Redraw the screen.
F1, :h Show keyboard help; press q to close it.
^Z Suspend pdfless; fg in the shell brings it back.
q, :q, ^C Quit.

Copying text

To copy text from image mode, press T to switch to text mode with borders, line numbers, end-of-line markers, and the scrollbar hidden. You can also press t, then C. If you are already in text mode, use C to toggle these display elements. Select text using the terminal's normal selection controls; press C again to restore the previous display settings.

Additional formats (experimental)

Image formats

PNG, JPEG, and other image formats supported by Pillow open directly. Press t or T to view image information in text mode, including the filename, format, pixel dimensions, color mode, file size, DPI, and transparency.

EXIF metadata and embedded text chunks are also shown when present. GPS metadata includes decimal latitude and longitude and a coordinate pair you can paste into Google Maps. Embedded text may include screenshot-tool tags or AI image-generation prompts.

Office documents and other formats

The formats below require additional software. PDF-based rendering also requires Poppler.

Optional dependencies

  • LibreOffice enables OpenDocument, Visio, and WMF support. When installed, it is also preferred for Word, RTF, PowerPoint, and Excel rendering.
  • macOS Quick Look and Chrome/Chromium enable iWork previews and provide a fallback for Word, RTF, PowerPoint, and Excel when LibreOffice is absent.
  • Chrome/Chromium enables SVG rendering without Quick Look.
  • WeasyPrint system libraries enable Markdown rendering. The Python packages markdown and weasyprint are installed with the other Python dependencies. Fenced Mermaid code blocks are rendered to diagrams via merm (also installed with those packages); without merm, they stay as code blocks.
# macOS (Homebrew)
brew install --cask libreoffice
brew install cairo pango gdk-pixbuf libffi

# Ubuntu / Debian
sudo apt install libreoffice
sudo apt install libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0

Install Chrome or Chromium separately if you need Quick Look or SVG rendering.

Format support and limitations

Preview quality and pagination depend on the format and available renderer.

Format Extensions Requirements and behavior
Word .doc, .docx, .docm LibreOffice preferred; otherwise Quick Look + Chrome. Supports text mode and search. Pagination may differ with the fallback renderer.
Excel .xls, .xlsx, .xlsm LibreOffice preferred; otherwise Quick Look + Chrome. One page per sheet. With LibreOffice, each page holds the whole sheet and supports text mode and search; the Quick Look preview shows only part of a large sheet, with no text mode or search.
PowerPoint .ppt, .pptx, .pptm Lib

Read the rest on GitHub

Scan report · 2026-10-11
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 1 of 2 clapped

  1. Schnitzelclapped
    A delightfully weird terminal pager for PDFs and images with less-like keybindings—playful, practical, and exactly the kind of niche tool that makes me smile.

Princess read it and passed. Their reasons are on the balcony, with every other verdict.

Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

0 comments

log in to comment.

report this listing — log in to report