Kevin1k downloadsCreate customizable button panels for quick access to files, commands, links, and scripts.
<p>[<a href="https://github.com/TracingOrigins/obsidian-buttons-panel-plugin/blob/master/README.zh.md">中文</a> | English | <a href="https://github.com/TracingOrigins/obsidian-buttons-panel-plugin/blob/master/README.ru.md">Русский</a>]</p>
<p><a href="https://community.obsidian.md/plugins/buttons-panel" target="_blank">Buttons Panel</a> is a modern Obsidian plugin that lets you create a customizable button panel for quick access to files, commands, links, and scripts.</p>
🎯 Quick Access: Instantly open files, execute commands, visit links, or run scripts with a single click.
🎨 Icon Options: Search and preview from the Lucide icon library, plus support for custom SVG icons.
🏷️ Three View Modes: Switch between list, tabbed, and folder views.
📁 Folder View: Android-style folder grid with drag-and-drop, auto-expand on hover, pin to keep open, click-to-close, and editable folder names.
📁 Category Management: Organize buttons by category; reorder categories and buttons via long-press drag-and-drop.
⚙️ Flexible Configuration: Fully customizable panel layout, button styles, and animation effects.
📱 Cross-Platform: Works on all platforms supported by Obsidian (Windows, macOS, Linux, iOS, Android).
🌙 Theme Adaptation: Seamlessly adapts to Obsidian’s light and dark themes.
🔄 Live Updates: All changes take effect immediately—no restart required.
🛡️ Form Validation: Required fields (button name, file path, command ID, URL, folder, script name) are highlighted in red if empty for intuitive feedback.
🖱️ Interaction Mode: Three modes — Locked (view only), Sort (drag to reorder), Edit (create/edit/delete via context menu) — switchable from the top navigation bar.
🧭 Top Navigation Bar: Dropdown menus to quickly switch panel view, button style, and interaction mode; plus search and settings access.
🔍 Search Feature: The navigation bar includes a search function that filters categories and buttons in real-time for quick access.
🔗 Action Sequences: Configure multiple actions for a single button and execute them in order with one click.
main.js, manifest.json, and styles.css from Releases.buttons-panel folder under your Obsidian plugins directory (e.g. YourVault/.obsidian/plugins/buttons-panel/) and place the three files inside.TracingOrigins/obsidian-buttons-panel-plugin.Use the command palette (Ctrl+P) and run "Open buttons panel", or click the ribbon icon to quickly open the panel.
Click the settings button in the navigation bar, or go to Settings → Community Plugins → Buttons Panel.
templates/). The create file action uses templates from this path.scripts/). The run script action loads scripts from this path.{{DATE:YYYY-MM-DD}}), and content can use a fixed template.Click the edit button in the navigation bar to open a dropdown with three modes:
| Mode | Icon | Behavior |
|---|---|---|
| 🔒 Locked | lock |
View only — all interactions disabled (no drag, no context menu) |
| ↕️ Sort | arrow-up-down |
Long-press drag to reorder buttons and categories |
| ✏️ Edit | pencil |
Right-click / long-press menu to add, edit, copy, or delete |
Switch to folder view from the navigation bar or settings. Categories appear as folder tiles in a responsive grid.
| Feature | Description |
|---|---|
| Open/Close | Click a tile to expand; click outside, press ESC, or click blank space (configurable) to close |
| 📌 Pin | Click 📌 to lock — folder stays open until unpinned or you switch folders |
| Edit name | Click folder name to rename (configurable in settings) |
| Reorder folders | Long-press drag in sort mode |
| Cross-folder drag | Drag button out → auto-close → hover 0.6s on another tile → auto-expand → continue sorting |
| Auto-scroll | Drag near edges inside expanded folder to scroll |
When Sort mode is active and search is not active, long-press and drag to reorder (mouse long-press works on desktop too):
| Target | List view | Tabbed view | Folder view |
|---|---|---|---|
| Buttons | Long-press a button, then drag to reorder within a category; drag over another category's tab/zone to move across categories | Same; active tab's grid supports drag reorder | Drag within expanded folder or between folders; hover 0.6s over a tile to auto-expand |
| Categories | Long-press the category block (title or non-button area), then drag vertically to reorder | Long-press a tab, hold ~0.4s over another tab to confirm drop target, then release to reorder | Long-press a tile to reorder in grid |
In the button editor, select "Script" as the action type and choose or enter a script file name (.js only).
Script files must be placed in the folder specified in Path Config (e.g., scripts/).
Scripts must export an async function via module.exports:
```js
// scripts/hello.js
module.exports = async function (app, plugin, notice, obsidian) {
const { FuzzySuggestModal } = obsidian;
notice('Hello from script!');
}; ```
Or define the function first:
```js
// scripts/hello.js
module.exports = hello;
async function hello(app, plugin, notice, obsidian) {
const { Notice } = obsidian;
notice('Hello from script!');
}
```
app — The running obsidian.App instance for interacting with the vault, workspace, etc. Note: this is an instance, not obsidian.App (the class); do not use with new.plugin — The current plugin instance, for accessing plugin settings.notice — A convenience notification function, equivalent to new obsidian.Notice(msg).obsidian — The Obsidian module namespace, for destructuring classes like App, FuzzySuggestModal, Notice, etc.Example: Configure a button with "Run Command A → Run Command B → Open Link" actions, and they will execute in order with one click.
node --version), LTS version recommended.npm install to install dependencies.npm run dev to start development mode with live compilation (automatically deploys to test vault).npm run build to build the production version and deploy to test vault.npm run lint to check code quality..env file in the project root and add: VAULT_PATH=/path/to/your/vault.This project is licensed under the MIT License. See the LICENSE file for details.
If you find this plugin helpful, please consider:
This plugin uses icons from the open-source project Lucide, which is licensed under the ISC License.