README file from
GithubPinned Tabs
Chrome-style pinned tabs for Obsidian — compact, recognizable, and harder to close by accident.
Created and maintained by @NameIsKyro.
Pinned Tabs uses Obsidian's native pinned state and presents pinned tabs as a compact, icon-first group at the left of each desktop tab bar. It keeps meaningful view icons, supports daily-note and per-file icons, and can protect pins from common accidental-close actions.
Features
- Compact fixed-width, icon-only pinned tabs with a one-click Chrome-style preset.
- Visual left grouping, optional group divider, and smooth FLIP animation.
- Native Graph and local Graph icons, plus selectable web-style alternatives.
- Native icons from plugin-provided views, including views such as Hearth.
- Automatic daily-note icons for common numeric and English date titles.
- Case-insensitive custom icon rules for exact note titles or vault paths.
- Any registered Obsidian/Lucide icon name or a single emoji.
- Optional delayed hover close button with adjustable delay and size.
- Protection from tab-menu bulk close, Cmd/Ctrl+W, Ctrl+F4, and middle-click.
- Active-tab highlight, accent line, hover expansion, theme-aware colors, and reduced-motion support.
- Declarative, searchable settings using the current Obsidian settings API.
- Pop-out-window handling with unload cleanup.
Installation
Community Plugins
This option becomes available after the plugin is accepted into Obsidian's Community Plugins directory:
- Open Settings → Community plugins.
- Select Browse and search for Pinned Tabs.
- Select Install, then Enable.
Until it is listed, use a prerelease or manual installation.
Manual installation
-
Download
compact-pinned-tabs-release.zipfrom the latest GitHub release. -
Extract it into the following folder inside the intended vault:
<vault>/.obsidian/plugins/compact-pinned-tabs/ -
Confirm the plugin folder directly contains:
main.js manifest.json styles.css -
Restart or reload Obsidian.
-
Open Settings → Community plugins and enable Pinned Tabs.
BRAT prereleases
Install BRAT, choose Add beta plugin, and enter:
NameIsKyro/compact-pinned-tabs
Usage
Pin the current tab in any of these ways:
- Right-click its tab and select Obsidian's native Pin action.
- Run Pin and compact current tab from the command palette.
- Use the optional pin button in the left ribbon.
The tab keeps Obsidian's native pinned state, becomes compact, and is visually grouped with other pins on the left when that setting is enabled. Click a pin to activate it, hover for its normal tooltip, or drag tabs using Obsidian's native tab controls.
For a daily note, enable title detection and choose its icon. For an exact
custom note, open Settings → Pinned Tabs → Custom file icons, add
an entry, and provide either a title such as Home or a vault path such as
Dashboards/Home.md. Exact path rules are evaluated before title rules and
custom rules take priority over daily-note detection.
Commands
No command has a default hotkey. Assign shortcuts under Settings → Hotkeys if wanted.
| Command | Behavior |
|---|---|
| Toggle pin for current tab | Pins an unpinned current tab or unpins a pinned current tab. Disabled when there is no usable current tab. |
| Pin and compact current tab | Applies Obsidian's native pinned state to the current tab. Disabled when there is no usable current tab. |
| Unpin current tab | Removes the native pinned state from the current tab. Disabled when there is no usable current tab. |
| Close every unpinned tab | Closes every unpinned root tab while retaining pinned tabs. |
| Close unpinned siblings in current group | Closes unpinned siblings while retaining the current tab and every pin. |
| Focus next pinned tab | Activates the next pinned tab in the current tab group. |
| Focus previous pinned tab | Activates the previous pinned tab in the current tab group. |
| Apply Chrome-style preset | Applies the recommended compact layout, motion, icon, and close-protection values. |
Settings reference
| Setting | Behavior |
|---|---|
| Apply Chrome-style preset | Applies the recommended 44 px icon-only layout, hidden close button, left grouping, motion, and protection values. |
| Pinned tab icon | Selects the fallback icon for compact Markdown and other tabs. |
| Keep plugin and view icons | Preserves icons supplied by non-Markdown views. |
| Graph view icon | Uses the native Graph icon or a selectable network-style icon. |
| Detect daily notes by title | Detects common valid date-title formats. |
| Daily-note icon | Sets a registered icon name or single emoji for detected daily notes. |
| Custom file icons | Adds, removes, and reorders exact title/path icon rules. |
| Icon size | Sets the compact icon size from 12–24 px. |
| Icon color | Uses the theme accent, normal text, or muted text color. |
| Compact tab width | Sets compact pinned-tab width from 36–120 px. |
| Icon-only pinned tabs | Hides the tab title while compact. |
| Show pin button in left ribbon | Shows or hides the ribbon shortcut. |
| Keep pinned tabs on the left | Visually orders pins before normal tabs in each group. |
| Show pinned group divider | Draws a subtle divider after the final pin. |
| Hide Obsidian pin badge | Hides the redundant native pinned-status badge. |
| Accent pinned tabs | Adds a subtle theme-accent marker. |
| Highlight active pinned tab | Gives the selected pin a stronger theme-aware background. |
| Show close button on hover | Enables the plugin's delayed, explicit close control. |
| Close button hover delay | Sets the pointer dwell time from 0–1500 ms. |
| Close button size | Sets the close icon size from 10–18 px. |
| Expand tab on hover | Temporarily reveals the title of a compact tab. |
| Expanded hover width | Sets temporary expanded width from 120–280 px. |
| Animate size changes | Animates compact and expanded widths. |
| Animate tabs moving left | Animates a newly pinned tab into the visual pinned group. |
| Move animation speed | Sets movement duration from 100–500 ms. |
| Protect from bulk close | Preserves pins during supported tab-menu close-all, close-others, and close-after actions. |
| Protect keyboard close | Blocks Cmd/Ctrl+W and Ctrl+F4 while the active tab is pinned. |
| Protect against middle-click close | Ignores middle-click on pinned tabs. |
| Restore defaults | Restores every setting to its default value. |
Keyboard behavior and accessibility
- The plugin registers no default hotkeys.
- Obsidian's normal Tab and arrow-key tab navigation remains available.
- Pinned tabs retain a visible keyboard-focus outline.
- When hover close is enabled, focusing a pinned tab reveals the real button so it can be reached with Tab and activated with Enter or Space.
- Cmd/Ctrl+W and Ctrl+F4 are blocked only when keyboard protection is enabled and the active tab is pinned.
- The close button includes the pinned tab's display name in its accessible label.
- The operating system's reduced-motion preference disables plugin motion.
Privacy and external services
- The plugin runs locally inside Obsidian.
- It contains no telemetry or analytics.
- It makes no network requests and transmits no filenames, paths, note content, or vault information.
- It requires no account, payment, subscription, external file access, or closed-source component.
- It never downloads or executes remote code.
The links and badges in this README are loaded by GitHub, not by the installed plugin.
Compatibility
- Minimum Obsidian version: 1.13.0.
- Desktop-only: yes. The plugin customizes the desktop workspace tab bar.
- Supported operating systems: Windows, macOS, and Linux versions capable of running the required Obsidian release.
- Mobile is intentionally unsupported and is not advertised.
- Light and dark themes use Obsidian CSS variables rather than fixed colors.
Known limitations
- The plugin maps each public workspace view to its corresponding desktop tab element. Major Obsidian tab-DOM changes may require a compatibility update.
- Themes or plugins that heavily replace tab-bar layout may conflict with the compact widths or visual left ordering.
- The additional bulk-close menu guard currently recognizes Obsidian's English tab-menu labels. The native pinned state remains in use in every locale, but the extra interception layer may not recognize translated labels.
- Visually grouping pins on the left does not rewrite Obsidian's private workspace model.
- A view without a valid native icon falls back to the configured pinned icon.
Troubleshooting
The plugin does not appear
Confirm the folder name is exactly compact-pinned-tabs and that main.js,
manifest.json, and styles.css are directly inside it. Reload Obsidian and
check that the installed Obsidian version is at least 1.13.0.
A pinned tab is not compact
Confirm the tab is actually pinned in Obsidian, then toggle the plugin off and on. Test with Obsidian's default theme and temporarily disable other plugins that modify tabs.
A custom icon is not applied
Use an exact title or vault-relative path. Paths are normalized and matched case-insensitively. Verify the icon name exists in Obsidian's current icon set, or use a single emoji.
The close button does not appear
Enable Show close button on hover, then keep the pointer over the pin for the configured delay. Keyboard users can focus the pinned tab and press Tab.
When reporting a visual problem, include the Obsidian version, plugin version, operating system, theme, conflicting tab-related plugins, exact reproduction steps, and a clear description of the incorrect result.
Development
Requirements: Node.js 20 or newer and npm.
npm ci
npm run dev
npm run dev watches the source modules and rebuilds main.js. Reload
Obsidian after a code change.
Before a pull request or release, run:
npm test
npm run build
npm audit
npm run checkperforms strict TypeScript checking.npm run lintruns the current Obsidian ESLint recommendations.npm run validateverifies manifest, package, version, license, and required repository metadata.npm run buildcreates a minified productionmain.js.
Generated main.js is ignored by Git and belongs in GitHub releases, not the
source repository. See CONTRIBUTING.md and
RELEASING.md. For a click-by-click first publication, use the
beginner publishing guide.
Support
Use GitHub Issues for reproducible bugs and focused feature requests. Follow SECURITY.md for private vulnerability reports.
Changelog
See CHANGELOG.md.
License
Released under the MIT License.
Copyright © 2026 NameIsKyro.