- Rust 85.8%
- TeX 14.2%
| src | Imple column/cell selection feature of ratatui 0.29.0 | |
| tests | Handle short and long author fields | |
| .gitignore | build profile | |
| build.rs | Inegrate new command-action driven structure | |
| Cargo.lock | version bumb 0.5.0 | |
| Cargo.toml | version bumb 0.5.0 | |
| COPYING | Added Licence GPL 3+ | |
| README.md | Updated README | |
Bibiman
bibiman is a simple terminal user interface for handling your BibLaTeX
database as part of a terminal-based scientific workflow.
Here's a small impression how it looks and works:
Installation
For now, bibiman is only available via Codeberg. You have to build it from
source yourself using cargo and rustup:
git clone https://codeberg.org/lukeflo/bibiman
cd bibiman
# Build the binary to /target/release
cargo build --release
# optional: create symlink:
ln -sf /target/release/bibiman ~/.local/bin
# OR
# Install the binary to CARGO_HOME/bin which normally is in PATH
cargo install --path=. --locked
If you use the symlink option, you have to make sure that the directory
containing the symlink is in your PATH.
Usage
You need to pass a single .bib file as first positional argument:
bibiman /path/to/bibfile.bib
Of course, this can be aliased if you only use one main file. E.g. in
.bashrc/.zshrc:
alias bibi=bibiman /path/to/bibfile.bib
Features
For now, bibiman only has some very basic features implemented which are
important for my personal workflow. There are more to come, the list will be
updated:
- Browse through the bib entries using Vim-like keybindings and a fuzzy search mode.
- Filter the bib entries by keywords (and afterwards filter further by fuzzy searching).
- Edit the current entry by opening a terminal-based editor at the specific line.
- Yank/Copy the citekey of the current entry to the system clipboard.
- Open related PDF file (
fileBibLaTeX key) with keypress. - Open related URL/DOI with keypress.
- Scrollbar for better navigating.
- Sort Entries by each column (
Authors,Title,Year,Pubtype) - Open related notes file for specific entry.
- Add Entry via DOI as formatted code.
- Implement config file for setting some default values like main bibfile, PDF-opener, or editor
- Support Hayagriva(
.yaml) format as input (on hold for now, because the Hayagriva Yaml style doesn't offer keywords; s. issue in Hayagriva repo).
Keybindings
Use the following keybindings to manage the TUI:
| Key | Action |
|---|---|
j,k | Down,Up |
Move down/up by 1 |
Ctrl-d,Ctrl-u |
Move down/up by 5 |
g,G |
Go to first/last entry |
h,k |
Select previous/next entry column |
s |
Sort current column (toggles) |
PageDown,PageUp | Alt-j,Alt-k |
Scroll Info window |
y |
Yank/copy citekey of selected entry |
e |
Open editor at selected entry |
o | u |
Open related PDF | URL/DOI |
TAB |
Switch between entries and keywords |
/,Ctrl-f |
Enter search mode |
Enter |
Filter by selected keyword / Confirm search |
ESC |
Abort search / Reset current list |
q,Ctrl-c |
Quit TUI |
Search
The search mode uses the nucleo-matcher crate. Thus, fuzzy searching is
enabled by default. You can use some special chars to alter pattern matching:
^...matches literally at beginning of the string....$matches literally at end of the string.'...matches literally everywhere in string.
Edit bib entry
For now, the TUI only supports editors set through the environment variables
VISUAL and EDITOR in this order. The fallback solution is vi.
I've tested the following editors (set as value of VISUAL):
- Helix:
export VISUAL="hx" - Vim/Neovim:
export VISUAL="vim/nvim" - Emacs (Terminal):
export VISUAL="emacs -nw" - Nano:
export VISUAL="nano" - Emacs (GUI):
export VISUAL="emacs"(open emacs in separate window, blocks the terminal runningbibimanas long as emacs is opened)
Feel free to try other editors and report. Important is that the editor supports
the argument +.. to set the line number that the cursor should be placed at.
Otherwise, the functionality might not work properly.
While this behaviour is most likely supported on UNIX-based systems (Linux, MacOS), it might not work under Windows. I can't test it on a Windows machine, thus, there might be unexpected errors with it.
Open connected files or links
Now, bibiman also provides the possibility to open PDFs (as value of the
file BibLaTeX field), as well as DOIs and URLs.
For selecting the right program, it uses xdg-open on Linux, open on MacOS,
and start on Windows. Thanks to the report from @bastislack in #2 MacOS seems
to work.
However, Windows does not work. Have to figure this out. Reports from some Windows users are very welcome. Reports from some Windows users are very welcome.
Furthermore, DOIs have to begin with either https://doi... as full URL or
10.(...) as regular DOI style. URLs work if they begin with either http...
or with www....
Issues and code improvement
This is my first Rust project and, thus, also a learning process. If you find any issues or code flaws, please open an issue. I plan to make PRs possible in the future when its a little bit less early alpha state.
Alternatives
bibiman is a project tailored to my personal needs. I use a single main file
for all my bib entries and want to use bibiman mainly as kind of
(terminal)-graphical wrapper for often emerging tasks, since I work in the
terminal most of the time.
I used JabRef for many years, but its way to bloated in my eyes. There exists
a bunch of other graphical tools...
But there are also some TUI alternatives with slightly different approaches. Maybe one of these might fit your personal needs better:
- bibman (Haskell): A very nice CLI program including a TUI I also used for some times. It has way more CLI features (export etc.) at the moment. The main difference is that its based on a multi file approach. If you also use a separate file per entry, look there!
- bibman (Python): A TUI written in Python with focus on Zotero-like functions. If you're used to Zotero, this might be a good fit.
- bibman (Perl): A fast and simple TUI written in good ol' Perl. It looks like back in the days, but seems not being maintained anymore.
- cobib: Very elaborated bib manager with CLI and TUI functions.
- papis: Powerful CLI tool for managing bibliographies and documents. Has also some TUI features.