# MacroPad Server

A versatile MacroPad server application that lets you create, manage, and execute custom macros from both a local interface and remotely via a web interface.

## Features

- **Text Macros**: Insert frequently used text snippets with a single click
- **Application Macros**: Launch applications or scripts directly
- **Key Modifiers**: Add Ctrl, Alt, Shift modifiers and Enter keypress to your text macros
- **Custom Images**: Assign images to macros for easy identification
- **Category Management**: Organize macros into custom tabs for better organization
- **Web Interface**: Access and trigger your macros from other devices on your network
- **System Tray Integration**: Minimize to tray when minimized, exit when closed
- **QR Code Generation**: Quickly connect mobile devices to the web interface
- **Sorting Options**: Sort macros by name, type, or recent usage
- **Persistent Storage**: Macros are automatically saved for future sessions
- **Dark Theme**: Modern dark interface for comfortable use
- **Modular Architecture**: Clean separation of concerns with dedicated modules

## Requirements

- Python 3.11+
- Required Python packages (install via requirements.txt):
  - tkinter
  - flask
  - pyautogui
  - pystray
  - Pillow (PIL)
  - waitress
  - netifaces
  - qrcode

## Installation

### Method 1: From Source

1. Clone or download this repository
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```

### Method 2: Pre-built Executables

1. Go to the [Releases](https://repo.anhonesthost.net/MacroPad/MP-Server/releases) page
2. Download the appropriate version for your operating system:
   - Windows: `macropad.exe`
   - Linux: `macropad`
   - macOS: `macropad.app`
3. Run the downloaded file

> [!IMPORTANT]
> The executables are unsigned and may trigger security warnings. You may need to click "More info" and "Run anyway" in Windows SmartScreen, adjust permissions on Linux (`chmod +x macropad`), or override Gatekeeper on macOS.

## Usage

### Main Interface

When launched, MacroPad displays your existing macros with options to:

- **Add New Macro**: Create text snippets or application shortcuts
- **Edit Macro**: Modify existing macros
- **Delete Macro**: Remove unwanted macros
- **Sort Options**: Sort the Macros by type, name, and recent usage
- **Manage Tabs**: Assign categories to macros for better organization
- **Start Web Server**: Starts the web server to serve the MacroPad web interface.

### Creating a Macro

1. Click the "Add Macro" button
2. Fill in the details:
   - **Name**: A descriptive name for your macro
   - **Category**: Assign a category to associate with a tab
   - **Type**: Choose between Text or Application
   - **Command/Text**: The text to insert or application command to run
   - **Modifiers**: Select any combination of Ctrl, Alt, Shift, and Enter
   - **Image**: Optionally add an image for visual identification
3. Click "Save" to create your macro

### Remote Access

The application runs a web server enabling remote access:

1. Note your computer's local IP address (shown in the application header)
2. From another device on the same network, open a web browser
3. Navigate to `http://<your-ip-address>:40000`
4. Click on any macro to execute it on your main computer

### System Tray

When minimized to the system tray:
- Right-click the tray icon to show options
- Select "Show" to restore the window
- Select "Exit" to close the application

## Example Application Commands

### Windows Examples

#### Steam Applications
```
"C:\Program Files (x86)\Steam\steam.exe" steam://rungameid/2767030
```

#### Chrome to a website
```
"C:\Program Files\Google\Chrome\Application\chrome.exe" http://twitch.tv/shadowdao
```

#### Run Notepad
```
notepad.exe
```

#### Open File Explorer to a specific location
```
explorer.exe "C:\Users\YourUsername\Documents"
```

### Linux Examples

#### Opening Firefox
```
firefox https://example.com
```

#### Opening Steam
```
steam steam://rungameid/2767030
```

#### Launch Terminal
```
gnome-terminal
```

#### Open File Manager
```
nautilus ~/Documents
```

### macOS Examples

#### Opening Safari
```
open -a Safari https://example.com
```

#### Opening Terminal
```
open -a Terminal
```

#### Open Finder to a specific location
```
open ~/Documents
```

#### Launch Applications
```
open -a "Visual Studio Code"
```

#### Special Thanks to CatArgent_ on Twitch for proof reading my stuff and providing valuable feedback.