白饭鱼 app icon

白饭鱼 · BaifanYu

A rice-eating whale girl · macOS 14+

A rice-eating whale girl who lives on your Mac desktop. Hold her and drag her anywhere; drop her at the left or right edge of the screen and she hangs there with only her head showing, so she never blocks what you are looking at.

◆ macOS 14+ ◆ Apple silicon & Intel ◆ SwiftUI ◆ No network code ◆ MIT ◆ Latest release

Free & open source · about 17 MB · ad-hoc signed, not notarized · nothing ever leaves your Mac

🙇

Thanks are owed — this is a port, not an original

The original 白饭鱼 / baifanyu is an Android app by @LIN428924379. The concept, the character, the artwork and the interaction design are all theirs — this macOS version only re-implements the code. Please give the original the stars.

Appearance

Two skins, twelve expressions

The bowl-head skin and the maid outfit, each with six expressions. Clicking her swaps the whole artwork, so there is never a seam where a face was pasted on.

白饭鱼 standing art bowl-head

standing art plus six expressions for both skins

Standing art + six expressions, both skins — the same artwork the original Android app ships, reused unchanged by the Mac port.

Features

Everything the Android original does, plus a few Mac-only tricks

No account, no settings to hunt down, no network code. Drag her, click her, and she is happy.

Install

Download, drag, done — no permissions at all

Unlike the Android original, the Mac version never asks for anything: no "display over other apps" permission, no system prompts.

01

Get the app

Open the Releases page and download the newest .dmg (about 17 MB), then open it.

02

Drag her into Applications

Drag 白饭鱼 / BaifanYu into the Applications folder. She needs macOS 14 or later, on Apple silicon or Intel.

03

Launch her

Her face appears in the menu bar and she floats on the desktop. There is no Dock icon — the menu bar fish is her home base, and ⌘, opens Settings.

04

Play with her

Drag her anywhere, drag her to a screen edge to perch her, click her for another expression, rest the pointer on her for the date, clock and a kind word, right-click her for the menu.

!
About signing: the build script signs the bundle ad-hoc, so the app is not notarized by Apple. If Gatekeeper blocks the first launch, allow it in System Settings ▸ Privacy & Security, or right-click the app and choose Open.
✓
Privacy: the app contains no networking code at all — no analytics, no tracking, no account, no update checks, nothing uploaded. Her position, size, expression and sound settings are stored in this Mac's local preferences only.
Port notes

Android floating window → macOS NSPanel

The original is a foreground service with a TYPE_APPLICATION_OVERLAY window. On macOS the equivalent is a borderless NSPanel with .nonactivatingPanel, level = .floating and .canJoinAllSpaces — it can never become key, so clicking her never steals focus from what you are typing in.

Android originalThis macOS port
i
Known limitations (inherited from the original, stated honestly): the six expressions were generated in separate passes, so the hair edge can shift by a pixel or two when she changes faces, and her hair does not swing — every transform is a whole-body one. The trimmed margin around her body is the only place a click can still be swallowed instead of reaching the app behind her.
Credits where they are due

The original: 白饭鱼 for Android

Everything you see on this page started as an Android app by @LIN428924379. If you carry an Android phone, install their build — it is the real thing, and it is where the character, the artwork and the interaction design come from. The Mac port exists thanks to them releasing it under the MIT license.

Android 7.0+ (API 24), target API 36 · pure Java, no third-party dependencies · MIT · the installer is attached to the original release on the author's own repository

✓
Android install notes from the original author: after launching, grant display over other apps, then tap let her out. On Xiaomi / Huawei / OPPO / vivo you must also enable autostart and unrestricted background use, otherwise the system's battery saver will kill the floating window after a while. Stock Android usually needs none of that.
the original Android artwork: standing art plus six expressions

The original Android app's own artwork sheet — the Mac port reuses these exact files.

From source

Build it yourself in two commands

A plain Swift Package plus build.sh — no Xcode project, no dependency manager, nothing to fetch. Command Line Tools are enough.

# clone
git clone https://github.com/duhaoze2007/Baifanyu-For-Mac.git
cd Baifanyu-For-Mac

# build the app bundle (release + ad-hoc signed)
bash build.sh

# launch her
open "BaifanYu.app"
ScriptWhat it produces
i
Toolchain note: on a Command Line Tools–only machine the newest SDK declares SwiftUI's property wrappers as macros whose implementation ships only inside Xcode, so build.sh automatically falls back to the newest SDK where that is not the case. With Xcode installed the workaround is skipped.
Credits & license

Standing on somebody else's whale

This project is a port. The concept, the character, the artwork and the interaction design belong to the original author; the Mac port re-implements only the code. The same list ships in the app under the About window.