heX 清单文件(Manifest)说明
一些配置参数需要在浏览器环境创建之前进行处理,或者是需要传给浏览器对象进行初始化。所以参考 Chrome 扩展的模式,heX 中也引入了清单文件。清单文件为一个名为 manifest.json
的 JSON 格式文本文件,里面包含了众多配置项。
heX 的主程序 - hexclient 在启动时读入并解析清单文件,若读取或解析出错,主程序都将退出。
简要说明
{
"first_page": "chrome://version", // 首页,可以是 URL 或者一个本地文件路径
"application_title": "Hello heX!", // 程序默认标题,alert 等窗口使用
"application_shortname": "test", // 应用程序别名
"use_grit_package": true, // 使用打包资源
"icon_path": "", // 程序默认图标路径
"use_node": true, // 是否开启 Node.js
"version": "1.0", // 程序版本信息
"locale": "zh-CN", // 浏览器区域设置
"multiple_process": false, // 是否为多进程模式
"launch_node_in_all_pages": false, // 在打开的所有页面中使用 Node.JS
"load_node_manually": false, // 是否手动加载 Node.js
"disable_async_node_apis": false, // 是否禁用 Node.JS 异步 API
"remote_debugging_port": 65432, // 远程调试端口
"disable_debug_log": true, // 是否禁止生成 Chromium 调试信息
"quit_after_main_window_closed": false, // 是否在主窗口关闭后退出
"cache_path": "data", // 缓存路径
"npapi_plugin_directory": "", // NPAPI 插件路径
"disable_ime_composition": false, // 禁用 IME composition
"extensions": [ // heX 扩展名称列表
"hex_dialog",
"hex_sleep",
"hex_shortcut"
],
"extension_path": "", // heX 扩展的路径
"single_instance": true, // 是否为单一实例模式
"window_class_name": "A_HEXCLIENT", // 主窗口类名
"form": {
"style": "captionless", // 窗口类型:标准、无标题、桌面 Widget
"plain": false, // 是否为扁平窗口
"system_buttons": true, // 是否显示默认的系统控制按钮
"transmission_color": "none", // 穿透颜色
"transparent_browser": true, // 是否为透明浏览器
"fixed": false, // 窗体是否可以调整大小
"disable_form_apis": false, // 是否禁用所有窗口相关 API
"opacity": "none", // 窗口透明度
"hook_system_command": false, // 是否拦截窗口的系统命令
"launch_state": "normal", // 启动初始状态
"launch_width": 800, // 启动初始宽度
"launch_height": 600, // 启动初始高度
"launch_x": "screen_centered", // 启动初始 X 轴位置
"launch_y": "screen_centered", // 启动初始 Y 轴位置
"min_width": 0, // 最小宽度
"min_height": 0, // 最小高度
"max_width": 0, // 最大宽度
"max_height": 0, // 最大高度
"border_width": 5 // 模拟边框区域宽度
},
"browser": {
"no_proxy_server": false,
"winhttp-proxy-resolver": false,
"disable_gpu": true,
"disable_3d_apis": false,
"disable_databases": false,
"disable_experimental_webgl": false,
"disable_file_system": false,
"disable_geolocation": false,
"disable_gpu_process_prelaunch": true,
"disable_java": false,
"disable_javascript": false,
"disable_javascript_i18n_api": false,
"disable_local_storage": false,
"disable_logging": false,
"disable_plugins": false,
"disable_renderer_accessibility": false,
"disable_session_storage": false,
"disable_speech_input": false,
"disable_web_sockets": false,
"in_process_gpu": false,
"in_process_plugins": false,
"enable_media_stream": true,
"web_security_disabled": true,
"file_access_from_file_urls_allowed": true,
"universal_access_from_file_urls_allowed": true
}
}
详细说明
- first_page:
$(AppDir)
代表当前程序路径(包含“/”),也可以是 file 协议 URL 或者本地路径。 - application_shortname:应用程序别名,将会影响到使用打包资源时读取的资源包 PAK 文件名及 URL。
- use_grit_package:使用 PAK 格式的资源包。参见:heX 打包生成工具说明。
- icon_path:程序默认图标路径,必须是一个本地路径。
- use_node:设置为 true 则开启 Node.js,与移除 node 动态库效果一样。
- launch_node_in_pages:默认情况下,通过
window.open()
弹出的子窗口中将不会启动 Node.js,开启此配置项后则始终在弹出的子窗口中启动 Node.js。 - load_node_manually:当需要自定义 Node.js 启动时机的时候开启此配置项,这时需要在页面中通过加入
<script></script>
标签或者用 JavaScript 动态插入node.js
文件。 - disable_async_node_apis:此时 Node.js 的 event loop 将停止运行。
- disable_debug_log:此时将不会再生成
debug.log
文件。 - quit_after_main_window_closed:默认情况下,只有所有的浏览器窗口都关闭后,程序才会退出。
- npapi_plugin_directory:当此项为空时会默认使用当前工作路径作为 NPAPI 插件加载路径。
- disable_ime_composition:开启后将禁用输入法输入时的 Composition String,参见:http://msdn.microsoft.com/en-us/library/windows/desktop/dd317765(v=vs.85).aspx。
- extensions:列出当前程序想要加载的 heX 扩展名称,以逗号分隔。若扩展不存在或者加载错误则自动跳过。
- extension_path:指定需要加载的 heX 扩展的路径,若为空则使用当前工作路径。
- single_instance:开启单一实例模式后,启动新的实例之后会自动激活当前已经启动的实例,并且触发
instanceCreated
事件,此配置要求window_class_name
不为空,并且为单进程模式。 - window_class_name:自定义主窗口的窗口类名。
form 对象
- style:有三种取值,不区分大小写:
standard
:标准窗口,与系统主题一致。captionless
:无标题栏的窗口,可以自绘标题栏。desktop_widget
:桌面 Widget 窗口,将会固定在桌面上,不会随着显示桌面而最小化。
- plain:开启此配置后窗口将以扁平化状态呈现,此配置只针对非标准型窗口。对于 Windows XP,则不会显示窗口阴影;对于 Windows Vista 及更新的系统,则不会显示 Aero 效果(再系统支持及开启 Aero 的情况下)。
- system_button:对于支持 Aero 的 Windows,开启此配置项后,将会始终显示 Aero 框架所带的最小化、最大化、关闭控制按钮。此配置项仅在支持 Aero 的 Windows、开启了 transparent_browser 及 style 不为
standard
的情况下可以看到效果。 - transmission_color:穿透颜色可能有两类取值,
none
表示关闭,#RRGGBB
表示一个 HTML 的颜色值,如#0000FF
,也支持简写#666
,属性值不区分大小写。浏览器窗口中遇到穿透颜色所指的颜色值时将不再响应鼠标事件,直接穿透到其下方的窗口,并且在视觉上可以直接看到下方的窗口。此配置项可以制作不规则窗口。 - transparent_browser:对于支持并且开启了 Aero 的 Windows 系统,开启此配置项后,整个浏览器区域将变为透明。但需要 HTML 元素的背景色为透明时才能看到效果。
- fixed:开启此配置项后窗口将不能被调整大小。
- opacity:透明度可能有两类取值,
none
表示关闭,0-255
的整数值表示 透明 到 不透明。 - launch_state:启动的初始状态可能有下面几种取值:
normal
表示默认minimized
表示最小化状态maximized
表示最大化状态hidden
表示隐藏状态fullscreen
表示全屏状态
- launch_width:启动的初始宽度值可能有下面两种取值:
system_default
表示采用系统默认的宽度- 整数值 表示像素为单位的宽度值
- launch_height:启动的初始高度值可能有下面两种取值:
system_default
表示采用系统默认的高度- 整数值 表示像素为单位的高度值
- launch_x:启动的初始 X 轴位置可能有下面几种取值:
system_default
表示采用系统默认的 X 轴位置parent_centered
表示相对父窗口水平居中screen_centered
表示相对屏幕水平居中- 整数值 表示像素为单位的 X 轴位置
- launch_y:启动的初始 Y 轴位置可能有下面几种取值:
system_default
表示采用系统默认的 Y 轴位置parent_centered
表示相对父窗口垂直居中screen_centered
表示相对屏幕垂直居中- 整数值 表示像素为单位的 Y 轴位置
- min_width:窗口的最小宽度,单位为像素,0 代表无限制
- min_height:窗口的最小高度,单位为像素,0 代表无限制
- max_width:窗口的最大宽度,单位为像素,0 代表无限制
- max_height:窗口的最大高度,单位为像素,0 代表无限制
- border_width:在为标准窗口模式下,模拟出来的边框区域宽度,在此宽度之内可以调整窗口的大小
- style:有三种取值,不区分大小写:
browser 对象
- browser 对象中的各项与 Chromium 以及 Blink 的开关保持一致,true 表示使用开关。请参见:http://peter.sh/experiments/chromium-command-line-switches/。