Add option to start minimized to system tray on launch
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: jiayi Zhou
**客户端版本**: 0.1.66
---
## 使用场景
把 Cindy 设为开机自启动(启动文件夹或 Run 注册表项)后,主窗口每次登录都会弹出来。对于把 Cindy 当常驻后台助手、整天挂着的用户,这个窗口是每次登录都要手动关掉的干扰 —— 期望的是进程在跑、托盘图标在,但不要弹窗。
## 当前痛点
目前 `window-behavior-settings.json` 只有:
```json
{
"windowsCloseBehavior": "tray"
}
```
从打包后的应用看,`windowsCloseBehavior` 似乎只接受 `"quit"` 和 `"tray"`,而且它管的是**用户点关闭按钮之后**的行为,不是启动时窗口如何呈现。我没有找到任何控制初始窗口可见性的设置项、命令行参数,也没看到 Electron `openAtLogin` / `setLoginItemSettings` 的使用。
所以看起来没有受支持的方式表达「启动即进托盘」。
## 诉求
增加一个设置项(理想情况下再配一个命令行开关,例如 `--start-in-tray` 或 `--hidden`),让 Cindy 启动时主窗口保持隐藏、只显示托盘图标。之后点击托盘图标正常唤出窗口。
最好能同时提供内置的「开机自动启动」开关,这样整个流程都能在应用内配置,不需要用户手动改启动文件夹。
## 建议方案
当前的绕行办法是在启动文件夹放一个 VBS 启动器,它:
1. 启动 `Cindy.exe`;
2. 轮询等待,直到出现一个属于 `Cindy` 进程的、可见且有标题的主窗口(Electron 还会创建若干隐藏辅助窗口,必须筛掉);
3. 向该窗口发送 `WM_CLOSE`,依赖 `windowsCloseBehavior: "tray"` 让应用隐藏而不是退出。
这能用,但很脆弱:
- 窗口在被收起前会短暂可见,每次登录都会闪一下。
- 依赖 `windowsCloseBehavior` 为 `tray`;用户一改这个设置,启动器就会静默把应用关掉而不是隐藏。
- 依赖窗口枚举的启发式判断,窗口结构一变就可能失效。
- 冷启动耗时不定,启动器需要给很长的超时,慢盘上仍可能错过窗口。
有一个原生的启动选项就能免掉这一整套。
## 另一个相关的坑
排查过程中发现:把 `Cindy.exe` 本体直接复制进启动文件夹(用户很自然会这么试)不会给出清晰的错误提示,而是直接崩溃,因为可执行文件旁边的 Electron 运行时文件找不到了:
```
ERROR:base\i18n\icu_util.cc:232] Invalid file descriptor to ICU data received.
```
内置的「开机自动启动」开关也能顺带避免用户踩到这个坑。
---
**OS**: win32 x64 (10.0.28000)
**Harness**: Claude Code
**Model ID**: ` anthropic/claude-opus-5 `
**界面语言**: zh-CN
Contributor guide
Research direction
Start by tracing the startup and tray-window entry points alongside window-behavior-settings.json; check whether Electron openAtLogin or setLoginItemSettings is already used. Define how the hidden initial window, tray activation, command-line option, and optional login startup should interact. Done means a supported configuration starts Cindy without showing the main window and the tray can restore it without the VBS workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- desktop, operating-systems
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100