Put living, reactive eyes inside Obsidian.
GooglyEyes is a playful, fully local Obsidian Community Plugin. It opens an embedded GooglyEyes tab where animated eyes look around, follow the mouse, blink, react to local UI events, and can be styled with different skins and personalities.
skin.json so animal, robot, single-eye, and character skins can express emotions differently.release/googly-eyes-test.GooglyEyes is designed to be local-only and privacy-friendly. The plugin provides visual reactions inside your workspace; it is not built to collect, transmit, sell, or analyze your personal data.
copy, cut, or paste event happened.The current build exposes only completed skins in the UI:
Planned skins are added one by one after their imagegen asset packs are complete. Unfinished skins are not exposed in the plugin UI.
Use this once the plugin folder is ready or downloaded as a release.
.obsidian.plugins.googly-eyes if it does not exist..obsidian/plugins/googly-eyes:manifest.jsonmain.jsstyles.cssassetsOpen tab.Correct final folder:
YourVault/.obsidian/plugins/googly-eyes/manifest.json
YourVault/.obsidian/plugins/googly-eyes/main.js
YourVault/.obsidian/plugins/googly-eyes/styles.css
YourVault/.obsidian/plugins/googly-eyes/assets/
If the plugin does not appear in Obsidian, the folder is usually one level too deep. Make sure you do not have this:
YourVault/.obsidian/plugins/googly-eyes/googly-eyes/manifest.json
For testing the current local build, use the ready-made folder:
release/googly-eyes-test
npm run package-test.release/googly-eyes-test folder..obsidian/plugins folder.googly-eyes.Open tab.The test package includes Robot, Cat, Manga Female, Dragon, Cyberpunk Female, C-4PO, Atlas, Panda, D20 DND, SpaceHelmet, Classic Googly, Detective Noir, One Eye, Air Monk, Alien, Hacker, Anonymous, Jason, Clown, Spy, Skeleton, Wizard, Cowboy, Pumpkin Halloween, Goblin, and Troll.
Use this when editing the plugin source code.
npm install
npm run generate-skin-data
npm run validate-assets
npm run build
npm run package-test
npm run release:check
Use npm run dev while developing.
Use this before publishing a GitHub release:
manifest.json, package.json, versions.json, and CHANGELOG.md.npm run release:check.main.js.1.0.3, without a v prefix.main.js, manifest.json, and styles.css.The repository includes a GitHub Actions workflow that can attest main.js, manifest.json, and styles.css for future releases.
Open the Quick UI from:
Open Quick UIThe Quick UI starts compact behind a Show controls button. When expanded it supports thumbnail skin switching, personality switching, reaction pause, reset, fullscreen, GooglyEyes tab, full settings, and direct emotion previews.
The GooglyEyes tab embeds the eyes directly inside Obsidian instead of floating over the interface. Each active skin is scaled into a full tab panel overlay so it reads as part of the workspace.
The tab includes live controls for:
Every active skin uses the layered renderer. A complete active skin needs:
assets/skins/<skin-id>/skin.json
assets/skins/<skin-id>/thumbnail.png
assets/skins/<skin-id>/eyes/left-base.png
assets/skins/<skin-id>/eyes/right-base.png
assets/skins/<skin-id>/masks/tab-panel.png
Mask rule:
masks/tab-panel.png must be a 1774x887 RGBA PNG.Eye scale rule:
masks/tab-panel.png are the source of truth for eye position, eye shape, eyelids, and visual style.npm run rebuild-mask-eyes after changing a problem mask so skin.json and the per-skin base-eye PNGs are rebuilt from the actual transparent openings.defaults.irisSize and defaults.pupilSize in skin.json.irisSize must stay between 26 and 44 percent of the eye-window width.pupilSize must stay between 16 and 46 percent of the iris width.npm run validate-assets enforces these rules.
Skins can define optional emotion overrides in their own skin.json:
{
"reactionTuning": {
"all": {
"gazeMultiplier": 0.8,
"pupilScaleMultiplier": 0.9,
"durationMultiplier": 1.1
},
"happy": {
"lidMultiplier": 1.08,
"pupilScaleMultiplier": 1.18
}
}
}
Supported tuning keys are lidMultiplier, gazeMultiplier, pupilScaleMultiplier, irisScaleMultiplier, eyeBaseScaleMultiplier, vibeMultiplier, and durationMultiplier.
This README is generated from project files.
npm run generate-skin-data rebuilds generated-skins.ts from assets/skins.json and assets/skins/*/skin.json.npm run update-readme updates it directly.npm run build updates it automatically before building.npm run package-test updates it automatically before creating the test package.When you add or remove a skin from assets/skins.json, the README skin list and install text update on the next build.
GooglyEyes does not show in Community plugins:
manifest.json is directly inside .obsidian/plugins/googly-eyes.The tab opens but looks wrong:
npm run validate-assets.npm run build.npm run package-test.release/googly-eyes-test output.The eyes look too large or too small:
irisSize, pupilSize, or eyeWindows in that skin's skin.json.npm run validate-assets again.Current package version: 1.0.23.