Wombag is a Wallabag client for Emacs.
Wallabag is an (optionally self-hosted) Read-It-Later and archiving service for web pages, like Pocket or Instapaper.
Please Note: Wombag requires at least Emacs 28.1 and a recent-ish server-side installation of Wallabag (v2.6.0 or higher). You can check your Wallabag version from the web interface.
Install using your package manager of choice, or clone this repo and run package-install-file
on the cloned directory.
(use-package wombag
:config
(setq wombag-host "https://app.wallabag.it" ;where you access Wallabag
wombag-username "my-wallabag-username"
wombag-password "my-wallabag-password"
wombag-client-id "abcdefgh1234"
wombag-client-secret "abcdefgh1234"))
Consider obfuscating your password and client secret here using auth-source
or some other mechanism. There are other customization options, which see.
To use it, run wombag
.
Run wombag-sync
to sync the local database. It may take a while the first time.
If you have used Elfeed before you should feel at home.
- Press
s
to search for articles,?
for help when searching. - Sync with the server with
wombag-sync
(G
). - You can archive (
A
), star (F
), tag (+
) or delete (D
) entries. - Removing tags is not supported yet.
To add a URL to Wallabag, you can run M-x wombag-add-entry
.
Wombag provides a few QoL features.
You can filter the search listing incrementally using any combination of criteria.
In this demo I filter the listing to articles that mention Julia in the title, added between 2021 and 2023, are not archived, and contain the text automatic differentiation:
wombag-search.mp4
You can search by text, tags, title, author, URL, date published, date added, starred/archived status and more.
Wombag saves your place in articles. You can also show only partly-read articles when searching (press ?
), or call M-x wombag-resume
from anywhere.
Jump between article sections with imenu
:
The above image is with consult-imenu
. Any imenu
-based command will work (including just imenu
).
You can bookmark search results or individual articles.
(Not yet implemented)
Wombag uses a local sqlite database to store your Wallabag entries and Emacs as a front-end. Remote to local syncing is incremental and based on the last sync time. Local changes are propagated to the remote instantaneously and requires an Internet connection.
Comparison with wallabag.el
I needed something that could work smoothly with my decades-old reading list of 15K+ articles. I could not get wallabag.el
, a pre-existing Wallabag client for Emacs, to sync correctly or to work without freezing Emacs. This is a smaller, stripped down rewrite of the package – no code is shared except for a couple of face definitions.
wallabag.el
has many features Wombag doesn’t: annotation support, ivy integration, image caching, bulk action support via marking entries and more customization options.- Wombag has a 12-25x lower memory footprint, more consistent syncing and graceful error handling, better search and many quality of life features.
For more information on the differences see this thread.
- Deleting articles from the web interface or a different client will not cause them to be deleted from the local database when syncing. This is a known limitation of the Wallabag API. This can be done by doing a full (as opposed to incremental) sync, which Wombag does not (officially) support. Note that all local changes (including deletions) are always reflected server-side.
- Removing tags is not implemented due to Wallabag API issues.
- Damon Chan for writing wallabag.el, the inspiration for this package.
- Chris Wellons for writing Elfeed, the other inspiration for this package. He also authored
emacsql
, which Wombag uses.