As a longtime Windows user who occasionally works on macOS, there is one feature I always miss dearly when switching back to PC: macOS Quick Look. The ability to hit Space on any file and instantly inspect images, PDFs, code, or archives without launching heavy desktop applications is a massive workflow booster.
On Windows, power users usually turn to PowerToys Peek or QuickLook. But both left me wanting more:
- PowerToys Peek requires installing the massive PowerToys suite (>200 MB) and pulls in 100–200 MB of RAM just sitting idle.
- QuickLook (built on C# / WPF) works well, but still hovers around 40–80 MB RAM and lacks a modern, extensible Web-based plugin ecosystem.
So I decided to build PeekIt — a native, ultra-lightweight Windows 10 & 11 utility powered by Rust, Tauri v2, and Svelte 5.
Here is how it works under the hood, how we achieved <15 MB idle RAM, and how we built a sandboxed Web plugin system.
⚡ The Tech Stack Decisions
When designing a utility that runs 24/7 in the system tray, efficiency is everything.
+-------------------------------------------------------------+
| PeekIt Engine |
+------------------------------+------------------------------+
| Rust (Win32 Hooks & Core) | Tauri v2 (IPC & Window Mgmt) |
+------------------------------+------------------------------+
| Svelte 5 (Runes UI & Shell) | WebView2 Isolated Sandboxes |
+------------------------------+------------------------------+
-
Rust (Win32 Core): Provides instant cold boot speeds (<50 ms), zero runtime overhead, and low-level control over Windows keyboard hooks (
WH_KEYBOARD_LL). -
Tauri v2: Replaces bulky Electron binaries with the native Windows
WebView2runtime. The entire compiled installer is just ~3.4 MB. - Svelte 5 (Runes): Powers the modern Fluent Design frontend. Svelte's fine-grained reactivity means zero virtual DOM overhead, making UI renders crisp and instantaneous.
🛠️ Key Technical Challenges & Solutions
1. Intercepting Space Without Breaking Text Editing
The biggest challenge with global keyboard hooks on Windows is false positives. You want Space to trigger a preview when a file is selected in File Explorer or on the Desktop — but NOT when the user is renaming a file, typing in a search box, or using Word.
We solved this in the Rust backend by analyzing the active window context:
// Low-level Win32 keyboard hook snippet
pub unsafe extern "system" fn keyboard_proc(n_code: i32, w_param: usize, l_param: isize) -> LRESULT {
if n_code >= 0 && w_param == WM_KEYDOWN as usize {
let kb_struct = *(l_param as *const KBDLLHOOKSTRUCT);
if kb_struct.vkCode == VK_SPACE as u32 {
// Check if active control is an editable text field (Inline Rename Filter)
if is_user_typing_in_explorer() {
return CallNextHookEx(null_mut(), n_code, w_param, l_param);
}
// Trigger Tauri event to open preview window
trigger_peek_event();
return 1; // Block Space key propagation
}
}
CallNextHookEx(null_mut(), n_code, w_param, l_param)
}
If an inline edit control (like Edit or DIRECTUIHWND rename field) is focused, PeekIt gracefully yields and lets the spacebar input pass through natively.
2. Isolated Sandboxed Web Plugins
We wanted community developers to extend PeekIt with custom previewers (e.g., 3D models, Excel sheets, Word documents, fonts) without bloating the main Rust executable or introducing security risks.
Our solution: Sandboxed WebView2 Web Plugins.
{
"id": "com.peekit.3d-viewer",
"name": "3D Model Previewer",
"version": "1.0.0",
"extensions": [".stl", ".obj", ".gltf", ".glb"],
"entry": "index.html"
}
-
Bundled Plugins out of the box:
- 🎨 Font Viewer:
.ttf,.otf,.woff2glyph inspecting. - 🧊 3D Viewer:
.stl,.obj,.gltfwith interactive Three.js WebGL rotation. - 📄 Docx Viewer:
.docxrendered as A4 print preview. - 📊 Spreadsheet Viewer:
.xlsx,.csv,.tsvwith interactive data grids. - 📽️ Presentation Viewer:
.pptxslide shows.
- 🎨 Font Viewer:
Plugins run inside isolated <iframe> sandboxes communicating via lightweight postMessage contracts. If a plugin crashes or loads a heavy asset, the core PeekIt process remains unaffected.
3. OneDrive Cloud File Protection
A subtle bug in file previewers on Windows is triggering automatic downloads for OneDrive "Files On-Demand" placeholders. If you press Space on a 10 GB un-synced cloud video, naive file previewers force Windows to download the entire file in the background.
PeekIt inspects Win32 file attributes (FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS / SPARSE_FILE) prior to reading content. If a file is stored exclusively in the cloud, PeekIt displays an instant placeholder card showing metadata and size, preserving your bandwidth.
📊 Benchmarks & Resource Comparison
We benchmarked PeekIt v1.3.2 against popular alternatives on Windows 11:
| Metric | PeekIt v1.3.2 | QuickLook | PowerToys Peek |
|---|---|---|---|
| Tech Stack | Rust + Tauri v2 + Svelte 5 | C# / .NET / WPF | C++ / WinUI 3 |
| Idle Background RAM | ~10–15 MB | ~30–50 MB | ~100–200 MB |
| Active Preview RAM | ~25–80 MB | ~60–80 MB | ~120–250 MB |
| Cold Response Time | ~50 ms | ~50–80 ms | ~200–350 ms |
| Installer Size | ~3.4 MB | ~90 MB | > 200 MB (full suite) |
| Plugin Architecture | Sandboxed Web Plugins | .NET DLLs | None |
| Admin Rights Needed | No (Clean HKCU) | No | Partial |
🎁 Open Source & How to Try It
PeekIt is 100% free and open-source under the MIT license.
- ⭐️ GitHub Repository: github.com/kobaltgit/peekit
- ⚡ Live Website: kobaltgit.github.io/PeekIt
- 📦 Download Latest Release: Portable
.zipor.msiinstallers available here.
💬 What's Next?
We are currently expanding the plugin catalog.
If you are a Rust or Svelte developer, I would love your feedback! Give PeekIt a spin, star the repo on GitHub, or drop a comment below with your thoughts or feature requests.
Happy Coding! 🚀
Top comments (0)