Back to home

FQXCS

web-desktop

web服务桌面启动器

Stars
0
Language
Python
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

WebDesktop 桌面启动器

一个 Windows 桌面 GUI 程序:点击桌面图标启动后打开窗口,在后台执行 web 服务的启动命令; 服务启动期间窗口显示「正在启动服务」等待动画,服务就绪后自动跳转到配置的地址 (如 http://127.0.0.1:3080)。浏览器内核使用系统自带 Edge(WebView2)

功能特性

  • 后台启动任意 web 服务命令(可配置),无需命令行窗口
  • 等待期间展示加载动画与计时,就绪后自动跳转目标地址
  • 配置文件保存在 ~/.WebDesktop/config.json,首次运行时自动创建
  • 首次运行(或启动时发现任意参数为空)首页进入图形化配置页面:全部参数必填, 除 web_command / web_url 外的高级设置默认折叠,保存后自动重启
  • 启动失败 / 进程退出 / 超时均展示错误页,附服务日志尾部,支持「重试」「打开配置」
  • 跳转到目标网页后,右键弹出内置自定义菜单(白底黑字:刷新页面 / 复制 / 粘贴 / 打开配置页),替换页面自身右键菜单,并强制启用文本选择便于复制
  • 从右键菜单进入的配置页以全屏遮罩覆盖在目标网页上:不刷新页面、服务保持运行, 右上角「✕」(或 Esc)关闭后目标网页原样保留;错误页进入的配置页同样带「✕」, 关闭后返回错误页;首次启动的配置页无此按钮
  • 关闭窗口自动清理服务进程树(可配置)
  • 单文件 exe 分发,双击即用

目录结构

web-desktop/
├── main.py                # 程序入口
├── app/
│   ├── config.py          # 配置管理(~/.WebDesktop 下配置文件的创建/加载/校验/保存)
│   ├── controller.py      # 应用控制器(服务编排、页面切换、配置保存与重启)
│   ├── service.py         # web 服务子进程管理(启动/健康检查/日志/清理)
│   ├── pages.py           # 内置等待页、错误页与配置页 HTML
│   ├── ui.py              # pywebview 窗口与 js 接口
│   └── paths.py           # 路径工具(兼容打包运行)
├── build.ps1              # 打包脚本(PyInstaller)
├── create_shortcut.ps1    # 桌面快捷方式脚本
└── requirements.txt       # Python 依赖

配置文件不随项目分发,首次运行时自动在用户家目录创建: ~/.WebDesktop/config.json(Windows 上即 C:\Users\<用户名>\.WebDesktop\config.json)。

其中 ~ 表示用户家目录,从环境变量解析:Windows 读取 USERPROFILE (缺失时用 HOMEDRIVE + HOMEPATH 拼接),Linux/macOS 读取 HOME

配置文件说明(~/.WebDesktop/config.json)

配置项说明默认值
web_command服务启动命令(完整命令行字符串,含空格的路径用双引号包裹)无默认值,必填
web_url服务就绪后跳转的地址(也是健康检查地址)无默认值,必填
working_dir服务进程工作目录~/.WebDesktop
log_dir日志目录(服务日志与程序日志)~/.WebDesktop
startup_timeout等待服务就绪的超时秒数60
check_interval健康检查轮询间隔(秒)0.5
check_timeout单次健康检查超时(秒)2
window_title窗口标题Web 桌面启动器
window_size窗口尺寸 [宽, 高][1200, 800]
show_console是否显示服务控制台窗口(调试用)false
kill_on_exit关闭窗口时是否终止服务进程true

配置页面说明:

  • 首次运行(配置文件不存在)或启动时发现任意参数为空,首页即进入配置页面
  • web_commandweb_url 直接展示;其余参数为高级设置,默认折叠
  • 全部参数均为必填项;除 web_command / web_url 外均有默认值
  • 点击「保存」校验通过后自动重启应用并进入正常启动流程
  • 服务启动失败时可在错误页点击「打开配置」修改配置
  • 从目标网页右键菜单进入的配置页是覆盖在网页上的遮罩(不刷新页面,服务保持运行), 错误页进入的配置页为整页切换;两者均显示右上角「✕」按钮,点击关闭并返回来源 页面;首次运行进入的配置页不显示该按钮

示例:启动 Node 服务并跳转 3080 端口:

{
  "web_command": "node server.js",
  "web_url": "http://127.0.0.1:3080",
  "working_dir": "D:\\my-web-service"
}

提示:web_command 按 Windows 命令行规则解析,可执行文件路径含空格时请用 双引号包裹,例如 "\"D:\\Program Files\\nodejs\\node.exe\" server.js"

运行方式(源码)

pip install -r requirements.txt
python main.py

打包为 exe

powershell -ExecutionPolicy Bypass -File build.ps1
powershell -ExecutionPolicy Bypass -File create_shortcut.ps1   # 创建桌面快捷方式

打包产物:dist\WebDesktop.exe。配置文件无需随包分发,首次运行时自动创建。

常见问题

  • WebView2 运行时缺失:Windows 11 已内置;Windows 10 需安装 Microsoft Edge WebView2 Runtime
  • 服务启动失败:错误页会展示服务日志末尾 30 行,可点击「打开配置」修改 web_command 等参数,也可临时将 show_console 改为 true 观察服务真实输出。
  • 一直等待不跳转:确认 web_url 与服务的实际监听端口一致;健康检查以 HTTP 响应为准,若服务不是 HTTP 协议请调整检查方式。
  • 日志位置:默认在 ~/.WebDesktop\ 目录下:app.log(程序日志)、 web_service.log(服务日志),可通过 log_dir 修改。
  • 如何恢复默认配置:退出程序后删除 ~/.WebDesktop/config.json, 下次启动会自动重建并进入配置页面。