{"id":44956696,"url":"https://github.com/misiix9/vanta","last_synced_at":"2026-04-16T20:03:37.455Z","repository":{"id":339087497,"uuid":"1160396778","full_name":"Misiix9/Vanta","owner":"Misiix9","description":"A hyper-fast, scriptable command palette for Wayland (Rust + Svelte).","archived":false,"fork":false,"pushed_at":"2026-04-16T13:59:28.000Z","size":1723,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T14:19:54.069Z","etag":null,"topics":["command-palette","customizable","hyprland","launcher","linux","productivity","rust","scriptable","svelte","tauri","wayland"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Misiix9.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-17T22:20:38.000Z","updated_at":"2026-04-16T13:59:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Misiix9/Vanta","commit_stats":null,"previous_names":["misiix9/vanta"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/Misiix9/Vanta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Misiix9%2FVanta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Misiix9%2FVanta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Misiix9%2FVanta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Misiix9%2FVanta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Misiix9","download_url":"https://codeload.github.com/Misiix9/Vanta/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Misiix9%2FVanta/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31902124,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-palette","customizable","hyprland","launcher","linux","productivity","rust","scriptable","svelte","tauri","wayland"],"created_at":"2026-02-18T12:06:04.645Z","updated_at":"2026-04-16T20:03:37.448Z","avatar_url":"https://github.com/Misiix9.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/Misiix9/vanta/main/src-tauri/icons/128x128.png\" width=\"120\" alt=\"Vanta Logo\" /\u003e\n\n  # Vanta\n\n  **A hyper-fast, extensible application launcher and command palette for Wayland. (Spotlight alternative)**\n\n  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n  [![Built with Rust](https://img.shields.io/badge/Built%20with-Rust-orange.svg)](https://www.rust-lang.org/)\n  [![Platform](https://img.shields.io/badge/Platform-Linux%20(Wayland)-green.svg)](https://tauri.app/)\n  [![Releases](https://img.shields.io/github/v/release/Misiix9/vanta?label=Latest%20Release)](https://github.com/Misiix9/vanta/releases)\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n## Why Vanta?\n\nTraditional launchers are often slow or clunky. **Vanta** is a fast, Wayland-native command palette built with Rust and Svelte. It starts instantly, stays out of your way, and is fully themeable with plain CSS. With the Extension SDK v2 engine, anyone can build custom commands and full UI screens using TypeScript and Svelte.\n\n---\n\n## Installation\n\n### Arch Linux (AUR)\n```bash\nyay -S vanta-bin\n```\n\n### Ubuntu / Debian\nDownload the latest `.deb` from [Releases](https://github.com/Misiix9/vanta/releases).\n```bash\nsudo dpkg -i vanta_5.21.0_amd64.deb\n```\n\n### Fedora / OpenSUSE\nDownload the latest `.rpm` from [Releases](https://github.com/Misiix9/vanta/releases).\n```bash\nsudo rpm -i vanta-5.21.0-1.x86_64.rpm\n```\n\n### Latest Minor (v5.21.0)\n- Added a performance-first visual runtime with automatic tiering (`full`, `balanced`, `degraded`) to keep the UI responsive under heavier load.\n- Added graceful degradation rules for low-end or battery-constrained systems, reducing blur/animation overhead while preserving usability.\n- Added stricter CI visual hotspot budgets that block `transition: all` regressions and excessive layout-affecting dynamic style directives.\n\n### Previous Minor (v5.20.0)\n- Added adaptive appearance profiles with environment-aware controls for lighting, density, performance tier, and accessibility presets.\n- Added deterministic runtime adaptation that safely adjusts blur, opacity, radius, spacing, text scale, and motion without unpredictable drift.\n- Added strict compatibility guards plus migration-safe defaults so profile-specific styling remains stable across restarts and imports.\n\n---\n\n## Features\n\n- **Fast fuzzy search** powered by Rust + `nucleo-matcher`.\n- **Extension SDK v2**: Build custom commands and full UI screens with TypeScript/Svelte.\n- **Vanta Store** (v2.1): Browse and install extensions from the built-in store. Search \"store\" or \"install\" in the launcher.\n- **10 Default Extensions**: Weather, Smart Calculator, Color Picker, Process Manager, Network Test, Timer, System Info, Spotify, Clipboard Tools, and Password Generator.\n- **Auto-refresh** (v2.2): Settings changes, new app installations, and new extensions take effect immediately without restarting.\n- **Commands section**: Sleep, Lock, Shutdown, Restart, Log Out, and Go to BIOS available out of the box.\n- **Clipboard-first**: `--clipboard` launch and `Super+V` open the clipboard view.\n- **File search with filters**: Include/exclude globs, extension allowlist, and type filters.\n- **Window switcher**: Grouped by app/class, ordered by recency, with focus and close actions.\n- **Math \u0026 calculator**: Type `2^10 + 5` to copy the result.\n- **Fully themeable**: Everything is CSS in `~/.config/vanta/themes/`.\n- **Workflow macros**: Chain system commands and extension actions into automated sequences.\n\n---\n\n## Quick Start\n\n```bash\ngit clone https://github.com/Misiix9/vanta.git\ncd vanta\nnpm install\ncargo tauri dev\n```\n\n**Flags:**\n- `--hidden` or `VANTA_HIDDEN=1`: start minimized/hidden.\n- `--clipboard` or `-c`: open directly to clipboard mode on launch.\n- **Hotkeys:** `Alt+Space` (toggle), `Super+V` (clipboard).\n\n## Quality Gates\n\nRun these before opening a release PR:\n\n```bash\ncargo test --manifest-path src-tauri/Cargo.toml\nnpm run check\nnpm run check:visual-budgets\nnpm run extensions:validate\n```\n\n---\n\n## Extension SDK\n\nVanta Extension SDK v2 replaces the old JSON script system with a full Raycast-style extension engine. Extensions live in `~/.config/vanta/extensions/` and can declare multiple commands with custom UI.\n\nSDK v2 authoring toolkit (in this repo):\n- `vanta-extensions/templates/view-template/` starter extension\n- `npm run extensions:validate` manifest linting\n- `npm run extensions:harness` extension bundle/command harness checks\n- `vanta-extensions/compatibility-matrix.json` compatibility + deprecation lifecycle contract\n- `vanta-extensions/ratings.json` shared rating snapshot consumed by Vanta Store\n\n### Extension Structure\n\n```\n~/.config/vanta/extensions/my-extension/\n  manifest.json       # Metadata, commands, permissions\n  dist/\n    index.js          # Compiled IIFE bundle\n    style.css         # Optional scoped styles\n```\n\n### Manifest Format\n\n```json\n{\n  \"name\": \"my-extension\",\n  \"title\": \"My Extension\",\n  \"schema_version\": 1,\n  \"version\": \"1.0.0\",\n  \"description\": \"What this extension does\",\n  \"author\": \"your-name\",\n  \"icon\": \"\u003csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2'\u003e\u003cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/\u003e\u003c/svg\u003e\",\n  \"permissions\": [\"Network\", \"Shell\"],\n  \"commands\": [\n    {\n      \"name\": \"quick-action\",\n      \"title\": \"Quick Action\",\n      \"subtitle\": \"Does something fast\",\n      \"mode\": \"no-view\",\n      \"icon\": \"fa-solid fa-bolt\"\n    },\n    {\n      \"name\": \"browse-items\",\n      \"title\": \"Browse Items\",\n      \"subtitle\": \"Opens a searchable list\",\n      \"mode\": \"view\",\n      \"icon\": \"fa-solid fa-list\"\n    }\n  ]\n}\n```\n\n### Command Modes\n\n- **`no-view`**: Runs a handler function (e.g., toggle playback, copy text), shows a toast, and optionally closes the window.\n- **`view`**: Mounts a Svelte component inside the extension host for full custom screen rendering.\n\n### Writing an Extension\n\nExtensions compile to IIFE bundles that register via `window.__vanta_host`:\n\n```javascript\n(function(vanta) {\n  const sdk = window.__vanta_sdk;\n\n  vanta.registerExtension('my-extension', {\n    commands: {\n      'quick-action': {\n        handler: async (api) =\u003e {\n          api.toast({ title: 'Done!', type: 'success' });\n          await api.closeMainWindow();\n        }\n      },\n      'browse-items': {\n        component: sdk.List  // Use a pre-built SDK component\n      }\n    }\n  });\n})(window.__vanta_host);\n```\n\n### SDK Components\n\nExtensions can use pre-built Svelte components via `window.__vanta_sdk`:\n\n| Component | Description |\n| :--- | :--- |\n| `sdk.List` | Searchable, keyboard-navigable list with sections |\n| `sdk.Form` | Form with text, password, dropdown, checkbox, and date fields |\n| `sdk.Grid` | Visual grid layout with images/icons |\n| `sdk.Detail` | Detail view with content and metadata sidebar |\n| `sdk.ActionPanel` | Action panel overlay with keyboard shortcuts |\n\n### VantaAPI\n\nEvery command handler and view component receives a `VantaAPI` object:\n\n```typescript\napi.navigation.push(component, props)  // Push a new view\napi.navigation.pop()                    // Go back\napi.clipboard.copy(text)                // Copy to clipboard\napi.network.fetch(url, { method })      // HTTP request (proxied through Rust)\napi.shell.execute(command, args)        // Run a shell command\napi.storage.get(key)                    // Read from per-extension storage\napi.storage.set(key, value)             // Write to per-extension storage\napi.toast({ title, message, type })     // Show a toast\napi.closeMainWindow()                   // Hide the launcher\napi.environment.extensionName           // Current extension name\n```\n\n### Building with Vite\n\n```typescript\n// vite.config.ts\nimport { defineConfig } from 'vite';\nimport { svelte } from '@sveltejs/vite-plugin-svelte';\n\nexport default defineConfig({\n  plugins: [svelte()],\n  build: {\n    lib: {\n      entry: 'src/index.ts',\n      formats: ['iife'],\n      name: 'MyExtension',\n      fileName: () =\u003e 'index.js',\n    },\n    outDir: 'dist',\n    rollupOptions: {\n      external: ['@vanta/sdk'],\n      output: { globals: { '@vanta/sdk': 'window.__vanta_sdk' } },\n    },\n  },\n});\n```\n\n### Migration from v1.x Scripts\n\nThe v1.x JSON script system (`~/.config/vanta/scripts/`) has been fully removed. To migrate:\n\n1. Create a new extension directory in `~/.config/vanta/extensions/your-script/`\n2. Write a `manifest.json` with your command metadata\n3. Convert your script logic to a JavaScript handler\n4. Build to `dist/index.js` (or write the IIFE directly)\n\n### v3 Contract Compatibility Policy\n\n- Search APIs: prefer `search_v3` and `get_suggestions_v3`.\n- Result/action execution: use typed `command.kind` when present, otherwise fall back to legacy `exec`.\n- Extension manifests: `schema_version` is required for new manifests; legacy manifests are auto-migrated to current schema on scan.\n- Config/workflows: `schema_version` and `workflows.schema_version` are maintained automatically on load or by running `run_contract_migration`.\n\n---\n\n## Settings \u0026 Theming\n\nAll styling lives in `~/.config/vanta/themes/`. A default theme is seeded on first launch.\n\nKey CSS variables:\n- `--vanta-width` / `--vanta-height`: window size\n- `--vanta-accent`: accent color\n- `--vanta-blur`, `--vanta-radius`, `--vanta-opacity`: glass look\n\n---\n\n## Configuration\n\nConfiguration lives at `~/.config/vanta/config.json`, created automatically on first run.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eView Default Configuration\u003c/strong\u003e\u003c/summary\u003e\n\n```json\n{\n  \"schema_version\": 4,\n  \"general\": {\n    \"hotkey\": \"Alt+Space\",\n    \"max_results\": 8,\n    \"launch_on_login\": false\n  },\n  \"appearance\": {\n    \"blur_radius\": 40,\n    \"opacity\": 0.85,\n    \"border_radius\": 24,\n    \"theme\": \"default\",\n    \"colors\": {\n      \"background\": \"#000000\",\n      \"surface\": \"#0a0a0a\",\n      \"accent\": \"#ffffff\",\n      \"accent_glow\": \"rgba(255,255,255,0.1)\",\n      \"text_primary\": \"#f5f5f5\",\n      \"text_secondary\": \"#888888\",\n      \"border\": \"rgba(255,255,255,0.05)\"\n    }\n  },\n  \"extensions\": {\n    \"directory\": \"~/.config/vanta/extensions\",\n    \"dev_mode\": false\n  },\n  \"files\": {\n    \"include_hidden\": false,\n    \"max_depth\": 3,\n    \"file_manager\": \"default\",\n    \"file_editor\": \"default\",\n    \"open_docs_in_manager\": false,\n    \"include_globs\": [],\n    \"exclude_globs\": [],\n    \"allowed_extensions\": [],\n    \"type_filter\": \"any\",\n    \"indexed_at\": null\n  },\n  \"workflows\": {\n    \"schema_version\": 1,\n    \"macros\": []\n  }\n}\n```\n\u003c/details\u003e\n\n---\n\n## Keybindings\n\n| Key | Action |\n| :--- | :--- |\n| `Alt + Space` | Toggle window |\n| `Super + V` | Open clipboard history |\n| `Ctrl + ,` | Open settings |\n| `Esc` | Close window / Back (in extensions) |\n| `Enter` | Launch / Execute |\n| `Arrow Up / Down` | Navigate results |\n| `Tab` | Autocomplete / Next result |\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eMade with love by \u003ca href=\"https://github.com/Misiix9\"\u003eonxy\u003c/a\u003e\u003c/sub\u003e\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmisiix9%2Fvanta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmisiix9%2Fvanta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmisiix9%2Fvanta/lists"}