Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/philippeitis/bookworm
Fast, reliable ebook management
https://github.com/philippeitis/bookworm
ebook-manager rust terminal-based tui
Last synced: 24 days ago
JSON representation
Fast, reliable ebook management
- Host: GitHub
- URL: https://github.com/philippeitis/bookworm
- Owner: philippeitis
- License: gpl-3.0
- Created: 2020-11-11T09:29:07.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-10-09T08:20:04.000Z (about 2 years ago)
- Last Synced: 2023-03-05T11:17:12.946Z (over 1 year ago)
- Topics: ebook-manager, rust, terminal-based, tui
- Language: Rust
- Homepage:
- Size: 2.16 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bookworm
![CI](https://github.com/philippeitis/bookworm/actions/workflows/rust.yml/badge.svg)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)bookworm is a fast TUI library management system, like Calibre. It is designed to handle importing, navigating, and manipulating the metadata of millions of ebooks efficiently and reliably.
# Features
- High performance reading of ebook metadata
- bookworm can read ~8000 books per second, whereas Calibre, on the same system, with the same books, takes multiple minutes
- Command based interface, usable from both TUI and CLI
- SQLite backend
- Modifications are synchronized to the SQLite backend at the path specified via --database
- Instant startup
- bookworm only reads books into memory when they're needed, allowing a database with millions of books to be opened instantly
# Installation## Download binary
Binary downloads are available at https://github.com/philippeitis/bookworm/releasesTo use copy and paste functionality on Linux, the following dependencies must be installed:
```bash
sudo apt-get install xorg-dev libxcb1-dev libxcb-shape0-dev libxcb-xfixes0-dev
```## Build from source
On Windows, MacOS
```bash
git clone https://github.com/philippeitis/bookworm.git
cd bookworm
cargo install --path bookworm-tui --features copypaste
```On Linux distros, additional dependencies are required for copy-paste support:
```bash
git clone https://github.com/philippeitis/bookworm.git
cd bookworm
sudo apt-get install xorg-dev libxcb1-dev libxcb-shape0-dev libxcb-xfixes0-dev
cargo install --path bookworm-tui --features copypaste
```## Compatibility
The minimum supported Rust version is current stable.Note that not all terminals are fully supported - Ubuntu's default terminal works correctly. Windows Terminal does not currently support mouse scrolling.
# Interaction
- Adding single books and books from directories
- Command based interaction
- Hotkey navigation and interaction
- Selecting books and editing their metadata using F2, or deleting them using Del
- Specifying settings (selection colours, default columns, default sort settings) via TOML file
- Copying and pasting supported fields, on supported platforms via CTRL+C, CTRL+V
## Commands
Arguments which take `[id]?` will modify the selected items if no id is provided.All commands which don't make use of UI interaction can be used from the command line, using `bookworm [args] (-- [command])*`
| Command | Description |
|:---------------------------------------------------|---------------------------------------------------------------------------------|
| `:q` | Quit |
| `:w` | Write |
| `:wq` | Write and then quit |
| `:h (command)?` | View help information (for a particular command) |
| `:o (-f)? [id]?` | Open a book in default app / file manager with given id |
| `:c (-?[column])+` | Add/Remove columns |
| `:s ([column] -d?)*` | Sort by column, ascending (default) or descending |
| `:a -r? ((-d / -p / -g)? path+ -r?)+` | Add a single book, multiple books, or books matching a glob |
| `:e [id]? ((-a / -r / -d)? [column] [new_value])+` | Edit the book |
| `:m -a` | Merge all books with matching metadata |
| `:d` | Delete selected book |
| `:d -a` | Delete all books |
| `:d ((-r /-e / -x)? [column] [search_str])+` | Delete books matching predicates |
| `:j ((-r / -e / -x)? [column] [search_str])+` | Jumping to a book matching the regex / exact substring / exact string / default |
| `:f ((-r / -e / -x)? [column] [search_str])+` | Finding books matching the regex / exact substring / exact string / default |## Keybindings
| Keybinding | Description |
|:--------------|---------------------------|
| `CTRL + Q` | Quit |
| `CTRL + S` | Save all changes |
| `PAGE UP` | Go up one page of books |
| `PAGE DOWN` | Go down one page of books |
| `HOME` | First book in collection |
| `END` | Last book in collection |
| `UP` | Go up one book |
| `DOWN` | Go down one book |
| `SCROLL UP` | Go up n books |
| `SCROLL DOWN` | Go down n books |# Planned Features
- Cloud synchronization (eg. back up database and all books to Google Drive)
- Support for supplementary files (eg. more than one cover for a book)
- Reflecting external libraries as if they are native (eg. access Project Gutenberg directly)