Floating Notes

by haotiencheng
5
4
3
2
1
Score: 51/100

Description

The Floating Notes plugin opens a separate floating editor window that can be shown or hidden on demand for quick note capture. It keeps the popout state intact, can stay above other apps and supports three ways to choose what appears in the window: the current note, one fixed note or a new timestamped note each time. The plugin also exposes more than one trigger path. You can run it from an in app command, an obsidian URI or a local HTTP endpoint, which makes external launchers and shell based shortcuts possible. It is built for desktop use.

Reviews

No reviews yet.

Stats

7
stars
947
downloads
2
forks
36
days
4
days
4
days
10
total PRs
0
open PRs
0
closed PRs
10
merged PRs
2
total issues
0
open issues
2
closed issues
60
commits

Latest Version

5 days ago

Changelog

What's Changed

Full Changelog: https://github.com/haotiencheng/obsidian-floating-notes/compare/1.8.0...1.8.1

README file from

Github

Floating Notes

Obsidian plugin listing

A lightweight Obsidian plugin that opens a floating popout window for instant note capture — inspired by Raycast Notes.

Listing: https://community.obsidian.md/plugins/floating-notes — or add it to Obsidian directly.

Why

Raycast Notes lets you jot down ideas instantly with a global hotkey and a clean, floating editor. macOS makes truly global hotkeys hard to wire up to a single Obsidian command, so this plugin combines:

  • An in-app command (Toggle floating notes) you can bind in Obsidian's hotkey settings
  • An obsidian://floating-notes URI handler you can trigger from Raycast / Shortcuts / Alfred for a system-wide hotkey
  • A loopback HTTP endpoint (http://127.0.0.1:51234/toggle) for shell scripts and other tools

The result: press one hotkey from anywhere, get a distraction-free Obsidian editor floating above your work, press again to hide it.

Features

  • Toggle popout — show / hide a native Obsidian editor window without losing state
  • Always on top — popout floats above other apps (optional)
  • Hide tab bar — strip the tab bar for a bare capture window (optional)
  • Side panels — two collapsible panels inside the popout, each running any installed view (file explorer, backlinks, a plugin's own sidebar view)
  • Keep the main window awake — render plugin content (Tasks, Dataview) in the popout while the main window is minimized (optional)
  • Auto-launch — the bundled script starts Obsidian if it isn't running, then toggles
  • Five capture modes
    • Current active note — opens whatever note you're viewing
    • Fixed note — always opens a specific note (e.g. Inbox.md)
    • New note every time — creates a fresh timestamped note in a folder
    • Today's daily note — opens (or creates) today's daily note
    • Plugin view — opens any registered view, e.g. Journal View or Calendar
  • Multiple triggers — Obsidian command, obsidian://floating-notes URI, or local HTTP endpoint

Installation

  1. Obsidian → Settings → Community plugins → Browse
  2. Search for Floating Notes
  3. Install, then Enable

Or open the listing in a browser and click Add to Obsidian.

Manual

  1. Download main.js, manifest.json and styles.css from the latest release
  2. Create a folder <your-vault>/.obsidian/plugins/floating-notes/
  3. Copy the files into that folder
  4. Enable Floating Notes in Settings → Community plugins

Build from source

git clone https://github.com/haotiencheng/obsidian-floating-notes.git
cd obsidian-floating-notes
npm install
npm run build

Then copy main.js and manifest.json into your vault's plugin folder.

Usage

In Obsidian (local hotkey)

Settings → Hotkeys → search Toggle floating notes → bind a key. No default hotkey is set.

This hotkey only fires when Obsidian is the active app. For a truly global hotkey, see below.

Global hotkey (system-wide)

Obsidian plugins can't register OS-level hotkeys directly (the only API that allows it, electron.remote.globalShortcut, is deprecated and forbidden by the community plugin guidelines). The standard workaround — used by QuickAdd and others — is to delegate to a system-wide launcher that triggers the plugin externally.

Floating Notes exposes two external triggers:

Trigger Effect
curl -s http://127.0.0.1:51234/toggle > /dev/null Recommended. Toggles the popout without activating the Obsidian app or raising the main window.
open "obsidian://floating-notes" Also toggles the popout, but opening an obsidian:// URI activates the Obsidian app on macOS, which briefly raises the main window.

Pair one of those triggers with the system-wide launcher of your choice.

Prerequisites
  1. Floating Notes is installed and enabled in Obsidian
  2. A system-wide launcher installed (Raycast, macOS Shortcuts, Alfred, Hammerspoon, Karabiner-Elements — pick one)
Recipes

Raycast (macOS — recommended)

  1. Create a file named floating-notes.sh anywhere you like (e.g. ~/raycast-scripts/) with this content:
    #!/bin/bash
    
    # @raycast.schemaVersion 1
    # @raycast.title Toggle Floating Notes
    # @raycast.mode silent
    # @raycast.icon 📝
    # @raycast.packageName Obsidian
    # @raycast.description Toggle the Obsidian Floating Notes popout window.
    
    PORT="${FLOATING_NOTES_PORT:-51234}"
    URL="http://127.0.0.1:${PORT}/toggle"
    
    toggle() { curl -fsS --max-time 2 "$URL" > /dev/null 2>&1; }
    
    toggle && exit 0
    
    # Obsidian is closed or still starting: launch it, then retry.
    open -a Obsidian > /dev/null 2>&1 || open "obsidian://" > /dev/null 2>&1
    
    deadline=$((SECONDS + 30))
    while [ "$SECONDS" -lt "$deadline" ]; do
      sleep 0.5
      toggle && exit 0
    done
    exit 1
    
  2. Make it executable: chmod +x ~/raycast-scripts/floating-notes.sh
  3. Raycast → Preferences → Extensions → Script Commands → Add Directory → pick the folder containing the script
  4. Open Raycast → search Toggle Floating Notes → click the gear (⌘ ⇧ ,) → Record Hotkey → press your combo

If you cloned this repo, skip steps 1–2 and point Raycast at the cloned folder — floating-notes.sh is already there.

The macOS recipes below use a bare curl, which toggles only when Obsidian is already running. For auto-launch, call the script instead of curl: ~/raycast-scripts/floating-notes.sh. Windows and Linux equivalents are further down.

macOS Shortcuts (built-in, no extras)

  1. Shortcuts app → + new shortcut, name it Floating Notes
  2. Add action Run Shell Script → paste:
    curl -s http://127.0.0.1:51234/toggle > /dev/null
    
  3. Shortcut Details (sidebar) → Add Keyboard Shortcut → press key combo

Alfred (Powerpack required)

  1. Workflows → + → Blank Workflow
  2. Right-click canvas → Triggers → Hotkey → set key
  3. Connect to Actions → Run Script (/bin/bash) → paste:
    curl -s http://127.0.0.1:51234/toggle > /dev/null
    

Hammerspoon (free, scriptable)

Add to ~/.hammerspoon/init.lua:

hs.hotkey.bind({"alt"}, "N", function()
  -- swap for os.getenv("HOME") .. "/raycast-scripts/floating-notes.sh" to auto-launch
  hs.execute("/usr/bin/curl -s http://127.0.0.1:51234/toggle")
end)

Reload config from the Hammerspoon menu bar icon.

Karabiner-Elements (free, low-level)

Save as ~/.config/karabiner/assets/complex_modifications/floating-notes.json, then enable it under Complex Modifications → Add predefined rule. The shell command is self-contained: it toggles the popout if Obsidian is running, otherwise launches Obsidian and retries for up to 30 seconds.

{
  "title": "Floating Notes",
  "rules": [
    {
      "description": "Toggle Obsidian floating notes",
      "manipulators": [
        {
          "type": "basic",
          "from": { "key_code": "n", "modifiers": { "mandatory": ["right_option"] } },
          "to": [
            {
              "shell_command": "PORT=\"${FLOATING_NOTES_PORT:-51234}\"; URL=\"http://127.0.0.1:${PORT}/toggle\"; toggle() { curl -fsS --max-time 2 \"$URL\" > /dev/null 2>&1; }; toggle && exit 0; open -a Obsidian > /dev/null 2>&1 || open 'obsidian://' > /dev/null 2>&1; deadline=$((SECONDS + 30)); while [ \"$SECONDS\" -lt \"$deadline\" ]; do sleep 0.5; toggle && exit 0; done; exit 1"
            }
          ]
        }
      ]
    }
  ]
}

Karabiner rejects unknown keys such as "//", so keep notes in the description field.

Raycast (Windows)

  1. Create a file named floating-notes.bat (e.g. in %USERPROFILE%\raycast-scripts\) with this content:
    @echo off >nul 2>&1
    chcp 65001 >nul 2>&1
    setlocal
    
    REM @raycast.schemaVersion 1
    REM @raycast.title Toggle Floating Notes
    REM @raycast.mode silent
    REM @raycast.icon 📝
    REM @raycast.packageName Obsidian
    REM @raycast.description Toggle the Obsidian Floating Notes popout window.
    
    set "URL=http://127.0.0.1:51234/toggle"
    
    curl.exe -fsS -m 2 -o nul "%URL%" >nul 2>&1 && exit /b 0
    
    REM Obsidian is closed or still starting: launch it, then retry for 30s.
    start "" "obsidian://"
    
    for /l %%i in (1,1,30) do (
      timeout /t 1 /nobreak >nul
      curl.exe -fsS -m 2 -o nul "%URL%" >nul 2>&1 && exit /b 0
    )
    
    exit /b 1
    
  2. Raycast → Preferences → Extensions → Script Commands → Add Directory → pick the folder containing the script
  3. Open Raycast → search Toggle Floating Notes → assign a hotkey

Windows (AutoHotkey v2 — alternative to Raycast)

!n:: {
    if Toggle()
        return
    Run("obsidian://")                      ; closed or still starting
    deadline := A_TickCount + 30000
    while (A_TickCount < deadline) {
        Sleep(500)
        if Toggle()
            return
    }
}

Toggle() {
    return RunWait('curl.exe -fsS -m 2 -o NUL "http://127.0.0.1:51234/toggle"', , "Hide") = 0
}

Linux (e.g. sxhkd)

Save this as ~/bin/floating-notes.sh and chmod +x it:

#!/bin/sh
URL="http://127.0.0.1:${FLOATING_NOTES_PORT:-51234}/toggle"

toggle() { curl -fsS --max-time 2 "$URL" > /dev/null 2>&1; }

toggle && exit 0

# Obsidian is closed or still starting: launch it, then retry.
(obsidian > /dev/null 2>&1 &) || xdg-open "obsidian://" > /dev/null 2>&1

i=0
while [ "$i" -lt 60 ]; do
	sleep 0.5
	toggle && exit 0
	i=$((i + 1))
done
exit 1

Then add to ~/.config/sxhkd/sxhkdrc:

alt + n
    ~/bin/floating-notes.sh

Upgrading

From 1.2.x to 1.3.x — the plugin update is automatic, but the trigger script is not. Your launcher runs your own copy of floating-notes.sh, so it keeps the old one-line curl until you replace it. Without that, everything still works except auto-launch.

If you cloned this repo and pointed your launcher at the clone:

git pull

If you copied the script somewhere (e.g. ~/scripts/floating-notes.sh), replace the body with the current version, keeping your own @raycast.* metadata lines so your recorded hotkey stays bound:

curl -fsSL https://raw.githubusercontent.com/haotiencheng/obsidian-floating-notes/main/floating-notes.sh \
  -o ~/scripts/floating-notes.sh
chmod +x ~/scripts/floating-notes.sh

Changed the port in settings? Export it for the script: FLOATING_NOTES_PORT=51235.

Settings

Setting Description Default
Capture mode What to show in the popout window Current active note
Fixed note path Path to the note (when mode is "Fixed note") Inbox.md
New note folder Folder for new notes (when mode is "New note every time") Inbox
Capture view Which view to open (when mode is "Plugin view"), from any installed view none
Reapply capture on show Reload the capture target every time the popout is shown, instead of keeping what was open last Off
Always on top Float popout above other windows On
Hide tab bar Hide the popout's tab bar (a 12px strip stays draggable) Off
Show side panels Collapsible panels on either side of the note in the popout Off
Left / right panel view Which view runs in each panel, from any installed view File explorer / Backlink
Keep the main window awake Stop Electron throttling the minimized main window, so plugin content still renders in the popout Off
Server port Local HTTP port for external triggers 51234

Notes

  • Desktop only. The plugin uses Electron and Node http APIs that aren't available on Obsidian Mobile.
  • The local HTTP server only accepts connections from 127.0.0.1.

Inspiration

Raycast Notes — a beautiful, instant note-taking experience via a global hotkey. Floating Notes brings that frictionless capture workflow into Obsidian.

License

MIT

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Actions URI
4 years ago by Carlo Zottmann
A plugin for Obsidian (https://obsidian.md) that adds additional `x-callback-url` endpoints to the app for common actions — it's a clean, super-charged addition to Obsidian URI.
Advanced URI
5 years ago by Vinzent
Advanced modes for Obsidian URI
Auto pair chinese symbol
5 years ago by renmu123
中文符号自动补齐
AutoPause
a month ago by ckep1
Allows only one audio track playing in Obsidian at a time, pausing the others.
Calculite
a year ago by Holo
Standard calculator plugin for Obsidian.
Callout Integrator
4 years ago by
A plugin for Obsidian to allow the integration of long blocks of text into callouts.
Capitaliser
6 months ago by Emanuel Oliveira
An Obsidian plugin that cycles text capitalisation (lowercase → UPPERCASE → Capitalise Each Word) using Shift+F3, just like Microsoft Word
Chorded Hotkeys
4 years ago by Trey Connor Meyers
Type multiple letters at the same time to trigger text insertion, template insertion, or command execution.
Code Editor Shortcuts
5 years ago by Tim Hor
Obsidian plugin to add keyboard shortcuts commonly found in code editors such as Visual Studio Code (vscode) or Sublime Text
Convert url to preview (iframe)
3 months ago by fhachez
Plugin for Obsidian.md to convert a selected URL to an iframe.
Custom Commands
a year ago by Staaaaaaaaaan
Create custom commands to be executed in the command palette, and by hotkey. Currently supports opening specific notes, creating notes, inserting snippets, and executing sequences of commands.
Custom list character
3 years ago by Lilian POULIQUEN
Custom list character is a simple plugin allowing you to choose which character to use when making bullet lists in Obsidian.
Cycle In Sidebar
4 years ago by Houcheng
Cycle through tabs of left/ right sidebar panel
Duplicate line
a year ago by Marcin Sztolcman
Plugin for Obsidian: duplicate current line, or selection.
Editing Mode Hotkey
2 years ago by Signynt
Obsidian plugin to change the default editing mode (between Live Preview and Source) using a command or hotkey
Editor Commands Remap
5 years ago by cactus5
Obsidian plugin to map hotkeys to editor commands
File path to URI
6 years ago by Michal Bureš
Convert file path to uri for easier use of links to local files outside of Obsidian
Font Size Adjuster
3 years ago by Ryota Ushio
An Obsidian.md plugin to adjust font size via commands.
Format Hotkeys
6 years ago by Ansel Santosa
Google Docs style formatting hotkeys for Obsidian
Global Hotkeys
5 years ago by Marc Jessome
Global hotkey support for Obsidian.md
HOME key
a year ago by shichishima
Obsidian Plugin to move cursor to beginning of text, considering Markdown heading characters.
Hotkey Helper
5 years ago by PJ Eby
Easily see and access any Obsidian plugin's options pane or hotkey assignments (including conflicts) from the Community Plugins tab
Hotkeys Chords
5 years ago by Dario Balboni
Hotkeys for Bookmarks
6 years ago by Vinzent
Hotkeys for specific files
6 years ago by Vinzent
Hotkeys for templates
5 years ago by Vinzent
Hotkeys++
3 months ago by argenos
Adds hotkeys to toggle todos, ordered/unordered lists and blockquotes in Obsidian
Hotstrings
2 years ago by wakywayne
Hyperlink Remover
a year ago by Daniel Agafonov
Easily remove hyperlinks and wikilinks from selected text or the entire note.
Jump to link
6 years ago by MrJackphil
Quick jump between links using hotkeys
Keyboard Analyzer
4 years ago by cogscides
Obsidian plugin to display command hotkeys on a visible keyboard layout
Keyshots
4 years ago by KrazyManJ
🔮📝 Obsidian plugin that adds classic hotkey/shortcuts commands from popular IDEs like Visual Studio Code or JetBrains Family.
Leader Hotkeys
6 years ago by Tony Grosinger
Use a leader-key (tmux style) for hotkeys in Obsidian.md
Markdown Cleaner
4 months ago by gao-qian-long
Obsidian格式化markdown插件
MIDI Logger
2 years ago by @maybehelloworld
MIDI Logger plugin for Obsidian
Min3ditorHotkeys
6 years ago by Davor Sauer
Obsidian plugin adding minimal editor hotkeys
Natural Language Dates
2 months ago by obsidian-community
Work with dates in natural language in Obsidian
New Note New Window
4 years ago by Pedro Reyes
Plugin for opening new notes in a floating window in Obsidian (https://obsidian.md)
Open File by Magic Date
4 years ago by simplgy
Open in Cursor
a year ago by awaken233
An Obsidian plugin to open files in Cursor IDE or other VSCode-based editors (VSCode, Kiro, etc.) with automatic cursor position jumping. 一个可以在 Cursor IDE 或其他类 VSCode 编辑器中打开文件并自动跳转光标位置的 Obsidian 插件。
Recent Tab Switcher
2 years ago by Samuel Ang
Recent Tab Switcher Plugin for Obsidian.
Search Everywhere
5 years ago by Mom0
Obsidian Search Everywhere Plugin
Select word
2 years ago by Connor Espino
Sequence Hotkeys
4 years ago by Ruan Moolman
Obsidian plugin to support a sequenced of keyboard shortcuts to run commands.
Shell Path Copy
a year ago by Charles Kelsoe (ckelsoe)
Obsidian plugin to copy file and folder paths with shell-friendly formatting for Linux\Mac and Windows
Symbol linking
a year ago by Evan Bonsignori ; Mara-Li
Adds ability to link with any trigger in Obsidian. Each trigger can limit linking to specific folders or file.
Thino
a month ago by quorafind
A quick capture plugin for Obsidian, all data from your notes.
URI Commands
5 years ago by kzhovn
Execute URIs from the command palette
URI Converter
a year ago by wenlzhang
An Obsidian plugin to convert Obsidian URIs to Obsidian internal links.
Vim Marker Sharpener
a year ago by Artem Dvoryadkin
Text formatting commands in Vim mode. Supports applying styles (bold, italic, etc.). Works correctly in visual mode with selected text.
X Post Saver
a year ago by Tanaka Mambinge