123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1" />
-
- <link rel="stylesheet" href="../style.css#" type="text/css" />
- <title></title>
- <script type="text/javascript">
- function findLang(){
- let href = location.href;
- for(let i=href.length-1;i>0;i--){
- if('/'==href.charAt(i) && '/'==href.charAt(i-3))
- return i;
- }
- return 0;
- }
- function nav2(page){
- let i = findLang();
- location.href = location.href.substring(0,i+1)+page;
- }
- function nav2Lang(lang){
- let i = findLang();
- let href = location.href;
- location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
- }
- </script>
- </head>
- <body>
- <header class='header'>
- <a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
-
- <nav>
- </nav>
- </header>
- <br />
-
- <div class="container">
- <h1 class="title">
- <br>
- <span class="subtitle"></span>
- </h1>
- <ul class="tags">
-
- </ul>
- <h3 id="ebrowserhttpsgithubcomtorappinfoebrowser-keyboard-friendly-minimal-suckless-web-browser"><a href="https://github.com/torappinfo/ebrowser">Ebrowser</a>: keyboard-friendly minimal suckless web browser</h3>
- <p>Ebrowser is designed with the philosophy of <a href="https://github.com/torappinfo/uweb">Android uweb browser</a> (<a href="https://gitlab.com/jamesfengcao/uweb">gitlab</a>).</p>
- <ul>
- <li>lightweight (less than 20k bytes) without bundled electron.</li>
- <li>much less memory footprint than edge/chrome browser and highly performant.</li>
- <li>keyboard friendly with vim-style keymaps and command line support in address bar.</li>
- <li>global redirection to bypass censorship.</li>
- <li>user scripts at will. Ex. pressing "tr" to translate the page (need mapkeys.json config).</li>
- <li>customizable.</li>
- </ul>
- <p>Note: Usually electron apps are heavyweight as they use browsers for simple things. Ebrowser uses core chromium effectively and very lightweight. Recommend to install electron separately.</p>
- <h4 id="install-for-windows-macos-and-linux">Install (for Windows, MacOS and Linux)</h4>
- <p>Install ebrowser with nodejs installed</p>
- <pre><code>npm install ebrowser
- </code></pre>
- <p>Run ebrowser</p>
- <pre><code>electron ~/node_modules/ebrowser
- </code></pre>
- <h4 id="key-shortcuts">Key shortcuts</h4>
- <ul>
- <li>CTRL+C: stop loading</li>
- <li>CTRL+G: address bar to show page url</li>
- <li>CTRL+L: focus to address bar</li>
- <li>CTRL+T: new Tab</li>
- <li>CTRL+SHIFT+T: restore closed Tab</li>
- <li>CTRL+TAB: switch to next tab</li>
- <li>CTRL+SHIFT+TAB: switch to previous tab</li>
- <li>CTRL+W: close Tab</li>
- <li>CTRL+<-: go backward</li>
- <li>CTRL+->: go forward</li>
- <li>CTRL+SHIFT+R: enable global redirection ("gredirect.json")</li>
- <li>CTRL+R: disable global redirection</li>
- <li>ESC: remove focus. similar to vi normal mode.</li>
- <li>F5: page refresh/reload</li>
- <li>F12: devtools</li>
- </ul>
- <h4 id="address-bar-commands">Address bar commands</h4>
- <ul>
- <li>"/" for find-in-page</li>
- <li>":" for address bar commands
- <ul>
- <li>ac [bookmark/history path w/o ext] : load ".rec" file for autocomplete.</li>
- <li>b [bookmarkfilename w/o ext] : bookmark current page in file.</li>
- <li>bml [filename w/o extension]: load/execute the javascript file.</li>
- <li>cert : allow invalid certificates w/o arguments, otherwise restore to default.</li>
- <li>clear : the arguments could be
- <ul>
- <li>cache : clear cache</li>
- <li>dns : clear dns cache</li>
- <li>storage: clear site storage data.</li>
- <li>{<a href="https://www.electronjs.org/docs/latest/api/session#sescleardataoptions">options</a>}</li>
- </ul>
- </li>
- <li>ext [extension path]: load unpacked Chrome extension.</li>
- <li>nc/uc : No Cookie forwarding/Use Cookie forwarding with global redirection.</li>
- <li>nh/uh for No/Use url history.</li>
- <li>nj/uj for No/Use external Javascript files.</li>
- <li>nr/ur for No/Use "redirect.json" for domain redirection.</li>
- <li>np : no proxy</li>
- <li>up [proxyName] : use proxy. privous proxy or the first proxy in proxy.json w/o [proxyName].</li>
- <li>ua [useragentName] : set user agent for future tabs. default user agent w/o arguments.</li>
- <li>pdf [filename w/o extension] {<a href="https://www.electronjs.org/docs/latest/api/web-contents#contentsprinttopdfoptions">options</a>} : print to PDF file. All arguments are optional; empty option "{}" to capture long screenshot as vector graphics.</li>
- </ul>
- </li>
- <li>":!" address bar commands</li>
- </ul>
- <h4 id="commands-in-no-focus-mode-this-mode-is-similar-to-vi-normal-mode">Commands in no-focus mode (this mode is similar to vi Normal mode)</h4>
- <p>Pressing "ESC" to enter no-focus mode if not sure.</p>
- <ul>
- <li>":" for address bar commands</li>
- <li>"/" for find-in-page with address bar</li>
- <li>"!" for ":!" address bar commands</li>
- </ul>
- <p>The other commands are defined in "mapkeys.json", which will map keys to address bar commands.</p>
- <h4 id="configuration-files">Configuration files</h4>
- <ul>
- <li>"config": lines of address bar commands.</li>
- <li>"search.json": search engines as shortcut-queryUrl pairs.</li>
- <li>"default.autoc": predefined strings for address bar auto completion.</li>
- <li>"gredirect.json": global redirection urls as array of urls</li>
- <li>"redirect.json": domain-replacementDomain pairs, default to be applied.</li>
- <li>"mapkeys.json": keys-addressbarCommands pairs. The addressbar commands are multiple lines of address bar command separated by "\n".</li>
- <li>"proxy.json": name-<a href="https://www.electronjs.org/docs/latest/api/structures/proxy-config">ProxyConfig</a> pairs</li>
- <li>"uas.json" : name-useragent pairs</li>
- </ul>
- <h4 id="new-usages">New usages</h4>
- <ul>
- <li>
- <p>Vector designing with web tech to replace Adobe Illustrator/Inkscape.</p>
- <ul>
- <li>
- <p>Design with web tech.</p>
- </li>
- <li>
- <p>Printing to pdf with customized paper size.</p>
- </li>
- <li>
- <p>Magnify the pdf paper size to the required size.</p>
- </li>
- </ul>
- <p>OR</p>
- <ul>
- <li>Adjust window width and use addressbar command line ":Pdf {}" to export vector graphics.</li>
- <li>Use imageMagick to convert to any other vector graphics format.</li>
- </ul>
- </li>
- </ul>
- </div>
- <p>Last Modified: 15 June 2024<br>
- <br>
- <pre></pre>
- </p>
- <script id='jsgiscus'
- src='https://giscus.app/client.js'
- data-repo="torappinfo/uweb"
- data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
- data-category="Announcements"
- data-category-id="DIC_kwDOEgNLGc4CQjsh"
- data-mapping="title"
- data-strict="0"
- data-reactions-enabled="1"
- data-emit-metadata="0"
- data-input-position="top"
- data-theme="light"
- data-lang="en"
- data-loading="lazy"
- crossorigin="anonymous" async>
- </script>
- <footer class="site-footer">
- <div class="container">
- © 2018-2024 Richard H. Cao
- </div>
- </footer>
- <!-- This document is licensed under the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at <https://www.gnu.org/licenses/>. -->
- </body>
- </html>
|