GitHub - rexdf/CommandTrayHost: A command line program monitor systray for Windows
configure file name is config.json, in the same folder as CommandTrayHost.exe. Run once CommandTrayHost.exe, there will be a config.json with document. Supported encodings, UTF-8 UTF-8BOM UTF-16LE UTF-16BE UTF-32LE UTF32-BE.
{ "configs": [ { "name": "kcptun 1080 8.8.8.1:12345", // Menu item name in systray "path": "E:\\program\\kcptun-windows-amd64", // path which includes cmd exe, relative path is ok. "cmd": "client_windows_amd64.exe -c client.json", // must contain .exe "working_directory": "", // working directory, for client.json path. relative to path usually. start with > symbol to use relative path from CommandTrayHost.exe "addition_env_path": "", //dll search path "use_builtin_console": false, //CREATE_NEW_CONSOLE "is_gui": false, "enabled": true, // run when CommandTrayHost starts // Optional "require_admin": false, // to run as administrator, problems keywords: User Interface Privilege Isolation "start_show": false, // whether to show when start process "ignore_all": false, // whether to ignore operation to disable/enable all "position": [ 0.2, // STARTUPINFO.dwX if not greater than 1, it means proportions to screen resolution. Greater than 1, value 200 // STARTUPINFO.dwY, same as above ], "size": [ 0.5, // STARTUPINFO.dwXSize, as above 0.5 // STARTUPINFO.dwYSize, as above ], "icon": "", // icon for console windows "alpha": 170, // alpha for console windows, 0-255 integer "topmost": false, // topmost for console windows // alt win shift ctrl 0-9 A-Z, seperated by space or +. You can also use "ALT+WIN+CTRL+0x20" // https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx "hotkey": { // you don't nedd to set up all "disable_enable": "Shift+Win+D", // disable/enable toggle "hide_show": "Shift+Win+H", // hide/show toggle "restart": "Shift+Win+R", // restart app "elevate": "Shift+Win+A", // elevate }, "not_host_by_commandtrayhost": false, // if true, commandtrayhost will not monitor it "not_monitor_by_commandtrayhost": false, // if true, same as above. But quit with CommandTrayHost "kill_timeout": 200, // post a message to let program quit itself, if timeout killing the process "exclusion_id": 1, // kill all configs with same `exclusion_id` before to run current config. greater than 0. "kill_process_tree": false, // kill all child process tree,for nginx }, { "name": "kcptun 1081 8.8.8.1:12346", "path": "E:\\program\\kcptun-windows-amd64", "cmd": "client_windows_amd64.exe -c client.json", "working_directory": "E:\\program\\kcptun-windows-amd64\\config2", "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true // Optional "crontab_config": { "crontab": "8 */2 15-16 29 2 *", "method": "start", // start restart stop start_count_stop restart_count_stop "count": 0, // times to run, 0 infinite // Optional "enabled": true, "log": "commandtrayhost.log", // comment out this line to disable logging "log_level": 0, // log level 0 1 2 "start_show": false, // comment out to use cache }, "exclusion_id": 1, }, { "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", // We use a different working directory "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true }, { "name": "shadowsocks", "path": "E:\\program\\shadowsocks", "cmd": "Shadowsocks.exe", "working_directory": "", "addition_env_path": "", "use_builtin_console": false, "is_gui": true, "enabled": false }, { "name": "cow", "path": "E:\\program\\cow", "cmd": "cow.exe", "working_directory": "", "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true }, { "name": "aria2", "path": "E:\\program\\aria2-win-64bit", "cmd": "aria2c.exe --conf=aria2.conf", "working_directory": "", "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true, "kill_timeout": 2000, // wait 2 seconds for saving aria2.session }, { "name": "JeliLicenseServer", "path": "E:\\program\\JeliLicenseServer", "cmd": "JeliLicenseServer_windows_amd64.exe -u admin -l 127.0.0.251", "working_directory": "", "addition_env_path": "", "use_builtin_console": false, "is_gui": false, "enabled": true }, ], "global": true, // Optional "require_admin": false, // To Run CommandTrayHost as Administrator // If you set it to true, maybe you will need https://stefansundin.github.io/elevatedstartup/ to add startup support "icon": "E:\\icons\\Mahm0udwally-All-Flat-Computer.ico", // Customize Tray Icon path // when empty, builtin default icon will be used. 256x256 "icon_size": 256, // 256 32 16 "cmd_menu_max_length": 0, // maximium character limit for cmd and path item in menu. 0 infinite "lang": "auto", // zh-CN en-US etc https://msdn.microsoft.com/en-us/library/cc233982.aspx "groups": [ // groups is an array. Allowed element types are object and number. { "name": "kcptun", // object must have a name "groups": [ 0, // index of configs 1, ], }, { "name": "shadowsocks", "groups": [ 3, 2, 4, ], }, 5, 6, { "name": "empty test", // groups is optional for object, but name not. }, ], "enable_groups": true, "groups_menu_symbol": "+", "left_click": [ 0, 1 ], // left click on tray icon, hide/show configs index. Empty to hide/show CommandTrayHost "enable_cache": true, "conform_cache_expire": true, // hot reloading will be disabled, when setting it to false "disable_cache_position": false, "disable_cache_size": false, "disable_cache_enabled": true, "disable_cache_show": false, "disable_cache_alpha": false, // (only work for configs with alpha) // alt win shift ctrl 0-9 A-Z, seperated by space or +. You can also use "ALT+WIN+CTRL+0x20" // https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx "hotkey": { "disable_all": "Alt+Win+Shift+D", "enable_all": "Alt Win + Shift +E", "hide_all": "Alt+WIN+Shift+H", "show_all": "AlT Win Shift s", "restart_all": "ALT+Win+Shift+U", "elevate": "Alt+wIn+Shift+A", "exit": "Alt+Win+Shift+X", "left_click": "Alt+Win+Shift+L", "right_click": "Alt+Win+Shift+R", // work for any program of current user "add_alpha": "Alt+Ctrl+Win+0x26", // add alpha of current windows "minus_alpha": "Alt+Ctrl+Win+0x28", // Alt+Ctrl+Win+↑↓ "topmost": "Alt+Ctrl+Win+T", // toggle topmost status "hide_current": "Alt+Ctrl+Win+H", // hide current window to tray menu "show_all_docked": "Alt+Ctrl+Win+S", // show all windows hiden by above hotkey }, "repeat_mod_hotkey": false, // not work for XP "global_hotkey_alpha_step": 5, "show_hotkey_in_menu": true, "enable_hotkey": true, "start_show_silent": true, "auto_hot_reloading_config": false, // if true, it's same as automatically clicking clear cache prompt No button "auto_update": true, "skip_prerelease": true, "keep_update_history": false, }
Tips1: "cmd" must contain .exe. If you want to run a bat, you can use cmd.exe /c or cmd.exe /k.
Tips2: If you don't need privileged child, you can remove all "require_admin".
Note: All paths must be "C:\\Windows" but not "C:\Windows". Json string will escape \<c>.
In order to make sure resource.h and CommandTrayHost.rc is checkouted in encoding UTF-16LE(UCS-2) with BOM. Before run git clone, you need to add following script to %USERPROFILE%\.gitconfig .