Multi Manager is a robust workspace and window management application built using Rust. It provides an intuitive GUI to manage multiple workspaces, allowing users to capture, organize, and manipulate application windows. This tool is ideal for power users, developers, and anyone looking to optimize their multitasking workflow.
multi-manager-demo-01.mp4
- In Development: Note that this project is still in heavy development and subject to change. Features may be different than what appears in the video.Feedback appreciated.
- Workspace Management: Create, rename, and delete workspaces.
- Window Management:
- Capture active windows and associate them with specific workspaces.
- Save "Home" and "Target" window positions.
- Move windows between "Home" and "Target" positions.
- Hotkey Support: Assign global hotkeys to workspaces for quick activation.
- Validation System:
- Validate hotkey configurations at startup and during updates.
- Indicate the validity of hotkeys in real-time.
- Valid Window Filtering:
- Only valid windows (as determined by
IsWindow
) are considered for operations. - Invalid windows are ignored, preventing unnecessary errors.
- Only valid windows (as determined by
- Persistent Storage:
- Save and load workspace configurations in JSON format.
- Pretty-printed JSON for easy manual editing.
- Visual Feedback:
- Color-coded HWND validity indicators for associated windows.
- Popup dialogs for feedback (e.g., workspace saved successfully).
- Customization: Easily extendable code for additional features.
- The application uses eframe for the GUI.
- Workspaces are displayed as collapsible sections.
- Each workspace can hold multiple captured windows with associated metadata.
- The main interface includes:
- Buttons for workspace and window operations.
- Hotkey validation indicators.
- Window position management tools.
- Workspace Struct: Stores information about each workspace, including name, hotkey, and associated windows.
- Window Struct: Stores metadata for individual application windows, such as HWND, title, and positions.
- Utils Module:
Includes utility functions like
show_message_box
for displaying dialog boxes. - Hotkey Management:
Uses the
windows
crate to register, validate, and handle global hotkeys. - Window Validity Filtering: Filters invalid windows during operations like position checks and toggling.
- Rust: Install Rust to build and run the project.
- Windows OS: This application leverages the Windows API and is not compatible with other operating systems.
-
Clone the repository:
git clone https://github.com/yourusername/multi-manager.git cd multi-manager
-
Install dependencies:
cargo build
-
Run the application:
cargo run
- Create Workspace: Use the "Add New Workspace" button to create a new workspace.
- Rename Workspace:
- Right-click the workspace header to open the rename dialog.
- Enter a new name and confirm by clicking "Ok."
- Delete Workspace: Click "Delete Workspace" to remove a workspace.
- Capture Active Window: Select "Capture Active Window" to add the current window to the selected workspace.
- Set Positions:
- Use "Capture Home" or "Capture Target" to record window positions.
- Adjust positions using the provided drag values.
- Move Windows:
- "Move to Home" relocates the window to its recorded home position.
- "Move to Target" relocates the window to its target position.
- Valid Window Filtering:
- Only valid windows (as determined by the
IsWindow
API) are displayed and operated on. - Invalid windows are marked with a red indicator and ignored during toggles or moves.
- Only valid windows (as determined by the
- Assign Hotkeys:
- Enter a valid hotkey combination in the input field.
- Click "Validate Hotkey" to confirm.
- Activate Workspace: Use the assigned hotkey to activate the workspace and toggle window positions.
- Workspaces are saved in
workspaces.json
. - The file uses a pretty-printed JSON format for easy manual edits.
- Operating System: Windows 10 or later.
- Rust Version: Requires the latest stable Rust compiler.
- Hotkeys are validated against a regex to ensure compatibility.
- Initial validation runs once at startup for all saved workspaces.
- Checks if window handles (HWND) are still valid using the
IsWindow
API. - Displays results with color-coded indicators:
- Green: Valid HWND.
- Red: Invalid HWND.
- Workspaces are saved to
workspaces.json
whenever changes are made. - Upon startup, the JSON file is loaded to restore previous configurations.
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add new feature"
- Push the branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE
file for details.
- eframe: For the GUI framework.
- Windows API: For system-level operations.
- HWND Not Valid:
- Ensure the application window is active when capturing.
- Check if the application has proper permissions.
- Hotkey Not Working:
- Validate the hotkey combination.
- Ensure no other application is using the same hotkey.
- Logs are stored in
log4rs.yaml
-configured files. - Adjust logging levels for detailed debugging.