diff --git a/PowerShortcuts.sln b/PowerShortcuts.sln index a67eb02..6fd0331 100644 --- a/PowerShortcuts.sln +++ b/PowerShortcuts.sln @@ -15,6 +15,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PowerShortcuts.Host", "Powe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PowerShortcuts.Installer", "PowerShortcuts.Installer\PowerShortcuts.Installer.csproj", "{BC9DB016-7533-4F45-86D9-0D2BC01A2CB8}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Files", "Solution Files", "{1BA47782-CD56-4AA3-B50F-B8267558F86D}" + ProjectSection(SolutionItems) = preProject + README.md = README.md + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU diff --git a/README.md b/README.md new file mode 100644 index 0000000..b7a19ce --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +# PowerShortcuts + +[![continuous](https://github.com/peterder72/PowerShortcuts/actions/workflows/continuous.yml/badge.svg)](https://github.com/peterder72/PowerShortcuts/actions/workflows/continuous.yml) + +A simple Windows program to add shortcuts that are criminally missing from Windows. +Shortcuts heavily inspired by [dwm](https://dwm.suckless.org/). + +Currently only tested on my machine (Windows 11 23H2), +may not (and probably will not) work on other versions due to the undocumented nature of the Virtual Desktop API. + +## Current Features + +- **No admin privileges** required! +- **Tray icon** for easy access +- Shortcuts for **lightning fast Virtual Desktop** operations. + - Alt+\ to switch to desktop \ + - Alt+Shift+\ to move window in focus to desktop \ + +## Technical features + +- Written in **.NET 8.0** +- Uses pre-compiled [VirtualDesktopAccessor](https://github.com/Ciantic/VirtualDesktopAccessor) binary for Virtual Desktop operations +- Uses [nuke](https://github.com/nuke-build/nuke) for build automation +- Undocumented Virtual Desktop switching COM API inspired by [pyvda](https://github.com/mrob95/pyvda) +- Has a **simple installer** + - Adds a shortcut to the Start Menu + - Adds itself to **autostart** + +# Installation + +1. Download the latest .msi installer release from the [releases page](https://github.com/peterder72/PowerShortcuts/releases) +2. Install the software by running the installer +3. The software will **NOT** start automatically after installation (for now), so you can start it from the Start Menu + +## Why not AutoHotKey? + +Too non-verbose and too much of a hassle to write custom logic with DLL interop. +I will need more complex functionality to be invoked by the shortcuts in the future, so AHK scripting will not do + +## Why not pyvda? + +Python in painfully slow (~1s to switch desktop), especially with AHK. +Also, distribution and environment setup is a nightmare in Python. + +There's great support for COM and dll interop in .NET, and just by rewriting some of the pyvda code in C# +I was able to achieve a significant speedup in all operations. + +## Future plans + +- Pinning windows to all desktops +- Plugin support for custom shortcut loading +- Support for other Windows versions