Skip to content

Mini Launcher

Michael Sprick edited this page Sep 24, 2025 · 25 revisions

🎛️ Mini Launcher for AV Systems

A compact, always-on-top Windows panel for quick access to streaming and recording controls—ideal for live events, church services, or theater productions. This launcher lets you trigger OBS actions without showing the full OBS interface, keeping your workflow clean and distraction-free.


🪟 What It Does

  • ✅ Always-on-top control panel
  • 🎥 One-click buttons for OBS streaming and recording
  • 🧭 Positioned neatly in the corner of your screen
  • 🖱️ Built with AutoHotkey v2 for lightweight automation

🖥️ Setup Instructions (Windows)

1. Install AutoHotkey

2. Create Your Script

  • Open Notepad or VS Code
  • Paste the launcher code (see below)
  • Save the file with a .ahk extension (e.g., AVLauncher.ahk)
  • Double-click the file to run it

🧩 Launcher Code Breakdown

🪟 GUI Setup

myGui := Gui("+AlwaysOnTop +ToolWindow -Caption +Owner")
myGui.BlackColor := "Black"
myGui.SetFont("s10", "Segoe UI")
WinSetTransparent(100, myGui.Hwnd)
  • Always-on-top: stays visible over all windows
  • ToolWindow: removes taskbar icon
  • No caption: hides title bar for a sleek look
  • Transparent: adds subtle overlay effect

📐 Positioning (Top-Right Corner)

monitorWidth := SysGet(78)
guiWidth := 50
guiHeight := 240
guiX := monitorWidth - guiWidth - 10
guiY := 10

🎬 Streaming & Recording Buttons

; Streaming
myGui.Add("Button", "x10 y20 w30 h30", "").OnEvent("Click", StartStreaming)
myGui.Add("Button", "x10 y60 w30 h30", "X").OnEvent("Click", StopStreaming)

; Recording
myGui.Add("Button", "x10 y110 w30 h30", "").OnEvent("Click", StartRecording)
myGui.Add("Button", "x10 y150 w30 h30", "||").OnEvent("Click", PauseRecording)
myGui.Add("Button", "x10 y190 w30 h30", "X").OnEvent("Click", StopRecording)

myGui.Show("x" guiX " y" guiY " w" guiWidth " h" guiHeight")

⚙️ Function Stubs

StartStreaming(*) {
    ; Add your streaming logic here
}

StopStreaming(*) {
    ; Add your stop streaming logic here
}

StartRecording(*) {
    ; Add your recording logic here
}

PauseRecording(*) {
    ; Add your pause logic here
}

StopRecording(*) {
    ; Add your stop recording logic here
}

💡 You can connect these functions to OBS via command-line, WebSocket, or other automation tools.


🧪 Tips & Customization

  • Change button icons or labels to match your workflow
  • Adjust guiWidth, guiHeight, and positions for different screen setups
  • Add more buttons for scene switching, muting, or overlays
  • Integrate with OBS WebSocket for full remote control

📚 Resources


Full Code

myGui := Gui("+AlwaysOnTop +ToolWindow -Caption +Owner")
myGui.BlackColor := "Black"
myGui.SetFont("s10", "Segoe UI")
WinSetTransparent(100, myGui.Hwnd)

monitorWidth := SysGet(78)
guiWidth := 50
guiHeight := 240
guiX := monitorWidth - guiWidth - 10
guiY := 10

; Streaming buttons
myGui.Add("Button", "x10 y20 w30 h30", "").OnEvent("Click", StartStreaming)
myGui.Add("Button", "x10 y60 w30 h30", "X").OnEvent("Click", StopStreaming)

; Recording buttons
myGui.Add("Button", "x10 y110 w30 h30", "").OnEvent("Click", StartRecording)
myGui.Add("Button", "x10 y150 w30 h30", "||").OnEvent("Click", PauseRecording)
myGui.Add("Button", "x10 y190 w30 h30", "X").OnEvent("Click", StopRecording)

myGui.Show("x" guiX " y" guiY " w" guiWidth " h" guiHeight")

StartStreaming(*) {
    ; Start streaming logic
}

StopStreaming(*) {
    ; Stop streaming logic
}

StartRecording(*) {
    ; Start recording logic
}

PauseRecording(*) {
    ; Pause recording logic
}

StopRecording(*) {
    ; Stop recording logic
}

Clone this wiki locally