{"id":27057763,"url":"https://github.com/dumbmachine/pbs","last_synced_at":"2025-04-05T11:33:10.844Z","repository":{"id":210759522,"uuid":"717851156","full_name":"DumbMachine/pbs","owner":"DumbMachine","description":"A browser extension with predictable keyboard navigation and command pallete","archived":false,"fork":false,"pushed_at":"2024-12-26T16:34:43.000Z","size":1997,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-26T17:25:37.856Z","etag":null,"topics":["browser","chrome","firefox"],"latest_commit_sha":null,"homepage":"https://github.com/dumbMachine/pbs/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DumbMachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-11-12T19:46:19.000Z","updated_at":"2024-09-15T18:11:45.000Z","dependencies_parsed_at":"2023-12-04T20:28:55.257Z","dependency_job_id":"fabd8db4-0472-421c-993b-aa44c42f5f3d","html_url":"https://github.com/DumbMachine/pbs","commit_stats":null,"previous_names":["dumbmachine/sequentialkeys"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumbMachine%2Fpbs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumbMachine%2Fpbs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumbMachine%2Fpbs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DumbMachine%2Fpbs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DumbMachine","download_url":"https://codeload.github.com/DumbMachine/pbs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247331963,"owners_count":20921846,"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":["browser","chrome","firefox"],"created_at":"2025-04-05T11:33:06.177Z","updated_at":"2025-04-05T11:33:10.827Z","avatar_url":"https://github.com/DumbMachine.png","language":"TypeScript","readme":"NOTE: Come back next week, under construction\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"public/pbs-abstract.png\" alt=\"logo\"/\u003e\n\u003c!-- \u003ch1\u003e\u003cb\u003eP\u003c/b\u003eredictable \u003cb\u003eB\u003c/b\u003erowser \u003cb\u003eS\u003c/b\u003ehortcuts\u003c/h1\u003e --\u003e\n\u003c/div\u003e\n\n## Predictable Browser Shortcuts\n\nPBS, the name could be better, is a browser extension does keyboard navigation / control of webpages in an opinionated way.\n\nThat opinion being: _**C**oncatenation of **F**irst **A**lphabets_ should be a good enough shortcut for most actions on webpages. So when hints are generated, they are generated such that you already know what they will be.\n\nIt was created to serve 3 simple needs:\n\n1. Eliminate mouse(🐁) usage\n2. Using keyboard to interact with a webpage is only fast if the hints generated for the elements are not prone to entropy.\n3. The shortcut hints can be plugged into another extension and then I could automate some testing at work ( thing AHK workflow to do CRUD ops on UI )\n\nAlso I lifted most of the code already from an abandoned project ( grease-monkey scripts via command pallete ). For something more stable and customizable, I would suggest:\n\n- [Surfingkeys](https://github.com/brookhong/Surfingkeys)\n- [vimium](https://github.com/philc/vimium)\n\n## 🎬 Demo\n\nhttps://github.com/DumbMachine/pbs/assets/23381512/6335d5b0-cdc7-4f52-aaee-40f6a23aa154\n\n## How does PBS work?\n\nWhile hints generated for UI elements of other extension are seemingly random\n\n| ![surfinkey-demo-1](/assets/image.png) |\n| :------------------------------------: |\n|     Hints generated by Surfingkeys     |\n\nthis extension instead uses first three letter of text associated with the element as the hint.\nIn case there are multiple copies of the 3 letter hint, then a number is added to the hint. The numbers will be governed by the order in which the elements occur.\n\n|  ![pbs-demo-1](/assets/image-1.png)   |\n| :-----------------------------------: |\n| **Hints generated by this extension** |\n\nIf no appropriate text-content can be found for a UI element, then a random generated sequence is used as a fallback.\n\n![Alt text](/assets/random-gen.png)\n\n## Getting Started:\n\nOnce you have the extension setup. Go to a webpage of your liking and use your first default shortcut.\n_Cheatsheet_ (⌘+.), to open modal with default shortcuts available to you on any webpage.\n\n\u003c!-- TODO: Image example --\u003e\n\n\u003c!-- hints tutorial --\u003e\n\n### Hints\n\nEnable `hints` mode, by pressing `f`. This should show a shortcut on most ui elements on the page.\n\n\u003c!-- TODO: Image example --\u003e\n\nOnce enabled, execute any combination of the keys visible ( there is a timeout of 1.5 seconds between each key stroke ) and should dispatch an interaction with element.\n\n\u003c!-- pallete tutorial --\u003e\n\n### Command pallete\n\ncan be used to quickly:\n\n1. Search browser history\n   https://github.com/DumbMachine/pbs/assets/23381512/0cb7396f-8dee-4bd3-8cfa-eac56b225fec\n\n2. Search and open an active tab\n   https://github.com/DumbMachine/pbs/assets/23381512/0f48524b-59bd-4fa3-976d-8f55666313a4\n\n3. Search browser bookmarks\n\n\u003c!-- TODO: Image example --\u003e\n\n## Keyboard Bindings\n\nThese keys will be configurable in a future release.\n\n| Keys  |      Shortcut       |                                         Description |\n| ----- | :-----------------: | --------------------------------------------------: |\n| `f`   |    Enable Hints     |      Enable hints on the current webpage. Will show |\n| `esc` |  Escape the modal   |         Close modal ( like palletes ) or undo hints |\n| `⌘+/` |    Open pallete     | A omnibar/cmd-pallete to search history/active-tabs |\n| `⌘+.` | See this cheatsheet |                 See a cheatsheet with all shortcuts |\n| `r`   |       Refresh       |                                refresh current page |\n| `j`   |     Scroll down     |                       scrolls the page a little bit |\n| `k`   |      Scroll up      |               same as above but different direction |\n| `g+g` |    Scroll to up     |        scrolls to the top on the scrolling document |\n| `⇧+g` |  Scroll to bottom   |     scrolls to the bottom of the scrolling document |\n\n, legend:\n\n- ⌘: meta key\n- ⇧: shift key\n\n## TODO:\n\n- [ ] Caret browsing: like hints but for setting the starting point of a text selection\n- [ ] Installation artifacts. The extension should be on the ff store soon.\n- [ ] Test if the extension works on chrome. I don't use chrome, so I dropped the test. Unless someone raises an issue, it'll remain a todo.\n\n\u003c!-- ## Installation:\n\n- Firefox 🦊:\n- Others: being a FF user, it's what I've used the most. Haven't tested much on chromium-based browsers. --\u003e\n\n### Install from Source\n\n\u003c!-- `npm run build:ff` to build the app. --\u003e\n\n`npm run build` to build the app.\nOn FF:\n\n1. Open Firefox\n2. Enter \"about:debugging\" in the URL bar\n3. Click \"Load Temporary Add-on\"\n4. Open `manifest.json` from the `./dist` folder, from where the build was start.\n\nOn Chrome:\n\n\u003c!-- `npm run build:chrome` to build the app. --\u003e\n\n`npm run build` to build the app.\n\n1. Navigate to chrome://extensions\n2. Toggle into Developer Mode\n3. Click on \"Load Unpacked Extension...\"\n4. Open `manifest.json` from the `./dist` folder, from where the build was start.\n\n## Security Concerns\n\nPBS generates hints by analyzing the content of webpages and monitoring keyboard inputs. The extension's command palette utilizes data such as bookmarks, history, and open tabs to provide efficient search results.\n\nI would recommend installing PBS directly from its source. So you can review the extension's code and modify permissions based on your security appetite.\n\nPBS is completely free and open source and does not store / capture any information from the extension ( not even analytics ). PBS will never receive your history or any other content from your usage.\n\n## FAQ\n\n### Disable the extension?\n\nClick on the PBS Icon in your Browser's toolbox. From there you can disable the extension and no keystrokes / hints / shortcuts will be tracked.\n\n### Disable the extension, only for a some websites?\n\nClick on the PBS Icon, while on the website, and toggle the `checkbox` next to the hostname.\nThis will stop the extension from listening for events on the website.\n\n### Why does it work the way it does?\n\nIt was mostly made to suit my needs, so it probably has some rough edges. If you have any feedback / ideas, feel free to reachout.\n\n## Release Notes\n\nSee [CHANGELOG](https://www.youtube.com/watch?v=dQw4w9WgXcQ) for the major changes in each release.\n\n## License\n\n`TODO`\n\n## Credits:\n\n- [Surfingkeys](https://github1s.com/brookhong/Surfingkeys): inspiration for the idea. also code for finding clickable UI elements\n\n- [github1s](https://github1s.com/): even after github's ui updates, this is hands down the best way of reading a repository.\n\n- [textstudio](https://www.textstudio.com): used to generate the icon\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdumbmachine%2Fpbs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdumbmachine%2Fpbs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdumbmachine%2Fpbs/lists"}