Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DockShift



Your entire workflow — one keystroke away.

DockShift is a floating command dock for Windows. Clipboard history, workspace snapshots, a bring-your-own-model AI assistant, a real terminal, voice-to-text, and more — always within reach, never in your way.


Electron React Vite Windows

License Version PRs welcome Star on GitHub

Quick Start · Features · Security · Contributing


The DockShift dock bar

One translucent bar, floating above everything. Tap an icon — a panel slides out. Click away — it's gone.



📁 Save your desktop. Restore in one click.

Snapshot every open app, window, and layout — then put your full project back exactly where you left it.
The one feature no other Windows tool ships out of the box.



DockShift workspace snapshots — click to watch the live demo



Watch the workspace demo on Vimeo


🤔 Why DockShift?

You've got a clipboard manager, a launcher, a notes app, a terminal, an AI chat tab, and a dozen browser windows open for "that one doc." Every tool lives somewhere else. Every task is a context switch.

DockShift collapses all of it into a single floating bar. Hit Ctrl + Shift + D — it's there. Click an icon — a clean, draggable, resizable panel appears. Click away — it disappears. Your tools come to you.

Important

Windows only. DockShift hooks into Win32 window tracking and Windows clipboard internals — macOS and Linux aren't supported.


🚀 What it does

AI Assistant

🤖 Bring-Your-Own-Model AI

Chat with Gemini, GPT, Claude, OpenRouter, or a local Ollama model — switch providers in a click, model lists fetched live. One-tap quick actions act on whatever's in your clipboard: explain code · write tests · fix an error · add types. Streaming replies, and keys are stored encrypted by the OS keystore — they never touch the renderer.

Terminal

🖥️ A Real Terminal

A GPU-rendered terminal (xterm.js + WebGL, backed by node-pty) that actually pulls its weight: copy/paste keybindings, Ctrl+F scrollback search, clickable links, font zoom, and a persistent session that survives closing the panel. Clean Linux-style theme, tmux-style status bar.

🎤 Voice to Text

Hit record, get a transcript — powered by your AI provider's speech model. Audio is processed entirely in the main process, so your API key stays server-side.

Voice to Text
Settings

⚙️ Settings, Done Right

A clean, developer-grade control panel — theme, dock position, launch-on-startup, AI provider & model, clipboard limits, shortcuts. Every preference persists across sessions.


…and there's more

📋 Clipboard History

Persistent, system-wide, type-aware — text, images, files, links, and hex colors. Filter by type, click to re-copy, click images for a fullscreen preview.

⚡ Quick Launcher

Spotlight-style app launcher with fuzzy search across your Start Menu — now with real app icons. Arrow keys to navigate, Enter to launch.

📝 Quick Notes

A WYSIWYG rich-text editor — headings, lists, code blocks, checkboxes, blockquotes. Pin the notes that matter to the top.

📸 Screenshots

Capture the full screen or a single window. Saved, thumbnailed, and browsable — preview, copy, or open in Explorer.

🌐 Browser

A sandboxed webview with a URL bar, bookmarks, and history — perfect for a quick docs lookup without leaving your flow.

🎯 Floating Panels

Every panel is draggable and resizable from any edge. Drag the dock itself by the grip handles. It all stays exactly where you put it.


⚡ Quick Start

PrerequisitesNode.js 18+, Windows 10/11, and Windows build tools (node-pty compiles natively). For AI features, an API key for your provider of choice — or just run Ollama locally, no key required.

# 1 — clone & install
git clone https://github.com/Salah-XD/dockshift.git
cd dockshift
npm install

# 2 — run it
npm run dev

That's it. The dock appears at the bottom of your screen — press Ctrl + Shift + D to toggle it anytime.

Add your AI provider in Settings → AI & Models — paste a key (stored encrypted) or pick Ollama for a fully local setup. Optional: copy .env.example to .env for a dev-time Gemini key.

Note

Installing the prebuilt .exe and Windows says "Unknown publisher"? That's expected — DockShift is open source and not yet code-signed. A Microsoft cert costs ~$200/yr, so we're waiting until the first hundred installs to buy one. Click More infoRun anyway. Or read the source / build it yourself.

More commands
npm run dev:vite      # Vite dev server only (React HMR)
npm run dev:electron  # Electron only (expects Vite already running)
npm run build         # production renderer build → dist/
npm run dist          # Windows NSIS installer + portable build → release/
npm run dist:dir      # unpacked build (faster, for local testing)

Packaging needs an app icon at assets/icon.ico. Tagged v* pushes also build releases via GitHub Actions.


🏗️ Under the Hood

DockShift is an Electron app: a node-pty/Win32-powered main process for all system access, and a sandboxed React + Vite renderer that talks to it only through an allowlisted IPC bridge.

Layer Tech Role
Shell Electron 40 Desktop runtime, system APIs, window tracking
UI React 18 + Vite 5 Component UI with instant HMR
Terminal xterm.js + WebGL + node-pty GPU-rendered embedded terminal
AI Gemini · OpenAI · Claude · Ollama · OpenRouter Multi-provider chat & transcription
Panels re-resizable Draggable, 8-way resizable containers
dockshift/
├── electron-main.js     # main process — IPC, window mgmt, pty, AI providers
├── preload.js           # the secure, allowlisted main ↔ renderer bridge
├── electron-secrets.js  # OS-keystore-encrypted API key storage
└── src/
    ├── components/      # DockMenu + one *Panel.jsx per feature
    ├── components/ui/   # the shared design-system component library
    ├── hooks/           # panel drag + positioning
    ├── workspace/       # snapshot / window-tracking logic
    └── styles/          # design tokens + panel styles

🔒 Built Secure

A floating dock with system-level access has to earn your trust:

Measure What it means
Context isolation + sandbox The renderer has zero direct Node.js access
Allowlisted IPC Every invoke/send channel is explicitly whitelisted in preload
Encrypted secrets API keys live in the OS keystore — never in the renderer, never in git
PTY env scrubbing Secret-looking environment variables are stripped from terminal sessions
Injection-safe Shell calls use argument arrays; paths are validated against traversal
Sandboxed webview The browser panel runs in an isolated partition, dangerous URL schemes blocked

🤝 Contributing

Pull requests are welcome — bug fixes, new panels, polish, all of it.

  1. Fork the repo and branch off (git checkout -b feature/your-idea)
  2. Build your thing — the renderer hot-reloads; main-process changes need a restart
  3. Open a PR with a clear description

Good to know: the project is ES Modules ("type": "module"), but preload.js is CommonJS (Electron requires it). node-pty needs native build tools on first install.


📄 License

MIT — free to use, fork, and build on.



Built for people who keep too many windows open.
DockShift — because Alt+Tab is so last decade.



Powered by Shineup

About

A Productive Dock for Developers

Topics

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Contributors

Languages