惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
L
LangChain Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
F
Full Disclosure
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
F
Fortinet All Blogs
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Recorded Future
Recorded Future
Y
Y Combinator Blog
博客园 - 聂微东
爱范儿
爱范儿
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Apple Machine Learning Research
Apple Machine Learning Research
C
CERT Recently Published Vulnerability Notes
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
Engineering at Meta
Engineering at Meta
T
Tenable Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Troy Hunt's Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Zathura: The PDF viewer that stays out of your way
Yelmaz · 2026-06-03 · via DEV Community

Most PDF viewers are designed around the assumption that you want a toolbar, a sidebar, and a menu bar. Evince gives you all three. Okular gives you even more. They are perfectly functional applications, and for many people they are the right choice.

Zathura makes a different assumption. It opens your document, gets out of the way, and waits for keyboard input.

No toolbar. No sidebar. No menu. Navigation, search, zoom, and everything else happens through a small set of commands that take an afternoon to learn and become muscle memory within a week. Once they do, opening a heavy GUI viewer starts to feel like unnecessary friction.

Zathura supports PDF, EPUB, DjVu, PostScript, and comic book archives depending on which plugins you have installed. It integrates with SyncTeX for LaTeX workflows, supports a sandbox mode for untrusted documents, and is configurable through a plain text file.

The official documentation covers launch flags and configuration options. What it does not cover is how zathura actually works as a tool: what the mode system means, which settings are worth changing, and why things sometimes look wrong. This reference fills that gap.


What Is Zathura and Who Is It For

Zathura is a minimalist document viewer for Linux. It opens PDFs, EPUBs, DjVu files, PostScript documents, and other formats depending on which plugins are installed. The interface has no toolbar, no menu bar, and no sidebar by default. Navigation, search, zoom, and everything else is handled through the keyboard.

This makes zathura fast and distraction-free, but it requires learning a small set of commands before it becomes comfortable. The learning curve is short — most users are productive within a session or two.

Zathura is a good fit for:

  • Reading academic papers and technical documentation
  • LaTeX users who want tight editor integration via SyncTeX
  • Users who prefer keyboard-driven workflows
  • Anyone who finds heavier PDF viewers (Okular, Evince) slower than they need

It is not a good fit for filling PDF forms, annotating documents extensively, or viewing complex interactive PDFs.


Installation

Arch Linux

sudo pacman -S zathura zathura-pdf-mupdf

The zathura-pdf-mupdf plugin is the most commonly used PDF backend. Alternatively, zathura-pdf-poppler is available if you prefer the poppler rendering engine.

For additional format support:

sudo pacman -S zathura-djvu       # DjVu support
sudo pacman -S zathura-ps         # PostScript support
sudo pacman -S zathura-cb         # Comic book archives

Debian / Ubuntu

sudo apt install zathura

Fedora

sudo dnf install zathura zathura-pdf-mupdf

macOS (via Homebrew)

brew install zathura
brew install zathura-pdf-mupdf


The Mode System

This is the most important thing to understand about zathura before using it.

Zathura operates in four distinct modes. What your keyboard does depends entirely on which mode you are currently in. If zathura behaves unexpectedly, the first question to ask is: which mode am I in?

Mode Purpose How to Enter How to Exit
Normal Navigation, zoom, search, most commands Default on launch Already here; press Escape if unsure
Index Browse the document's table of contents Press Tab from Normal Press Tab or Escape
Fullscreen Distraction-free reading, limited controls Press F11 from Normal Press F11
Presentation Slide-style view, minimal controls Press F5 from Normal Press F5

The most important habit: if zathura stops responding to expected keys, press Escape. This returns you to Normal mode from any other state.


Your First Session

Opening a file

From the terminal:

zathura document.pdf

Open at a specific page:

zathura -P 42 document.pdf

Open and search for a term immediately:

zathura -f "search term" document.pdf

From inside zathura, open a new document with o. This opens a file picker in the inputbar at the bottom of the screen. Type a path or filename and press Enter. Tab completion works.

Navigating and searching

Use j/k to scroll down and up, J/K to move between pages, gg to go to the first page, and G to go to the last. Press nG to jump to a specific page number. See the full keybinding reference below for all navigation and zoom options.

Press / to search forward or ? to search backward. Results highlight as you type. Use n/N to move between matches, and Escape to clear highlights.

Quitting

Press q to quit.


Keybindings by Workflow

Page and document navigation

Key Action
J / K Next / previous page
gg First page
G Last page
nG Go to page n
P Snap to current page (re-centres view)
H Go to top of current page
L Go to bottom of current page
Ctrl+o Jump backward in history
Ctrl+i Jump forward in history

Scrolling

Key Action
h / l Scroll left / right
j / k Scroll down / up
Space Scroll full page down
Shift+Space Scroll full page up
Ctrl+d Scroll half page down
Ctrl+u Scroll half page up
Ctrl+f Scroll full page down (alternative)
Ctrl+b Scroll full page up (alternative)

Zoom and view

Key Action
+ / - / = Zoom in / out / reset
a Best-fit zoom
s Width-fit zoom
n= Zoom to n percent
r Rotate 90 degrees clockwise
Ctrl+r Toggle recolor (grayscale invert)
d Toggle dual page view
D Cycle first column in dual page view
F5 Toggle presentation mode
F11 Toggle fullscreen mode

Search

Key Action
/ Search forward
? Search backward
n / N Next / previous result
Escape Clear search and return to Normal

Links

Key Action
f Follow a link (opens linked page or URL)
F Display the link target without following
c Copy link target to clipboard

Bookmarks and quickmarks

Zathura has two bookmark systems: persistent bookmarks (saved to disk) and quickmarks (single-session, single-key).

Bookmarks (saved between sessions):

Command Action
:bmark Save a bookmark at the current page
:blist List all bookmarks
:bjump [name] Jump to a bookmark
:bdelete [name] Delete a bookmark

Quickmarks (current session only):

Key Action
mX Set a quickmark at letter or number X
'X Jump to quickmark X

For example, ma sets a quickmark at a, and 'a returns to it.

Interface toggles

Key Action
Ctrl+m Toggle inputbar (command line at bottom)
Ctrl+n Toggle statusbar
Tab Toggle index (table of contents)

Index Mode

Index mode displays the document's table of contents in a panel, allowing you to jump directly to any section.

Press Tab from Normal mode to enter Index mode.

Key Action
j / k Move down / up through entries
l Expand a collapsed entry
L Expand all entries
h Collapse an entry
H Collapse all entries
Space or Enter Jump to the selected entry
gg / G Jump to first / last entry
Tab or Escape Exit Index mode and return to Normal

If the document has no table of contents, Index mode will open but display nothing.


The Command Interface

Press : from Normal mode to open the command inputbar. Tab completion works — press Tab to cycle through available completions.

Commonly used commands

Command Description
:o [path] Open a document
:jumplist Show recent jump history (last 5 by default)
:jumplist 20 Show last 20 jumps
:nohl Remove search highlights
:hlsearch Re-enable search highlights
:info Show document metadata (title, author, pages, etc.)
:print Open the print dialog
:write Save the document
:write! Save and overwrite without prompting
:export [id] [filename] Export an attachment from the document
:offset [n] Set a page offset (useful when document page numbers don't match PDF page numbers)
:dump Write all current settings to a file
:q Quit

Executing external commands

The :exec command (aliased as :!) runs an external command from within zathura. The following variables are available:

  • $FILE — the current document path
  • $PAGE — the current page number
  • $DBUS — the D-Bus bus name for the current instance

Example: open the current document in another application:

:exec evince $FILE


Configuration

Zathura is configured through a plain text file called zathurarc. Zathura reads configuration from:

  1. /etc/zathurarc (system-wide)
  2. ~/.config/zathura/zathurarc (user-specific, takes priority)

If the file does not exist, create it:

mkdir -p ~/.config/zathura
touch ~/.config/zathura/zathurarc

Each line in the file is evaluated independently. Comments begin with #.

Setting options

set <option> <value>

Examples:

set option1 5           # integer
set option2 2.0         # float
set option3 "hello"     # string with spaces
set option4 true        # boolean
set default-fg "#CCBBCC"  # color (quote the hash)

A recommended starting configuration

The following is a practical starting point. It addresses the most common complaints new users have about zathura's defaults.

# Use sqlite for bookmark storage (the plain backend is deprecated)
set database sqlite

# Open documents in width-fit mode instead of best-fit
set adjust-open width

# Recolor mode: dark background with light text (easier on the eyes)
set recolor true
set recolor-darkcolor "#FFFFFF"
set recolor-lightcolor "#1C1C1C"

# Keep original image colors when recoloring (prevents image inversion)
set recolor-reverse-video true

# Remember last position when reopening documents
set open-first-page false

# Show page number in the window title
set window-title-page true

# Use ~ instead of full home path in title
set window-title-home-tilde true

# Slightly larger scroll step for faster navigation
set scroll-step 80

# Stop at page boundaries when scrolling by half or full pages
set scroll-page-aware true

# Use system clipboard instead of primary selection for copied text
set selection-clipboard clipboard

# Incremental search (highlights as you type)
set incremental-search true

# Font for the interface
set font "monospace normal 11"

Remapping keybindings

Use map to add or change keybindings:

map [mode] <key> <function> [argument]

The mode is optional and defaults to Normal. Available modes are normal, fullscreen, presentation, and index.

Examples:

# Remap zoom in/out to Ctrl+= and Ctrl+-
map <C-=> zoom in
map <C--> zoom out

# Open a file with Ctrl+o
map <C-o> open

# In presentation mode, use arrow keys to advance slides
map [presentation] <Right> navigate next
map [presentation] <Left> navigate previous

To remove an existing keybinding:

unmap <key>
unmap [mode] <key>

Including other config files

Split your configuration across multiple files using include:

include ~/.config/zathura/keybindings
include ~/.config/zathura/colors


Useful Configuration Options Reference

This covers the options most users will actually want to change. For the full list, run :dump inside zathura or consult the zathurarc man page.

Display

Option Default What It Does
adjust-open best-fit How documents open: best-fit fits the whole page, width fits page width
pages-per-row 1 Number of pages shown side by side
page-v-padding 1 Vertical gap in pixels between pages
page-h-padding 1 Horizontal gap in pixels between pages
scroll-step 40 Pixels scrolled per keypress
scroll-page-aware false If true, page-scrolling stops at page boundaries
scroll-wrap false If true, wraps from last page to first
zoom-step 10 Percentage change per zoom keypress
zoom-min 10 Minimum zoom percentage
zoom-max 1000 Maximum zoom percentage
vertical-center false If true, centres the view vertically on the page midpoint

Appearance

Option Default What It Does
font monospace normal 9 Interface font and size
default-bg #000000 Background color
default-fg #DDDDDD Default foreground color
statusbar-bg #000000 Statusbar background
statusbar-fg #FFFFFF Statusbar text color
recolor false Enable recolor mode on launch
recolor-darkcolor #FFFFFF Color used for dark content in recolor mode
recolor-lightcolor #000000 Color used for light content in recolor mode
recolor-reverse-video false Keep original image colors when recoloring
recolor-keephue false Preserve hue when recoloring

Behaviour

Option Default What It Does
database plain Storage backend for bookmarks and history (sqlite recommended)
open-first-page false If true, always opens at page 1 instead of last remembered position
incremental-search true Highlight search results as you type
abort-clear-search true Clear search highlights when pressing Escape
selection-clipboard primary Which clipboard copied text goes to (clipboard for Ctrl+V paste)
window-title-page false Show current page number in window title
window-title-basename false Show only filename (not full path) in window title
window-title-home-tilde false Replace home path with ~ in window title
statusbar-basename false Show only filename in statusbar
statusbar-page-percent false Show position as percentage instead of page number
continuous-hist-save false Save position history at every page change, not only on close
double-click-follow true Whether double or single click follows a link

SyncTeX Integration

SyncTeX is a synchronisation system used with LaTeX. It allows you to jump from a position in your PDF directly to the corresponding source line in your editor (backward sync), and from a source line directly to the corresponding position in the PDF (forward sync).

Zathura supports both directions.

Forward synchronisation (editor to PDF)

Forward sync jumps from your editor to the corresponding position in zathura. This is triggered from the editor side and requires passing position information to zathura via the command line.

zathura --synctex-forward LINE:COLUMN:SOURCEFILE document.pdf

For Neovim with the vimtex plugin, add to your configuration:

let g:vimtex_view_method = 'zathura'

VimTeX handles the forward sync command automatically.

For gvim, add the following to your vim configuration:

function! Synctex()
  execute "silent !zathura --synctex-forward " . line('.') . ":" . col('.') . ":" . bufname('%') . " " . g:syncpdf
  redraw!
endfunction
map <C-Enter> :call Synctex()<cr>

Then launch zathura with:

zathura -x "gvim --servername vim -c \"let g:syncpdf='$1'\" --remote +%{line} %{input}" document.pdf

Backward synchronisation (PDF to editor)

Backward sync jumps from a position in zathura to the corresponding source line in your editor. Hold Ctrl and left-click on any position in the PDF to trigger it.

The editor command is set via the synctex-editor-command option in your zathurarc:

set synctex-editor-command "nvim --headless -c \"VimtexInverseSearch %{line} '%{input}'\""

Adjust the command for your editor. The %{line} and %{input} variables are expanded by zathura to the line number and source file path respectively.

To change the modifier key used for backward sync (default is Ctrl):

set synctex-edit-modifier shift

Editors with built-in zathura support

  • LaTeXTools for Sublime Text — zathura is a supported viewer
  • VimTeX — full forward and backward sync support out of the box

Sandbox Mode

Zathura includes an optional sandbox mode (zathura-sandbox binary) that applies a seccomp and landlock-based security sandbox. This restricts what zathura can do at the system level, which reduces the attack surface when opening untrusted documents.

The following features are disabled in sandbox mode:

  • Saving and writing files
  • Printing
  • Bookmarks and history
  • D-Bus integration
  • SyncTeX support
  • Input methods (ibus, etc.)

Use zathura-sandbox instead of zathura when opening documents from untrusted sources:

zathura-sandbox untrusted-document.pdf

Sandbox mode is experimental and currently tested only with glibc.


Launch Flags Reference

Flag Description Example
-P, --page Open at a specific page zathura -P 10 doc.pdf
-f, --find Open and search for a string zathura -f "conclusion" doc.pdf
-w, --password Provide password for encrypted document zathura -w password doc.pdf
-c, --config-dir Use a custom config directory zathura -c ~/.config/zathura-alt doc.pdf
-d, --data-dir Use a custom data directory zathura -d /tmp/zathura-data doc.pdf
-l, --log-level Set log verbosity zathura -l debug doc.pdf
-x, --synctex-editor-command Set SyncTeX editor command zathura -x "nvim ..." doc.pdf
--synctex-forward Jump to a SyncTeX position zathura --synctex-forward 42:1:main.tex doc.pdf
--mode Start in a non-default mode zathura --mode presentation doc.pdf
--fork Fork into background zathura --fork doc.pdf

Frequently Asked Questions

Why is zathura not responding to my keypresses?

You are likely in a mode other than Normal, or the inputbar is focused. Press Escape to return to Normal mode. If the inputbar is open (a colon prompt at the bottom), press Escape to dismiss it.

How do I open a file from inside zathura without using the terminal?

Press o in Normal mode. The inputbar opens and accepts a file path. Tab completion works. Press Enter to open the file.

Why does text look blurry or pixelated?

This is usually a rendering backend issue. If you are using zathura-pdf-poppler, try switching to zathura-pdf-mupdf — MuPDF generally produces sharper text rendering, particularly at non-standard zoom levels.

How do I make zathura remember where I was in a document?

Zathura saves the last position automatically when you close a document. If it is always opening at page 1, check your zathurarc for set open-first-page true and remove or change it. Also ensure set database sqlite is set, as the plain backend is deprecated and may not save history reliably. See Configuration → Behaviour.

How do I copy text from a PDF?

Drag to select text with the left mouse button. Selected text goes to the primary clipboard by default — paste with the middle mouse button or Shift+Insert. To copy to the system clipboard instead, set selection-clipboard clipboard in your zathurarc. See Configuration → Behaviour.

Why are my bookmarks not saved between sessions?

The default plain database backend is deprecated. Set database sqlite in your zathurarc. See Configuration → Behaviour.

How do I view two pages side by side?

Press d in Normal mode to toggle dual page view. Press D to change which column the first page appears in. To make this permanent, set pages-per-row 2 in your zathurarc. See Configuration → Display.

Why do my PDFs look inverted or have strange colors?

Recolor mode may be enabled. Press Ctrl+r to toggle it off. To keep recolor mode but preserve original image colors, set recolor-reverse-video true in your zathurarc. See Configuration → Appearance.

How do I set zathura as my default PDF viewer?

xdg-mime default org.pwmt.zathura.desktop application/pdf

Verify with:

xdg-mime query default application/pdf

Can zathura open password-protected PDFs?

Yes. Either provide the password at launch with -w yourpassword, or open the document normally and zathura will prompt for it.

Why is zathura not showing the table of contents?

Press Tab to open Index mode. If the panel opens but is empty, the document does not have an embedded table of contents. This is common with scanned PDFs and some older documents.

How do I use zathura with LaTeX?

See the SyncTeX Integration section above. The short version: install VimTeX if you use Neovim or Vim, and add let g:vimtex_view_method = 'zathura' to your configuration.


Troubleshooting

Pages are not rendering or appear blank

Ensure you have a PDF plugin installed. Zathura without a plugin cannot render any document.

# Arch
sudo pacman -S zathura-pdf-mupdf

# Debian/Ubuntu
sudo apt install zathura-pdf-mupdf
# or
sudo apt install zathura-pdf-poppler

Text or graph characters are misaligned

Zathura uses Unicode characters in its interface. If characters overlap or appear misaligned, the issue is with your terminal or display font. This does not affect document rendering — only the statusbar and inputbar appearance.

If you use Konsole or Yakuake, disable "Bi-Directional text rendering" in terminal settings.

Colors look wrong or washed out

If colours appear muted, your display or compositor may be applying colour correction. This is not specific to zathura. Check your compositor settings.

If recolor mode is causing unexpected results, press Ctrl+r to toggle it off, or adjust the recolor settings in your zathurarc. See Configuration → Appearance.

Zathura crashes with large documents

If GDK_NATIVE_WINDOWS is enabled in your environment, disable it:

unset GDK_NATIVE_WINDOWS

If overlay-scrollbar is enabled in GTK_MODULES, remove it:

export GTK_MODULES=""

SyncTeX backward sync is not working

Confirm that synctex-editor-command is set in your zathurarc and that the command is correct for your editor. Test the command manually in a terminal to verify it works independently of zathura.

Also confirm that dbus-service is enabled (it is by default):

set dbus-service true

SyncTeX requires D-Bus. If you are running zathura in sandbox mode, SyncTeX is not available.


For bug reports, see github.com/pwmt/zathura/issues. For plugin-specific issues, report to the relevant plugin repository.