#ebook #tui #user-interface #binary #config-file #opds

app ncopds

A TUI program for navigating OPDS catalogs

1 unstable release

0.1.0 Sep 18, 2024

#1462 in Command line utilities

Custom license

91KB
1.5K SLoC

ncopds

ncopds is a TUI program for navigating OPDS directories, written in Rust with cursive. By setting up a configuration file, any number of OPDS directories can be visited. From the main interface, users can get a preview of the books available on the catalog and download them directly to a directory of their choice. OPDS search is also supported.

The interface is designed to be responsive, using multiple threads to manage the data coming in from the OPDS server and drive the UI. Locally, ncopds allows users to manage their downloads directory through a set of basic operations, allowing them to rename and delete files. Downloaded books are opened using your system's preferred handler for .pdfs / .epubs. ncopds does not store metadatain sqlite databases or clutter up your downloads directory in any way, unlike other ebook managers.

Servers requiring authentication are supported. ncopds does not store your passwords anywhere. Instead, it relies on your system's keyring to store passwords.

This is still alpha software. Please feel free to submit bugs using the issue tracker and improve upon what you see here.

Using ncopds

There are several menus at the top of the screen. Clicking ncopds at the top of the screen shows you a help menu with information similar to this README.

View allows you to add / change connections to OPDS catalogs. When you add a new connection to ncopds, it will appear at the bottom of the View menu. Clicking it will render the contents of that catalog in the main view which you can then browse and download to your heart's content.

Edit lets you change information about a connection, including its name, URL and login credentials. These features are alternatives to directly editing the config file that is located at $HOME/.config/ncopds/config.toml.

Configuration

The only field that is required for ncopds to work is the download_directory field. If you want to add a connection manually, you can write them in this way:

[servers.{NICKNAME_FOR_YOUR_SERVER}]
base_url = "https://example.com/opds" (MUST BE FIRST OPDS PAGE, NOT JUST THE DOMAIN)
username = "rostyhn" (OPTIONAL)

You cannot store a password inside the configuration file. If you include a username inside a connection, ncopds will ask you for the password the next time you run it.

Configuring the theme

You can also edit the cursive theme by editing the theme file located at $HOME/.config/ncopds/theme.toml. More documentation on the options is available here. Otherwise, ncopds will just use your default terminal colors.

Hotkeys

There are some hotkeys available.

Key Action Context
o Opens a file Only when viewing local directory
d Deletes a file Only when viewing local directory
r Renames a file Only when viewing local directory
/ Search catalog Both online and in local directories; only if online directory supports it
? Open help screen Anywhere

Project TODO

  • Support all OPDS acquisition types
  • Make search async
  • Achieve reasonable test coverage
  • Provide more metadata when browsing locally without resorting to storing additional information
  • Support for windows / mac
  • Improve book rendering

Dependencies

~22–38MB
~600K SLoC