coBib is a simple, command-line based bibliography management tool. It is the result of the need for an easy-to-use alternative to full-blown reference managers like Mendeley or Zotero. As such it follows some basic design goals:
- plain-text database: which means you get full access and control over the database.
- git-integration: as a benefit of the above, you can keep track of your database through version control.
- centralized database, location-independent library: this means, that coBib only manages the database file in a centralized fashion but allows you to spread the actual contents of your library across the entire file system (this is the major different to papis).
- command-line and TUI support: all features are available through the command-line as well as a textual-based TUI
For all common purposes you can install coBib via pip
:
pip install cobib
Note: Use pip3
if you still have Python 2 installed.
If you would also like to install the man-page, you need to download the source code and do the following:
git clone https://gitlab.com/cobib/cobib
cd cobib
make install_extras
coBib is packaged in the AUR.
coBib might work on Windows as is, but it is not being tested so no guarantees are given. If you are using Windows 10 or later and are running into issues, you should be able to install and use coBib's full functionality within the Linux subsystem.
To get started, you must initialize the database:
cobib init
If you would like to enable the git-integration, you should run:
cobib init --git
and enable config.database.git
(see also configuration).
Be sure to check out my Quickstart blog post for a more guided introduction compared to the following section!
coBib provides an import
command through which you can easily import your library
from another bibliography manager. For more details check out:
cobib import --help
So far, coBib knows how to import your library from Zotero by simply running:
cobib import --zotero
Check out the following command, the man page or the online documentation for more details:
cobib import --zotero -- --help
You can now add new entries to your database (see also cobib.commands.add
1):
cobib add --bibtex some_biblatex_file.bib
cobib add --arxiv <some arXiv ID>
cobib add --doi <some DOI>
cobib add --isbn <some ISBN>
Note: when adding data from a .bib
file, make sure that it is in the BibLaTex format!
You can view the contents of your database with (see also cobib.commands.list_
):
cobib list
You can show a specific entry with (see also cobib.commands.show
):
cobib show <some entry label>
You can open an associated file of an entry with (see also cobib.commands.open
):
cobib open <some entry label>
You can even search through your database with (see also cobib.commands.search
):
cobib search "some text"
You can delete an entry with (see also cobib.commands.delete
):
cobib delete <some entry label>
You can edit an entry manually with (see also cobib.commands.edit
):
cobib edit <some entry label>
You can also apply simple modifications to multiple entries at once with (see also
cobib.commands.modify
):
cobib modify tags:private -- <some entry label> <another entry label> ...
You can export your database with (see also cobib.commands.export
):
cobib export --bibtex my_bibliography.bib
cobib export --zip my_library.zip
If you have enabled the git-integration, you can undo and re-apply changes to your database with
(see also cobib.commands.undo
and cobib.commands.redo
):
cobib undo
cobib redo
Each subcommand provides additional help via:
cobib <subcommand> --help
and you can find extensive information in the online documentation (linked above) and the man-page:
man cobib
Finally, you can also use coBib's TUI for a more interactive experience (see also cobib.ui.tui
),
by simply typing
cobib
Here is an example screenshot of the TUI when listing the entries in your database:
And here is an example screenshot for listing search results:
You can overwrite the default configuration by placing a config.py
file in ~/.config/cobib/
.
The easiest way to get started with this file is by copying example.py
or by using:
cobib _example_config > ~/.config/cobib/config.py
You can then modify it to your liking.
You may also specify a different config file at runtime by using the -c
or --config
command line argument or by specifying a custom path in the COBIB_CONFIG
environment variable.
You can also disable loading of any configuration file be setting this environment variable to one of the following values: "", 0, "f", "false", "nil", "none"
.
Finally, be sure to take a look at the man page (man cobib
) and/or the online documentation for more information.
coBib supports the implementation of plugins!
You can find an example plugin in this folder or read the docs of
cobib_dummy
(when viewing the hosted documentation online).
coBib's documentation is hosted here.
If you would like to generate a local version during development, you need to clone the source code, and install pdoc
in order to generate it:
git clone https://gitlab.com/cobib/cobib.git
cd cobib
pip install pdoc
pdoc -d google -e cobib=https://gitlab.com/cobib/cobib/-/blob/master/src/cobib/ -t html -o docs src/cobib tests
You can then browse the documentation from docs/cobib.html
.
I have started this project when I was looking into alternatives to popular reference managers such as Mendeley, which has more features than I use on a regular basis and does not allow me to work from the command line which is where I spent most of the time that I spent on the computer.
Hence, I have decided to make it my own task of implementing a simple, yet fast, reference manager. coBib is written in Python and uses a YAML file to store its bibliography in a plain text format.
You can find the detailed changes throughout coBib's history in the Changelog.
coBib is licensed under the MIT License.
Footnotes
-
References like this one get interpreted by the documentation generator. If you are reading this as the README page, you may find the online documentation more enjoyable. ↩