Skip to content

Interesting possibilities for Liminal Notes #145

Open
1 of 2 issues completed
Open

Description

@ScottMorris
  • Quick capture: Global hotkey opens floating note window, saves, disappears
  • File watching: Auto-sync when vault files change externally (from other editors)
  • OS search integration: Spotlight/Windows Search indexing your notes
  • Protocol handler: liminal://daily opens today's daily note
  • System tray: Quick access to recent notes, create new note
  • Native sharing: Right-click file → "Send to Liminal Notes"

The desktop has infrastructure hooks that mobile just doesn't expose. You can become part of the OS workflow rather than just another app.

Activity

  1. ScottMorris commented on Jan 13, 2026

    @ScottMorris
    OwnerAuthor

    The quick capture feature is genuinely one of those things that transforms how you use a notes app. It shifts from "I should write this down later" to "brain → captured → done" in seconds.

    Implementation sketch:

    1. Global hotkey registration (Tauri has built-in support):

      // In your Tauri setup
      app.global_shortcut_manager()
          .register("CmdOrCtrl+Shift+N", move || {
              // Spawn quick capture window
          })
    2. Floating window design:

      • Small, frameless window (no title bar chrome)
      • Always-on-top
      • Centered on current screen
      • Maybe semi-transparent background
      • Auto-focus the text input
    3. Save behavior:

      • Hit Enter → save to inbox/daily note/specific location
      • Escape → close without saving
      • Window auto-closes on save or blur (configurable)
    4. Where it goes:

      • Default: append to daily note
      • Alternative: inbox note for later processing
      • Optional: let user tag on capture (#idea, #todo)

    The magic: This works system-wide. You're reading a PDF, watching a video, in a terminal, doesn't matter—hotkey works. The note capture becomes ambient infrastructure rather than "open app, find note, write."

    Bonus ideas:

    • Paste clipboard automatically on open (captured URL/text)
    • Template support (quick meeting note vs quick idea vs quick todo)
    • OCR from screenshot (capture image → extract text → save)

    This is peak liminal tooling—the bridge between "thought occurred" and "thought preserved." Invisible until needed, instant when summoned.

  2. ScottMorris commented on Jan 13, 2026

    @ScottMorris
    OwnerAuthor

    OS search integration is fascinating—it's about making your notes searchable from the OS-level search bar (Spotlight on macOS, Windows Search on Windows, various tools on Linux) rather than having to open your app first.

    How it works conceptually:

    Your app tells the OS "here are searchable documents" → OS indexes them → User searches from OS → Result links back to your app to open the specific note.

    OS Search Integration: How It Works

    The concept is making your notes searchable from your OS's native search tool—Spotlight (macOS), Windows Search (Windows), or desktop search tools on Linux—without opening Liminal Notes first.


    macOS - Spotlight

    Spotlight uses .mdimporter plugins to extract metadata from files. Apps can provide custom mdimporters in their bundle at /Contents/Library/Spotlight.

    How you'd implement it:

    1. Create an .mdimporter plugin (in Xcode) that tells Spotlight how to read .md files from your vault
    2. Extract metadata: title, tags, dates, first paragraph for preview
    3. Index content: full-text of the note
    4. Use Core Spotlight framework's CSSearchableItemAttributeSet to specify metadata for search results
    5. Register file association: When user clicks result in Spotlight, it opens in Liminal Notes

    Result: User types in Spotlight → sees note titles/content → clicks → Liminal Notes opens that note.

    Complexity: Medium—requires Objective-C/Swift, Xcode, understanding Apple's metadata APIs.


    Windows - Windows Search

    Windows Search uses IFilter implementations to extract text and properties from files for indexing.

    How you'd implement it:

    1. Create an IFilter DLL (C++ or C#, though Windows 7+ explicitly blocks managed code filters due to CLR versioning issues—must be native code)
    2. Implement IFilter interface to extract:
      • Text content from markdown
      • Properties (title, tags, dates)
    3. Register the IFilter in Windows Registry for .md files
    4. Windows Search runs IFilters in Local System context with restricted rights for security

    Result: User searches in Windows Search → sees note content → opens in Liminal Notes.

    Complexity: High—requires native C++ Windows development, COM interfaces, registry manipulation.


    Linux - Multiple Paths

    Linux doesn't have one unified search, but two major options:

    KDE Plasma - Baloo

    Baloo relies on KFileMetaData to extract content and metadata from files using file type-specific plugins.

    How you'd implement it:

    1. Create a KFileMetaData extractor plugin for markdown
    2. Extract: Content, title, tags from frontmatter
    3. Configure folders to index via ~/.config/baloofilerc
    4. Users search via KRunner (Alt+F2) or Dolphin file manager

    Complexity: Medium—requires C++ and KDE frameworks knowledge.

    GNOME - Tracker

    Similar to Baloo but for GNOME desktop. Would require writing a Tracker extractor.


    Practical Considerations

    Pros:

    • Notes searchable without opening app
    • OS-level integration feels native
    • Quick capture via OS search

    Cons:

    • Platform-specific code for each OS (tripling development work)
    • Maintenance burden (OS updates can break indexers)
    • Security/permissions complexity (especially Windows)
    • Limited user control (OS decides when to reindex)

    Simpler Alternative: Protocol Handler

    Instead of OS search integration, you could implement:

    liminal://search?q=term protocol handler

    • User installs Liminal Notes
    • OS registers liminal:// protocol
    • External tools (Alfred, Raycast, Rofi) can trigger searches
    • You control the search UI/experience
    • Much simpler to implement cross-platform

    This gives 90% of the value (quick access from anywhere) with 10% of the complexity.


    My recommendation: Start with protocol handlers + global hotkey (the quick capture feature). Leave OS search integration for v2 or v3 after validating whether users actually want it. Most power users already have launcher tools (Alfred, Raycast, Rofi) that can work with protocol handlers anyway.

  3. ScottMorris commented on Jan 13, 2026

    @ScottMorris
    OwnerAuthor

    4. Composability via Stdin/Stdout

    Linux paradigm: Tools accept input, produce output, chain via pipes.

    Liminal Notes translation:

    # Export notes as JSON
    liminal export --format json > notes.json
    
    # Search and format
    liminal search "project" --json | jq '.[] | .title'
    
    # Import from stdin
    cat exported.json | liminal import
    
    # Integrate with other tools
    rg "TODO" ~/vault | liminal add-from-stdin --tag todo

    Why it's portable: Works on all platforms with shell access. Enables ecosystem integration without writing integrations.

    The liminal angle: Your notes become data streams that can flow between tools.


    5. Declarative File Associations

    Linux paradigm: App declares "I handle these file types" in .desktop file. OS respects it.

    Liminal Notes translation:

    • Register as handler for .md files
    • User double-clicks note → opens in Liminal Notes
    • Respects user's choice of default app (don't be pushy)
    • Maybe: "Open in Liminal Notes" context menu option

    Cross-platform:

    • Linux: XDG MIME types
    • macOS: Info.plist UTI declarations
    • Windows: Registry file associations

    The liminal angle: Notes exist as files first, app second. Users control the relationship.


    6. URL Schemes as Integration Layer

    Linux paradigm: D-Bus lets apps expose services. Other apps can call them.

    Liminal Notes translation:

    liminal://open/note-id
    liminal://search?q=term
    liminal://daily
    liminal://capture?text=from%20clipboard
    

    Use cases:

    • Alfred/Raycast workflow: liminal://daily
    • Browser bookmark: Quick links to frequent notes
    • Other apps: <a href="liminal://..."> in HTML
    • Scripts: open "liminal://search?q=project"

    Why it's portable: All OSes support custom URL schemes. Zero-dependency API.

    The liminal angle: Protocol handlers are bridges between your app and everything else.


    7. Transparent File Locations

    Linux paradigm: XDG Base Directory. User knows where stuff is.

    Liminal Notes translation:

    Notes:  ~/Documents/LiminalVault/  (user chooses)
    Config: ~/.config/liminal/
    Cache:  ~/.cache/liminal/
    Data:   ~/.local/share/liminal/
    

    Why it matters:

    • Predictable backup
    • Easy migration
    • User can inspect/modify
    • Clean uninstall

    Cross-platform: Tauri provides abstractions (app_config_dir(), etc.) that respect platform conventions.

    The liminal angle: Don't hide your file locations. They're shared space between app and user.


    10. Exit Codes & Scriptability

    Linux paradigm: CLI tools return meaningful exit codes. Scripts can check success/failure.

    Liminal Notes translation:

    liminal add "Note" && echo "Added" || echo "Failed"
    
    # Exit codes:
    # 0 = success
    # 1 = general error
    # 2 = file not found
    # 3 = sync conflict

    Why it's portable: Works on any platform with shell. Enables automation.

    Use cases:

    • CI scripts
    • Backup automation
    • Integration testing
    • Cron jobs

    The liminal angle: Your app becomes programmable infrastructure rather than just GUI.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions