Compare commits
6
Commits
5727a9ee68
...
v0.8.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80f4c30fb9 | ||
|
|
c80474f520 | ||
|
|
0a66c1d663 | ||
|
|
2f8fa238fc | ||
|
|
d2a9be6274 | ||
|
|
a477be23cc |
@@ -0,0 +1,140 @@
|
|||||||
|
name: Build and Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Get version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat version.txt)
|
||||||
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
id: create_release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: v${{ env.VERSION }}
|
||||||
|
name: Release v${{ env.VERSION }}
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
build-windows:
|
||||||
|
needs: [create-release]
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install pyinstaller
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Build executable
|
||||||
|
run: |
|
||||||
|
pyinstaller macropad.spec
|
||||||
|
|
||||||
|
- name: Upload Windows artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: macropad-windows
|
||||||
|
path: dist/macropad.exe
|
||||||
|
|
||||||
|
build-linux:
|
||||||
|
needs: [create-release]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install pyinstaller
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
- name: Build executable
|
||||||
|
run: |
|
||||||
|
pyinstaller macropad_linux.spec
|
||||||
|
|
||||||
|
- name: Upload Linux artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: macropad-linux
|
||||||
|
path: dist/macropad
|
||||||
|
|
||||||
|
# MacOS build is temporarily disabled
|
||||||
|
# Uncomment this section when macOS build environment becomes available
|
||||||
|
#
|
||||||
|
# build-macos:
|
||||||
|
# needs: [create-release]
|
||||||
|
# runs-on: macos-latest
|
||||||
|
# steps:
|
||||||
|
# - name: Checkout code
|
||||||
|
# uses: actions/checkout@v3
|
||||||
|
#
|
||||||
|
# - name: Set up Python
|
||||||
|
# uses: actions/setup-python@v4
|
||||||
|
# with:
|
||||||
|
# python-version: '3.11'
|
||||||
|
#
|
||||||
|
# - name: Install dependencies
|
||||||
|
# run: |
|
||||||
|
# python -m pip install --upgrade pip
|
||||||
|
# pip install pyinstaller
|
||||||
|
# pip install -r requirements.txt
|
||||||
|
#
|
||||||
|
# - name: Build executable
|
||||||
|
# run: |
|
||||||
|
# pyinstaller macropad_macos.spec
|
||||||
|
#
|
||||||
|
# - name: Upload macOS artifact
|
||||||
|
# uses: actions/upload-artifact@v3
|
||||||
|
# with:
|
||||||
|
# name: macropad-macos
|
||||||
|
# path: dist/macropad.app
|
||||||
|
|
||||||
|
attach-to-release:
|
||||||
|
needs: [create-release, build-windows, build-linux]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Get version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat version.txt)
|
||||||
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Download all artifacts
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
|
||||||
|
- name: Attach executables to release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: v${{ env.VERSION }}
|
||||||
|
files: |
|
||||||
|
macropad-windows/macropad.exe
|
||||||
|
macropad-linux/macropad
|
||||||
|
# macropad-macos/macropad.app/**/*
|
||||||
@@ -8,30 +8,157 @@ A versatile MacroPad server application that lets you create, manage, and execut
|
|||||||
- **Application Macros**: Launch applications or scripts directly
|
- **Application Macros**: Launch applications or scripts directly
|
||||||
- **Key Modifiers**: Add Ctrl, Alt, Shift modifiers and Enter keypress to your text macros
|
- **Key Modifiers**: Add Ctrl, Alt, Shift modifiers and Enter keypress to your text macros
|
||||||
- **Custom Images**: Assign images to macros for easy identification
|
- **Custom Images**: Assign images to macros for easy identification
|
||||||
- **Tabbed Organization**: Organize macros into categories with custom tabs
|
- **Category Management**: Organize macros into custom tabs for better organization
|
||||||
- **Sorting Options**: Sort macros by name, type, or recent usage
|
|
||||||
- **Web Interface**: Access and trigger your macros from other devices on your network
|
- **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
|
- **QR Code Generation**: Quickly connect mobile devices to the web interface
|
||||||
- **System Tray Integration**: Minimize to tray, restore from tray menu
|
- **Sorting Options**: Sort macros by name, type, or recent usage
|
||||||
- **Dark Theme UI**: Modern dark interface with improved usability
|
|
||||||
- **Persistent Storage**: Macros are automatically saved for future sessions
|
- **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
|
## Requirements
|
||||||
|
|
||||||
- Python 3.11+
|
- Python 3.11+
|
||||||
- Required Python packages:
|
- Required Python packages (install via requirements.txt):
|
||||||
- tkinter
|
- tkinter
|
||||||
- flask
|
- flask
|
||||||
- pyautogui
|
- pyautogui
|
||||||
- pystray
|
- pystray
|
||||||
- Pillow (PIL)
|
- Pillow (PIL)
|
||||||
- flask_cors
|
|
||||||
- waitress
|
- waitress
|
||||||
|
- netifaces
|
||||||
- qrcode
|
- qrcode
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
### Method 1: From Source
|
||||||
|
|
||||||
1. Clone or download this repository
|
1. Clone or download this repository
|
||||||
2. Install the required dependencies:
|
2. Install the required dependencies:
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
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.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Configuration and constants for MacroPad Server
|
# Configuration and constants for MacroPad Server
|
||||||
|
|
||||||
VERSION = "0.8.0 Beta"
|
VERSION = "0.8.5 Beta"
|
||||||
DEFAULT_PORT = 40000
|
DEFAULT_PORT = 40000
|
||||||
|
|
||||||
# UI Theme colors
|
# UI Theme colors
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['main.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=0,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='macropad',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['main.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=[],
|
||||||
|
hiddenimports=[],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=0,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure)
|
||||||
|
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='macropad',
|
||||||
|
debug=False,
|
||||||
|
bootloader_ignore_signals=False,
|
||||||
|
strip=False,
|
||||||
|
upx=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=False,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
argv_emulation=True,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
app = BUNDLE(
|
||||||
|
exe,
|
||||||
|
name='macropad.app',
|
||||||
|
icon=None,
|
||||||
|
bundle_identifier=None,
|
||||||
|
)
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
0.8.0
|
0.8.5
|
||||||
Reference in New Issue
Block a user