Skip to content

Compromisee/PyDoc

Repository files navigation

πŸš€ PyDoc V1.0 Stable

A Flow-Launcher-style quick app launcher with a real Windows 11 Fluent UI β€” powered by Python.

Stable 1.0.0 Released!!! PyDoc


Python UI pywebview Platform License PRs Welcome


Press a hotkey β†’ search β†’ launch. Drag-and-drop to add. Themeable. One folder. Zero clutter.

Features Β· Install Β· Usage Β· Icons Β· Keybinds Β· Build .exe Β· Architecture

Bonus, check Make Shortcuts.py in the dir for copying/creating .exe and .ink files from the computer


✨ Features

🎨 Looks & feel

  • Genuine Windows 11 Fluent UI (windows-ui-fabric)
  • Rounded acrylic/Mica card + accent selection bar
  • Smooth pop / fade animations
  • 6 themes (Win 11 Dark/Light, Midnight, Nord, Mint, Sunset) β€” live switch with Tab
  • Fuzzy-match highlighting in results

πŸ”Ž Search that gets out of the way

  • Fuzzy search with prefix/exact boosts
  • Usage ranking β€” frequent & recent float to top
  • Inline calculator β€” 23*7+1, sqrt(144), 50%, (1+2)^3
  • Web search / open-URL built in

πŸ—‚ Organise your way

  • One folder only β€” Shortcuts/ + shortcuts.json
  • Drag-and-drop files / folders / links to add
  • Pins, groups, aliases
  • Flexible icon system (Fluent / Material / file / emoji / default)

⚑ Power features

  • System-tray icon (Open Β· Reload Β· Folder Β· Quit)
  • Global hotkeys + per-shortcut hotkeys
  • Custom keybind recorder (default add = Ctrl+Win+N)
  • Auto-start on Windows login
  • In-app Settings & shortcut editor
  • PyInstaller build + install/uninstall scripts

πŸ“¦ Installation

git clone https://github.com/compromisee/PyDoc.git
cd PyDoc
pip install -r requirements.txt      # pywebview (required) + tray/hotkey extras
python launcher.py

Windows: double-click Run PyDoc.bat (installs deps on first run, launches with pythonw so there's no console window). pywebview uses the built-in Edge WebView2 runtime shipped with Windows 10/11.

Optional extras

Package Unlocks
pywebview Required β€” the native Fluent window
keyboard Global Alt+Space + Ctrl+Win+N + per-shortcut hotkeys
pystray + pillow System-tray icon
pyinstaller Build a standalone .exe

The app degrades gracefully β€” without keyboard/pystray everything else still works.

One-click Windows setup

install.cmd      :: installs deps, registers auto-start, adds a Start Menu shortcut
uninstall.cmd    :: stops it, removes the auto-start entry + Start Menu shortcut

πŸš€ Usage

  1. Launch it (or press Alt+Space).
  2. Type to search apps, shortcuts, math, or the web.
  3. ↑ ↓ to move, Enter to open.
  4. Drag any file/folder/link onto the window to add it as a shortcut.
  5. Press Ctrl+Win+N (or the + button) to add one manually.
  6. Select a shortcut and press Ctrl+D to remove it.

The β€œone folder” rule

PyDoc only ever lists:

  • files inside the Shortcuts/ folder (.lnk, .exe, .url, docs, folders, .qllink)
  • custom entries in shortcuts.json

Dropped items are saved as a tiny .qllink JSON file in Shortcuts/:

{ "name": "Figma", "target": "https://figma.com", "icon": "🎨", "image": "winui:edit" }

Delete the file (or press Ctrl+D) to remove the shortcut.


🎨 Icon system

Pick an icon for any shortcut from the icon picker (click the icon tile in the Add/Edit form):

Source How
Default Auto-guessed emoji from the file type / URL
Fluent Search 239 bundled windows-ui icons (offline)
Material Type a Google Material name (rocket_launch) β€” downloaded & cached to Icons/
Emoji Paste any emoji, or pick from quick-picks
File Choose your own .ico / .svg / .png (copied into Icons/)

⌨️ Keybinds

All global hotkeys are editable in Settings β†’ Keybinds with a click-to-record control.

Action Default Scope
Toggle launcher Alt+Space Global
Add new shortcut Ctrl+Win+N Global
Per-shortcut launch (your choice) Global
Move selection ↑ / ↓ Β· PgUp/PgDn In-app
Open selected Enter In-app
Open Shortcuts folder Ctrl+Enter In-app
Pin / unpin Ctrl+P In-app
Remove shortcut Ctrl+D (or Del when search is empty) In-app
Next theme Tab In-app
Settings Ctrl+, In-app
Hide Esc In-app

πŸ”Œ Auto-start on Windows login

Toggle β€œStart automatically on Windows login” in Settings, or run install.cmd. It writes a PyDoc value to:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

launching with pythonw.exe at sign-in. Remove it with the toggle or uninstall.cmd.


πŸ— Build a standalone .exe

pip install pyinstaller
python build.py            # β†’ dist/PyDoc.exe  (single file, no console)
python build.py --onedir   # folder build (faster startup)
python build.py --console  # keep a console for debugging

The web UI, vendored Fluent assets and themes are bundled into the executable. Drop an Icons/app.ico before building to brand the .exe.


🧱 Architecture

PyDoc/
β”œβ”€β”€ launcher.py            # pywebview host: window, tray, hotkeys, drag-drop, JS-API bridge
β”œβ”€β”€ core.py                # all logic (scan, search, calc, icons, autostart, store) β€” headless-testable
β”œβ”€β”€ build.py               # PyInstaller packaging
β”œβ”€β”€ install.cmd            # register auto-start + Start Menu shortcut
β”œβ”€β”€ uninstall.cmd          # remove them again
β”œβ”€β”€ Run PyDoc.bat  # Windows double-click launcher
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ web/
β”‚   β”œβ”€β”€ index.html         # Fluent UI markup (windows-ui-fabric classes)
β”‚   β”œβ”€β”€ app.css            # Win 11 skin + theme variables
β”‚   β”œβ”€β”€ app.js             # front-end logic, talks to Python via pywebview.api
β”‚   └── vendor/            # bundled windows-ui-fabric (CSS/JS) + 239 winui icons
β”œβ”€β”€ Shortcuts/             # ← the ONE folder (drop files / .qllink here)
β”œβ”€β”€ Icons/                 # downloaded Material + imported custom icons (auto)
β”œβ”€β”€ config.json            # settings            (auto-created)
β”œβ”€β”€ themes.json            # theme accent + mode (auto-created)
β”œβ”€β”€ shortcuts.json         # custom entries      (auto-created)
└── store.json             # usage + metadata: pins/groups/aliases/hotkeys/icons (auto)

Bridge: app.js calls window.pywebview.api.<method>() β†’ methods on the Api class in launcher.py β†’ logic in core.py. Opening web/index.html in a plain browser falls back to a built-in mock so the UI can be designed without Python.


βš™οΈ Configuration β€” config.json

{
  "theme": "Windows 11 Dark",
  "hotkey": "ctrl+windows+n",
  "hotkey_add": "ctrl+windows+a",
  "show_path_subtext": true,
  "autostart": false,
  "show_on_launch": true,
  "max_results": 9,
  "enable_calculator": true,
  "enable_websearch": true,
  "web_search_url": "https://www.google.com/search?q={q}",
  "material_cdn": "https://cdn.jsdelivr.net/npm/@material-icons/svg/svg/{name}/baseline.svg"
}

Themes β€” themes.json

{
  "Windows 11 Dark":  { "mode": "dark",  "primary": "#4cc2ff" },
  "Windows 11 Light": { "mode": "light", "primary": "#0067c0" }
}

Add your own β€” they appear in the picker automatically.


πŸ’» Platform support

Platform Window Tray Hotkeys Auto-start
Windows 10/11 βœ… WebView2 βœ… βœ… βœ… (Run key)
macOS βœ… (cocoa) βœ… ⚠️ needs accessibility perms βž–
Linux βœ… (GTK/Qt) βœ… ⚠️ may need root for keyboard βž–

πŸ› Troubleshooting

  • No window appears β†’ install pywebview: pip install pywebview. On Linux add [qt] or [gtk].
  • Hotkeys don't fire β†’ pip install keyboard (Linux may need to run with sufficient privileges).
  • No tray icon β†’ pip install pystray pillow.
  • Material icon won't fetch β†’ check internet; names are snake_case from fonts.google.com/icons.

🀝 Contributing

Issues and PRs welcome! Ideas: more themes, indexed Start-Menu apps, plugin actions, clipboard history.


πŸ“œ Credits & License

Released under the MIT License.

About

A cool, Powertoys Run-like tool for launching apps -- only expection is its private

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors