Today's schedule, quietly resting at your screen edge.
macOS 15+ (Sequoia) / Swift 6, SwiftUI
English | 한국어
NudgeLine displays your daily schedule as a thin bar along the edge of your screen (Left, Right, or Bottom).
nudgeline_play_full.mp4
Key Features:
- Mouse Passthrough: Clicks and scrolls pass through outside the bar area.
- Timeline Bar: Background track, event boundary lines, and 4 indicator styles.
- Overlapping Events: Alternating color transitions for concurrent events.
- Mascots: 3 built-in animated pets with 6 hide motions, and custom pet support.
- Apple Reminders: Pinpoint markers on the timeline for today's reminders with two-track styles (SF Symbols & pet treats).
- Meeting & Map Integration: 1-click launch for 10 meeting platforms, automatic unwrapping of corporate SafeLinks/Redirects, and preferred map shortcuts (Apple, Google, Naver, Kakao).
- Privacy: Option to hide the bar during screen sharing/recording or in full-screen spaces.
- One-Click In-App Update: Automatic update notifications and seamless in-app download/relaunch from the menu bar.
- Native Implementation: Built with SwiftUI, AppKit, and EventKit with no external dependencies.

Mascots hide behind the bezel or disappear upon cursor proximity (6 motions supported).
brew install rareram/tap/nudgeline
- Download
NudgeLine.dmgfrom GitHub Releases and moveNudgeLine.appto/Applications. Subsequent updates can be installed with a single click via the menu bar. - Gatekeeper Notice (First launch only):
- Since this is an unsigned open-source app, macOS may prompt a security confirmation on first open.
- Right-click (Control + Click)
NudgeLine.app> select Open, or run:xattr -cr /Applications/NudgeLine.app
- Position: Left, Right, or Bottom screen edge.
- Multi-Monitor: Show on the primary display or across all connected screens.
- Thickness: Adjustable from 1px to 10px, with optional expansion on hover.
- Overlaps: Alternating transitions between concurrent events.
- Past Event Dimming: Completed events dim to 35% opacity and saturation, restoring to original colors on hover.
- Styles: Triangle Tick, Round Dome, Protruding Block, and Point Ring.
- Visual Effects: Indicator color customization, rim highlight, and neon glow toggles.
- Shortest Event Focus: Prioritizes the shortest event when hovering over overlapping meetings.
- Pre-Event Alert: 3-second bar pulse animation 5, 10, 15, or 20 minutes before a meeting starts.
- Event Start Effects: Visual alert effects (Cherry Blossom, Neon Thunder, Maple Leaf, Snow Flurry).
- On the Hour Notification: Optional visual alert triggered at :00 every hour.
- Trigger Control: Triggers once when an event starts (3-minute cooldown).
- Built-in Pets: Calico Cat, White Jindo Dog, and White Tiger.
- 6 Hide Motions:
tailPeek: Hides behind the bezel with tail visible.headPeek: Hides body with head peeking out.pop: Shrinks and disappears.vortex: Rotates and disappears.squish: Squishes and disappears.smoke: Blurs and disappears.- Custom Pets: Import PNG frame sequences, adjust FPS, configure hide offsets with live preview.
- Pet Snooze: Click the current time indicator or tooltip bubble to temporarily snooze the mascot. The indicator shows a subtle breathing animation, and the tooltip displays a live wave gauge with the remaining snooze countdown.
- Action Card: Schedule details, 1-click meeting join with automatic SafeLinks/Redirect unwrapping, preferred map routing (Apple, Google, OpenStreetMap, Naver, Kakao), and Apple Calendar shortcut.
- Simple Tooltip: Compact tooltip showing title and time.
- Card Themes: Supports System Adaptive, Dark, and Light themes with contrast adjustment for buttons and links on light backgrounds.
- All-day Events: Displays all-day events alongside timed schedules in popovers.
- Empty Track Guidance: Displays a status tooltip when hovering over empty timeline gaps.
- Timeline Markers: Pinpoint markers indicating due times for today's reminders on the timeline.
- Two-Track Marker Styles:
- SF Symbols: Flag, Diamond, Heart, and Star (retains reminder list color).
- Pet Treats: Full-color food items matching the active pet (Meat for White Tiger, Bone for Jindo Dog, Fish for Calico Cat, Star for Custom Pets).
- Visibility Window: Configurable display range (1, 2, 3, 4, 12 hours, or All Day).
- Interactive Popovers: View reminder details, toggle completion status directly from the popover, and open the Apple Reminders app.
- Smart App Deep-Linking: Securely recognizes task URLs and displays dedicated badges for productivity tools (Notion, Slack, Things 3, Obsidian, etc.) with 3-tier security filtering.
- Menu Bar Controls: Quick access to Settings, Instant Refresh, Check for Updates, App Info (About NudgeLine), and Quit directly from the menu bar status icon.
- Native About Window: A compact 320pt window displaying app identity, release highlights with markdown emphasis, and direct repository/feedback links.
- Instant Refresh: Re-fetch today's calendar events via the timeline bar context menu or menu bar [Refresh] item.
- AppIntents Integration:
Refresh Schedule/NudgeLine 새로고침: Refetch today's calendar events.Toggle Pet/NudgeLine 펫 토글: Toggle pet visibility on the timeline bar.
- Timeline: Position, thickness, hover expand, border and neon highlights, past event dimming, background style (Auto, Dark, Light, Custom), and opacity.
- Appearance: Card style/theme/opacity, indicator shape/color, pre-event alert, event start effects, hourly alert, pet selection and hide motions, custom pet manager.
- Schedule: 24-hour mode, work hours, visible calendars with color pickers, System Settings deep link.
- Reminders: Enable/disable timeline markers, marker style (SF Symbols or Pet Treats), visibility window, and reminder list filter.
- General: Language (System, Korean, English), preferred map service, launch at login (
SMAppService), multi-display, hide on screen share, hide in full screen, app info.
NudgeLine integrates with your daily workflow tools to provide a seamless, distraction-free experience.
- Global & Enterprise: Google Meet, Zoom, Microsoft Teams, Apple FaceTime, Cisco Webex, Amazon Chime.
- Team Collaboration & Community: Discord, Lark, Whereby, Jitsi Meet.
- Regional: Naver Whale ON.
- Security & Native Launch:
- Automatically unwraps obfuscated URLs (Microsoft Defender SafeLinks, Google Redirects) to reveal clean destinations.
- 1-click launch into native macOS clients for Microsoft Teams (
msteams://) and FaceTime (facetime://).
- Task & Productivity Tools: Notion (
notion://), Slack (slack://), Things 3 (things://), Obsidian (obsidian://), Bear (bear://), Linear (linear://), Figma (figma://). - Apple System Apps: Apple Mail (
message://), Apple Notes (notes://), Apple Reminders (x-apple-reminderkit://). - Smart Web Badges: Clean domain hostname badges for standard URLs (e.g.,
github.com,docs.google.com). - 3-Tier Safe Scheme Parser: Blocks dangerous local file execution and script injection schemes (
file,javascript,applescript, etc.).
- Supported Services: Apple Maps, Google Maps, OpenStreetMap, Naver Map, Kakao Map.
- Configurable in Settings: Choose your preferred map service in Settings > General. Korean localized environments provide Naver and Kakao options alongside global providers.
- macOS 15.0+ (Sequoia)
- Apple Silicon or Intel Mac
# 1. Clone repository git clone https://github.com/rareram/NudgeLine.git cd NudgeLine # 2. Local development build (Isolated NudgeLine (Dev).app) ./scripts/build_app.sh open "build/NudgeLine (Dev).app" # Or production release build ./scripts/build_app.sh --release open "build/NudgeLine.app"
You can manually run the unit test suite to verify the localization dictionary (L10n), default configuration models (AppSettings), and calendar event model integrity:
# Run local unit tests ./scripts/run_tests.sh # Or directly via Swift Package Manager (Xcode environment) swift test
NudgeLine/
├── Package.swift # SPM Manifest (macOS 15+)
├── docs/
│ └── images/ # README screenshots and icon assets
├── Resources/
│ ├── Info.plist # LSUIElement and calendar usage descriptions
│ └── AppIcon.icns # App icon
├── Sources/
│ └── NudgeLine/
│ ├── AppDelegate.swift # App lifecycle and screen change observers
│ ├── main.swift # Entry point & single instance guard
│ ├── Models/
│ │ ├── AppSettings.swift # Settings persistence via UserDefaults
│ │ ├── CalendarEvent.swift # Event model, meeting parser, safe indexing
│ │ └── ReminderItem.swift # Apple Reminders model & visibility calculator
│ ├── Services/
│ │ ├── CalendarService.swift # EventKit background query service
│ │ ├── CustomPetService.swift # Thread-safe custom pet file manager
│ │ ├── LaunchAtLoginHelper.swift # SMAppService login item wrapper
│ │ ├── Localization.swift # English/Korean L10n dictionary
│ │ ├── NudgeLineShortcuts.swift # AppIntents for Shortcuts & Siri automation
│ │ ├── ReminderService.swift # Apple Reminders fetch & toggle service
│ │ └── UpdateService.swift # In-app update checker and download coordinator
│ └── Views/
│ ├── About/ # Native About window & singleton controller
│ │ └── AboutView.swift
│ ├── OverlayPanel.swift # Edge floating NSPanel with mouse passthrough
│ ├── PopoverPanel.swift # Floating popover panel with .common runloop timer & empty tooltip
│ ├── TimelineBarView.swift # Main timeline rendering & gesture coordinator
│ ├── HangingPetIndicatorView.swift # Mascot renderer & orbit physics
│ ├── HoverRenderers.swift # Popover renderer protocol
│ ├── EventPopoverView.swift # Action card popover (timed & all-day multi-stack)
│ ├── SimpleInfoPopoverView.swift # Simple tooltip bubble
│ ├── CustomPetEditorSheet.swift# Custom pet drag-and-drop modal
│ ├── SettingsView.swift # Preferences tab container
│ ├── SettingsWindowController.swift # Dedicated settings window lifecycle manager
│ ├── Settings/ # Modular settings tabs
│ │ ├── TimelineTab.swift
│ │ ├── AppearanceTab.swift
│ │ ├── ScheduleTab.swift
│ │ ├── RemindersTab.swift
│ │ └── GeneralTab.swift
│ ├── Effects/ # 16-frame 1.0s micro event alert effects
│ │ ├── EventTriggerEffectView.swift
│ │ ├── CherryBlossomEffectAsset.swift
│ │ ├── ThunderEffectAsset.swift
│ │ ├── AutumnLeavesEffectAsset.swift
│ │ └── WinterSnowEffectAsset.swift
│ └── Pets/ # Built-in 16-frame Base64 pet assets & interaction
│ ├── PetProtocol.swift
│ ├── InteractivePetView.swift
│ ├── InteractiveCustomPetView.swift
│ ├── CatPetAsset.swift
│ ├── JindoDogPetAsset.swift
│ └── WhiteTigerPetAsset.swift
├── Tests/
│ └── NudgeLineTests/ # Swift Testing unit test suite
└── scripts/
├── hooks/ # Local Git pre-push automated verification hooks
│ ├── install_hook.sh
│ ├── pre-push.sh
│ └── uninstall_hook.sh
├── build_app.sh # Local Dev & Release bundle packager
├── create_dmg.sh # Release DMG packaging script
├── run_tests.sh # Local unit test runner
├── generate_dev_icon.swift # DEV icon badging script
├── generate_app_icon.sh # Production icon generator script
├── generate_custom_pet.py # CLI sprite generator for Swift models
└── check_security.sh # Static secret scan script
NudgeLine supports:
- System Default (Follows macOS system language)
- English
- Korean (한국어)
You can change the language in Settings > General > Language.
- Inspired by the concept of PixelScheduler (2014-2015) by Andreas Katzian & ARTMIXTURE.
- License: MIT License.
- Copyright: (c) 2026 rareram. All rights reserved.