Skip to content

feat(windows): 新增“仅在录屏软件中显示”模式(桌面隐藏,采集软件仍可见) - #71

Open
Fid-falling wants to merge 222 commits into
vladelaina:mainfrom
Fid-falling:feature/capture-only
Open

Fid-falling wants to merge 222 commits into
vladelaina:mainfrom
Fid-falling:feature/capture-only

Conversation

@Fid-falling

@Fid-falling Fid-falling commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

新增设置项 window.capture_only(settings.json 的 captureOnly)。开启后用 DWM 把主窗口从桌面合成里摘掉(DWMWA_CLOAK):桌面上完全看不到宠物,但 OBS 的窗口采集 / 游戏采集仍然拍得到画面。

动机:桌面宠物常常只想出现在直播 / 录屏里,不想占着桌面。

改动:

  • config.h / config_io.c / config_settings_save.c:新增该设置字段;
  • windows_transparency.c:bongo_cat_platform_set_capture_only()(DwmSetWindowAttribute,用窗口属性做幂等判断,驱动拒绝时记警告并返回失败);
  • windows_pointer.c:窗口在桌面上不可见时必须整体穿透点击,否则会点到一只隐形的猫;
  • platform.h:平台接口 + capture_only 状态;linux.c / macos.m 明确返回“不支持”,界面因此不显示这一项;
  • preferences_pages.c:“窗口”页新增开关;10 种语言文案齐全。

Add a new setting, window.capture_only (captureOnly in settings.json). When enabled, use DWM to remove the main window from desktop composition (DWMWA_CLOAK): the pet is completely invisible on the desktop, but OBS window capture / game capture can still capture it.

Motivation: desktop pets often should appear only in livestreams/recordings, without taking up desktop space.

Changes:

config.h / config_io.c / config_settings_save.c: add the setting field;

windows_transparency.c: bongo_cat_platform_set_capture_only() (DwmSetWindowAttribute; use the window attribute for an idempotency check; if the driver rejects it, log a warning and return failure);

windows_pointer.c: when the window is invisible on the desktop, clicks must pass through completely; otherwise clicks will hit an invisible cat;

platform.h: platform interface + capture_only state; linux.c / macos.m explicitly return "not supported", so the UI does not show this item;

preferences_pages.c: add a toggle to the "Window" page; complete copy for all 10 languages.

ChinaWeJen and others added 30 commits September 1, 2026 15:25
Add Traditional Chinese README with project details and setup instructions.
Create README in Traditional Chinese
Add French README translation
docs: add French README translation
260901
Added Japanese README with installation and usage instructions.
Ciallo~(∠・ω< )⌒★
Create Japanese README for BongoCat.   Ciallo~(∠・ω< )⌒★
docs: add Korean README translation
vladelaina and others added 25 commits September 22, 2026 20:04
需求: 桌面宠物只在 OBS 之类的录屏软件里出现, 桌面上不显示。

实现: 用 DWM 隐藏 (DWMWA_CLOAK) 把主窗口从桌面合成里摘掉 —— 窗口照常渲染、
照常呈现: 游戏采集直接读交换链/GL 呈现, 窗口采集读窗口自己的内容, 所以采集
侧的画面不变, 而桌面侧完全看不到这个窗口。

- 新设置 window.capture_only (settings.json 的 captureOnly), 10 种语言都补了文案;
- 设置界面"窗口"页新增开关, 只在支持的平台显示 (当前仅 Windows);
- 窗口在桌面上不可见时必须整体穿透点击, 否则用户会点到一只隐形的猫。这里特意
  不走 forced 分支: 那条路会启用 layered presenter, 用代理窗口把画面重新显示到
  桌面上, 正好和"桌面不显示"冲突;
- 驱动/系统拒绝隐藏时记警告并返回失败, 不影响其它功能;
- Linux/macOS 明确返回"不支持", 界面因此不显示这一项。

顺带把交换链的重建/尺寸/垂直同步三个函数拆到 vk_swapchain_rebuild.c: 预乘
alpha 合成那次改动让 vk_swapchain.c 超过了单文件 500 行的策略上限。

验证 (build-cubism, clean1 存储, Vulkan 与 OpenGL 两条路径):
- 截屏对比: captureOnly=1 时窗口区域只有桌面 (完全看不到猫), =0 时猫正常显示;
- WindowFromPoint(窗口中心) 命中其它进程的窗口, 说明点击穿透生效;
- 渲染没有中断: 10 s 内 13518 帧, 采集侧画面照旧;
- 日志可断言: [runtime] capture-only=1 (...)。
@vladelaina
vladelaina force-pushed the main branch 2 times, most recently from 804363a to f429c0f Compare September 29, 2026 13:33
TianMengLucky added a commit to TianMengLucky/BongoCat-X that referenced this pull request Oct 1, 2026
Source: vladelaina/BongoCat#71
Author: Fid-falling (branch feature/capture-only)
Title: feat(windows): 新增"仅在录屏软件中显示"模式(桌面隐藏,采集软件仍可见)

Brings the Windows-only capture-only feature (DWM cloaking hides the pet
window from the desktop while screen-recording software such as OBS can
still capture it) together with the upstream main history the branch had
absorbed. The merge also adds the keep-in-screen toggle and its locale
keys that the branch carried.

Completion on top of the PR, which does not compile as submitted: it uses
BONGO_CAT_PREF_ICON_KEEP_IN_SCREEN without declaring it; the enum value
and a monitor-with-window row icon are added here.

Conflicts resolved: resources/icons/icon.ico and the icon OBJECT_DEPENDS
in cmake/ApplicationResources.cmake kept from this branch (new X-mark
artwork, variable-based icon path).
TianMengLucky referenced this pull request in TianMengLucky/BongoCat-X Oct 1, 2026
- CHANGELOG.md records this fork's changes vs upstream (Keep a Changelog
  format): PR #71 capture-only merge, the three feature branches, the
  manual SDK download requirement, SDK-missing toast, new icon, doc fixes
- Root README.md now serves the Simplified Chinese content (with the
  missing Project Status and Sponsors sections translated and appended);
  the English README moves to docs/README.en-US.md and the superseded
  docs/README.zh-CN.md is removed
- Language switchers in the two swapped files use relative links;
  .gitignore exception list follows the rename
- AGENTS.md docs convention updated to match the new layout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.