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

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors