# OpenWebView
**Repository Path**: CiChenMan/OpenWebView
## Basic Information
- **Project Name**: OpenWebView
- **Description**: 基于 `pywebview` 的浏览器容器,提供全面的窗口管理功能,js桥接api,资源管理器等功能。非常适合网页打包 `window` 平台的exe程序,让网页或AI拥有操作本地系统的能力。
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-06-23
- **Last Updated**: 2026-06-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: AI, exe, Python
## README
# OpenWebView
|
👤 作者
CiChenMan
|
🐧
QQ
1570442495
|
💬
微信
CiChenMan
|
🎵
抖音
CiChenMan
|
|
基于 `pywebview` 的浏览器容器,提供全面的窗口管理功能、JS 桥接 API、文件资源管理器、命令行工具和交互式 Shell 等功能。非常适合将网页打包为 Windows 平台的 EXE 程序,让网页与 AI 模型拥有操作本地系统的能力。
---
## 功能特性
### 窗口管理功能
提供完整的窗口控制能力,包括最小化、最大化、还原、移动、置顶、全屏切换等操作。
### 文件资源管理器
提供文件资源管理功能,便于网页或 AI 模型操作本地系统文件,包括目录选择、文件创建/删除/复制/移动、文件读取/写入等。
### 命令行工具
提供命令行执行功能,使用 PowerShell 执行系统命令,让网页或 AI 模型能够操作本地系统。
### 交互式 Shell
提供持久化的交互式终端会话,支持实时输入输出流式交互,适合长时间运行的 CLI 程序(如编译、调试、AI 对话等)。支持会话创建、读写、停止、重启、销毁、列表查询等完整生命周期管理。
### JS 桥接 API
将所有内置功能暴露到网页 JS 环境中,支持 Promise 异步调用。具体 API 文档请参阅 [API.md](API.md)。
---
## 安装依赖
```bash
pip install pywebview
```
> **注意**:Windows 系统需确保已安装 [WebView2 运行时](https://developer.microsoft.com/microsoft-edge/webview2/)。
---
## 启动参数
```bash
python main.py [选项] [URL]
```
### 位置参数
| 参数 | 说明 |
|------|------|
| `URL` | 初始加载的 URL(也可通过 `--url-arg` 指定) |
### 可选参数
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `--title` | 字符串 | `"OpenWebView"` | 窗口标题 |
| `--url-arg` | 字符串 | — | 初始加载的 URL(优先于位置参数) |
| `--debug` | 布尔 | `true` | 是否开启 debug 模式,开启后可通过右键菜单手动打开 DevTools |
| `--frameless` | 布尔 | `true` | 是否使用无边框窗口 |
| `--width` | 整数 | `1200` | 窗口宽度(像素) |
| `--height` | 整数 | `780` | 窗口高度(像素) |
| `--resizable` | 布尔 | `true` | 是否允许拖拽调整窗口大小 |
| `--bg-color` | 字符串 | `"#1e1e1e"` | 窗口背景色(仅支持 `#RRGGBB` 十六进制格式) |
| `--transparent` | 布尔 | `false` | 是否启用窗口透明(开启后窗口背景透明,页面内容可控制自身透明度) |
> **注意**:`--transparent true` 会自动强制 `frameless=True` 并关闭窗口阴影。页面中需使用 CSS `background: transparent` 或 `rgba()` 来控制元素透明效果。
布尔参数可接受:`true` / `false`、`1` / `0`、`yes` / `no`
---
## 使用示例
```bash
# 默认启动(加载 demo.html)
python main.py
# 指定 URL
python main.py https://example.com
# 自定义标题和尺寸
python main.py --title "我的应用" --width 1600 --height 900
# 完整参数示例
python main.py \
--title "浏览器" \
--url-arg "https://example.com" \
--debug true \
--frameless true \
--width 1920 \
--height 1080 \
--resizable true
# 有边框、禁止调整大小、关闭 debug
python main.py --frameless false --resizable false --debug false
# 白色背景
python main.py --bg-color "#ffffff"
# 黑色背景
python main.py --bg-color "#000000"
# 透明窗口(页面内容可控制自身透明度)
python main.py --transparent true
```
---
## 环境变量
| 变量 | 说明 |
|------|------|
| `OPENWEBVIEW_URL` | 设置默认初始 URL(优先级低于命令行参数) |
---
## 数据持久化
程序会在当前目录下创建 `.openwebview_data` 文件夹,用于存储 cookies、localStorage 等数据。
---
## 项目结构
```
OpenWebView/
├── main.py # 主程序入口
├── lib/ # 核心库
│ ├── __init__.py # 包初始化
│ ├── api.py # 窗口管理 API(继承所有 Mixin)
│ ├── windows.py # 窗口注册表
│ ├── win32_helpers.py # Win32 平台辅助函数
│ └── mixins/ # API 功能模块
│ ├── __init__.py
│ ├── window_control.py # 窗口控制(最小化、最大化、置顶、全屏等)
│ ├── clipboard.py # 剪贴板操作
│ ├── navigation.py # 页面导航(刷新、后退、前进)
│ ├── window_lifecycle.py # 窗口生命周期(创建、销毁、列表、状态)
│ ├── js_execution.py # JavaScript 执行
│ ├── command.py # 命令执行
│ ├── file_manager.py # 文件管理
│ └── interactive_shell.py # 交互式 Shell
├── docs/ # 文档
│ ├── mixins/ # 各 Mixin 模块详细文档(Python 端)
│ │ ├── __init__.md
│ │ ├── clipboard.md
│ │ ├── command.md
│ │ ├── file_manager.md
│ │ ├── interactive_shell.md
│ │ ├── js_execution.md
│ │ ├── navigation.md
│ │ ├── window_control.md
│ │ └── window_lifecycle.md
│ └── jsapi/ # JS 桥接 API 文档(前端调用)
│ ├── quickstart.md # 快速开始
│ ├── window_control.md # 窗口控制
│ ├── window_state.md # 窗口状态
│ ├── navigation.md # 导航
│ ├── window_lifecycle.md # 多窗口管理
│ ├── js_execution.md # JS 执行
│ ├── command.md # 命令行执行
│ ├── file_manager.md # 文件资源管理
│ └── interactive_shell.md # 交互式 Shell
├── public/ # 公共资源
│ ├── demo.html # 功能演示页面
│ ├── webshell.html # 交互式 Shell 演示页面
│ ├── chat-ai.ico # 应用图标 (ICO)
│ ├── chat-ai.png # 应用图标 (PNG)
│ └── ChatAI-Agent.lnk # 快捷方式
├── API.md # JS 桥接 API 索引目录
├── LICENSE # 许可证文件
└── README.md # 项目说明文档
```
---
## 许可证
本项目基于 MIT 许可证开源。详细信息请参阅 [LICENSE](LICENSE) 文件。