All Projects → LaurenceWarne → finito.el

LaurenceWarne / finito.el

Licence: GPL-3.0 license
📚 Manage books with Emacs 📚

Programming Languages

emacs lisp
2029 projects

Projects that are alternatives of or similar to finito.el

ox-ssh
SSH config export for org-mode
Stars: ✭ 33 (-2.94%)
Mutual labels:  org-mode
books-ML-and-DL
.pdf Format Books for Machine and Deep Learning
Stars: ✭ 105 (+208.82%)
Mutual labels:  books
DeepLearningWithJulia
The Deep Learning with Julia book, using Flux.jl.
Stars: ✭ 66 (+94.12%)
Mutual labels:  books
awesome-programming-books
List of good programming books for beginners and professionals
Stars: ✭ 68 (+100%)
Mutual labels:  books
PainlessDocker
Painless Docker book git repository.
Stars: ✭ 17 (-50%)
Mutual labels:  books
org-sync-snippets
Simple extension to export snippets to org-mode and vice versa
Stars: ✭ 14 (-58.82%)
Mutual labels:  org-mode
nast
A block-based intermediate representation for document-like content.
Stars: ✭ 35 (+2.94%)
Mutual labels:  org-mode
nroam
Org-roam backlinks within org-mode buffers
Stars: ✭ 106 (+211.76%)
Mutual labels:  org-mode
Demos
🔥 the go programming language go Demos, go语言例子 go语言圣经 练习题 go 语言书籍 bootstrap 练习 sql-mysql练习
Stars: ✭ 84 (+147.06%)
Mutual labels:  books
yeonghoey
A personal knowledge base
Stars: ✭ 13 (-61.76%)
Mutual labels:  org-mode
computer book list
一个综合了豆瓣,goodreads综合评分的计算机书籍书单
Stars: ✭ 1,535 (+4414.71%)
Mutual labels:  books
ob-elixir
org-babel functions for elixir evaluation
Stars: ✭ 24 (-29.41%)
Mutual labels:  org-mode
blinkist-m4a-downloader
Grabs all of the audio files from all of the Blinkist books
Stars: ✭ 100 (+194.12%)
Mutual labels:  books
awesome-Python-data-science-books
Probably the best curated list of data science books in Python
Stars: ✭ 331 (+873.53%)
Mutual labels:  books
BiB
📚 Library Management Application for Elementary Schools
Stars: ✭ 38 (+11.76%)
Mutual labels:  books
org-gantt
Gantt chart for emacs org-mode
Stars: ✭ 55 (+61.76%)
Mutual labels:  org-mode
PKMigrator
Tools to migrate between various Personal Knowledge Management Utilities
Stars: ✭ 36 (+5.88%)
Mutual labels:  org-mode
programming-book-2
Programming Book 2 :C++、Go、JavaScript、Node.js
Stars: ✭ 79 (+132.35%)
Mutual labels:  books
books
IT books in Chinese.
Stars: ✭ 54 (+58.82%)
Mutual labels:  books
SuperLibrary
Information Security Library
Stars: ✭ 60 (+76.47%)
Mutual labels:  books

finito.el

MELPA Min Emacs Version Version

finito.el allows for the management of books and reading lists from within Emacs. Books are presented in modified org mode buffers, and books along with user collections can be viewed/queried using transient.

This package is a thin client for https://github.com/laurencewarne/libro-finito, more information on collection management and cutomization can be found there. Here's a demo of some of its features:

finito-demo-copy2.mp4
finito-same-series-demo-cut.mp4

Table of Contents

Installation

You can install it from melpa:

(use-package finito
  :demand t
  ;; The main entry point for finito commands
  :bind ("C-c b" . finito)
  :config
  ;; Downloads the server aysnchronously, you can also download the server
  ;; jar manually from the releases page:
  ;; https://github.com/LaurenceWarne/libro-finito/releases and place it in
  ;; `finito-server-directory'
  (finito-download-server-if-not-exists
   ;; Optional, but we can specify a callback to run when the server has
   ;; finished downloading, we choose here to start the server to override
   ;; the default lazy behaviour which starts the server whenever a finito
   ;; command is invoked.
   ;; Note this callback is still called in the event a server has already
   ;; been downloaded
   (lambda () (finito-start-server-if-not-already))))

Features

Most of the features can be navigated through via the transient prefix command finito, available via C-c b with the recommended installation. Some highlights are:

  • Create a new collection: C-c b c n
  • Search for books: C-c b s
  • Generate a yearly summary: M-x finito-summary

summary

Keys

Bindings Available in all finito View Buffers

Key Action
a Add the book at point to some prompted collection
m Add the book at point to the "My Books" collection
A Search for books by the same author as the book at point
n Goto the next book
p Goto the previous book
o Dump this buffer's contents in a normal org mode buffer
d Toggle
q Kill the current buffer
k Kill the current buffer
b Open an Open Library page for the book at point
r Rate the book at point
s Start the book at point
S Start the book at point at a prompted date
f Finish the book at point
F Finish the book at point at a prompted date
e Search for books in the same series*
w Copy the title of the book at point to the kill ring
C-m Open the "My Books" collection
C-r Open the "Currently Reading" collection

*Results may vary, thoughts on the Wikidata implementation are very welcome. If you see 'Could not find a series for xyz', you may find that it's just the case that the relevant Wikidata information is incomplete, in which case Wikidata welcomes contributions!

Bindings in a Collection Buffer

Key Action
g Refresh the collection for changes
d Toggle display of descriptions for the current collection
D Delete the book at point from the current collection
N Open the next page (if applicable) of books for this collection
P Open the previous page (if applicable) of books for this collection

(in addition to all the base bindings)

Bindings in a Search Buffer

Key Action
l Edit the last search
d Toggle display of descriptions for the current buffer

(in addition to all the base bindings)

Additional Commands

  • finito-create-book - will prompt you to create a book with custom attributes, useful if you cannot find the book you want through searching
  • finito-delete-data-for-book-at-point - deletes all held data about the book at point (except for its collection membership), use this for example if you set the incorrect date started/ended
  • finito-open-playground - opens the finito server's graphql playground

Cutomization

finito-writer-instance

This object can be used to customize how books are written into finito buffers. The finito-book-writer class can be extended to provide ad-hoc cutomization. Example:

(defclass my-book-writer (finito-book-writer)
  nil
  "My class for writing book information to a buffer.")

(cl-defmethod finito-insert-title ((_writer my-book-writer) title)
  (insert (concat "* " title "\n\n")))

(setq finito-writer-instance (my-book-writer))

This writer class will insert titles as level one headings, and otherwise behave exactly the same way as the default writer.

finito-my-books-collection

This variable holds the name of the collection to open when the "My Books" suffix is invoked from the finito prefix command.

It can be changed to some other user created collection, though note its default value ("My Books") is marked as a special collection (by default) by the server - more specifically the default collection which automatically adds all books added to any other collection or started/completed/rated to itself.

Therefore, once you have:

(setq finito-my-books-collection "good books, some say the greatest")

In order to accumulate all added books you will have to mark it as a special collection and add hooks (or not if you prefer books not be added automagically everywhere).

finito-currently-reading-collection

This variable holds the name of the collection to open when the "Currently Reading" suffix is invoked from the finito prefix command.

The situation is similar to that of finito-my-books-collection above in that the default value "Currently Reading" is regarded as a special collection, though only books marked as "started" will be added to this collection.

Misc Variables

Variable Description Default
finito-language The language search queries should request responses in "en"
finito-server-directory The directory the finito server should be downloaded to (concat user-emacs-directory "/finito")
finito-img-cache-directory The directory of the finito image cache (concat finito-server-directory "/images")
finito-config-directory The directory of the server config file and sqlite db "~/.config/libro-finito"
finito-browse-function The function to be invoked by finito-browse-book-at-point finito--browse-function
finito-add-book-collection-blacklist Collections to ignore for finito-add-book-at-point ("Currently Reading")
finito-save-last-search A flag to indicate whether the arguments to the last search query should be saved t
finito-use-image-uris A flag to indicate whether to insert image uris or image file names into finito buffers nil
finito-montage-image-columns How many columns per row in a book montage (generated by summaries) 6
finito-montage-large-image-rating-threshold If the rating for a given book is >= this value, then render the book as large on a book montage 5

More information is available via C-h v. A non-nil value for finito-use-image-uris can be useful if for example you are using org-display-remote-inline-images.

To transport your data, you can copy ~/.config/libro-finito/db.sqlite across to a different machine.

Changelog

The changelog can be viewed here.

Similar Packages

org-books

calibredb.el

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].