Skip to content

GTonehour/wProjectDesktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Synthwave-style logo showing the name wProjectDesktop on top of the horizon

🖥️ Windows per-project desktop & command palette

Work, personal stuff, side-husle, dotfiles, notes... multitasking is fun and games until each project starts having multiple windows (editor, browser, explorer, terminal, Windows apps, AI agent), creating an Alt+Tabbing hell.

wProjectDesktop is a light and open-source solution that displays each project in its own (Windows Native) Virtual Desktop, and provides a project-aware command palette.

[VIDEO coming soon]

Installation

Binary release

Coming soon.

Manual

  • Install AutoHotkey v2
  • git clone https://github.com/GTonehour/wProjectDesktop.git
    .\wProjectDesktop\Install.ps1 # -ConfigPath path\to\config

Usage

Projects are the directories you configured, for instance %USERPROFILE%\projects subfolders.

Call the command palette with the hotkey, chose "Open project" and pick one of them with fuzzy-finding.

wProjectDesktop opens a virtual desktop dedicated to that project, and:

  1. directly opens sites and apps you configured for that project (emails, instant messages and Jira for work ; Whatsapp and emails for personal stuff ; music player...)
  2. displays the command palette for you to pick the next program run.

Commands are configurable, they run located in your project directory: no need to cd anywhere! Examples: code . (VS Code), explorer . (Windows explorer), wt (Windows terminal), lazygit, yazi, git commands...

Alternatives

One editor per project

Modern editors (VS Code, Cursor) tend to be all-included: git, explorer, terminal... If your editor is good for you, then you solved multitasking : by alt+tab between editors of your different projects.

That works, until your editor ends up:

  • missing features, that you'll need other apps for.
  • or bloated by that excess of functionality (VS Code typically uses ten times much RAM than Neovide, for instance); which makes you want to replace it by a lighter text editor + a terminal + a git GUI, and so on.

In both cases, you end up having multiple windows per project, all in the same desktop, which becomes a pain to navigate.

Window Manager's workspaces

WM (GlazeWM, Komorebi, workspacer...) often implement "workspaces", which are sort of a reimplementation of Windows' native Virtual Desktops.

They're generally not compatible in any way with Windows Virtual Desktop:

This have advantages:

But also drawbacks:

  • Lacks the nice integration the native VD has with Windows:
    • Alt+Tab being limited to the current desktop, according to the multitasking Windows settings. (I raised that issue to Komorebi, which likely won't implement that feature: LGUG2Z/komorebi#505 (comment))
    • The nice Tasks view (Win+Tab) UI, which allows to nicely move windows between desktops, show a window on all desktops, etc.
  • Each WM implements its own thing
  • Limited adoption means limited compatibility with other apps

Some WM are compatible with native Virtual Desktops (hence with wProjectDesktop):

Features

  • Alt+Tab focuses Windows related only to your current project.
  • Hotkey (F1 by default) to call the command palette from everywhere.
  • Opens a dedicated desktop for each project.

Configuration

Configuration folder will be in %LocalAppData%\wProjectDesktop\config by default. You can replace it by a custom one using the -customConfig parameter during installation (e.g., .\Install.ps1 -customConfig "C:\MyCustomConfig"), or by setting the wPD_Config_Path environment variable.

Config/ ├─ projects.json ├─ settings.json ├─ Palette/

Projects

project.json

Command palette

In addition to the default commands, you can add scripts to the Palette configuration's subfolder. See [Adding commands to the palette](#Adding commands to the palette) for supported scripts.

Hotkey

Coming soon.

Apps

Coming soon.

Comparisons

Coming soon

FlowLauncher

rofi (Linux)

Adding commands to the palette

PowerShell (.ps1)

An optional "Spawn = false" setting can be set in comment-based help's "NOTES", to run the command in the main wProjectDesktop terminal instance.

Examples

  • Open Windows explorer in the current project
<#
.NOTES
Spawn = false
#>
param($project, $projectPath)
explorer .
  • Open VS Code in the current project
param($project, $projectPath)
code .

Bash (.sh)

Will run in a new terminal instance.

Small footprint

  • Can be installed and used without admin rights
  • Uses natives Windows terminal, Virtual Desktops...

FAQ

What if I want a dedicated desktop for something with apps but no files, for instance a music player?

Just create an empty "music" directory, as if it was a project. It might sound like a hack, but wProjectDesktop tries to rely on existing OS features instead of introducing specific settings, to be as [thin] as possible.

Development

Install

Install-Module -Name Pester -Force -SkipPublisherCheck -Scope CurrentUser

Run

git clone https://github.com/GTonehour/wProjectDesktop.git
Set-Location wProjectDesktop
[Environment]::SetEnvironmentVariable("ahk_wPD", ..., "User") # Path to the (AutoHotkey v2)[www.autohotkey.com/about] executable (or run Install.ps1)
[Environment]::SetEnvironmentVariable("wPD_VirtualDesktop_exe", ..., "User") # Path to (VirtualDesktop.exe)[https://github.com/MScholtes/VirtualDesktop/releases/download/V1.20/VirtualDesktop11-24H2.exe].

Run once:

.\dev\DevMode.ps1

Or if you want to test only the terminal without the initial Destkop initialization:

.\src\Start-Term.ps1

Or schedule for startup:

.\dev\DevModeSchedule.ps1

About

Windows per-project desktop & command palette

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published