Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wake WinPC

macOS 一键唤醒局域网 Windows 主机(WoL),菜单栏应用 + 命令行双形态。

在家:直接向局域网广播魔术包。不在家:自动经 Tailscale 登录常开的 NAS,由 NAS 在局域网内代发——魔术包是二层广播,本身走不了 Tailscale,目标睡着时它的 tailscaled 也不在线,所以必须有个同网段的常开设备做中继。

功能

  • 菜单栏图标实时显示目标状态:在线 🖥 / 睡眠 💤(每 60 秒 + 每次点开菜单刷新)
  • 菜单一键唤醒,系统通知反馈结果
  • wakewin 命令行同款逻辑,适合脚本/远程调用
  • 自动判断 Mac 当前位置,选择直接广播或 NAS 中继
  • 菜单内「设置…」可改 MAC/IP/NAS,配置即时生效

安装

要求:macOS 11+,Xcode Command Line Tools(xcode-select --install)。

git clone https://github.com/skernelx/wake-winpc.git
cd wake-winpc
./install.sh

装完菜单栏出现 🖥 图标,登录自启已配置。先改配置:点菜单栏图标 →「设置…」填你的 MAC/IP,或直接编辑 ~/.config/wakewin/config.json。卸载:./uninstall.sh

使用

wakewin            # 自动模式:探测在线则不发包,否则唤醒并等到 SSH 可达
wakewin --via-nas  # 强制走 NAS 中继
wakewin --gui      # 用系统通知代替终端输出(菜单栏应用内部用)

退出码:0 在线/唤醒成功,1 超时或中继失败。

配置

~/.config/wakewin/config.json,CLI 和菜单栏应用共用,菜单「设置…」改的也是它:

说明 示例
mac 目标网卡 MAC 00:11:22:33:44:55
broadcast 局域网定向广播地址 192.168.1.255
wol_port 魔术包端口 9
lan_ip 目标局域网 IP(在家时探测用) 192.168.1.100
ts_ip 目标 Tailscale IP(在外时探测用) 100.64.0.1
ssh_port 判定"已唤醒"的 TCP 端口 22
nas 中继主机,~/.ssh/config 里的 Host 名 nas

前提

  • 目标机 BIOS 开 WoL,网卡驱动勾选"魔术包唤醒";目标开着 SSH(或改 ssh_port 为任一开机后必监听的端口,如 RDP 3389)
  • 远程唤醒需要:一台与目标同网段、常开、能免密 SSH 的中继机(NAS/路由器/树莓派均可),且装有 python3

注意

  • Windows「无人值守唤醒」默认约 2 分钟无操作会自动睡回,唤醒后尽快 RDP/SSH 上去
  • 首次弹系统通知时 macOS 会请求通知权限
  • 实测(i7-8700 / Z370 板载网卡,S3 睡眠):两条路径从发包到 SSH 可达均约 13–16 秒

结构

bin/wakewin        # Python CLI,唤醒逻辑唯一实现
app/main.swift     # 菜单栏应用(AppKit,install.sh 用 swiftc 编译)
app/Info.plist
launchd/…plist     # 登录自启
install.sh / uninstall.sh
config.example.json

About

macOS 菜单栏 WoL 工具:在家直接广播魔术包,在外经 Tailscale 由 NAS 中继唤醒 Windows 主机

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages