{"id":13585723,"url":"https://github.com/balta2ar/brotab","last_synced_at":"2025-05-15T05:07:33.479Z","repository":{"id":37715840,"uuid":"100093863","full_name":"balta2ar/brotab","owner":"balta2ar","description":"Control your browser's tabs from the command line","archived":false,"fork":false,"pushed_at":"2025-01-22T20:03:13.000Z","size":845,"stargazers_count":422,"open_issues_count":65,"forks_count":35,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-14T22:15:04.352Z","etag":null,"topics":["automation","browser","browser-extension","chrome-extension","cli","command-line","command-line-tool","commandline","firefox","firefox-extension","javascript","productivity","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","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/balta2ar.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,"zenodo":null}},"created_at":"2017-08-12T06:26:09.000Z","updated_at":"2025-04-13T15:56:38.000Z","dependencies_parsed_at":"2024-05-19T23:27:33.829Z","dependency_job_id":"b34b3e30-52b8-4d8b-9992-e002770fb577","html_url":"https://github.com/balta2ar/brotab","commit_stats":{"total_commits":215,"total_committers":6,"mean_commits":"35.833333333333336","dds":0.06046511627906981,"last_synced_commit":"619fed2bf5a6d97e5424762482cdb5a52679f5a5"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balta2ar%2Fbrotab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balta2ar%2Fbrotab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balta2ar%2Fbrotab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balta2ar%2Fbrotab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/balta2ar","download_url":"https://codeload.github.com/balta2ar/brotab/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"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":["automation","browser","browser-extension","chrome-extension","cli","command-line","command-line-tool","commandline","firefox","firefox-extension","javascript","productivity","python"],"created_at":"2024-08-01T15:05:06.493Z","updated_at":"2025-05-15T05:07:28.452Z","avatar_url":"https://github.com/balta2ar.png","language":"Python","readme":"# BroTab\n\n![GitHub](https://img.shields.io/github/license/balta2ar/brotab)\n![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/balta2ar/brotab)\n[![PyPI version](https://badge.fury.io/py/brotab.svg)](https://badge.fury.io/py/brotab)\n![Mozilla Add-on](https://img.shields.io/amo/v/brotab)\n![Chrome Web Store](https://img.shields.io/chrome-web-store/v/mhpeahbikehnfkfnmopaigggliclhmnc)\n\nControl your browser's tabs from the terminal.\n\n## About\n\n```txt\nNo command has been specified\nusage: bt [-h] {move,list,close,activate,search,open,words,text,html,dup,windows,clients} ...\n\nbt (brotab = Browser Tabs) is a command-line tool that helps you manage browser tabs. It can\nhelp you list, close, reorder, open and activate your tabs.\n\npositional arguments:\n  {move,list,close,activate,active,search,index,open,words,text,html,dup,windows,clients,install}\n    move                move tabs around. This command lists available tabs and runs\n                        the editor. In the editor you can 1) reorder tabs -- tabs\n                        will be moved in the browser 2) delete tabs -- tabs will be\n                        closed 3) change window ID of the tabs -- tabs will be moved\n                        to specified windows\n    list                list available tabs. The command will request all available\n                        clients (browser plugins, mediators), and will display\n                        browser tabs in the following format:\n                        \"\u003cprefix\u003e.\u003cwindow_id\u003e.\u003ctab_id\u003e\u003cTab\u003ePage title\u003cTab\u003eURL\"\n    close               close specified tab IDs. Tab IDs should be in the following\n                        format: \"\u003cprefix\u003e.\u003cwindow_id\u003e.\u003ctab_id\u003e\". You can use \"list\"\n                        command to obtain tab IDs (first column)\n    activate            activate given tab ID. Tab ID should be in the following\n                        format: \"\u003cprefix\u003e.\u003cwindow_id\u003e.\u003ctab_id\u003e\"\n    active              display active tabs for each client/window in the following\n                        format: \"\u003cprefix\u003e.\u003cwindow_id\u003e.\u003ctab_id\u003e\"\n    search              Search across your indexed tabs using sqlite fts5 plugin.\n    query               Filter tabs using chrome.tabs api.\n    index               Index the text from browser's tabs. Text is put into sqlite\n                        fts5 table.\n    open                open URLs from the stdin (one URL per line). One positional\n                        argument is required: \u003cprefix\u003e.\u003cwindow_id\u003e OR \u003cclient\u003e. If\n                        window_id is not specified, URL will be opened in the active\n                        window of the specifed client\n    navigate            navigate to URLs. There are two ways to specify tab ids and\n                        URLs: 1. stdin: lines with pairs of \"tab_id\u003ctab\u003eurl\" 2.\n                        arguments: bt navigate \u003ctab_id\u003e \"\u003curl\u003e\", e.g. bt navigate b.20.1\n                        \"https://google.com\" stdin has the priority.\n    update              Update tabs state, e.g. URL. There are two ways to specify\n                        updates: 1. stdin, pass JSON of the form: [{\"tab_id\":\n                        \"b.20.130\", \"properties\": {\"url\": \"http://www.google.com\"}}]\n                        Where \"properties\" can be anything defined here:\n                        https://developer.mozilla.org/en-US/docs/Mozilla/Add-\n                        ons/WebExtensions/API/tabs/update Example: echo\n                        '[{\"tab_id\":\"a.2118.2156\",\n                        \"properties\":{\"url\":\"https://google.com\"}}]' | bt update 2.\n                        arguments, e.g.: bt update -tabId b.1.862\n                        -url=\"http://www.google.com\" +muted\n    words               show sorted unique words from all active tabs of all\n                        clients. This is a helper for webcomplete deoplete plugin\n                        that helps complete words from the browser\n    text                show text from all tabs\n    html                show html from all tabs\n    dup                 display reminder on how to close duplicate tabs using\n                        command-line tools\n    windows             display available prefixes and window IDs, along with the\n                        number of tabs in every window\n    clients             display available browser clients (mediators), their\n                        prefixes and address (host:port), native app PIDs, and\n                        browser names\n    install             configure browser settings to use bt mediator (native\n                        messaging app)\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --target TARGET_HOSTS\n                        Target hosts IP:Port\n```\n\n## Demo [TBD]\n\nFeatures to show:\n\n* list tabs\n* close multiple tabs (fzf)\n* move tabs, move, same window\n* move tabs, move, different window\n* move tabs, move, different browser (NOT IMPLEMENTED)\n* move tabs, close\n* words, complete in neovim (integration with coc, ncm2, deoplete)\n* open tabs by url\n* open tab by google query, search (should be extendable, NOT IMPLEMENTED)\n* integration with fzf:\n  * activate tab\n  * close tabs\n* integration with rofi:\n  * activate tab\n  * close tabs\n* integration with albert\n  * index text of available tabs (requires sqlite 3.25, fts5 plugin)\n  * search a tab by text in albert\n* show duplicate tabs and close them\n\n## Installation\n\n1. Install command-line client:\n```\n$ pipx install brotab        # preferred method, if pipx not installed: $ sudo apt install pipx\n$ uv tool install brotab     # alternative\n$ pip install --user brotab  # alternative\n$ sudo pip install brotab    # alternative\n```\n2. Install native app manifests: `bt install`\n3. Install Firefox extension: https://addons.mozilla.org/en-US/firefox/addon/brotab/\n4. Install Chrome (Chromium) / Brave extension: https://chrome.google.com/webstore/detail/brotab/mhpeahbikehnfkfnmopaigggliclhmnc/\n5. Enjoy! (try `bt clients`, `bt windows`, `bt list`, `bt words`)\n\n## Build, test and manual installation\n\nsee [DEVELOPMENT.md](DEVELOPMENT.md)\n\n## Related projects\n\n* [TabFS](https://github.com/osnr/TabFS) -- mounts tabs info a filesystem using FUSE\n* [dudetab](https://github.com/CRImier/dudetab) -- collection of useful scripts on top of brotab\n* [ulauncher-brotab](https://github.com/brpaz/ulauncher-brotab) -- Ulauncher extension for brotab\n* [cmp-brotab](https://github.com/pschmitt/cmp-brotab) -- brotab completion for nvim-cmp\n* [tab-search](https://github.com/reblws/tab-search) -- shows a nice icon with a number of tabs (Firefox)\n* [tab_wrangler](https://github.com/doctorcolossus/tab_wrangler) -- a text-based tab browser for tabaholics\n* [vimium-c](https://github.com/gdh1995/vimium-c) -- switch between tabs/history, close tabs with shift-del\n\n## Author\n\nYuri Bochkarev\n\n## License\n\nMIT\n\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalta2ar%2Fbrotab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbalta2ar%2Fbrotab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalta2ar%2Fbrotab/lists"}