{"id":14988815,"url":"https://github.com/torappinfo/ebrowser","last_synced_at":"2025-04-12T00:33:17.084Z","repository":{"id":238766951,"uuid":"797229953","full_name":"torappinfo/ebrowser","owner":"torappinfo","description":"EBrowser: minimal suckless keyboard-friendly web browser based on chromium","archived":false,"fork":false,"pushed_at":"2025-04-06T08:11:43.000Z","size":422,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T09:20:57.501Z","etag":null,"topics":["cli","command-line","configurable","lightweight","minimal","productivity","shortcuts","suckless","userscript","web-browser"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torappinfo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-07T12:49:43.000Z","updated_at":"2025-04-06T08:11:46.000Z","dependencies_parsed_at":"2024-05-10T01:45:46.757Z","dependency_job_id":"d43ef46a-595a-45eb-aa60-3ed63374737c","html_url":"https://github.com/torappinfo/ebrowser","commit_stats":{"total_commits":273,"total_committers":1,"mean_commits":273.0,"dds":0.0,"last_synced_commit":"f7c0a4307e4fe5f37aca1d0278dc8548ae09c150"},"previous_names":["torappinfo/eweb","torappinfo/ebrowser"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torappinfo%2Febrowser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torappinfo%2Febrowser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torappinfo%2Febrowser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torappinfo%2Febrowser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torappinfo","download_url":"https://codeload.github.com/torappinfo/ebrowser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248501580,"owners_count":21114675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line","configurable","lightweight","minimal","productivity","shortcuts","suckless","userscript","web-browser"],"created_at":"2024-09-24T14:17:14.675Z","updated_at":"2025-04-12T00:33:17.052Z","avatar_url":"https://github.com/torappinfo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### [Ebrowser](https://github.com/torappinfo/ebrowser): keyboard-friendly minimal suckless web browser\nEbrowser is designed with the philosophy of [Android uweb browser](https://github.com/torappinfo/uweb) ([gitlab](https://gitlab.com/jamesfengcao/uweb)).\n\n- lightweight (less than 20k bytes) without bundled electron.\n- much less memory footprint than edge/chrome browser and highly performant.\n- keyboard friendly with vim-style keymaps and command line support in address bar.\n- \u003ca href=\"https://uweb.surge.sh/en/redirect/index.html#\" onclick=\"if(notRepo()){location='../redirect/index.html#';return false;}\"\u003eglobal redirection\u003c/a\u003e to bypass censorship.\n- user CSS/JS at will. Ex. pressing \"md\" in no-focus mode to preview markdown file.\n- global CSS/JS for all sites at will.\n- CSS/JS for domains, similar to [uweb](https://jamesfengcao.gitlab.io/uweb/en/sitejs/index.html), but use sitejs/[domain].js or sitecss/[domain].css, not [domain root].js/css.\n- customizable.\n\nNote: 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.\n\n#### Installing (for Windows, MacOS and Linux)\n##### Install with prebuilt binaries\nYou can find prebuilt binaries [here](https://github.com/torappinfo/ebrowser/releases).\n\n##### Install ebrowser and electron separatedly\n###### Install ebrowser\nEither download and unzip ebrowser package directly from any of npm mirror sites like [npmmirror](https://npmmirror.com/package/ebrowser) or with nodejs by\n\n    npm install ebrowser\n\nOR\n\n    git clone https://github.com/torappinfo/ebrowser\n\nOR \"git clone\"/download files directly from any of [mirror repositories](https://gitlab.com/jamesfengcao/uweb/-/blob/master/en/mirrors.md) and ebrowser is under the folder \"misc/ebrowser\".\n\n###### Install electron\nBefore you can run ebrowser, you need to install electron either with nodejs by\n\n    npm install electron\n\nOR download and unzip electron binary directly from [github](https://github.com/electron/electron/releases) or mirrors like [npmmirror](https://registry.npmmirror.com/binary.html?path=electron).\n\n###### Run ebrowser\n\n    electron ~/node_modules/ebrowser\n\nOR\n\n    electron [the-path-of-folder-with-downloaded-ebrowser-files]\n\n##### Update app quickly without updating chromium\nPressing \"Alt\" to show the menu bar and choose \"Check for updates\" under \"Help\". OR\n\nType \":update\" in the address bar and press \"enter\" key to update.\n\n#### Key shortcuts\n- Alt: show menu\n- ALT+\u003c-: go backward\n- ALT+-\u003e: go forward\n- CTRL+C: stop loading\n- CTRL+G: address bar to show page url\n- CTRL+L: focus to address bar\n- CTRL+T: new Tab\n- CTRL+SHIFT+T: restore closed Tab\n- CTRL+TAB: switch to next tab\n- CTRL+SHIFT+TAB: switch to previous tab\n- CTRL+W: close Tab\n- CTRL+SHIFT+R: enable global redirection (\"gredirect.json\")\n- CTRL+R: disable global redirection\n- ESC: remove focus. similar to vi normal mode.\n- F1: Help\n- F5: page refresh/reload\n- F12: devtools\n\n#### Address bar commands\nLike any popular browser, the very first word in address bar if defined in \"search.json\" identifies a search engine. Moreover, the address bar serves as command line interface:\n- \"/\" for find-in-page\n- \":\" for address bar commands\n  - ac [bookmark/history path w/o ext] : load \".rec\" file for autocomplete.\n  - b [bookmarkfilename w/o ext] : bookmark current page in file.\n  - bjs : Browser-level JavaScript execution.\n  - bml [filename w/o extension] [arguments...]: load/execute the javascript file.\n  - cert : allow invalid certificates w/o arguments, otherwise restore to default.\n  - clear : the arguments could be\n    - cache : clear cache\n    - dns : clear dns cache\n    - storage: clear site storage data.\n    - {[options](https://www.electronjs.org/docs/latest/api/session#sescleardataoptions)}\n  - exit : exit browser\n  - ext [extension path]: load unpacked Chrome extension.\n  - gr [gredirect index]: global redirection with corresponding index. Use the first global redirection url if no argument. Disable global redirection with any index out of the range.\n  - js [js code] : execute JS code at OS level. Note: \"javascript:...\" is special url and thus works in the current web page, while \":js ...\" commands can do any OS operations. \n  - nc/uc : No Cookie forwarding/Use Cookie forwarding with global redirection.\n  - nr/ur for No/Use \"redirect.json\" for domain redirection.\n  - np : no proxy.\n  - up [proxyName] : use proxy. privous proxy or the first proxy in proxy.json w/o [proxyName]. \":up\" command also disables global and domain redirections, which are not restored by \":np\".\n  - sys [command line] : execute system commands with url as one of arguments, and replace \"%cookie\" with corresponding one. Ex. \"curl\" commands for uploading.\n  - ua [useragentName] : set user agent for future tabs. default user agent w/o arguments.\n  - update [filename] : update the app w/o argument, otherwise retrive the [filename] from remote. The filename could be any file on [mirror sites](https://jamesfengcao.gitlab.io/uweb/en/readme/index.html) (this repository is part of it).\n  - pdf [filename w/o extension] {[options](https://www.electronjs.org/docs/latest/api/web-contents#contentsprinttopdfoptions)} : print to PDF file. All arguments are optional; empty option \"{}\" to capture long screenshot as vector graphics.\n- \"!\" address bar commands  \n  - \"!xx ...\" evaluates \"xx.js\" with the whole text as arguments[0] at OS level.\n  - \"!!xx ...\" evaluates \"xx.js\" with the whole text as arguments[0] at browser level, which could manipulate address bar etc.\n- i: internal urls, which will be consistent with [uweb](https://jamesfengcao.gitlab.io/uweb/en/links/index.html).\n  - \"i:0/js/xxx.js:[url]\" loads the \"[url]\" with bookmarklet \"js/xxx.js\".\n  - \"i:8d[url]\" fo force downloading\n\n#### Commands in no-focus mode (this mode is similar to vi Normal mode)\nPressing \"ESC\" to enter no-focus mode if not sure.\n- \":\" for address bar commands\n- \"/\" for find-in-page with address bar\n- \"!\" for \"!\" address bar commands\n\nThe other commands are defined in \"mapkeys.json\", which will map keys to address bar commands.\n\n#### Configuration files\n- \"config\": lines of address bar commands.\n- \"search.json\": \u003ca href=\"https://jamesfengcao.gitlab.io/uweb/en/search/index.html\" onclick=\"if(notRepo()){location='../search/index.html#';return false;}\"\u003esearch engines\u003c/a\u003e as shortcut-queryUrl pairs, where \"%s\" would be replaced by search query.\n- \"default.autoc\": predefined strings for address bar auto completion.\n- \"gredirect.json\": global redirection urls as array of urls\n- \"redirect.json\": domain-replacementDomain pairs, default to be applied.\n- \"mapkeys.json\": keys-addressbarCommands pairs. The addressbar commands are multiple lines of address bar command separated by \"\\n\".\n- \"proxy.json\": name-[ProxyConfig](https://www.electronjs.org/docs/latest/api/structures/proxy-config) pairs\n- \"uas.json\" : name-\u003ca href=\"https://jamesfengcao.gitlab.io/uweb/en/useragents/index.html\" onclick=\"if(notRepo()){location='../useragents/index.html#';return false;}\"\u003euseragent\u003c/a\u003e pairs.\n- Customized menus: json files as array of strings with menuitem name and address bar commands alternately.\n  - \"menu.json\": array of strings for \u003ca href=\"https://jamesfengcao.gitlab.io/uweb/en/urls/index.html\" onclick=\"if(notRepo()){location='../urls/index.html#';return false;}\"\u003euser-defined menus\u003c/a\u003e. The array has submenu name and address bar commands alternately. The odd-indexed strings are address bar commands with \"%u\" as the downloaded url.\n  - \"select.json\": to define menus for text selections. The odd-indexed strings are address bar commands with \"%s\" as the text selection.\n  - \"download.json\" : array of strings to define context menu and buttons for downloading dialog. The even-indexed strings are texts to show on the button. The odd-indexed strings are address bar commands with \"%u\" as the downloaded url.\n\n#### Javascript at three levels\n- Web page: url like \"javascript:\" or bookmarklet command \":bml\" runs in web page.\n- Browser (or renderer process) :\n  - \":bjs\" to execute the following js code at browser level.\n- OS level (or main process) : \":js\" to execute the following js code with all OS APIs available.\n  - \"!xx\" evaluates \"xx.js\" with arguments.\n\n##### examples for \":js\"/\":bjs\" commands\n\n    :js bJS=true //allow external Javascript files for web pages\n    :js bJS=false //disallow external Javascript files for web pages\n    :bjs bHistory=true //to record url history\n    :bjs bQueryHistory=true //to record query/command history\n\n#### New usages\n- Vector designing with web tech to replace Adobe Illustrator/Inkscape.\n  - Design with web tech.\n  \n  - Printing to pdf with customized paper size.\n  - Magnify the pdf paper size to the required size.\n\n  OR\n  \n  - Adjust window width and use addressbar command line \":Pdf {}\" to export vector graphics.\n  - Use imageMagick to convert to any other vector graphics format.\n\n#### License\nYou can copy or modify the code/program under the terms of the GPL3.0 or later versions.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorappinfo%2Febrowser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorappinfo%2Febrowser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorappinfo%2Febrowser/lists"}