Skip to content

RealNarcissus/drift

Repository files navigation

🌌 Drift

License: MIT Tauri v2 Svelte v5 Tailwind CSS v4 Platform Support

Drift is a premium, high-performance, minimalist desktop quick-capture HUD designed to seamlessly channel thoughts, task items, project headings, and fleeting inspirations directly into your Obsidian Vault without breaking your focus.

Summoned by a global hotkey, Drift appears instantly, takes your input, handles command routing, and dismisses itself in a fraction of a second.

Drift Capture Interface Drift Command Autocomplete


✨ Key Features

  • Auto-Chronological Log headers: When routing entries to your files, Drift checks for a daily Markdown header (e.g. ## June 06, 2026 - Saturday). If it's missing, Drift automatically inserts it with appropriate newline spacing to keep your logs neat and organized.
  • Smart Commands & Ghost Autocomplete: Prefix your thought with /todo (/t), /inspiration (/i), /projects (/p), or /random (/r) to route it. Drift provides elegant inline suggestions with Tab or Enter autocomplete.
  • Zero-Latency Global Hotkey: Double-tap Ctrl+Space (or your custom bind) to pull up the entry box. If you open a second instance, Drift uses an internal TCP socket to focus the existing instance rather than spawning a duplicate window.
  • Multi-Monitor Centering Logic: Drift automatically detects the monitor closest to your cursor and centers itself there, ensuring the HUD is exactly where your eyes are.
  • Robust Offline Buffer: If your Obsidian Vault is on an unmounted network drive or encrypted vault that is locked, Drift queues your captures in buffer.json and silently flushes them the second your vault reconnects.
  • Linux Native Escape Guard: Integrates with xdotool on X11/GNOME environments to ensure seamless focus stealing, and auto-dismisses itself instantly when you click anywhere outside the HUD.
  • On-the-fly Pinch Zooming: Scale the entire HUD up and down smoothly using standard trackpad pinch gestures (Ctrl + Scroll) to match high-resolution screens.

🛠️ Tech Stack

  • Backend: Rust (Tauri v2, tauri-plugin-global-shortcut, single-instance lock via TCP loopback sockets)
  • Frontend: Svelte 5 (using modern reactive Runes), SvelteKit (Static adapter)
  • Styling: Tailwind CSS v4, Vanilla CSS backdrop-filters, custom keyframe micro-animations
  • Interops: Linux X11 focus handling (xdotool), cross-platform config mapping (dirs-next)

🚀 Installation & Setup

Prerequisites

  • Rust Toolchain: Install Rust via rustup
  • Node.js: Node.js 18+ and npm
  • Linux Dependencies (Debian/Ubuntu):
    sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev xdotool

Clone and Install

  1. Clone the repository:

    git clone https://github.com/yourusername/drift.git
    cd drift
  2. Install web dependencies:

    npm install
  3. Run Development Server:

    npm run dev

    This starts SvelteKit. To run the full native app in development mode:

    npx tauri dev
  4. Build Release Binary:

    npx tauri build

    The compiled binary will be placed under src-tauri/target/release/drift.


⚙️ Configuration

Drift creates its configuration folder on the first launch:

  • Linux: ~/.config/drift/config.json
  • macOS: ~/Library/Application Support/drift/config.json
  • Windows: %APPDATA%/drift/config.json

config.json Schema

Here is the default configuration generated by Drift:

{
  "version": "1.0.0",
  "obsidian_vault_path": "~/Documents/ObsidianVault",
  "global_hotkey": "Control+Space",
  "ui": {
    "theme": "system",
    "fallback_blur": false,
    "show_character_count": true
  },
  "routing": {
    "i": {
      "mode": "inspiration",
      "destination": "inspiration.md",
      "prefix": "- Idea: "
    },
    "t": {
      "mode": "todo",
      "destination": "todo.md",
      "prefix": "- [ ] "
    },
    "p": {
      "mode": "projects",
      "destination": "projects.md",
      "prefix": "## "
    },
    "r": {
      "mode": "random",
      "destination": "random.md",
      "prefix": "- "
    }
  }
}

Configuration Options

  • obsidian_vault_path: Path to your active Obsidian vault (supports tilde ~ expansion on Linux/macOS).
  • global_hotkey: Keyboard shortcut to summon the capture card from anywhere.
  • ui.fallback_blur: If true, disables transparency/backdrop filters and uses a beautiful solid dark-mode gradient (recommended on Linux window managers lacking compositor effects).
  • ui.show_character_count: Toggle the minimal character counter in the footer.
  • routing: Defines command shortcuts and how they write to markdown. For example, typing /t Buy milk resolves the t routing key, writing - [ ] Buy milk into obsidian_vault_path/todo.md.

⌨️ Shortcuts & Hotkeys

  • Ctrl+Space (Customizable): Toggle Drift open/closed.
  • Enter (Single line mode): Submit and dismiss.
  • Ctrl+Enter / Cmd+Enter (Multi-line mode): Submit if you have added carriage returns in your text.
  • Escape / Click Outside: Cancel entry and dismiss instantly (clears draft safely).
  • Tab / Enter: Autocomplete slash command (e.g. /to + Tab completions to /todo ).
  • Ctrl + Pinch Zoom: Magnify or shrink HUD size.

🛡️ License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Minimalist thought capture HUD for Obsidian, featuring global shortcuts, smart routing, and offline buffers.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors