A tiny macOS menu bar app for waking PCs on your local network via Wake-on-LAN, with live on/off status and zero-config IP discovery.
No Dock icon, no dependencies, no Electron — just a single native Swift binary that lives in your menu bar.
⏻ ● Office PC ← click to wake (green = online, red = offline)
● Gaming PC
─────────────
Manage PCs… ⌘M
─────────────
Quit ⌘Q
- One-click Wake-on-LAN — sends the magic packet to any saved PC from the menu bar.
- Live on/off status — a subtle colored dot per PC (● online / ● offline / ● unknown), refreshed every 30s and whenever you open the menu.
- Automatic IP discovery — you only ever enter a MAC address. WakeMenu finds the PC's current IP itself by matching the MAC in the ARP table, so it keeps working even when DHCP reassigns the address.
- Firewall-proof status — detects "online" via ARP, so a PC shows as up even when its firewall blocks ping (Windows' default).
- Network scanner — scan the LAN and pick a device from a list (with reverse-DNS / NetBIOS name resolution) to auto-fill the add form.
- Management window — add / edit / remove / wake PCs from a proper UI, with a saved-PCs table and a discovery table.
- Launch at Login — one toggle in the menu (uses
SMAppService); also manageable from System Settings → Login Items. - Self-contained — one
.app, ad-hoc signed, ~no runtime dependencies.
A PC that is off has no IP address, so you can't send a packet to it directly. Instead WakeMenu broadcasts a magic packet (6×0xFF followed by the target MAC repeated 16×) over UDP to the subnet broadcast address (e.g. 192.168.10.255, auto-detected). Every network card on the LAN sees it, and only the card whose MAC matches wakes the machine. That's why the MAC is the only required field.
- macOS 13 (Ventura) or later
- The Mac and the target PC on the same LAN (same subnet)
- Wake-on-LAN enabled on the target PC (see below)
Grab WakeMenu.app.zip from the Releases page, unzip, and move WakeMenu.app to /Applications.
The app is ad-hoc signed (not notarized), so the first launch needs Gatekeeper approval: right-click the app → Open → Open, or run:
xattr -dr com.apple.quarantine /Applications/WakeMenu.app
git clone https://github.com/alexcding/wake-menu-mac.git
cd wake-menu-mac
./build.sh
open WakeMenu.appRequires the Xcode command-line tools (xcode-select --install).
- Click the ⏻ icon in the menu bar → Manage PCs… (
⌘M). - Either Scan the network and click your PC (auto-fills MAC + broadcast), or type the Name and MAC manually.
- Click Add PC.
- Back in the menu bar, click the PC's name to wake it. The status dot shows whether it's currently on.
- Windows:
ipconfig /all→ the Ethernet adapter's Physical Address - Linux:
ip link→ thelink/ethervalue - macOS: System Settings → Network → (interface) → Details → Hardware
Use the wired Ethernet MAC — Wi-Fi usually can't wake a powered-off machine.
- BIOS/UEFI: enable Wake on LAN / Power On by PCIe.
- Windows: Device Manager → network adapter → Power Management → check Allow this device to wake the computer and Only allow a magic packet…. Disable Fast Startup (Control Panel → Power Options), which blocks WoL.
- Keep the PC on wired Ethernet.
Click the menu bar icon → Launch at Login to toggle it (a checkmark shows when enabled). It uses macOS's SMAppService, so it also appears under System Settings → General → Login Items.
Tip: move
WakeMenu.appto /Applications before enabling, so it launches from a stable location.
WakeMenu treats the MAC as the source of truth:
- It pokes the last-known IP (one ping) to refresh the ARP cache.
- It reads the ARP table and looks up your PC's MAC → that row's IP is the current IP.
- If the MAC isn't found, it does one throttled subnet sweep to relocate it.
A host present in the ARP table is online — and ARP works below the firewall layer, so this is reliable even when ICMP (ping) is blocked.
MIT © alexcding
