{"id":22671674,"url":"https://github.com/whistlingzephyr/banger","last_synced_at":"2025-04-12T12:23:40.754Z","repository":{"id":62841744,"uuid":"562842889","full_name":"WhistlingZephyr/banger","owner":"WhistlingZephyr","description":"A Firefox extension that adds DuckDuckGo-like !Bangs to any search engine \u0026 more.","archived":false,"fork":false,"pushed_at":"2024-10-23T07:43:02.000Z","size":1963,"stargazers_count":30,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T07:04:43.706Z","etag":null,"topics":["bang","firefox","search"],"latest_commit_sha":null,"homepage":"","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/WhistlingZephyr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-11-07T11:27:31.000Z","updated_at":"2025-02-06T20:16:55.000Z","dependencies_parsed_at":"2024-10-23T11:53:16.184Z","dependency_job_id":null,"html_url":"https://github.com/WhistlingZephyr/banger","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhistlingZephyr%2Fbanger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhistlingZephyr%2Fbanger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhistlingZephyr%2Fbanger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WhistlingZephyr%2Fbanger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WhistlingZephyr","download_url":"https://codeload.github.com/WhistlingZephyr/banger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248565446,"owners_count":21125494,"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":["bang","firefox","search"],"created_at":"2024-12-09T16:16:03.264Z","updated_at":"2025-04-12T12:23:40.725Z","avatar_url":"https://github.com/WhistlingZephyr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Banger\n![Banger icon](static/icons/icon.svg)\n\nA Firefox extension that adds DuckDuckGo-like !Bangs to any search engine.\n\nInstall this extension at https://addons.mozilla.org/en-US/firefox/addon/banger/\n\n## FAQ\n\n### What are bangs?\nBangs are a feature of certain search engines (DuckDuckGo[^1.1], Brave Search[^1.2], Searx[^1.3], SearXNG[^1.4], You.com[^1.5], Kagi[^1.6]) that allow you to type shortcuts to quickly open up another search engine or website's URL. For example, you can type `!yt example` in DuckDuckGo to open up https://www.youtube.com/results?search_query=example, which is the page on YouTube for searching `example`; likewise, you can simply type `!yt` to open up https://www.youtube.com.\n\n[^1.1]: https://duckduckgo.com/bangs\n[^1.2]: https://search.brave.com/bangs\n[^1.3]: https://searx.github.io/searx/user/search_syntax.html\n[^1.4]: https://docs.searxng.org/user/index.html\n[^1.5]: https://about.you.com/bangs/\n[^1.6]: https://blog.kagi.com/kagi-features\n\n### What does banger do?\nBanger lets you execute !bangs client-side without having to send a request to a search engine's server each time you fetch a bang. It also allows you to use !bangs with any search engine rather than only those that support them. Also, it speeds your queries up because all the data is cached client-side and there are fewer redirects.\n\nBanger also goes a step further and adds exclusive new features such as allowing you to define your own !bangs and having site bangs and super lucky bangs.\n\n### Why do banger's search suggestions use Google?\nDue to a technical limitation with the Web Extensions API, Banger can't direct search suggestions to its engine of choice instead of choosing a permanent search suggestion provider. Which forces it to settle down with one search suggestion provider, and Google is the most popular choice.\n\n### What's a lucky bang?\nLucky bang is a bang without a specified search engine. Currently, it's only supported in DuckDuckGo (but with Banger you can use it anywhere) and you can use it by typing a `!` followed by a whitespace and your search query. It allows you to directly open up the first search result instead of having to manually click it after searching.\n\nOfficially, lucky bang doesn't have a name. Banger calls it `lucky bang` because of this feature similar to Google's `I'm feeling lucky` button.\n\nNote: You can configure what symbol to use for the Lucky Bang on Banger's settings page.\n\n### What's a site bang?\nA site bang is what Banger calls the bangs that you can execute inside your search engine rather than opening up the target site's search. It works by using the `site:` syntax[^2.1][^2.2] of search engines. By default, Banger uses the prefix `!@` for site bangs; So you can type `!@yt example` to search up `site:https://www.youtube.com example` on your preferred search engine. There's plans to support sub-domain modification later.\n\n[^2.1]: https://support.google.com/websearch/answer/2466433\n[^2.2]: https://help.duckduckgo.com/duckduckgo-help-pages/results/syntax/\n\n### What's a mixed site bang?\nA mixed site bang is what banger calls the bangs where you can execute a site bang inside another bang, such as using `!ddg@yt example` to search `site:https://www.youtube.com example` on DuckDuckGo.\n\n### What's a super lucky bang?\nA super lucky bang is what Banger calls the bang where you combine a site bang with the lucky bang. By default, Banger uses the prefix `!!` for super lucky bangs. So you can type `!!yt example` and it'll open the first search result of `example` from YouTube. Unfortunately, the search results are currently only fetched from DuckDuckGo as I'm not aware of other search engines allowing you to redirect to the first search result freely.\n\n### How to chain multiple bangs together?\nYou can chain multiple bangs, site bangs, mixed site bangs, or super lucky bangs together with Banger's multi-bang delimiter, which is `;` by default. So you can type `!yt;r` to open up YouTube and Reddit in their respective tabs, and `!yr;r example` to search `example` on both of them.\n\n### How can I chain multiple sites together in site bangs, mixed site bangs, and super lucky bangs?\nYou can chain multiple of them together using Banger's multi-site bang delimiter, which is `,` by default. So you can type `!@yt,r example` to search `site:https://www.youtube.com/ OR site:https://www.reddit.com/ example`. The `OR` operator here is supported by most search engines[^3.1][^3.2]; although as of 1st January 2023 Brave Search doesn't appear to support it yet.\n\n[^3.1]: https://support.google.com/websearch/answer/2466433?hl=en\n[^3.2]: https://support.microsoft.com/en-gb/topic/advanced-search-options-b92e25f1-0085-4271-bdf9-14aaea720930\n\n### Can I mix multi-bang and multi-site-bang chaining?\nYes, you can! Typing `!@yt,r;r example` searches `site:https://www.youtube.com/ | site:https://www.reddit.com/ example` in one tab and `site:https://www.reddit.com/ example` in another.\n\n### Can I add my own bangs?\nYou absolutely can! Head to Banger's options page and click on the `Custom Bangs` tab.\n\n### Can I use the symbols as postfixes rather than prefixes?\nYes, you can! Both postfix and prefix syntax is supported for bangs.\n\n### Can I place my bang at the end of my query rather than at the start?\nYes, you can! Although placing them in the middle isn't supported, unfortunately.\n\n### Will you add Chrome support?\nI've been considering it but I don't think I'll do it unless this extension gets enough users. Unfortunately, Chrome's addon marketplace requires a $5 registration fee for publishing extensions[^4.1]. I'm not planning on adding Chrome compatibility until I can publish it there.\n\n[^4.1]: https://developer.chrome.com/docs/webstore/register/\n\n### Will you add Edge support?\nIt's planned! Since Microsoft Edge's marketplace doesn't require any registration fees[^5.1], I've been considering porting Banger to support Edge and publishing it there. Although currently, it doesn't appear that Edge's marketplace has anything similar to [web-ext-submit](https://www.npmjs.com/package/web-ext-submit), so integrating it into GitHub Actions might not be feasible.\n\n[^5.1]: https://learn.microsoft.com/en-us/microsoft-edge/extensions-chromium/publish/create-dev-account\n\n## Roadmap\n\n- [x] Bangs with any search engine. (`!yt` to open YouTube, `!yt example` to search `example` in YouTube.)\n- [x] Quick client-side bang querying and caching.\n- [x] Support for all 13.5k DuckDuckGo bangs (https://duckduckgo.com/bangs). As well as the ability to switch to Brave Search's bangs instead. (https://search.brave.com/bangs)\n- [x] Lucky bangs. (`! example` to open up the first search result for `example`.)\n- [x] Site bangs. (`!@yt example` to search for `example` from YouTube on your preferred search engine.)\n- [x] Mixed site bangs. (`!g@yt example` to search for `example` from YouTube on Google.)\n- [x] Multi-bangs. (`!yt;r` to open up YouTube and Reddit in their respective tabs.)\n- [x] Multi-site bangs. (`!@yt,r example` to search for `example` from both YouTube and Reddit.)\n- [x] Custom bangs. (You can define your own bangs in settings.)\n- [x] Flexible syntax. (`!yt example`, `yt! example`, `example yt!`, `example !yt`)\n- [x] Customization options.\n- [x] Import/Export settings.\n- [ ] Negative site bangs.\n- [ ] Negative mixed site bangs.\n- [ ] Mobile support.\n- [ ] Custom bang sources.\n- [ ] Set default search engine to a bang.\n- [ ] Bang aliases.\n- [ ] Manifest V3.\n- [ ] Multi-parameter bangs.\n\n## Development\n\n### Installation\n\nYou must install the required npm packages and set up husky hooks to develop this repository.\n\n1. `pnpm install`\n2. `pnpm run prepare`\n\n### Build\n1. `pnpm run build`\n\n### Testing\n\n- `pnpm run test` to run all tests\n- `pnpm run watch` to watch source files\n- `pnpm run start` to start a Firefox instance with the current addon build temporarily installed\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhistlingzephyr%2Fbanger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhistlingzephyr%2Fbanger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhistlingzephyr%2Fbanger/lists"}