Dragger
pendingby Ariestar
Drag and drop any block (paragraphs, headings, lists, etc.) to rearrange content like Notion.
Dragger
Drag and drop any block to rearrange content in Obsidian β just like Notion.
Features
- π§± Block-level drag & drop β paragraphs, headings, lists, tasks, blockquotes, callouts, tables, code blocks, math blocks
- π Nested drag β horizontal position controls indent level; vertical position controls insertion row
- π Multi-line selection drag β long-press or click to select a range, then drag as a group
- π¨ Customizable handles β 4 icon styles (dot / grip-dots / grip-lines / square), adjustable size, color, and horizontal offset
- π Visual drop indicator β glowing line shows exactly where the block will land
- π± Mobile support β works on Android (tested)
Installation
Community Plugins
Open Settings β Community plugins β Browse, search Dragger, and install.
BRAT (Beta)
- Install the BRAT plugin
- In BRAT settings, click Add Beta Plugin and enter:
Ariestar/obsidian-dragger - Enable the plugin in Settings β Community plugins
Manual
Download main.js, manifest.json, and styles.css from the latest release, then copy them into:
<your-vault>/.obsidian/plugins/dragger/
Restart Obsidian and enable the plugin.
Usage
- Hover on the left edge of any block to reveal the drag handle
- Drag the handle to the target position β a glowing indicator shows where the block will be inserted
- Release to drop the block into place
Nested lists & blockquotes: move the cursor horizontally while dragging to control indent level.
Multi-line selection: long-press (touch) or click multiple handles to select a range, then drag the entire selection.
Mobile text long-press drag: when enabled, long-press a text line or rendered block content to drag a single block directly without reaching for the left handle.
π‘ Tip: Enable line numbers in Obsidian settings for a better experience β the handle appears right at the line-number gutter.
Settings
| Setting | Description | Default |
|---|---|---|
| Handle color | Follow theme accent or pick a custom color | Theme |
| Handle visibility | Hover / Always visible / Hidden | Hover |
| Handle icon | β Dot / β Ώ Grip-dots / β° Grip-lines / β Square | Dot |
| Handle size | 12 β 28 px | 16 px |
| Handle horizontal offset | Shift handle left (β80) or right (+80) px | 0 px |
| Indicator color | Follow theme accent or pick a custom color | Theme |
| Multi-line selection | Enable range-select-then-drag workflow | On |
| Mobile text long-press drag | On mobile, long-press a text line or rendered block content to drag a single block directly | On |
| Cross-file drag | Allow dragging blocks into another open file editor | Off |
| Drag source visual style | Shared style set used by drag-source and list-drop highlights (Outline only / Subtle highlight / Filled highlight) | Subtle highlight |
| Drag source highlight | Toggle highlight for the block being dragged | On |
| List drop highlight | Toggle highlight for list drop target area | On |
Compatibility
- Obsidian β₯ 1.0.0
- Desktop (Windows, macOS, Linux) + Mobile (Android tested)
Development
npm install
npm run dev # watch mode with hot reload
npm run build # production build
npm run test # run Vitest suite (116 tests)
npm run typecheck # TypeScript type checking
Pre-review checks
Run these checks before pushing to ensure local results match AutoReview:
npm install
npm run lint:review
npm run typecheck
npm run test
lint:review is configured with --max-warnings=0, so CI/AutoReview blocker rules are enforced locally.
License
Contributing
PRs and issues are welcome!
If this plugin helps you, a β on GitHub would mean a lot.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.