Skip to content

chenyanming/wallabag.el

Repository files navigation

README

https://melpa.org/packages/wallabag-badge.svg

Table of Contents

Description

Emacs Wallabag client.

images/homepage.png

images/paw.png

Features

  • Request all entries
  • Request all tags
  • Add tags for one entry
  • Delete tag for one entry
  • Request format for one entry
  • Add entry (Support from eaf browser or elfeed or org-protocol)
  • Insert entry with provided html (Support from eaf browser or elfeed or org-protocol)
  • Delete entry
  • Copy as org/markdown/org-protocol links
  • Offline database (Sqlite)
  • Full update
  • Sidebar supported
  • Select with Ivy/Consult
  • sync with all clients (mobile, web, browser extension etc)
  • Beautify: Support shrface
  • Real time search and filtering (space separated)
  • Annotation: Support paw
  • Cache support: Saved placed/AI Summary Cache
  • Org Protocol Support

Installation and Configuration

This project relies on emacs-request and emacsql. Please install them in advanced.

git clone https://github.com/chenyanming/wallabag.el.git ~/.emacs.d/lisp/wallabag/

Melpa

It’s available on Melpa :

M-x package-install wallabag

require

(add-to-list 'load-path "~/.emacs.d/lisp/wallabag/")
(require 'wallabag)
(setq wallabag-host "https://xx.xx.xx") ;; wallabag server host name
(setq wallabag-username "xx") ;; username
(setq wallabag-password "xx") ;; password
(setq wallabag-clientid "xx") ;; created with API clients management
(setq wallabag-secret "xx") ;; created with API clients management
(setq wallabag-search-print-items '("title" "domain" "tag" "reading-time" "date")) ;; control what content should be show in *wallabag-search*
(setq wallabag-search-page-max-rows 32) ;; how many items shown in one page

use-package (load-path)

(use-package wallabag
  :defer t
  :load-path "~/.emacs.d/lisp/wallabag/"
  :config
  (setq wallabag-host "https://xx.xx.xx") ;; wallabag server host name
  (setq wallabag-username "xx") ;; username
  (setq wallabag-password "xx") ;; password
  (setq wallabag-clientid "xx") ;; created with API clients management
  (setq wallabag-secret "xx") ;; created with API clients management
  (setq wallabag-search-print-items '("title" "domain" "tag" "reading-time" "date")) ;; control what content should be show in *wallabag-search*
(setq wallabag-search-page-max-rows 32) ;; how many items shown in one page
  ;; (setq wallabag-db-file "~/OneDrive/Org/wallabag.sqlite") ;; optional, default is saved to ~/.emacs.d/.cache/wallabag.sqlite
  )

use-package (Straight)

(use-package wallabag
  :straight (:host github :repo "chenyanming/wallabag.el" :files ("*.el" "*.alist" "*.css")))

Doom Emacs (package!)

(package! wallabag :recipe (:host github :repo "chenyanming/wallabag.el" :files ("*.el" "*.alist" "*.css")))

Store sensitive credentials in auth-sources

It is insecure to store your sensitive credentials such as the wallabag password and client secret in plain text, and especially if you want to be upload it to public servers. You can use Emacs’ built-in auth-sources library for GPG-encrypted storage of your secrets.

Create an encrypted ~/.authinfo.gpg file with the lines:

machine wallabag domain "https://example.com" user "xxx" password "xxx" clientid "xxx" client-secret "xxx"

Wallabag will get the credentials when needed without saving them in memory.

You can also hardcode wallabag-host, wallabag-username, wallabag-password, wallabag-clientid, wallabag-secret but it is less secure.

Image Caching

Wallabag will not download the images, but using Emacs disk caching capability. Setting url-automatic-caching non-nil causes documents to be cached automatically.

(setq url-automatic-caching t)

Retrieve new entries after M-x wallabag

(add-hook 'wallabag-after-render-hook 'wallabag-search-update-and-clear-filter)

Use org-protocol to save page

Add wallabag org protocol by running:

(wallabag-org-setup-org-protocol)

Create a bookmarklet with:

Use AI to generate summary

M-x wallabag-summary ;; or press ?

Wallabag will use gptel to generate the summary overlay into the begining of the article.

images/summary.gif

Keybindings

Start with M-x wallabag. For the first time you connect to server, you need to press u to synchronize.

Functions can be used outside wallabag related modes

wallabagEnter *wallabag-search* buffer.
wallabag-findSelect wallabag entries from a list with ivy.
wallabag-full-updatePerform a full database update. It can always keep the local database updated.
wallabag-request-tokenRequest a new token.
wallabag-add-entryAdd one entry to wallabag server, with URL and TAGS
wallabag-insert-entryInsert an entry to wallabag server with current buffer content (behavior may be changed in the future)
wallabag-request-new-entriesRequest the new entries in the background.
wallabag-request-and-synchronize-entriesRequest and synchronize entries, controlled by wallabag-number-of-entries-to-be-synchronized.

wallabag-search-mode

<RET>wallabag-viewView the wallabag entry.
vwallabag-viewView the wallabag entry.
Vwallabag-browse-urlBrowse the url of current wallabag entry.
owallabag-original-entryOpen the original html rendered wallabag entry.
s (non-evil), /(evil)wallabag-search-live-filterFilter the *wallabag-search* buffer.
qwallabag-search-quitQuit *wallabag-entry* then *wallabag-search* and *wallabag-sidebar*.
g (non-evil), r(evil)wallabag-search-refresh-and-clear-filterRefresh wallabag and clear the filter keyword.
G (non-evil), R(evil)wallabag-search-clear-filterClear the filter keyword.
uwallabag-search-update-and-clear-filterRequest new entries, clear the filter keyword, and update wallabag-search.
Uwallabag-search-synchronize-and-clear-filterSynchronize entries, clear the filter keyword, and update wallabag-search.
mwallabag-mark-and-forwardMark entry and forward.
<DEL>wallabag-unmark-and-backwardUnmark entry and backword.
awallabag-add-entryAdd an entry.
dwallabag-delete-entryDelete an entry.
n(non-evil), j(evil)wallabag-next-entryMove to next entry.
p(non-evil), k(evil)wallabag-previous-entryMove to previous entry.
w(non-evil), y(evil)wallabag-org-link-copyCopy marked entries as org links.
twallabag-add-tagsAdd tags (seperated by comma) to entry at point.
Twallabag-remove-tagRemove one tag from list.
wallabag-toggle-sidebarToggle sidebar.
xwallabag-update-entry-archiveToggle archive (Read/Unread).
fwallabag-update-entry-starredToggle star (favorites).
iwallabag-update-entry-titleUpdate title.
Iwallabag-update-entry-origin_urlUpdate origin url (from where you found it).

wallabag-entry-mode

rwallabag-viewRefresh wallabag entry.
M-xwallabag-browse-urlBrowse the url of current wallabag entry.
owallabag-original-entryOpen the original html rendered wallabag entry.
qwallabag-entry-quitQuit *wallabag-entry*.
mouse-1wallabag-mouse-1Browse the url.
retwallabag-retBrowse the url.

wallabag-sidebar-mode

wallabag-toggle-sidebarToggle sidebar.
<RET>wallabag-sidebar-find-tagFilter by tag at point.
g (non-evil), r(evil)wallabag-search-clear-filterClear the filter keyword.
G (non-evil), R(evil)wallabag-search-clear-filterClear the filter keyword.
nwallabag-sidebar-find-next-tagFilter by next tag.
pwallabag-sidebar-find-previous-tagFilter by previous tag.
qwallabag-sidebar-quitQuit sidebar.

About

Emacs wallabag client - A Read It Later/Web Archiving Solution in Emacs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Contributors 3

  •  
  •  
  •