diff --git a/README.md b/README.md index 3c3d913..4ded2f9 100644 --- a/README.md +++ b/README.md @@ -177,9 +177,9 @@ Here are some examples with different configs: With this config:
[KeyboardShortcutsModifiers] -SwitchDesktop=LAlt -MoveWindowToDesktop=LAlt, Shift, Ctrl -MoveWindowAndSwitchToDesktop=LAlt, Shift +SwitchDesktop=Win, Ctrl +MoveWindowToDesktop= +MoveWindowAndSwitchToDesktop=Win, Ctrl, Shift NextTenDesktops= [KeyboardShortcutsIdentifiers] @@ -187,8 +187,8 @@ PreviousDesktop=Left NextDesktop=Right [KeyboardShortcutsCombinations] -TogglePinWindow=LAlt, Shift, Ctrl, Q -TogglePinApp=LAlt, Shift, Ctrl, A +TogglePinWindow=Win, Ctrl, Shift, Q +TogglePinApp=Win, Ctrl, Shift, A PinWindow= PinApp= UnpinWindow= @@ -201,32 +201,32 @@ The following shortcuts are available: | Description | Keyboard Shortcut | | ------------------------------------------------------------------------------ | -------------------------------------------- | -| Switch to desktop by number | Left Alt + (0-9) | -| Switch to next/previous desktop | Left Alt + (Left/Right Arrow) | -| Move the current window to desktop by number | Left Alt + Shift + Ctrl + (0-9) | -| Move the current window to next/previous desktop | Left Alt + Shift + Ctrl + (Left/Right Arrow) | -| Move the current window to desktop by number and switch to it | Left Alt + Shift + (0-9) | -| Move the current window to next/previous desktop and switch to it | Left Alt + Shift + (Left/Right Arrow) | +| Switch to desktop by number | Win + Ctrl + (0-9) | +| Switch to next/previous desktop | Win + Ctrl + (Left/Right Arrow) | +| Move the current window to desktop by number | Disabled | +| Move the current window to next/previous desktop | Disabled | +| Move the current window to desktop by number and switch to it | Win + Ctrl + Shift + (0-9) | +| Move the current window to next/previous desktop and switch to it | Win + Ctrl + Shift + (Left/Right Arrow) | | Switch to desktop by number (desktops 11-20) | Disabled | | Move the current window to desktop by number (desktops 11-20) | Disabled | | Move the current window to desktop by number and switch to it (desktops 11-20) | Disabled | -| Pin/unpin (toggle) current window | Left Alt + Shift + Ctrl + Q | -| Pin/unpin (toggle) current app | Left Alt + Shift + Ctrl + A | +| Pin/unpin (toggle) current window | Win + Ctrl + Shift + Q | +| Pin/unpin (toggle) current app | Win + Ctrl + Shift + A | | Pin current window to all desktops | Disabled | | Pin current app to all desktops | Disabled | | Unpin current window from all desktops | Disabled | | Unpin current app from all desktops | Disabled | -| Open Desktop Manager | Left Alt + (key under Esc) | +| Open Desktop Manager | Win + Ctrl + (key under Esc) | #### Behavior with custom config With this config:[KeyboardShortcutsModifiers] -SwitchDesktop=LWin -MoveWindowToDesktop= -MoveWindowAndSwitchToDesktop=LWin, Alt -NextTenDesktops=LShift +SwitchDesktop=LAlt +MoveWindowToDesktop=LAlt, Shift +MoveWindowAndSwitchToDesktop=LAlt, Ctrl, Shift +NextTenDesktops=Win [KeyboardShortcutsIdentifiers] PreviousDesktop=PgUp @@ -244,25 +244,24 @@ OpenDesktopManager= The following shortcuts are available: -| Description | Keyboard Shortcut | -| ------------------------------------------------------------------------------ | ------------------------------------ | -| Switch to desktop by number | Left Win + (0-9) | -| Switch to next/previous desktop | Left Win + (Page Up/Page Down) | -| Move the current window to desktop by number | Disabled | -| Move the current window to next/previous desktop | Disabled | -| Move the current window to desktop by number and switch to it | Left Win + Alt + (0-9) | -| Move the current window to next/previous desktop and switch to it | Left Win + Alt + (Page Up/Page Down) | -| Open Desktop Manager | Left Win + (key under Esc) | -| Switch to desktop by number (desktops 11-20) | Left Win + Left Shift + (0-9) | -| Move the current window to desktop by number (desktops 11-20) | Disabled | -| Move the current window to desktop by number and switch to it (desktops 11-20) | Left Win + Alt + Left Shift + (0-9) | -| Pin/unpin (toggle) current window | Disabled | -| Pin/unpin (toggle) current app | Disabled | -| Pin current window to all desktops | Disabled | -| Pin current app to all desktops | Disabled | -| Unpin current window from all desktops | Disabled | -| Unpin current app from all desktops | Disabled | -| Open Desktop Manager | Disabled | +| Description | Keyboard Shortcut | +| ------------------------------------------------------------------------------ | --------------------------------------------- | +| Switch to desktop by number | Left Alt + (0-9) | +| Switch to next/previous desktop | Left Alt + (Page Up/Page Down) | +| Move the current window to desktop by number | Left Alt + Shift + (0-9) | +| Move the current window to next/previous desktop | Left Alt + Shift + (Page Up/Page Down) | +| Move the current window to desktop by number and switch to it | Left Alt + Ctrl + Shift + (0-9) | +| Move the current window to next/previous desktop and switch to it | Left Alt + Ctrl + Shift + (Page Up/Page Down) | +| Switch to desktop by number (desktops 11-20) | Left Alt + Win + (0-9) | +| Move the current window to desktop by number (desktops 11-20) | Left Alt + Shift + Win (0-9) | +| Move the current window to desktop by number and switch to it (desktops 11-20) | Left Alt + Ctrl + Shift + Win (0-9) | +| Pin/unpin (toggle) current window | Disabled | +| Pin/unpin (toggle) current app | Disabled | +| Pin current window to all desktops | Disabled | +| Pin current app to all desktops | Disabled | +| Unpin current window from all desktops | Disabled | +| Unpin current app from all desktops | Disabled | +| Open Desktop Manager | Disabled | ### Mouse Shortcuts diff --git a/settings.ini b/settings.ini index fd6b801..5a4283d 100644 --- a/settings.ini +++ b/settings.ini @@ -4,9 +4,9 @@ TaskbarScrollSwitching=1 UseNativePrevNextDesktopSwitchingIfConflicting=0 [KeyboardShortcutsModifiers] -SwitchDesktop=LAlt -MoveWindowToDesktop=LAlt, Shift, Ctrl -MoveWindowAndSwitchToDesktop=LAlt, Shift +SwitchDesktop=Win, Ctrl +MoveWindowToDesktop= +MoveWindowAndSwitchToDesktop=Win, Ctrl, Shift NextTenDesktops= [KeyboardShortcutsIdentifiers] @@ -14,8 +14,8 @@ PreviousDesktop=Left NextDesktop=Right [KeyboardShortcutsCombinations] -TogglePinWindow=LAlt, Shift, Ctrl, Q -TogglePinApp=LAlt, Shift, Ctrl, A +TogglePinWindow=Win, Ctrl, Shift, Q +TogglePinApp=Win, Ctrl, Shift, A PinWindow= PinApp= UnpinWindow= diff --git a/virtual-desktop-enhancer.ahk b/virtual-desktop-enhancer.ahk index 97e2f33..bcfe991 100644 --- a/virtual-desktop-enhancer.ahk +++ b/virtual-desktop-enhancer.ahk @@ -2,6 +2,8 @@ #WinActivateForce #HotkeyInterval 20 #MaxHotkeysPerInterval 20000 +#MenuMaskKey vk07 +#UseHook ; Credits to Ciantic: https://github.com/Ciantic/VirtualDesktopAccessor #Include, %A_ScriptDir%\libraries\read-ini.ahk @@ -233,48 +235,72 @@ OnTaskbarScrollDown() { } OnPinWindowPress() { - _PinWindow() + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() + _PinWindow(windowID) + _ShowTooltipForPinnedWindow(windowTitle) } OnUnpinWindowPress() { - _UnPinWindow() + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() + _UnpinWindow(windowID) + _ShowTooltipForUnpinnedWindow(windowTitle) } OnTogglePinWindowPress() { - window := _GetCurrentWindow() - if (_GetIsWindowPinned(window)) { - _UnpinWindow(window) - } else { - _PinWindow(window) + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() + if (_GetIsWindowPinned(windowID)) { + _UnpinWindow(windowID) + _ShowTooltipForUnpinnedWindow(windowTitle) + } + else { + _PinWindow(windowID) + _ShowTooltipForPinnedWindow(windowTitle) } } OnPinAppPress() { + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() _PinApp() + _ShowTooltipForPinnedApp(windowTitle) } OnUnpinAppPress() { + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() _UnpinApp() + _ShowTooltipForUnpinnedApp(windowTitle) } OnTogglePinAppPress() { - window := _GetCurrentWindow() - if (_GetIsAppPinned(window)) { - _UnpinApp(window) - } else { - _PinApp(window) + windowID := _GetCurrentWindowID() + windowTitle := _GetCurrentWindowTitle() + if (_GetIsAppPinned(windowID)) { + _UnpinApp(windowID) + _ShowTooltipForUnpinnedApp(windowTitle) + } + else { + _PinApp(windowID) + _ShowTooltipForPinnedApp(windowTitle) } } OnDesktopSwitch(n:=1) { if (TooltipsEnabled) { - _ShowTooltip(n) + _ShowTooltipForDesktopSwitch(n) } _ChangeAppearance(n) _ChangeBackground(n) _FocusIfRequested() } +Noop() { + Hotkey, LWin UP, Off +} + ; ====================================================================== ; Functions ; ====================================================================== @@ -323,11 +349,20 @@ _IsCursorHoveringTaskbar() { return (mouseHoveringID == taskbarID) } -_GetCurrentWindow() { +_GetCurrentWindowID() { WinGet, activeHwnd, ID, A return activeHwnd } +_GetCurrentWindowTitle() { + WinGetTitle, activeHwnd, A + return activeHwnd +} + +_TruncateString(string:="", n:=10) { + return (StrLen(string) > n ? SubStr(string, 1, n-3) . "..." : string) +} + _GetDesktopName(n:=1) { if (n == 0) { n := 10 @@ -360,7 +395,7 @@ _GetNumberOfDesktops() { } _MoveCurrentWindowToDesktop(n:=1) { - activeHwnd := _GetCurrentWindow() + activeHwnd := _GetCurrentWindowID() DllCall(MoveWindowToDesktopNumberProc, UInt, activeHwnd, UInt, n-1) } @@ -373,33 +408,33 @@ _ChangeDesktop(n:=1) { _CallWindowProc(proc, window:="") { if (window == "") { - window := _GetCurrentWindow() + window := _GetCurrentWindowID() } return DllCall(proc, UInt, window) } -_PinWindow(window:="") { - _CallWindowProc(PinWindowProc, window) +_PinWindow(windowID:="") { + _CallWindowProc(PinWindowProc, windowID) } -_UnpinWindow(window:="") { - _CallWindowProc(UnpinWindowProc, window) +_UnpinWindow(windowID:="") { + _CallWindowProc(UnpinWindowProc, windowID) } -_GetIsWindowPinned(window:="") { - return _CallWindowProc(IsPinnedWindowProc, window) +_GetIsWindowPinned(windowID:="") { + return _CallWindowProc(IsPinnedWindowProc, windowID) } -_PinApp(window:="") { - _CallWindowProc(PinAppProc, window) +_PinApp(windowID:="") { + _CallWindowProc(PinAppProc, windowID) } -_UnpinApp(window:="") { - _CallWindowProc(UnpinAppProc, window) +_UnpinApp(windowID:="") { + _CallWindowProc(UnpinAppProc, windowID) } -_GetIsAppPinned(window:="") { - return _CallWindowProc(IsPinnedAppProc, window) +_GetIsAppPinned(windowID:="") { + return _CallWindowProc(IsPinnedAppProc, windowID) } _ChangeBackground(n:=1) { @@ -451,12 +486,9 @@ _Focus() { SendEvent !{Esc} } -_ShowTooltip(n:=1) { - if (n == 0) { - n := 10 - } +_ShowTooltip(message:="") { params := {} - params.message := _GetDesktopName(n) + params.message := message params.lifespan := TooltipsLifespan params.position := TooltipsCentered params.fontSize := TooltipsFontSize @@ -465,3 +497,26 @@ _ShowTooltip(n:=1) { params.backgroundColor := TooltipsBackgroundColor Toast(params) } + +_ShowTooltipForDesktopSwitch(n:=1) { + if (n == 0) { + n := 10 + } + _ShowTooltip(_GetDesktopName(n)) +} + +_ShowTooltipForPinnedWindow(windowTitle) { + _ShowTooltip("Window """ . _TruncateString(windowTitle, 30) . """ pinned.") +} + +_ShowTooltipForUnpinnedWindow(windowTitle) { + _ShowTooltip("Window """ . _TruncateString(windowTitle, 30) . """ unpinned.") +} + +_ShowTooltipForPinnedApp(windowTitle) { + _ShowTooltip("App """ . _TruncateString(windowTitle, 30) . """ pinned.") +} + +_ShowTooltipForUnpinnedApp(windowTitle) { + _ShowTooltip("App """ . _TruncateString(windowTitle, 30) . """ unpinned.") +}