{"id":16715535,"url":"https://github.com/philippeitis/bookworm","last_synced_at":"2025-04-10T06:30:23.932Z","repository":{"id":46448723,"uuid":"311922417","full_name":"philippeitis/bookworm","owner":"philippeitis","description":"Fast, reliable ebook management","archived":false,"fork":false,"pushed_at":"2024-09-03T21:06:11.000Z","size":2269,"stargazers_count":11,"open_issues_count":12,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T07:39:05.880Z","etag":null,"topics":["ebook-manager","rust","terminal-based","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philippeitis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-11T09:29:07.000Z","updated_at":"2025-02-03T08:27:48.000Z","dependencies_parsed_at":"2025-02-16T20:41:59.220Z","dependency_job_id":null,"html_url":"https://github.com/philippeitis/bookworm","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philippeitis%2Fbookworm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philippeitis%2Fbookworm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philippeitis%2Fbookworm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philippeitis%2Fbookworm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philippeitis","download_url":"https://codeload.github.com/philippeitis/bookworm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248168097,"owners_count":21058768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebook-manager","rust","terminal-based","tui"],"created_at":"2024-10-12T21:09:40.855Z","updated_at":"2025-04-10T06:30:23.860Z","avatar_url":"https://github.com/philippeitis.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bookworm\n![CI](https://github.com/philippeitis/bookworm/actions/workflows/rust.yml/badge.svg)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\nbookworm 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. \n\n# Features\n- High performance reading of ebook metadata\n  - bookworm can read ~8000 books per second, whereas Calibre, on the same system, with the same books, takes multiple minutes\n- Command based interface, usable from both TUI and CLI\n- SQLite backend\n  - Modifications are synchronized to the SQLite backend at the path specified via --database\n- Instant startup\n  - bookworm only reads books into memory when they're needed, allowing a database with millions of books to be opened instantly\n# Installation\n\n## Download binary\nBinary downloads are available at https://github.com/philippeitis/bookworm/releases\n\nTo use copy and paste functionality on Linux, the following dependencies must be installed:\n```bash\nsudo apt-get install xorg-dev libxcb1-dev libxcb-shape0-dev libxcb-xfixes0-dev\n```\n\n## Build from source\nOn Windows, MacOS\n```bash\ngit clone https://github.com/philippeitis/bookworm.git\ncd bookworm\ncargo install --path bookworm-tui --features copypaste \n```\n\nOn Linux distros, additional dependencies are required for copy-paste support:\n```bash\ngit clone https://github.com/philippeitis/bookworm.git\ncd bookworm\nsudo apt-get install xorg-dev libxcb1-dev libxcb-shape0-dev libxcb-xfixes0-dev\ncargo install --path bookworm-tui --features copypaste\n```\n\n## Compatibility\nThe minimum supported Rust version is current stable.\n\nNote that not all terminals are fully supported -  Ubuntu's default terminal works correctly. Windows Terminal does not currently support mouse scrolling.\n\n# Interaction\n- Adding single books and books from directories\n- Command based interaction\n- Hotkey navigation and interaction\n  - Selecting books and editing their metadata using F2, or deleting them using Del\n  - Specifying settings (selection colours, default columns, default sort settings) via TOML file\n  - Copying and pasting supported fields, on supported platforms via CTRL+C, CTRL+V\n## Commands\nArguments which take `[id]?` will modify the selected items if no id is provided.\n\nAll commands which don't make use of UI interaction can be used from the command line, using `bookworm [args] (-- [command])*`\n\n| Command                                            | Description                                                                     |\n|:---------------------------------------------------|---------------------------------------------------------------------------------|\n| `:q`                                               | Quit                                                                            |\n| `:w`                                               | Write                                                                           |\n| `:wq`                                              | Write and then quit                                                             |\n| `:h (command)?`                                    | View help information (for a particular command)                                |\n| `:o (-f)? [id]?`                                   | Open a book in default app / file manager with given id                         |\n| `:c (-?[column])+`                                 | Add/Remove columns                                                              |\n| `:s ([column] -d?)*`                               | Sort by column, ascending (default) or descending                               |\n| `:a -r? ((-d / -p / -g)? path+ -r?)+`              | Add a single book, multiple books, or books matching a glob                     |\n| `:e [id]? ((-a / -r / -d)? [column] [new_value])+` | Edit the book                                                                   |\n| `:m -a`                                            | Merge all books with matching metadata                                          |\n| `:d`                                               | Delete selected book                                                            |\n| `:d -a`                                            | Delete all books                                                                |\n| `:d ((-r /-e / -x)? [column] [search_str])+`       | Delete books matching predicates                                                |\n| `:j ((-r / -e / -x)? [column] [search_str])+`      | Jumping to a book matching the regex / exact substring / exact string / default |\n| `:f ((-r / -e / -x)? [column] [search_str])+`      | Finding books matching the regex / exact substring / exact string / default     |\n\n## Keybindings\n| Keybinding    | Description               |\n|:--------------|---------------------------|\n| `CTRL + Q`    | Quit                      |\n| `CTRL + S`    | Save all changes          |\n| `PAGE UP`     | Go up one page of books   | \n| `PAGE DOWN`   | Go down one page of books |\n| `HOME`        | First book in collection  |\n| `END`         | Last book in collection   |\n| `UP`          | Go up one book            |\n| `DOWN`        | Go down one book          |\n| `SCROLL UP`   | Go up n books             |\n| `SCROLL DOWN` | Go down n books           |\n\n# Planned Features\n- Cloud synchronization (eg. back up database and all books to Google Drive)\n- Support for supplementary files (eg. more than one cover for a book)\n- Reflecting external libraries as if they are native (eg. access Project Gutenberg directly)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilippeitis%2Fbookworm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilippeitis%2Fbookworm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilippeitis%2Fbookworm/lists"}