Skip to content

使用样例

rexdf edited this page Sep 21, 2018 · 17 revisions

0. 编码问题

配置文件支持各种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。要表示引号和右斜杠,在它前面加上一个右斜杠。

1. 最简的配置

一个合法的最简配置是

{
    "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里面的可选参数则大多是要出现才会有作用,没有出现则不会进入对应的代码逻辑。

2. Error Code 1409

热键冲突,可以根据序号或者名称换一下热键组合。

3. XP开机启动无效

是否是解压到了桌面,请解压到一个全英文的目录,而且路径不要太长。

4. cache缓存是什么?

这个是 @lirener 提出的一个想法,他觉得手动设置位置和窗口大小很烦,希望拖动窗口后程序记住就好了。 现在这个的效果是,比如显示了4个窗口,在屏幕上有的拖大,有的拖小,上下左右排列下,然后隐藏一下,那么就记住了,那么下次显示就会按照这个分布。即使关机后都记得这个分布,如果好奇记录了什么,可以打开cache文件观察下。

5. U盘上的配置

U盘因为盘符不定,推荐全部使用相对路径。据作者使用经验来看,kcptun等一系列软件放到U盘,在不同电脑上运行正常。

6. 作为开始菜单使用,无限多开?

默认情况只能开一个,而且会监控它的运行,如果要当做菜单使用

{
    "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",
    },
},

这样就可以当做热键使用。

7. 加入configs了,然而菜单没有显示。

这是因为启用了groups,启用groups的情况下,完全按照groups配置显示,需要手动添加序号到groups。刚开始用的时候推荐关掉groups,等到确实比较多的时候才再启用。也就是修改configs数组比较频繁的时候,推荐"enable_groups": false,

8. 修改配置时的 清空缓存窗口 是啥?

这个窗口的三个按钮,前两个按钮“是”与“否”都会加载修改后的配置,区别是“是”会先杀掉全部在运行中的,然后清空缓存,最后按照配置来运行。“否”则尽最大努力保留缓存(你可以改变configs的顺序,插入删除configs,CommandTrayHost会尽力恢复cache的对应关系)。所以一般我是推荐直接点否就好了

如果觉得老是要点否很烦,直接设置"auto_hot_reloading_config": true,就好了。当然我并不推荐这么做,因为配置修改理论上不会太频繁。有弹窗你会知道配置加载了。

9. 如何运行python程序

虽然批处理也行,但是我比较推荐如下方式

{
    "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,
},

10. 如何运行nodejs程序

虽然批处理也行,但是我比较推荐如下方式

{
    "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,
},

11. 如何守护nginx

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, //重启 禁用的时候,会杀掉进程树
},

12. GUI也可运行么?

当然可以运行,但是GUI程序的窗口大小位置透明度是否起作用,不做任何保证(因为该程序的0号窗口是不是主UI窗口,不清楚)。另外Chrome系列浏览器,因为自身启动时充当了启动器角色,所以托管时监控不了,只能启动它。

13. 万能老板键

"hide_current": "Alt+Ctrl+Win+H", // 隐藏当前窗口,可以在托盘图标上找到对应项目
"show_all_docked": "Alt+Ctrl+Win+S", // 显示所有被上面这个快捷键隐藏的窗口

隐藏当前窗口非常强大,绝大部分窗口都可以隐藏。常规的比如资源管理器,浏览器,QQ对话框,我测试的时候一不小心把我的VS也给隐藏了!甚至一些很特殊窗口可行,比如桌面图标,比如文件保存对话框。提权之后还可以隐藏任务管理器。隐藏之后会放到菜单里面的停泊窗口里面,点击一下就可以恢复。也可以用show_all_docked恢复全部被隐藏的窗口。

14. 透明(置顶)大部分窗口

"add_alpha": "Alt+Ctrl+Win+0x26", // 修改当前激活的任何窗口(要可能)透明度,不仅仅只对本程序托管的有效,其他程序也行
"minus_alpha": "Alt+Ctrl+Win+0x28", //上面上箭头 这里下箭头 Alt+Ctrl+Win+↑↓
"topmost": "Alt+Ctrl+Win+T", // 切换当前窗口的置顶状态

切换到目标窗口,按Alt+Ctrl+Win+可以让窗口变得透明。对绝大部分窗口都有效的。对常见的软件都是有效的。有些可能要求提权才行,比如任务管理器。