I’ve been using Sascha Ißbrücker’s extension for linkding with my own instance for a while now, and while it’s simple and works great, there’s one thing that always frustrated me: the popover window closes the moment you click outside of it, erasing what you’ve entered.
Obviously, this will only be of use to people who:
- Have a linkding server
- Use Firefox or Chrome for general browsing
If you fit the target audience, read on!
Picture: you’re adding a bookmark, you’ve filled in the title and tags, maybe added some notes, and then you realize you need to copy something from the current page. Or maybe you want to paste some text from another window. The moment you click away to grab that text, poof — the popover closes and you lose everything you’ve typed.
So I created bt-linkding, a fork that opens the bookmark panel in a persistent popup window instead of the default toolbar popover. The window stays open until you explicitly click Save, Update, or Cancel. No more accidentally dismissing the window and losing your changes.
This means you can freely navigate away from the bookmark panel to copy text from the current page, paste from another window, or do whatever else you need to do. Your work stays put until you’re ready to save it.
The extension keeps all the features from the original like tag autocomplete, automatic page description detection, keyboard shortcuts (Alt+Shift+L to bookmark the current tab), and Omnibox search (type ld in the address bar). It just fixes that one annoying behavior.
Building and installing
Right now, the extension isn’t available in the browser stores (though I’ve submitted it to both Firefox and Chrome, but this is my first time submitting to either, so no promises about when or if it’ll be available there). For now, you’ll need to build and install it manually.
The process is pretty straightforward. First, clone the repo and install dependencies:
Then build for your target browser. Firefox and Chrome require different background script formats, so you need to use the right build command:
# For Firefox
npm run build:firefox
# For Chrome
npm run build:chrome
This updates the manifest.json file for the target browser. Once that’s done, you can load it as an unpacked extension.
Installing in Firefox
After running npm run build:firefox, open Firefox and navigate to about:debugging. Click “This Firefox” in the sidebar, then click “Load Temporary Add-on…”. Navigate to the project root directory and select any file in the extension (or just the manifest.json file). The extension will load and you’re good to go.
Installing in Chrome
After running npm run build:chrome, open Chrome and navigate to chrome://extensions/. Enable “Developer mode” (toggle in the top right), then click “Load unpacked”. Navigate to the project root directory and select it. The extension will load immediately.
What’s next
I’ve packaged the extension for both stores (npm run package:firefox and npm run package:chrome create the zip files), and I’ve submitted it to both. But since this is my first time going through the submission process for either store, I’m not making any promises about availability or timing. For now, building from source is the way to go.
If the popover closing unexpectedly is a nit for you as well, give this fork a try. The persistent window makes a world of difference when you’re trying to add bookmarks with content from multiple sources.
Full instructions and code are on GitHub.