### Install AltSnap with Scoop Source: https://github.com/ramonunch/altsnap/wiki/Home Instructions to add the 'extras' bucket and install AltSnap using the Scoop package manager. ```bash scoop bucket add extras scoop install extras/altsnap ``` -------------------------------- ### Verify Docker Installation Source: https://github.com/ramonunch/altsnap/blob/main/BUILD_ARM64.md Ensure Docker is installed and running before proceeding with the build process. ```bash docker --version ``` -------------------------------- ### Manage AltSnap with Winget Source: https://github.com/ramonunch/altsnap/wiki/Home Commands for installing, upgrading, and uninstalling AltSnap using the Windows Package Manager (winget). ```bash winget install altsnap winget upgrade altsnap winget uninstall altsnap ``` -------------------------------- ### Manage AltSnap with Chocolatey Source: https://github.com/ramonunch/altsnap/wiki/Home Use these commands to install, upgrade, or uninstall AltSnap via the Chocolatey package manager. ```bash choco install altsnap choco upgrade altsnap choco uninstall altsnap ``` -------------------------------- ### Configure AltSnap Whitelist Mode Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt To enable AltDrag only on specific programs, use the '*' joker at the beginning of the blacklist to turn it into a whitelist. Example: `Processes=*|*, explorer.exe, notepad.exe`. ```ini Processes=*|*, explorer.exe, notepad.exe ``` -------------------------------- ### Use Wildcards in Window Titles/Classes Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt The '*' joker can be used at the end of a class or the beginning of a title for flexible rule matching. Example: `*|Winamp`. ```ini *|Winamp ``` -------------------------------- ### Select Snap Layout via Command Line Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Use the `-lX` command-line option to select a specific Snap Layout, where X is the layout number. ```bash -lX ``` -------------------------------- ### Configure Snap Layout Preview Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Configure the appearance and behavior of the Snap Layout preview feature. Ensure Desktop composition is enabled for opacity to work correctly. ```ini ; Enable/Disables Layout preview (default 1) ShowZonesPrevw=1 ``` ```ini ; Opacity from 0-255 of the Zone preview (default 160). ; Use 0 if you disabled Desktop composition. ZonesPrevwOpacity=160 ``` ```ini ; Color of the Snap Layout preview, ZonesPrevwBGCol for background color ; and ZonesPrevwBDCol for the border color. default are white and black. ; Use a dark beckground and a light border if you use dark theme. ZonesPrevwBGCol=FF FF FF ZonesPrevwBDCol=00 00 00 ``` -------------------------------- ### Fix Negative Border Problems Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Resolves issues with negative border calculations that occur when a window starts in a maximized state. ```ini Fix negative border problems when starting from a maximized state. #445 ``` -------------------------------- ### Configure Keyboard Move Step Sizes Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Sets the pixel step size for keyboard-based window movement. KBMoveStep is for large steps, and KBMoveSStep is for small steps. ```text KBMoveStep=100 KBMoveSStep=10 ``` -------------------------------- ### Configure AResize Blacklist Source: https://github.com/ramonunch/altsnap/wiki/Home List windows that AltSnap should always consider resizeable. This applies only when 'ResizeAll' is set to 0. ```ini AResize=*|SunAwtDialog ``` -------------------------------- ### Ignore Ctrl if Simulated Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Ignores the Ctrl key if it is simulated, for example, when using Alt Gr. This prevents unintended behavior with certain key combinations. ```ini Ignore Ctrl if simulated (vai Alt Gr for exmple). #518 ``` -------------------------------- ### Build with Microsoft Visual Studio Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds AltSnap using Microsoft Visual Studio (CL.EXE). Ensure the VsDevCmd.bat console environment is set up with appropriate -arch and -host_arch parameters. ```bat > mkmsvc.bat ``` -------------------------------- ### Build x64 GCC Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the x86_64 GCC version of AltSnap. ```makefile > make -fMakefileX64 ``` -------------------------------- ### Wildcard Matching in Blacklist Titles/Classes Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Extends wildcard matching for blacklist items, allowing '*' at the start or end of titles or classes. A star cannot be at both ends of an item. ```text *ttl|class* ``` ```text *ttl|*class ``` ```text ttl*|*class ``` ```text ttl*|class* ``` -------------------------------- ### Build AltSnap using Docker Makefile Source: https://github.com/ramonunch/altsnap/blob/main/BUILD_ARM64.md Use the provided Makefile with Docker to cross-compile AltSnap for ARM64. This includes options to build all components, just the executable, just the DLL, or to clean build artifacts. ```bash # Build everything make -f MakefileARM64Docker ``` ```bash # Build just the executable make -f MakefileARM64Docker AltSnap.exe ``` ```bash # Build just the DLL make -f MakefileARM64Docker hooks.dll ``` ```bash # Clean build artifacts make -f MakefileARM64Docker clean ``` -------------------------------- ### Build Win32 GCC Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the i386 Win32 GCC version of AltSnap. ```makefile > make ``` -------------------------------- ### Configure Grid Mode (.ini) Source: https://github.com/ramonunch/altsnap/wiki/Home Enable and configure grid mode by setting UseZones to 3 or 7 in the [Zones] section of the .ini file. Define the number of columns (GridNx) and rows (GridNy) for the grid. ```ini In the [Zones] section: UseZones=0 ; If set to 1, enables Snap Layouts (Zones) ; If set to 3, enables Grid mode (configure below) ; If 4 is added window is extended without Ctrl. ; recomended is UseZones=1 for normal "Custom Snap Layout" mode ; and 3+4 => UseZones=7 for "Grid" mode. ; If you set UseZones to 3 or 7 then you enabled the ; GRID MODE that simply cuts each screen into 'parts'. ; You can set the number of parts below: GridNx=3 ; Number of grid columns GridNy=2 ; Number of grid lines ``` -------------------------------- ### Define Focus Window Actions Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Define keyboard shortcuts or command-line arguments for focusing windows in specific directions. These actions can be configured in the INI file or via command line. ```ini FocusL; FocusT, FocusR, FocusB. #465 ``` -------------------------------- ### Configure Custom Snap Layouts (.ini) Source: https://github.com/ramonunch/altsnap/wiki/Home Use these settings in the [Zones] section of the .ini file to enable and configure custom snap layouts. Values for UseZones can be combined (e.g., 9 for Shift-disabled snapping). ```ini [Zones] UseZones=1 ; If set to 1, enables Snap Layouts (Zones) ; If set to 3, enables Grid mode (configure below) ; If 4 is added window is extended without Ctrl. ; If 8 is added snapping will occur without Shift ie: 1+8 => UseZones=9. ; Shift will disable Zones instead. ; recomended is UseZones=1 or 9 for normal snap Layout with or w/o shift ; and 3+4 => UseZones=7 for grid mode. ZSnapMode=0 ; Zone snapping strategy ; Set to 0 to snap to the zones pointed by the cursor (default). ; Set to 1 to snap to the zone which center is the nearest from the cursor ; There is always a the InterZone tolerance to snap to several zones. InterZone=32 ; Size in pixels between zones from -128 to +127 (default 32) ; where the window will be snapped to the union of zones. ; If set to 0, you cannot cover more than one zone. MaxLayouts=4 ; Maximum number of layouts that you can switch btween ; Set to 0 or 1 if you want a single layout, 10 max. LayoutNumber=0 ; Currently selected layout (from 0 to MaxLayouts-1) ``` -------------------------------- ### Transparency Settings in AltSnap Source: https://github.com/ramonunch/altsnap/wiki/Home Customize window transparency using MinAlpha and AlphaDelta. MinAlpha controls the minimum transparency level, while AlphaDelta defines the step for transparency changes. Negative AlphaDelta values invert the wheel behavior. ```ini [Advanced] MinAlpha=8 ; Minimum alpha for the transparency action, from 1-255 (default 8). AlphaDelta=64 AlphaDeltaShift=8 ; Alpha step for the transparency action, from -128 to +127 (default 64). ; The other value is applied when Shift is pressed (default 8). SnapGap=0 ; Gap in pixels from -128 to +127 between snapped windows and monitors sides. ; Use negative values if you want an overlap, default is 0 ; I suggest -1 under Win10. ``` -------------------------------- ### Add Focus Window Action Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Introduces the 'Focus Window' action, allowing users to bring specific windows to the foreground. ```ini Added the Focus Window action. #408 ``` -------------------------------- ### Invoke AltSnap Actions from Command Line Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Allows triggering AltSnap actions via the command line on the pointed or foreground window. AltSnap must be running with multiple instances disabled. ```text AltSnap.exe -afAlwaysOnTop ``` -------------------------------- ### Build ARM64 Windows Docker Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the ARM64 Windows version of AltSnap using Docker. Refer to BUILD_ARM64.md for details. ```makefile > make -fMakefileARM64Docker ``` -------------------------------- ### Configure Blacklist with Exe Names and Titles/Classes Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Allows blacklisting windows based on executable names, window titles, or window classes. Supports a combined format for more specific exclusions. ```text explorer.exe:*|CabinetWClass ``` -------------------------------- ### Build i386 LLVM Clang Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the i386 version of AltSnap using LLVM Clang. ```makefile > make -fMakefileClang ``` -------------------------------- ### Performance Settings for Window Refresh and Movement Source: https://github.com/ramonunch/altsnap/wiki/Home Optimize AltSnap performance by adjusting RefreshRate, MoveRate, and ResizeRate. RefreshRate controls the minimum delay between window refreshes, while MoveRate and ResizeRate determine the pixel threshold for actual window movement and resizing. ```ini [Performance] RefreshRate=7 ; Minimum delay in milliseconds between two refresh of the window. ; I advise a value slightly lower than your refresh rate ie: ; 60Hz monitor => RefreshRate=16 ; Max value is 255 (4 Hz), sane values are below 100 (10 Hz). ; Use 0 if you want the most reactivity. MoveRate=2 ResizeRate=4 ; The number of pixels to wait before actually moving the window. ; Use 1 for instant updates. You will have better performance with higher values ; but you will loose precision in moving/resizing. Sane values are below 10. ; Recommended is 1 to 5 ``` -------------------------------- ### Configure Snaplist for No Caption Windows Source: https://github.com/ramonunch/altsnap/wiki/Home Define a list of windows that should be snapped even if they lack a caption. Use the format "*|ClassName" or "Window Title|ClassName". ```ini Snaplist=*|BaseWindow_RootWnd,*|SkinWnd,*|ChatSkinWnd,*|SpotifyMainWindow,*|USurface_33202,Winamp Playlist Editor|Winamp PE,*|M4W_MainWindow ``` -------------------------------- ### Configure Bottommost Blacklist Source: https://github.com/ramonunch/altsnap/wiki/Home Specify windows that should remain below other windows lowered by AltSnap. Default is *|RainmeterMeterWindow. ```ini Bottommost=*|RainmeterMeterWindow ``` -------------------------------- ### Configure NCHittest Blacklist Source: https://github.com/ramonunch/altsnap/wiki/Home List windows for which AltSnap should directly query the ancestor window for the Hittest to determine the title bar location. ```ini NCHittest=*|ApplicationFrameWindow ``` -------------------------------- ### Configure Automatic Resizing Timer Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Set `RezTimer=4` to automatically select a resizing behavior based on display frequency (60Hz or otherwise). This option is in the [Performance] section. ```ini RezTimer=4 ``` -------------------------------- ### Build Win32 GCC Debug Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the i386 GCC debug version of AltSnap. ```makefile > make -fMakefiledb ``` -------------------------------- ### Build x64 GCC Debug Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the x86_64 GCC debug version of AltSnap. ```makefile > make -fMakefileX64db ``` -------------------------------- ### Enable uiAccess Flag for Moving Elevated Windows Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Allows AltSnap to move elevated windows without requiring elevation itself by setting the `uiAccess` flag to true in the `.manifest` file and self-signing the executable. See #538 for details. ```xml uiAccess flag was added to the .manifest file, see #538 for more details. Basically you can install AltSnap to the `Program Files` directorry, run an AHK script that changes the uiAccess to true and self-sign AltSnap.exe, to be able to move elevated windows without elevation. ``` -------------------------------- ### Configure Cursor Usage Source: https://github.com/ramonunch/altsnap/wiki/Home Control cursor behavior during window movement and resizing. Use 0 to disable cursor handling, 1 for all cursors (default), 2 to disable the Hand cursor, 3 for the normal cursor always, or 4 to use the ResizeAll cursor for movement. ```ini UseCursor=1 ``` -------------------------------- ### Kill All Unresponsive Programs via Command Line Source: https://github.com/ramonunch/altsnap/wiki/Home This command-line utility forcefully terminates all processes that are in a 'NOT RESPONDING' state, excluding essential system processes like AltSnap.exe, dwm.exe, and explorer.exe. It's useful for cleaning up unresponsive applications. ```cmd taskkill.exe /F /FI "status eq NOT RESPONDING" /FI "IMAGENAME ne AltSnap.exe" /FI "IMAGENAME ne dwm.exe" /FI "IMAGENAME ne explorer.exe" ``` -------------------------------- ### Configure SSizeMove Blacklist Source: https://github.com/ramonunch/altsnap/wiki/Home Define windows to which WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE messages will NOT be sent. Modify with caution. ```ini SSizeMove=*|iTunes ``` -------------------------------- ### Create AltSnap Scheduled Task Source: https://github.com/ramonunch/altsnap/wiki/Home Use this command to create a scheduled task that runs AltSnap on user logon with the highest privileges and a 10-second delay. ```bash schtasks /create /f /tn "RunAltSnap" /tr "C:\Path\To\AltSnap.exe" /sc onlogon /rl highest /delay 00:10 ``` -------------------------------- ### Execute Action on Pointed Window Source: https://github.com/ramonunch/altsnap/wiki/Home Use this command to toggle a specific action on the window currently under the mouse cursor. Ensure AltSnap is running in single-instance mode. ```bash AltSnap.exe -apAlwaysOnTop ``` -------------------------------- ### Fix Window Resizing with Different DPI Monitors Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Partially addresses issues with window resizing when moving between monitors with different DPI settings. ```ini Partially fixed window resizing when going to a monitor with a different DPI. #413 ``` -------------------------------- ### Combine Timer-Based Resizing with Multipliers Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Set `RezTimer=3` in the [Performance] section to combine timer-based resizing with the usual MoveRate and ResizeRate multiplication factors. Refer to issues #451 and #452 for details. ```ini RezTimer=3 ``` -------------------------------- ### Improve Move to Top/Left/Right/Bottom Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Enhancements to the functionality for moving windows to the top, left, right, or bottom edges of the screen. ```ini Improve move to top/left/right/bottom. #534 ``` -------------------------------- ### Build i386 TCC Source: https://github.com/ramonunch/altsnap/blob/main/README.md Builds the i386 version of AltSnap using tcc (Bellard's tiny C compiler). ```makefile > make -fMakefileTCC ``` -------------------------------- ### Configure Portable Mode Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Portable mode is automatically enabled if `AltSnap.ini` is located next to `AltSnap.exe`. Otherwise, `AltSnap.ini` will be created in `%APPDATA%\AltSnap\` and populated from `AltSnap.dni` if present. ```ini Portable mode is still automatic if AltSnap.ini is located next to AltSnap.exe. Otherwise the AltSnap.ini file will be written to %APPDATA%\AltSnap\ and it will be copied from the `AltSnap.dni` file if present in altsnap's folder. ``` -------------------------------- ### Add Scheduled Task Scripts Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Includes batch files `sch_On.bat` and `sch_Off.bat` for setting up and tearing down scheduled tasks related to AltSnap. ```batch Add sch_On.bat and sch_Off.bat batch files to setup Scheduled task #475 ``` -------------------------------- ### Number Menu Items from 0-9 Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Enables numbering of menu elements from 0-9 instead of A-Z for all window lists. Requires setting NumberMenuItems to 1 in the [Advanced] section. ```text NumberMenuItems=1 ``` -------------------------------- ### Set Maximum Keys for AltSnap Activation Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Configures the maximum number of keys that can be pressed to activate AltSnap. A value of 0 means unlimited keys. ```text MaxKeysNum=5 ``` -------------------------------- ### Transform Snap to Corner for Non-Resizable Windows Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt When 'Resize all windows' is not used, 'Snap to corner' is transformed into 'move to next edge' for windows that cannot be resized. ```ini Transform Snap to corner in move to next edge for non-resizable windows when not using the Resize all windows option. #447 ``` -------------------------------- ### Automate Killing Unresponsive Programs with AHK Source: https://github.com/ramonunch/altsnap/wiki/Home This AutoHotkey script provides a hotkey combination (Ctrl+Shift+Alt+F4) to execute the taskkill command for unresponsive programs. The `,,hide` parameter ensures the command prompt window does not appear. ```ahk ^+!F4:: Run, taskkill.exe /F /FI "status eq NOT RESPONDING" /FI "IMAGENAME ne AltSnap.exe" /FI "IMAGENAME ne dwm.exe" /FI "IMAGENAME ne explorer.exe" ,,hide ``` -------------------------------- ### Configure MMBLower Blacklist Source: https://github.com/ramonunch/altsnap/wiki/Home Specify windows for which the title bar action (like lowering) should not be performed. Default includes MS-WindowTerminal and SDL programs. ```ini MMBLower=*|CASCADIA_HOSTING_WINDOW_CLASS,*|SDL_app,*|MozillaDialogClass ``` -------------------------------- ### Enable Hotclick for XXButton Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt This fix ensures that XXButton can be used as a hotclick, resolving a regression from version 1.55. ```ini Allow xxbutton as hotclick (1.55 regression). #433 ``` -------------------------------- ### Configure Window Translucency While Dragging Source: https://github.com/ramonunch/altsnap/blob/main/AltSnap.txt Set the MoveTrans option in the [General] section of AltDrag.ini to make windows translucent while dragging. Values range from 1-254 for opacity; 255, 0, or empty disables it. ```ini [General] MoveTrans=128 ```