Home

Awesome

baca: TUI E-book Reader

baca_screenshots

Meet baca, epy's lovely sister who lets you indulge in your favorite e-books in the comfort of your terminal. But with a sleek and contemporary appearance that's sure to captivate you!

Features

Requirements

Installation

Usage

# to read an ebook
baca path/to/your/ebook.epub

# to read your last read ebook, just run baca without any argument
baca

# to see your reading history use -r as an argument
baca -r

# say you want to read an ebook from your reading history,
# but you forgot the path to your ebook
# just type any words you remember about your ebook
# and baca will try to match it to path or title+author
baca doc ebook.epub
baca alice wonder lewis carroll

Opening an Image

To open an image, when you encounter an ANSI image (when ShowImageAsANSI=yes) or some thing like this (if ShowImageAsANSI=no):

┌──────────────────────────────────────────────────────────────────────────────┐
│                                    IMAGE                                     │
└──────────────────────────────────────────────────────────────────────────────┘

just click on it using mouse and it will open the image using system app. Yeah, I know you want to use keyboard for this, me too, but bear with this for now.

"Why show the images as ANSI images instead of render it directly on terminal like ranger does?"

  1. The main reason is that currently, rendering images directly on the terminal doesn't allow for partial scrolling of the image. This means that we can't display only a portion (e.g., 30%) of the image when scrolling, resulting in a broken and non-seamless scrolling experience.

  2. My primary intention in developing this app is for reading fiction e-books rather than technical ones, and most fiction e-books don't contain many images.

  3. Displaying images on the terminal requires different implementations for various terminal emulators, which requires a lot of maintenance.

Configurations

pretty_yes_no_cap

Configuration file available at ~/.config/baca/config.ini for linux users. Here is the default:

[General]
# pick your favorite image viewer
PreferredImageViewer = auto

# int or css value string like 90%%
# (escape percent with double percent %%)
MaxTextWidth = 80

# 'justify', 'center', 'left', 'right'
TextJustification = justify

# currently using pretty=yes is slow
# and taking huge amount of memory
Pretty = no

PageScrollDuration = 0.2

# either show image as ansii image
# or text 'IMAGE' as a placehoder
# (showing ansii image will affect
# performance & resource usage)
ShowImageAsANSII = yes

[Color Dark]
Background = #1e1e1e
Foreground = #f5f5f5
Accent = #0178d4

[Color Light]
Background = #f5f5f5
Foreground = #1e1e1e
Accent = #0178d4

[Keymaps]
ToggleLightDark = c
ScrollDown = down,j
ScrollUp = up,k
PageDown = ctrl+f,pagedown,l,space
PageUp = ctrl+b,pageup,h
Home = home,g
End = end,G
OpenToc = tab
OpenMetadata = M
OpenHelp = f1
SearchForward = slash
SearchBackward = question_mark
NextMatch = n
PreviousMatch = N
Confirm = enter
CloseOrQuit = q,escape
Screenshot = f12

Known Limitations

Credits

License

GPL-3