.. -*- mode: rst -*- Pancake ======= This is a CLI/Emacs web/gopher/file browser. It utilizes pandoc and external downloaders such as curl, adding support for Gopher directories and plain text files, and invoking external applications (e.g., image and PDF viewers) depending on its configuration. User interaction capabilities are rather basic, as it is intended to be combined with software that provides better user interfaces – such as emacs, rlwrap, tmux, screen. Installation ------------ Retrieval ~~~~~~~~~ There is a few ways to get a recent version of pancake: - source and binary distributions: https://defanor.uberspace.net/projects/pancake/ - git repository: https://git.uberspace.net/pancake/ - github: https://github.com/defanor/pancake/ Pancake ~~~~~~~ ``cabal install`` would build and install pancake and its documentation. Alternatively, basic Debian packages and binary releases are available. Emacs interface ~~~~~~~~~~~~~~~ ``M-x package-install-file RET /path/to/pancake.el RET``. To set it as your default emacs browser:: (require 'pancake) (setq browse-url-browser-function 'pancake) To load and show all images automatically (not just after saving them manually):: (add-hook 'pancake-display-hook 'pancake-load-images) Though it might be desirable to write a wrapper to only show those on specific websites, e.g. webcomics, and perhaps specific images only. Commands -------- :quit or EOF: quit pancake, cleaning the cache :[: back :]: forward :reload config: reload config :help: show a help message :?: show current URI :RET (empty): show the next 2/3 of a page, if pagination is enabled :: follow an URI, possibly relative to the current one : : same as above, but explicitly set a document type (html, txt, org, markdown, etc) :[,]: follow a link :,: reload current document :save [ ]: retrieve data and save it :save [,][ ]: save linked data :save ,[ ]: save current document : : run a query using a shortcut defined in the configuration (e.g., search) :set width[ ]: set terminal/window width manually pancake-mode provides additional aliases and commands, see built-in emacs documentation (``C-h m``) for those. Configuration ------------- Default configuration will be written into XDG configuration directory, and would look approximately like this (slightly simplified):: externalViewers: png: xdg-open "${FILE}" hs: emacsclient -n "${FILE}" indentDivs: false commands: gopher: torify curl "${URI}" ssh: scp "${URI_REGNAME}:${URI_PATH}" /dev/stdout unclutter: duckduckgo: ^https://duckduckgo\.com/lite/\?q= defaultCommand: ! 'curl --compressed -4 -L -w " -pancake- uri: %{url_effective} type: %{content_type} " "${URI}"' referenceDigits: 'rstwfpxcvaqzdgb' shortcuts: g: https://m.gutenberg.org/ebooks/search.mobile/?query= ddg: https://duckduckgo.com/lite/?q= wt: https://en.m.wiktionary.org/w/index.php?search= wa: web-archive:///?url= wp: https://en.m.wikipedia.org/wiki/Special:Search?search= gp: gopher://gopherpedia.com:70/7/lookup? vs: gopher://gopher.floodgap.com/7/v2/vs? xiph: http://dir.xiph.org/search?search= historyDepth: 100 paginate: true Uncluttering ~~~~~~~~~~~~ XSLT can be used to extract useful data from HTML documents. In the above sample configuration, ``duckduckgo`` is defined along with an URI regex to determine when it should be applied, and the corresponding XSLT file should be in ``~/.config/pancake/unclutter/duckduckgo.xsl``:: DuckDuckGo


Uncluttering configurations for a few more websites can be found at . Screenshots ----------- .. image:: https://defanor.uberspace.net/projects/pancake/gopher.png .. image:: https://defanor.uberspace.net/projects/pancake/web-gnu.png .. image:: https://defanor.uberspace.net/projects/pancake/emacs.png