makecindy / makecindy/cindy

Add option to start minimized to system tray on launch

Open
#3,568 1 comment 0 reactions 0 assignees View on GitHub
feature
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.