A customizable Stream Deck plugin that counts down the days to your next big event.
- Day Countdown: Displays the number of days remaining until your target date
- Custom Event Name: Set a custom name for your event (e.g., "Vacation", "Birthday", "Launch")
- Extensive Customization: Customize fonts, font sizes, and colors for every element
- Banner background and text color
- Main display background and text color
- Font families for banner and countdown number
- Adjustable font sizes for all text elements
- Automatic Updates: Updates daily at midnight and hourly throughout the day
- Past Date Support: Shows "X days ago" for dates that have passed
Before building, run the configuration script to set your unique identifiers:
./configure.shThis interactive script will prompt you for:
- Your reverse domain (e.g.,
com.yourcompany) - Plugin identifier (e.g.,
dayzero)
It will automatically update the UUID in manifest.json, bundle name in build-plugin.sh, and examples in the README.
Alternatively, you can manually update these identifiers in the files mentioned above.
-
Build the Plugin Bundle:
# Run the build script ./build-plugin.sh # Or manually create the plugin bundle directory mkdir -p "com.yourdomain.dayzero.sdPlugin" # Copy all files into the bundle cp manifest.json "com.yourdomain.dayzero.sdPlugin/" cp plugin.html "com.yourdomain.dayzero.sdPlugin/" cp -r propertyInspector "com.yourdomain.dayzero.sdPlugin/" cp -r images "com.yourdomain.dayzero.sdPlugin/"
-
Install to Stream Deck:
# Double-click the bundle to install open "com.yourdomain.dayzero.sdPlugin"
Or manually copy to the Stream Deck plugins folder:
cp -r "com.yourdomain.dayzero.sdPlugin" \ "~/Library/Application Support/com.elgato.StreamDeck/Plugins/"
-
Restart Stream Deck:
- Quit and reopen the Stream Deck application
- The "Day Zero" action should appear in the actions list
For testing during development:
-
Create a symbolic link (update the bundle name to match your manifest.json):
ln -s "$(pwd)" \ "~/Library/Application Support/com.elgato.StreamDeck/Plugins/com.yourdomain.dayzero.sdPlugin"
-
Restart Stream Deck application
-
Add the Action:
- Open Stream Deck software
- Find "Day Zero" in the actions list
- Drag it to a button on your Stream Deck
-
Configure:
- Click the button in Stream Deck software to open settings
- Set the Event Name (e.g., "Vacation")
- Select the Target Date
- Choose a Banner Color
-
View:
- The button will display:
- Your event name at the top in a colored banner
- The number of days remaining in large text
- "days" or "day" label at the bottom
- The button will display:
- Type: Text (max 20 characters)
- Default: "Event"
- Description: The name displayed on the banner
- Type: Date picker
- Required: Yes
- Description: The date you're counting down to
- Banner Background Color: Color picker (default: #4CAF50)
- Banner Text Color: Color picker (default: #FFFFFF)
- Banner Font: Font family selector (default: Arial)
- Banner Font Size: 10-24px (default: 24)
- Main Background Color: Color picker (default: #000000)
- Main Text Color: Color picker (default: #FFFFFF)
- Number Font: Font family selector (default: Arial)
- Number Font Size: 24-72px (default: 48)
- Label Font Size: 12-32px (default: 20)
com.yourdomain.dayzero.sdPlugin/
├── manifest.json # Plugin metadata and configuration
├── plugin.html # Main plugin logic and rendering
├── propertyInspector/
│ └── index.html # Configuration UI
└── images/
├── action-icon.png # Action icon (144x144)
├── [email protected] # Action icon retina (288x288)
├── plugin-icon.png # Plugin icon (144x144)
├── [email protected] # Plugin icon retina (288x288)
├── category-icon.png # Category icon (144x144)
└── [email protected] # Category icon retina (288x288)
- WebSocket Communication: The plugin communicates with Stream Deck via WebSocket
- Canvas Rendering: Each button is rendered using HTML5 Canvas API
- Date Calculation: Days are calculated using JavaScript Date objects
- Auto Updates:
- Hourly interval checks for changes
- Midnight update scheduled daily
- Settings Storage: Stream Deck manages settings persistence
- macOS: 10.13 or later
- Stream Deck Software: 6.0 or later
You can customize the appearance through the Property Inspector in Stream Deck, or by editing plugin.html for advanced changes:
- Canvas Size: Default 144x144 pixels
- Fonts: All fonts and sizes configurable via UI
- Colors: All colors configurable via UI
- Layout: Adjust positioning of elements in code
The plugin comes with pre-generated icons, but you can create your own custom icons if desired:
-
Open the Icon Generator:
open images/icon-generator.html
-
Customize Your Icons:
- Modify the colors, text, or design in the generator
- The generator creates all required sizes automatically
-
Download Icon Files:
- Click the download buttons for each icon
- Or right-click each canvas and select "Save Image As..."
- Save them in the
images/directory with these exact names:action-icon.png(144x144)[email protected](288x288)plugin-icon.png(144x144)[email protected](288x288)category-icon.png(144x144)[email protected](288x288)
-
Rebuild and Reinstall:
./build-plugin.sh open "com.yourdomain.dayzero.sdPlugin"Then restart the Stream Deck application to see your custom icons.
Note: The category icons can be the same as the plugin icons if you don't need different designs for each.
- Ensure all required icon files are present
- Check that
manifest.jsonis valid JSON - Restart Stream Deck application
- Check Console.app for errors (filter by "Stream Deck")
- Verify the target date is set correctly
- Check WebSocket connection in browser console
- Restart Stream Deck application
- Verify icon files exist in
images/directory - Ensure icons are PNG format with correct dimensions
- Check file naming matches
manifest.json
- macOS 10.13 or later
- Stream Deck device and software
- Text editor or IDE
- Edit files in the plugin directory
- Restart Stream Deck application to reload plugin
- Test changes on your Stream Deck
- Open Stream Deck software
- Open Console.app (macOS)
- Filter for "Stream Deck"
- View plugin logs and errors
Apache License 2.0 - See LICENSE for details.
For issues or feature requests, please create an issue in the repository.
Possible features to add:
- Multiple date formats
- Countdown to time (hours/minutes)
- Background images
- Progress bar visualization
- Week/month countdown options
- Multiple language support
This project was created with the assistance of AI coding tools.
