{"id":16609407,"url":"https://github.com/artbit/bash-bookmarks","last_synced_at":"2026-04-18T20:03:54.221Z","repository":{"id":209907152,"uuid":"725236664","full_name":"ArtBIT/bash-bookmarks","owner":"ArtBIT","description":"CLI-first plain-text URL bookmarks manager","archived":false,"fork":false,"pushed_at":"2025-10-19T15:07:44.000Z","size":231,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-04T13:06:11.617Z","etag":null,"topics":["bash","bash-script","bookmark-manager","bookmarks","bookmarks-manager","cli","plaintext"],"latest_commit_sha":null,"homepage":"","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/ArtBIT.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-29T18:11:20.000Z","updated_at":"2026-01-05T02:32:39.000Z","dependencies_parsed_at":"2023-12-16T00:12:59.043Z","dependency_job_id":"b03a16ff-e379-47b0-88a0-79dabcc2ff1d","html_url":"https://github.com/ArtBIT/bash-bookmarks","commit_stats":{"total_commits":36,"total_committers":1,"mean_commits":36.0,"dds":0.0,"last_synced_commit":"c6e842d518a37222b888ff458bbdc975d393abce"},"previous_names":["artbit/bash-bookmarks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ArtBIT/bash-bookmarks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtBIT%2Fbash-bookmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtBIT%2Fbash-bookmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtBIT%2Fbash-bookmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtBIT%2Fbash-bookmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArtBIT","download_url":"https://codeload.github.com/ArtBIT/bash-bookmarks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArtBIT%2Fbash-bookmarks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31982756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["bash","bash-script","bookmark-manager","bookmarks","bookmarks-manager","cli","plaintext"],"created_at":"2024-10-12T01:29:00.345Z","updated_at":"2026-04-18T20:03:54.204Z","avatar_url":"https://github.com/ArtBIT.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bash-Bookmarks\n[![GitHub license](https://img.shields.io/github/license/ArtBIT/bash-bookmarks.svg)](https://github.com/ArtBIT/bash-bookmarks) [![GitHub stars](https://img.shields.io/github/stars/ArtBIT/bash-bookmarks.svg)](https://github.com/ArtBIT/bash-bookmarks)  [![awesomeness](https://img.shields.io/badge/awesomeness-maximum-red.svg)](https://github.com/ArtBIT/bash-bookmarks)\n\nCLI-first plain-text bookmarks manager.\n\n# Purpose\n\nOver the years I've accumulated over 10k bookmarks in Pocket. Navigating that amount of items is slow, and incredibly hard to maintain. Being a CLI-first person, I've decided to create a simple bookmarks manager that will allow me to quickly search and open bookmarks from the terminal.\n\nTo make it work, I've created a custom protocol handler for `bookmarks://...` uri scheme, and a bookmaklet that will allow me to quickly add bookmarks to the database from the browser. I've later made a [Firefox Add-On](https://github.com/ArtBIT/bash-bookmarks-firefox-add-on) to make things even more seamless.\n\nA really handy feature of bash-bookmarks is the ability to bookmark local files or filepaths. This is especially useful when you have a lot of projects and you want to quickly navigate to a specific file.\n\nFor an example, I have a bookmark called `bash-bookmarks` which points to the `README.md` file in this repository. To open that file, I simply type `be bash-bookmarks` in the terminal and the file will open in my default editor.\n\n```\nba --uri ../bash-bookmarks/README.md --title \"bash-bookmarks\"\n\n# opens the URI using the system handler\nbo bash-bookmarks\n```\n\n# Usage\n\n```\n# Bookmark Documents folder\ncd ~/Documents\nba .\n\n# Bookmark project folder\ncd ~/code/github/bash-bookmarks\nba .\n\n# quickly cd into ~/Documents\nb Doc\n\n# come back to bash-bookmarks\nb bash-b\n\n```\n\n# Import\n\nYou can export your browser bookmarks to a [bookmarks HTML file](https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa753582%28v%3Dvs.85%29) and then import the bookmarks to bash-bookmarks.\n\n```\nb import bookmarks.html\n```\n\nIt is good idea to first do a dry run\n```\nb --dry-run import bookmarks.html\n```\n\nOr to import it to a completely separate bookmarks directory\n```\nb --dir some_temp_dir import bookmarks.html\n```\n\n# Configuration\n\nYou can create an `.env` file in `$HOME/.bookmarks.env` where you can specify your prefered configuration:\n\n```\n# Specify the directory where you want to store your bookmarks\nBOOKMARKS_DIR=\"${HOME}/bookmarks\"\n\n# Specify the editor that you want to use to edit your bookmarks\nMARKDOWN_EDITOR=\"vim\"\n\n# Specify the viewer that you want to use to view your bookmarks\nMARKDOWN_VIEWER=\"glow\"\n\n# Specify the browser that you want to use to open your bookmarks\nBOOKMARKS_BROWSER=\"firefox-nightly\"\n```\n\nYou can have multiple `.env` files and pass the one that you want to use via the `--env` param:\n\n```\nb --env ~/bookmarks-work.env\n```\n\n```\nb --env ~/bookmarks-local.env\n```\n\n\n\n# Tips:\n\nBe sure to source the `.bookmarksrc` file in your `.bashrc` or `.zshrc` file. This will define some handy aliases and functions.\n\nTo quickly bookmark the current directory by typing `ba .` or `ba $(pwd)`.\n\nYou can export your Pinterest pins to a bookmarks.html file using a script like [PinBack](https://github.com/pinbackit/pinback), and then import it to bash-bookmarks.\n\n\n\n# Demo\n\n[![asciicast](https://asciinema.org/a/czTpD0PD9kA620X49oaj3iYbt.svg)](https://asciinema.org/a/czTpD0PD9kA620X49oaj3iYbt)\n\n# Dependencies\n\n- [fzf](https://github.com/junegunn/fzf)\n- [glow](https://github.com/charmbracelet/glow)\n- [fd](https://github.com/sharkdp/fd)\n\n# Install\n\n```\nsudo make install\n```\n\n## Configure `bookmarks://` protocol handler in Firefox \n\nGo to `about:config`\n\nSearch for `network.protocol-handler.expose.bookmarks`\n\nSelect `boolean`, add it, and set it to `false`. \n\nFirefox should now delegate this protocol handler to the system handler.\n\n## Configure `bookmarks://` protocol handler in Chrome\n\nGo to `chrome://settings/handlers`\n\nSearch for `bookmarks`\n\nSelect `bookmarks://` protocol handler and set it to `Always allow`\n\n# Uninstall\n\n```\nsudo make uninstall\n```\n\n\n# Bookmarklet\n\nTo add a bookmarklet to your browser, simply create a new bookmark and paste the following code into the URL field:\n\n```\njavascript:(function()%7Bfunction%20d(a%2Cc%2Cg)%7Bvar%20e%3Ddocument.createElement(a)%2Cb%3Bfor(b%20in%20c)if(%22style%22%3D%3Db)for(var%20f%20in%20c%5Bb%5D)0%3D%3Df.indexOf(%22--%22)%3Fe.style.setProperty(f%2Cc%5Bb%5D%5Bf%5D)%3Ae.style%5Bf%5D%3Dc%5Bb%5D%5Bf%5D%3Belse%20if(%22events%22%3D%3Db)for(var%20h%20in%20c%5Bb%5D)e.addEventListener(h%2Cc%5Bb%5D%5Bh%5D)%3Belse%22innerHTML%22%3D%3Db%3Fe.innerHTML%3Dc%5Bb%5D%3A!0%3D%3D%3Dc%5Bb%5D%7C%7C!1%3D%3D%3Dc%5Bb%5D%3Fc%5Bb%5D%26%26e.setAttribute(b%2C%22%22)%3Ae.setAttribute(b%2Cc%5Bb%5D)%3Bg%26%26g.forEach(function(n)%7Breturn%20n%26%26e.appendChild(n)%7D)%3Breturn%20e%7Dfunction%20m()%7BsetTimeout(function()%7Bdocument.addEventListener(%22keydown%22%2Cp)%3Bdocument.body.removeChild(q)%7D%2C1E3)%7Dfunction%20k(a)%7Bvar%20c%3Da.name%2Cg%3Da.label%2Ce%3Da.value%2Cb%3Da.placeholder%2Cf%3Dvoid%200%3D%3D%3Da.type%3F%22text%22%3Aa.type%2Ch%3Dvoid%200%3D%3D%3Da.required%3F!1%3Aa.required%3Ba%3Dvoid%200%3D%3D%3Da.hidden%3F!1%3Aa.hidden%3Breturn%20d(%22div%22%2C%7B%7D%2C%5Ba%26%26d(%22label%22%2C%7B%22for%22%3Ac%2CinnerHTML%3Ag%7C%7Cc%7D)%2C!a%26%26d(%22label%22%2C%7B%22for%22%3Ac%2CinnerHTML%3Ag%7C%7Cc%7D)%2C!a%26%26d(%22input%22%2C%7Btype%3Af%2Cname%3Ac%2Cvalue%3Ae%2Cplaceholder%3Ab%2Crequired%3Ah%2Cstyle%3Ar%7D)%5D)%7Dfunction%20p(a)%7B%22Escape%22%3D%3Da.key%26%26m()%7Dvar%20r%3D%7Bpadding%3A%228px%22%2Ccolor%3A%22var(--fg)%22%2CbackgroundColor%3A%22var(--bg2)%22%2Cwidth%3A%22100%25%22%7D%2Cl%3D%7Bpadding%3A%228px%22%2Ccolor%3A%22var(--fg)%22%2CbackgroundColor%3A%22var(--bg3)%22%7D%3Bl%3Dd(%22form%22%2C%7Baction%3A%22bookmarks%3A%2F%2F%22%2Cmethod%3A%22get%22%2Ctarget%3A%22_blank%22%2Cevents%3A%7Bsubmit%3Am%7D%2Cstyle%3A%7Bpadding%3A%2232px%22%2Ccolor%3A%22var(--fg)%22%2CbackgroundColor%3A%22var(--bg)%22%2CborderRadius%3A%2210px%22%2Cwidth%3A%22400px%22%2Cheight%3A%22auto%22%2Cdisplay%3A%22flex%22%2CflexDirection%3A%22column%22%2CjustifyContent%3A%22space-around%22%2CalignItems%3A%22left%22%2CboxShadow%3A%220%200%2010px%20rgba(0%2C0%2C0%2C0.5)%22%7D%7D%2C%5Bd(%22h2%22%2C%7BinnerHTML%3A%22Add%20Bookmark%22%2Cstyle%3A%7Bcolor%3A%22var(--fg)%22%7D%7D)%2Ck(%7Blabel%3A%22Title%22%2Cname%3A%22title%22%2Cvalue%3Adocument.title%2Crequired%3A!0%7D)%2Ck(%7Blabel%3A%22URI%22%2Cname%3A%22uri%22%2Cvalue%3Adocument.URL%7D)%2Ck(%7Blabel%3A%22Category%22%2Cname%3A%22category%22%2Cvalue%3A%22unsorted%22%2Crequired%3A!0%7D)%2Ck(%7Blabel%3A%22Tags%22%2Cname%3A%22tags%22%2Cvalue%3A%22%22%2Cplaceholder%3A%22Separate%20tags%20with%20commas%22%7D)%2Cd(%22div%22%2C%7Bstyle%3A%7Bdisplay%3A%22flex%22%2CjustifyContent%3A%22space-around%22%2Cpadding%3A%228px%22%2CpaddingTop%3A%2216px%22%2Cwidth%3A%22100%25%22%7D%7D%2C%5Bd(%22input%22%2C%7Btype%3A%22submit%22%2Cvalue%3A%22Save%22%2Cstyle%3Al%7D)%2Cd(%22input%22%2C%7Btype%3A%22button%22%2Cvalue%3A%22Cancel%22%2Cstyle%3Al%2Cevents%3A%7Bclick%3Am%7D%7D)%5D)%5D)%3Bvar%20q%3Dd(%22div%22%2C%7Bstyle%3A%7Bposition%3A%22fixed%22%2Ctop%3A%220%22%2Cleft%3A%220%22%2Cright%3A%220%22%2Cbottom%3A%220%22%2CbackgroundColor%3A%22rgba(0%2C0%2C0%2C0.8)%22%2CzIndex%3A%229999%22%2Cdisplay%3A%22flex%22%2CjustifyContent%3A%22center%22%2CalignItems%3A%22center%22%2C%22--bg%22%3A%22%23eee%22%2C%22--bg2%22%3A%22%23fff%22%2C%22--bg3%22%3A%22%23ddd%22%2C%22--fg%22%3A%22%23111%22%2C%22--fg2%22%3A%22%23333%22%7D%7D%2C%5Bl%5D)%3Bdocument.addEventListener(%22keydown%22%2Cp)%3Bdocument.body.appendChild(q)%7D)()%3Bvoid+0\n```\n\n# Firefox Extension\n\nhttps://github.com/ArtBIT/bash-bookmarks-firefox-add-on/\n\nIf you source'd `.bookmarksrc` the server should auto-start, otherwise you need to start it via `bookmarks server`. The server is a HTTP server with a very simple API. \n- Search Endpoint `GET /search?format=json\u0026q=searchterm`\n- Add Endpoint `POST /add` which accepts a JSON payload containing `{url,title,category}`\n\nThe Firefox Add-On uses these two endpoints to automatically add bash-bookmark whenever a Firefox bookmark is created, and to suggest bookmarks directly from the address-bar by registering `bb` keyword, which when used in the address-bar, fetches the bookmarks results from the server.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartbit%2Fbash-bookmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartbit%2Fbash-bookmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartbit%2Fbash-bookmarks/lists"}