Something went wrong. Try again.
Open Pulp (GNOME RSS) links into a dedicated Chromium tab group — Nix flake + MV3 extension
Something went wrong. Try again.
Nix 44%
Shell 34%
JavaScript 20%
HTML 2%
<1%
README.md
pulp-tab-group #
Open links from Pulp (GNOME RSS reader) into a dedicated Chromium tab group named Pulp.
Pulp only knows webbrowser.open(url). Chromium has no CLI for tab groups. This flake bridges them:
Pulp ──$BROWSER──► pulp-open-url-flatpak ──host──► pulp-open-url
│
▼
chrome-extension://…/open.html?url=…
│
▼
MV3 extension → tab group "Pulp"
Install #
# profile
nix profile add 'git+https://tangled.org/nandi.uk/pulp-tab-group'
# or one-shot
nix run 'git+https://tangled.org/nandi.uk/pulp-tab-group#setup'
nix run 'git+https://tangled.org/nandi.uk/pulp-tab-group' -- 'https://example.com'
Local checkout:
nix build .#
nix run .#setup
One-time Chromium step #
- Open
chrome://extensions - Enable Developer mode
- Load unpacked → the extension directory:
- From the package:
$(nix build --print-out-paths .#)/share/pulp-tab-group/extension - Or after Home Manager activation:
~/.local/share/pulp-tab-group/extension
- From the package:
- Confirm the id is
baodhkncmldphoeohjmkdjdghgieniaj
(pinned via thekeyfield inmanifest.json)
Wire Pulp (flatpak) #
pulp-tab-group-setup
# or: nix run .#setup
This sets a user flatpak override:
BROWSER→pulp-open-url-flatpakflatpak-spawn --hosttalk name so the sandbox can reach the host opener
Fully quit and restart Pulp, then press o (Open in Browser) on an article.
Undo:
pulp-tab-group-setup --undo
Home Manager #
{
inputs.pulp-tab-group.url = "git+https://tangled.org/nandi.uk/pulp-tab-group";
# …
home-manager.users.you = {
imports = [ inputs.pulp-tab-group.homeModules.default ];
# if the overlay is not applied:
# programs.pulp-tab-group.package = inputs.pulp-tab-group.packages.${pkgs.system}.default;
nixpkgs.overlays = [ inputs.pulp-tab-group.overlays.default ];
programs.pulp-tab-group.enable = true;
};
}
Activation will:
- Put
pulp-open-urlonPATH - Sync the extension to
~/.local/share/pulp-tab-group/extension - Apply the Pulp flatpak override (
setupFlatpak = trueby default)
You still need the one-time Load unpacked in Chromium (Chrome does not allow declarative unpacked install without enterprise policy).
Package layout #
| Path | Role |
|---|---|
bin/pulp-open-url |
Host opener → extension landing page |
bin/pulp-open-url-flatpak |
Sandbox wrapper (flatpak-spawn --host) |
bin/pulp-tab-group-setup |
Flatpak override helper |
share/pulp-tab-group/extension/ |
Chromium MV3 extension |
share/pulp-tab-group/ext_id |
Stable extension id |
Customize #
| Knob | How |
|---|---|
| Group title / color | extension/background.js → GROUP_TITLE, GROUP_COLOR |
| Chromium binary | PULP_TAB_GROUP_BROWSER |
| Profile directory | PULP_TAB_GROUP_PROFILE (default Default) |
| Extension id | PULP_TAB_GROUP_EXT_ID |
Why not pure CLI? #
Chromium has no --tab-group=… switch (issue 40876419). The extension uses chrome.tabs + chrome.tabGroups after a tiny chrome-extension:// hop so only Pulp-originated opens are grouped — not every external link.
License #
MIT