A playful desktop app that periodically blocks your screen with a cat video to remind you to take breaks. Built with Electron. This is inspired project. See Acknowledgments
When your work interval is up, a cat slides in from the side of your screen and after a moment falls asleep on your display โ a friendly feline gatekeeper enforcing HSE-recommended screen breaks.
This project is open for contributions! Whether you want to fix bugs, add features, improve documentation, or share your favorite cat videos โ all contributions are welcome. See Contributing below.
- Cat overlay โ playful full-screen break reminder with animated cat
- Two-video lifecycle โ active cat slides in, then transitions to sleeping cat
- HSE-compliant defaults โ 50 min work / 5 min break intervals
- Customizable โ adjust work/break intervals to your preference
- System tray โ runs quietly in background with pause/resume controls
- Multi-monitor โ works across all your displays
- Custom videos โ use your own cat videos (WIP)
- Snooze โ add 5 minutes when you're in the zone
# Install dependencies
npm install
# Launch the app
npm startThe app starts in your system tray. The cat will appear after 50 minutes (default) for a 5-minute break.
The app ships with real cat videos (
neko1.webm,neko2.webm) and all required assets insrc/assets/. No additional setup needed.
For most users, we recommend downloading the latest release:
- Go to the Releases page
- Download the installer for your platform:
- Windows:
.exeinstaller - macOS:
.dmgdisk image - Linux:
.AppImagefile
- Windows:
โ ๏ธ Important for macOS users:Since Cat Gatekeeper is not signed with an Apple Developer certificate, macOS Gatekeeper will block it on first launch with a message like:
"Cat Gatekeeper" cannot be opened because the developer cannot be verified.
This is a standard macOS security feature, not a problem with the app. The app is open-source and safe to use.
To open the app:
- Don't click "Move to Trash" โ click Cancel or the X button
- Open System Settings (or System Preferences)
- Go to Privacy & Security (or Security & Privacy)
- Scroll down to the Security section
- You'll see a message: "Cat Gatekeeper was blocked..."
- Click Open Anyway
- A second dialog will appear โ click Open
Alternative method (via Terminal):
xattr -d com.apple.quarantine /Applications/Cat\ Gatekeeper.appDisclaimer: Cat Gatekeeper is provided as-is under the MIT License. The app is open-source โ you can review the code to verify its behavior. By using this software, you acknowledge that you do so at your own discretion. The maintainers are not responsible for any issues arising from its use.
| Command | Description |
|---|---|
npm start |
Launch the app (50 min interval) |
npm run start:dev |
Launch with 1 min interval for testing |
npm run pack |
Package app into a directory (no installer) |
npm run dist |
Build installers for all platforms |
npm run dist:win |
Build Windows installer (.exe) |
npm run dist:mac |
Build macOS disk image (.dmg) |
npm run dist:linux |
Build Linux package (.AppImage) |
- The app sits in your system tray with a background timer
- When the work interval ends, a full-screen overlay opens
- The active cat video plays once, sliding in from the right side of the screen
- When the active video ends, the cat transitions to a sleeping loop while a large countdown timer shows remaining break time
- Reminder text and controls appear at the bottom of the screen
- After the break, the overlay closes and the timer resets
- You can snooze (+5 min) or dismiss the break early
- Right-click the tray icon and open Settings
- Scroll to Custom Cat Video and click Browse...
- Select your MP4/WEBM/AVI/MOV file
- Click Save Settings
Note: This feature is currently under development. Basic video selection works, but advanced features may be limited.
The active cat video defaults to src/assets/neko1.webm. Replace it with your own file (keeping the same name), or use the Settings UI to pick any video file. The sleeping cat (neko2.webm) is always bundled with the app.
- Best: Videos on a dark or black background (blends with the overlay)
- Good: Close-up cat faces with no distracting background
- Avoid: Green screen videos โ chroma key removal is currently in development
- Active cat format: WEBM or MP4 (ideally short, 5-15 seconds, plays once)
- Recommendation: Use a walking cat for the active slot and a resting cat for the sleeping slot
To process a green screen video to a dark background using ffmpeg:
ffmpeg -i your_greenscreen.mp4 -vf "colorkey=0x00FF00:0.3:0.1,format=yuv420p" \
-c:v libx264 -pix_fmt yuv420p src/assets/cat_processed.mp4- Electron โ cross-platform desktop shell
- HTML/CSS/JS โ overlay and settings UI
- electron-builder โ packaging and distribution
- ffmpeg โ placeholder video generation (dev dependency)
cat-gatekeeper/
โโโ main.js # Main process: windows, tray, timer, IPC
โโโ preload.js # Secure context bridge
โโโ package.json
โโโ src/
โ โโโ overlay.html # Break overlay with cat video & timer
โ โโโ overlay.css # Overlay styling
โ โโโ overlay.js # Overlay logic (countdown, dismiss)
โ โโโ settings.html # Settings panel
โ โโโ settings.css # Settings styling
โ โโโ settings.js # Settings logic (form handling)
โ โโโ silent.html # Helper page for sound playback
โ โโโ assets/
โ โโโ neko1.webm # Active cat video (slides in, plays once)
โ โโโ neko2.webm # Sleeping cat video (loops after active ends)
โ โโโ cat.mp4 # Fallback/legacy video
โ โโโ cat.png # Fallback cat image
โ โโโ icon1.png # App and tray icon
โ โโโ icon-small.png # Small tray icon
โโโ scripts/
โโโ generate-assets.js # Generates PNG icons and cat image
โโโ generate-video.js # Creates placeholder cat video via ffmpeg
| Setting | Default | Range |
|---|---|---|
| Work interval | 50 min | 5-120 min |
| Break duration | 5 min (300 sec) | 1-10 min (60-600 sec) |
| Snooze duration | 5 min (300 sec) | configurable |
| Sound effect | disabled | on/off |
| Multi-monitor | enabled | on/off |
| Cat video | bundled neko1.webm (active) + neko2.webm (sleeping) | user-selectable |
npm run dist:winProduces an NSIS installer in dist/.
npm run dist:macProduces a DMG in dist/.
npm run dist:linuxProduces an AppImage in dist/.
For quick testing with short intervals:
npm run start:devThis sets the work interval to 1 minute and break duration to 15 seconds. You can also use environment variables directly:
WORK_INTERVAL=1 BREAK_DURATION=15 npm startWe welcome all contributions! Whether you're fixing a bug, adding a feature, improving documentation, or sharing cat videos โ every contribution matters.
- ๐ Report bugs โ Found something broken? Open an issue
- ๐ก Suggest features โ Have an idea? We'd love to hear it
- ๐ Improve docs โ Better documentation helps everyone
- ๐จ Design โ UI/UX improvements, icons, animations
- ๐ฑ Cat videos โ Share your favorite cat videos for the overlay
- ๐ป Code โ Fix bugs, build features, optimize performance
- Fork this repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly โ use
npm run start:devfor quick testing - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style
- Comment your code, especially for complex logic
- Test on multiple platforms if possible (Windows, macOS, Linux)
- Update documentation when adding features
- Keep pull requests focused โ one feature/fix per PR
This project is licensed under the MIT License โ see the LICENSE file for details.
- ใใใใ โ The original creator of the Cat Gatekeeper Chrome extension, built to limit SNS usage. This Electron desktop app is inspired by their brilliant idea, adapted to follow HSE screen-break guidelines for desk workers.
- HSE (Health and Safety Executive) for screen break recommendations
- All the cats who inspired this project ๐ฑ
- ๐ Bug reports: GitHub Issues
- ๐ฌ Questions: Discussions
Made with โค๏ธ for cats and healthy screen habits