-
Notifications
You must be signed in to change notification settings - Fork 40
使用样例
配置文件支持各种Unicode存储格式,Readme里面已经提到。这里主要提一下json编码问题。放宽了两个json要求,一个是允许注释,一个是允许括号末尾的逗号。 然后特别提一下,json关于字符的定义
any-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digits
就是说除了右斜杠与引号以及Unicode控制符以外都是直接字面意义,右斜杠会转义之后字符,(双)引号标记字符串范围,\u加四位十六进制可以用于ASCII only编码json。要表示引号和右斜杠,在它前面加上一个右斜杠。
一个合法的最简配置是
{
"configs": [
{
"name": "cmd例子2",
"path": "C:\\Windows\\System32",
"cmd": "cmd.exe",
"working_directory": "",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": false
},
],
"global": true
}
自动生成的模板配置,里面的可选参数,基本上都是缺省状况下的默认值。除了"enable_groups": true,
"enable_cache": true,
这两个默认值在没有对应的其他详细配置的情况下,会自动失效成false. configs里面的可选参数则大多是要出现才会有作用,没有出现则不会进入对应的代码逻辑。
热键冲突,可以根据序号或者名称换一下热键组合。
是否是解压到了桌面,请解压到一个全英文的目录,而且路径不要太长。
这个是 @lirener 提出的一个想法,他觉得手动设置位置和窗口大小很烦,希望拖动窗口后程序记住就好了。 现在这个的效果是,比如显示了4个窗口,在屏幕上有的拖大,有的拖小,上下左右排列下,然后隐藏一下,那么就记住了,那么下次显示就会按照这个分布。即使关机后都记得这个分布,如果好奇记录了什么,可以打开cache文件观察下。
U盘因为盘符不定,推荐全部使用相对路径。据作者使用经验来看,kcptun等一系列软件放到U盘,在不同电脑上运行正常。
默认情况只能开一个,而且会监控它的运行,如果要当做菜单使用
{
"name": "cmd例子2",
"path": "C:\\Windows\\System32",
"cmd": "cmd.exe",
"working_directory": "",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": false,
"not_host_by_commandtrayhost": true,
"hotkey":{
"disable_enable": "Ctrl+Shift+Win+H",
},
},
这样就可以当做热键使用。
这是因为启用了groups,启用groups的情况下,完全按照groups配置显示,需要手动添加序号到groups。刚开始用的时候推荐关掉groups,等到确实比较多的时候才再启用。也就是修改configs数组比较频繁的时候,推荐"enable_groups": false,
这个窗口的三个按钮,前两个按钮“是”与“否”都会加载修改后的配置,区别是“是”会先杀掉全部在运行中的,然后清空缓存,最后按照配置来运行。“否”则尽最大努力保留缓存(你可以改变configs的顺序,插入删除configs,CommandTrayHost会尽力恢复cache的对应关系)。所以一般我是推荐直接点否就好了
如果觉得老是要点否很烦,直接设置"auto_hot_reloading_config": true,
就好了。当然我并不推荐这么做,因为配置修改理论上不会太频繁。有弹窗你会知道配置加载了。
虽然批处理也行,但是我比较推荐如下方式
{
"name": "DDNS",
"path": "C:\\Python36",
"cmd": "python.exe ddns.py",
"working_directory": "E:\\python-scripts",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": true,
"alpha": 170,
},
虽然批处理也行,但是我比较推荐如下方式
{
"name": "herokuapp",
"path": "C:\\Program Files\\nodejs",
"cmd": "node.exe local.js -s yousecret-id.herokuapp.com -l 1090 -m camellia-256-cfb -k ItsATopSecret -r 80",
"working_directory": "E:\\program\\shadowsocks-heroku.git",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": true,
"alpha": 170,
},
nginx比较特殊,它会自动守护地方式启动一个子进程。而且子进程一旦被杀掉,守护进程会再次启动它。杀掉守护父进程,子进程却不退出。
{
"name": "nginx",
"path": "C:\\nginx-1.15.3",
"cmd": "nginx",
"working_directory": "",
"addition_env_path": "",
"use_builtin_console": false,
"is_gui": false,
"enabled": true,
"alpha": 170,
"kill_process_tree": true, //重启 禁用的时候,会杀掉进程树
},
当然可以运行,但是GUI程序的窗口大小位置透明度是否起作用,不做任何保证(因为该程序的0号窗口是不是主UI窗口,不清楚)。另外Chrome系列浏览器,因为自身启动时充当了启动器角色,所以托管时监控不了,只能启动它。
"hide_current": "Alt+Ctrl+Win+H", // 隐藏当前窗口,可以在托盘图标上找到对应项目
"show_all_docked": "Alt+Ctrl+Win+S", // 显示所有被上面这个快捷键隐藏的窗口
隐藏当前窗口非常强大,绝大部分窗口都可以隐藏。常规的比如资源管理器,浏览器,QQ对话框,我测试的时候一不小心把我的VS也给隐藏了!甚至一些很特殊窗口可行,比如桌面图标,比如文件保存对话框。提权之后还可以隐藏任务管理器。隐藏之后会放到菜单里面的停泊窗口
里面,点击一下就可以恢复。也可以用show_all_docked
恢复全部被隐藏的窗口。
"add_alpha": "Alt+Ctrl+Win+0x26", // 修改当前激活的任何窗口(要可能)透明度,不仅仅只对本程序托管的有效,其他程序也行
"minus_alpha": "Alt+Ctrl+Win+0x28", //上面上箭头 这里下箭头 Alt+Ctrl+Win+↑↓
"topmost": "Alt+Ctrl+Win+T", // 切换当前窗口的置顶状态
切换到目标窗口,按Alt+Ctrl+Win+↓可以让窗口变得透明。对绝大部分窗口都有效的。对常见的软件都是有效的。有些可能要求提权才行,比如任务管理器。
CommandTrayHost Wiki Content on this site is licensed under a Creative Commons Attribution 4.0 International license