插件目录必须严格命名为 opds_plus.koplugin,否则不会被加载;KOReader 版本需不低于 v2025.10;封面能否显示取决于目录源是否提供图片 URL,部分 OPDS 源没有封面
opds_plus.koplugin
greywolf1499AGPL-3.0更新放缓给 KOReader 加装增强版 OPDS 目录浏览器,支持封面网格/列表视图和大量自定义选项,方便从 Calibre 等数字图书馆直接找书、下书。
Enhanced OPDS catalog browser for KOReader with visual cover display, grid/list views, and extensive customization options
cd ~/.config/koreader/plugins/ # 按系统调整路径
git clone https://github.com/greywolf1499/opds_plus.koplugin.gitREADME 未说明;仅要求 KOReader v2025.10 及以上版本,并需联网访问在线目录
KOReader 的增强版 OPDS 目录浏览器插件,用封面图和网格视图让在线书库更好逛
给 KOReader 加装增强版 OPDS 目录浏览器,支持封面网格/列表视图和大量自定义选项,方便从 Calibre 等数字图书馆直接找书、下书。
核心能力
- 在列表和网格两种视图间切换浏览目录
- 列表视图显示封面并支持 5-25% 自定义封面尺寸
- 网格视图支持 2-4 列与三种边框样式
- 封面磁盘缓存可调容量、TTL 并支持清空
- 标题与详情字体可分别设置字号、粗细和颜色
容易踩的坑
- v1.3.1最新正式版2026-11-09 · 2026-11-09 19:23 UTC
OPDS Plus v1.3.1
A bug-fix release: you can now reach the rest of a long feed after jumping to the last page, downloads get a proper file extension and a sensible default folder, and each catalog page takes one request instead of two.
Changed
- One Request per Catalog Page: Opening a catalog page used to ask the server for its headers and then for the page, so a server that builds the whole feed both times, like Calibre-Web, did the work twice. Each page is now a single request. A server that tags or dates its feeds answers "not modified" when the copy on the device is still current.
Fixed
- Rest of a Long Feed Unreachable: Jumping to the last page with the end chevron or the page number dialog left the next page button greyed out, so the rest of a long feed, such as a Calibre-Web shelf, could only be reached by swiping. The next part of the feed is now fetched when you land there (Issue #100).
- Downloads Without a File Extension: A book whose download address had no extension, such as
/download/7, or one KOReader can't open, such asget.php, was saved under that name and could not be opened. The extension of the chosen format is now added. - Download Folder When None Is Set: Without a download folder chosen, books were saved to the last folder opened in the file browser, which on a first start is KOReader's hidden help folder. They now go to the home folder, as in KOReader's own OPDS browser.
- Where to Set the Sync Folder: Syncing without a sync folder now tells you where to set one: the menu at the top left of the list of catalogs, under Set sync folder.
- Duplicate PDF Download Buttons: A PDF link was sometimes added to a book twice, so the format list read "EPUB, PDF, PDF" and a book with a single PDF asked which format to download. This happened with arXiv's feeds.
Notes
- If you never chose a download folder, new downloads now go to your home folder instead of the last folder you browsed. Tap Choose folder in the download dialog to pick another.
Full changelog: https://github.com/greywolf1499/opds_plus.koplugin/blob/main/CHANGELOG.md
- v1.3.02026-11-09 · 2026-11-09 18:02 UTC
查看更新说明
OPDS Plus v1.3.0
A feature release: custom HTTP headers for catalogs behind a gateway, series info, a default catalog, parallel cover downloads, keyboard and D-pad navigation and more, with fixes for covers after switching views and for books with several authors.
Added
- Custom HTTP Headers: A catalog can send extra headers with its requests, such as the
CF-Access-Client-IdandCF-Access-Client-Secretheaders that a server behind Cloudflare Access (Zero Trust) asks for. Tap Headers when adding or editing a catalog and write oneName: valueper line. They go with the catalog's feeds, covers, downloads and sync, and only to that catalog's own server. They are saved as plain text, like the password (Issue #94). - Series Info: Books show their series and their number in it, such as "❖ Dune Chronicles #2", in list view and in the book info dialog. Read from the
SERIES:line that Calibre and Calibre-Web put in the description, fromdc:series, and from the collection metadata that Grimmory sends (Issue #70). - Description Saved with Downloads: The description a catalog gives for a book is saved with the downloaded file as KOReader custom book metadata, so it shows in Book information. This covers single downloads, the download queue and sync. A description the book already has, or one you edited yourself, is never replaced (Issue #85).
- Thumbnails on Navigation Entries: Entries that only open a sub-catalog, such as a series in a comic server's feed, show their thumbnail in list and grid view when the server provides one (Issue #24).
- Default Catalog: Settings > Default Catalog picks the catalog that opens as soon as you browse catalogs. Back returns to the list of catalogs (Issue #89).
- Parallel Cover Downloads: Covers are downloaded in background processes, two at a time, so pages of covers fill in faster and a slow server no longer freezes the screen. Where a background process can't be started, covers are downloaded one at a time as before (PR #98).
- Keyboard and D-pad Navigation: Devices with hardware keys can browse without the touchscreen. Back walks up one catalog level, Home closes the browser, the D-pad moves the focus item by item (cell by cell in the grid), and Enter opens the focused item (PR #93).
Changed
- Switching between list and grid view keeps you on the same item instead of reloading the catalog (PR #93).
- The page counter in the footer is KOReader's own button again (PR #93).
- Paging forward no longer asks the server for another page on every tap. The next page is requested when you are one screen from the end of what has been loaded (PR #92).
Fixed
- Covers no longer turn into coloured noise after you switch between list and grid view and then page through or switch back.
- A book with more than one author lists all of them, such as "Robert Louis Stevenson, Lloyd Osbourne", in the list, the book info dialog and the file name, instead of only the last.
Notes
- Parallel Cover Downloads, Thumbnails on Navigation Entries and Save Description with Downloads are on by default. Each can be turned off under Settings.
- A Force sync downloads books with several authors once more, under their new file names.
Thanks
Special thanks to these contributors for their work in this release cycle:
- @iav (keyboard and D-pad navigation, switching views and fetching ahead, #92 and #93)
- @demrom (parallel cover downloads, #98)
Full changelog: https://github.com/greywolf1499/opds_plus.koplugin/blob/main/CHANGELOG.md
- Custom HTTP Headers: A catalog can send extra headers with its requests, such as the
- v1.2.12026-11-09 · 2026-11-09 13:47 UTC
查看更新说明
OPDS Plus v1.2.1
A bug-fix release with cover cache, catalog compatibility and sync fixes since v1.2.0.
Fixed
- Covers are cached on Kindle and other devices where KOReader runs from a relative directory (Issue #86, PR #87).
- Cached covers no longer miss and download again after LuaJIT switches from interpreted to compiled code (PR #97).
- Cover cache robustness: falls back to KOReader's data directory on versions without
getFullDataDir(), creates relative cache directories in place, and writes covers atomically so an interrupted write cannot leave a truncated cover. - Catalog URLs with a local hostname, such as
http://booktrove:8083/opds, can be added (Issue #91, PR #95). - Entries linked with the OPDS
crawlablerelation, like the Standard Ebooks "All Ebooks" feed, open instead of failing with "Cannot get catalog info from nil" (Issue #83). - Listings no longer lose the entries after one with an empty
<content/>tag (Issue #100). - "Sync all catalogs" and "Force sync all catalogs" say when no catalog has "Sync catalog" ticked instead of reporting "Up to date!", and the gesture versions wait for the network like the menu entries (Issue #96).
- A sync that fails shows the error instead of leaving "Synchronizing lists…" on screen. Feeds with a link-less entry and Project Gutenberg style catalogs with a single-book sub-feed now sync (Issue #96).
- KOReader's plugin manager can delete OPDS Plus's settings and cover cache with "Disable plugin and delete settings" and "Delete plugin and settings". Downloaded books are kept (Issue #82).
Changed
- Updated GitHub Actions dependencies for checkout and release publishing.
Notes
- Covers cached by earlier versions are downloaded once more after updating, because the cache file naming changed.
Thanks
Special thanks to these contributors for their work in this release cycle:
- @cardoso42 (Kindle cover cache, #87)
- @demrom (stable cover cache keys, #97)
- @439qi (local hostnames, #95)
Full changelog: https://github.com/greywolf1499/opds_plus.koplugin/blob/main/CHANGELOG.md
- v1.2.02026-03-19 · 2026-03-19 14:10 UTC
查看更新说明
OPDS Plus v1.2.0
This release includes merged PRs, issue resolutions, and new user-facing settings since v1.1.0.
[!IMPORTANT] Upgrade method for existing users: This release is based on a complete plugin rewrite. To avoid stale files and update issues, remove the old
opds_plus.koplugindirectory entirely, then install the new release fresh.Added
- Book Info Dialog for at-a-glance book metadata with improved cover handling.
- Direct dispatcher actions for:
- OPDS Plus: Sync all catalogs
- OPDS Plus: Force sync all catalogs
- Cover pipeline improvements with disk-backed cache and lifecycle-safe image loading.
- New Cover Settings:
- Prefer Large Covers (quality-first source selection)
- Enable Cover Cache toggle
- Advanced cache controls: max size, TTL, and manual cache clear
Changed
- Refactored debug architecture to standardize logging through shared utilities.
- Extended state-manager usage across UI menu components.
- Removed obsolete/dead code and simplified some loader internals.
- Updated GitHub Actions dependencies for checkout and artifact workflows.
Fixed
- Gesture registration failures (Issue #58).
- Duplicate PDF entries in results (Issue #57).
- Book info dialog stability issues, including filename capture timing and cover widget behavior.
Thanks
Special thanks to these contributors for their work in this release cycle:
- Michael Cummings (@kodermike)
- Gavin Mogan (@halkeye)
Documentation
- Added KOReader installation/upgrade path reference: https://github.com/koreader/koreader/wiki\#installationupgrading
- Updated README and CHANGELOG to cover major additions and settings for 1.2.0.
Full changelog: https://github.com/greywolf1499/opds_plus.koplugin/blob/main/CHANGELOG.md
- v1.1.02025-11-18 · 2025-11-18 17:32 UTC
查看更新说明
OPDS Plus v1.1.0 - Polish & Performance Release
This release focuses on polishing the user experience, fixing bugs discovered during real-world testing, and optimizing space utilization across all device sizes.
🎯 Highlights
✨ Better Text Display
- Titles and authors now show ellipsis (…) when truncated
- Smart word-aware truncation for cleaner breaks
- UTF-8 safe for international characters
📐 Optimized Layouts
- List View: Dynamically fits maximum items with minimal whitespace
- Grid View: Automatically maximizes rows based on screen height
- Works perfectly on small e-readers, tablets, and large desktop displays
- No more wasted space at the bottom of pages!
🐛 Bug Fixes
- Fixed release package containing nested directories
- Fixed crashes in Grid Layout and Border settings menus
- Fixed
%%appearing in confirmation messages - Fixed version display in About dialog
- Fixed text truncation crashes
🔧 Developer Features
- Debug Mode Toggle: Enable verbose logging when troubleshooting
- Version Display: Now shown in settings menu
- Cleaned up excessive logging for better performance
📦 Installation
- Download
opds_plus.koplugin.zipfrom assets below - Extract to your KOReader plugins directory:
- Linux/Mac:
~/.config/koreader/plugins/ - Android:
/sdcard/koreader/plugins/ - Kindle:
/mnt/us/koreader/plugins/
- Linux/Mac:
- Restart KOReader
- Access via: File Manager → Menu → OPDS Plus Catalog
⚙️ Settings
All settings accessible via: OPDS Plus Catalog → Settings
- Display Mode: Switch between List and Grid views
- List View Settings: Cover size presets (Compact/Regular/Large/Extra Large)
- Grid View Settings: Layout presets, borders, and styling
- Font & Text: Customize fonts, sizes, colors
- Developer: Toggle debug mode for troubleshooting
🔄 Upgrading from v1.0.0
Simply replace the plugin directory with the new version. All your settings and catalogs will be preserved.
🙏 Acknowledgments
Thanks to everyone (myself, so far) who tested v1.0.0 and provided feedback! This release addresses all reported issues and includes several UX improvements based on real-world usage.
Full Changelog: https://github.com/greywolf1499/opds_plus.koplugin/blob/main/CHANGELOG.md
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

OPDS Plus - Enhanced OPDS Browser for KOReader
Version: 1.2.0
OPDS Plus is a feature-rich enhancement of KOReader's built-in OPDS catalog browser, providing visual book cover displays, multiple viewing modes, and extensive customization options for browsing online book catalogs.
✨ Features
📚 Enhanced Catalog Browsing
- Visual Book Covers: Browse catalogs with book cover images displayed alongside titles
- Dual View Modes: Switch between List View and Grid View layouts
- Multiple Display Options: Customize how books are presented
- Book Info Dialog: Open an at-a-glance details dialog with improved cover handling
- Sync Gesture Actions: Trigger sync-related actions directly from configured gestures
- Cover Quality + Cache: Improved cover rendering pipeline with disk-backed caching
🖼️ List View
- Book covers displayed alongside title and author information
- Adjustable cover sizes with presets (Compact, Regular, Large, Extra Large)
- Custom size option (5-25% of screen height)
- Clean, readable layout optimized for e-readers
📊 Grid View
- Display books in a grid layout for visual browsing
- Flexible column options (2-4 columns)
- Layout presets: Compact (4 cols), Balanced (3 cols), Spacious (2 cols)
- Customizable grid borders:
- No Borders: Clean, borderless grid
- Hash Grid: Shared borders in a # pattern
- Individual Tiles: Each book has its own border
- Adjustable border thickness (1-5px) and color (Light Gray, Dark Gray, Black)
🎨 Customization Options
- Font Selection: Choose from KOReader's built-in fonts or your custom fonts
- Independent Font Settings: Separate customization for titles and details
- Font family selection
- Font size adjustment
- Bold/regular weight toggle
- Color options (Dark Gray, Black)
- Same Font Mode: Option to use matching fonts for consistent appearance
- Persistent Settings: All preferences are saved between sessions
📖 Default Catalogs Included
- Project Gutenberg
- Standard Ebooks
- ManyBooks
- Internet Archive
- textos.info (Spanish)
- Gallica (French)
📸 Screenshots
| List View | Grid View |
|---|---|
![]() | ![]() |
| Classic list view with cover thumbnails | Immersive grid layout for browsing |
| View Options | Customization |
|---|---|
![]() | ![]() |
| Switch views instantly via the menu | Extensive customization options |
📥 Installation
Method 1: Manual Installation (Recommended)
-
Download the latest release:
- Go to the Releases page
- Download the
opds_plus.koplugin.zipfile from the latest release
-
Extract to KOReader plugins directory:
The location depends on your device:
- Kindle/Kobo/Android: Extract to
/koreader/plugins/ - Linux: Extract to
~/.config/koreader/plugins/ - Windows: Extract to
%APPDATA%/koreader/plugins/ - macOS: Extract to
~/Library/Application Support/koreader/plugins/
- Kindle/Kobo/Android: Extract to
For complete platform-specific install/upgrade paths, see the KOReader wiki: KOReader Installation/Upgrading
The archive should extract to create an opds_plus.koplugin directory containing all plugin files.
-
Restart KOReader: Close and reopen KOReader to load the plugin
-
Verify installation:
- Open KOReader's File Browser
- Tap the menu icon (⋮ or ≡)
- You should see "OPDS Plus Catalog" in the menu
Method 2: Git Clone (For Developers)
# Navigate to KOReader plugins directory
cd ~/.config/koreader/plugins/ # Adjust path for your system
# Clone the repository
git clone https://github.com/greywolf1499/opds_plus.koplugin.git
# Restart KOReader
Troubleshooting Installation
- Ensure the directory is named exactly
opds_plus.koplugin - Verify all
.luafiles are present in the plugin directory - Check that you have write permissions to the plugins directory
- If the plugin doesn't appear, check KOReader's crash.log for errors
🚀 Usage
Accessing OPDS Plus
- Open KOReader's File Browser
- Tap the menu icon (⋮ or ≡)
- Select OPDS Plus Catalog
Browsing Catalogs
First Time Setup
- The plugin comes with several default catalogs pre-configured
- Simply select a catalog to start browsing
Browsing Books
- Select a catalog from the list
- Navigate through categories and books
- Tap a book to view details and download options
- Downloaded books are saved to your configured download directory
Customizing Settings
Access settings from: OPDS Plus Catalog → Settings
Display Mode
- List View: Traditional list with covers on the left
- Grid View: Visual grid layout with larger covers
List View Settings
- Cover Size: Choose from presets or set custom size
- Compact (8%): More books per page
- Regular (10%): Default balanced view
- Large (15%): Easier to see cover details
- Extra Large (20%): Maximum cover visibility
- Custom: Fine-tune between 5-25%
Cover Settings (New in 1.2.0)
- Prefer Large Covers:
- Enabled: prioritizes higher-quality cover sources when available.
- Disabled: prefers faster thumbnail sources.
- Enable Cover Cache:
- Enabled: reuses previously downloaded covers.
- Disabled: fetches covers from the server each time.
- Advanced Cache Controls:
- Cache Size (MB)
- Cache TTL (minutes)
- Clear Cover Cache
Grid View Settings
-
Grid Layout:
- Compact: 4 columns, more books visible
- Balanced: 3 columns, good middle ground (default)
- Spacious: 2 columns, larger covers
- Custom: Manual column selection (2-4)
-
Grid Borders:
- Style: None, Hash Grid, or Individual Tiles
- Thickness: 1-5 pixels
- Color: Light Gray, Dark Gray, or Black
Font & Text Settings
- Use Same Font for All: Match title and detail fonts
- Title Settings:
- Font family
- Font size (12-24pt)
- Bold/regular weight
- Information Settings:
- Font family (independent if same font disabled)
- Font size (10-20pt)
- Bold/regular weight
- Color: Dark Gray or Black
Sync Actions & Settings (New in 1.2.0)
- Direct Sync Actions:
- Sync all catalogs
- Force sync all catalogs
- Gesture Integration:
- Actions are registered in KOReader's dispatcher as:
OPDS Plus: Sync all catalogsOPDS Plus: Force sync all catalogs
- These can be assigned in KOReader's gesture/action configuration.
- Actions are registered in KOReader's dispatcher as:
- Catalog Sync Controls:
- Per-catalog sync and force-sync via catalog long-press actions.
- Sync folder selection.
- Maximum sync download count.
- Filetype filtering for sync downloads.
Book Info Dialog (New in 1.2.0)
- Tapping a book now opens a book info dialog before download.
- Dialog includes cover preview and at-a-glance metadata for faster decisions.
- Download actions are available directly from the dialog flow.
Adding Your Own Catalogs
- Go to OPDS Plus Catalog → Settings → Manage Catalogs
- Select Add Catalog
- Enter:
- Catalog name
- OPDS feed URL
- The new catalog will appear in your catalog list
🔧 Technical Details
Requirements
- KOReader v2025.10, minimum
- Network connectivity for browsing online catalogs
File Structure
opds_plus.koplugin/
├── _meta.lua
├── main.lua
├── opds_plus_version.lua
├── config/
│ ├── settings.lua
│ └── settings_menu.lua
├── core/
│ ├── browser_context.lua
│ ├── catalog_manager.lua
│ ├── download_manager.lua
│ ├── feed_fetcher.lua
│ ├── navigation_handler.lua
│ ├── parser.lua
│ ├── state_manager.lua
│ └── sync_manager.lua
├── models/
│ └── constants.lua
├── services/
│ ├── cover_cache.lua
│ ├── cover_loader.lua
│ ├── http_client.lua
│ ├── image_loader.lua
│ └── kavita.lua
├── ui/
│ ├── browser.lua
│ ├── utils.lua
│ ├── dialogs/
│ │ ├── book_info_dialog.lua
│ │ ├── download_builder.lua
│ │ ├── menu_builder.lua
│ │ └── settings_dialogs.lua
│ └── menus/
│ ├── cover_menu.lua
│ ├── grid_menu.lua
│ └── list_menu.lua
└── utils/
├── button_dialog_builder.lua
├── catalog_utils.lua
├── debug.lua
├── file_utils.lua
├── result.lua
└── url_utils.lua
Settings Storage
Settings are stored in: <KOReader data dir>/settings/opdsplus.lua
This file contains:
- Catalog list
- Download history
- Display preferences
- Font settings
- Grid layout configuration
🤝 Contributing
Contributions are welcome! Here's how you can help:
- Report Bugs: Open an issue describing the problem
- Suggest Features: Share your ideas via GitHub issues
- Submit Pull Requests:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a PR with a clear description
Development Guidelines
- Follow KOReader's Lua coding conventions
- Test on multiple screen sizes if possible
- Ensure compatibility with existing OPDS catalogs
- Document new features in the README
📝 Known Issues & Limitations
- Cover loading depends on catalog providing image URLs
- Some OPDS feeds may not include cover images
- Large catalogs may take time to load initially
- Grid view performance varies with device capabilities
🙏 Credits
- Original OPDS Plugin: KOReader development team
- Enhancement Development: greywolf1499
- Built upon the excellent KOReader e-reader software
📜 License
This plugin is released under the same license as KOReader: GNU Affero General Public License v3.0 (AGPL-3.0)
See the LICENSE file for details.
📞 Support
- Issues & Bug Reports: GitHub Issues
- KOReader Documentation: KOReader Wiki
- OPDS Specification: OPDS Spec
🔄 Version History
See CHANGELOG.md for detailed version history.
Enjoy enhanced OPDS browsing with OPDS Plus! 📚✨



