πΌοΈ About Inkycal¶
Inkycal is an open-source framework designed to turn e-paper displays into elegant, low-power information dashboards.
It runs on the Raspberry Pi and generates beautiful, personalized screens based on modular building blocks such as calendars, weather forecasts, news feeds, reminders, and more.
Inkycal focuses on being:
- Minimalistic β clean layouts optimized for e-paper
- Modular β each component is self-contained and configurable
- Energy-efficient β ideal for Raspberry Pi Zero + e-paper
- Hackable β every part of the pipeline is open and extendable
π― What Inkycal Does¶
Inkycal produces an image and displays it on an e-paper device.
That image can include:
- π Monthly calendars
- βοΈ Weather forecasts with professional icons
- π° RSS news headlines
- π Upcoming events from iCalendar / Google Calendar
- π Charts, reminders, custom messages
- π Clocks, countdowns, timers
- π€ Screensavers
Each module is responsible for drawing a part of the screen.
You choose the modules, configure their sizes, and Inkycal renders the final image.
π§© How It Works¶
1. Configuration via Web UI¶
Users visit the Inkycal Web UI and generate a settings.json file, which defines:
- Display type
- Registered modules
- Ordering & layout
- Module-specific settings
- Timezone + locale
2. Rendering on Raspberry Pi¶
Inkycal loads the configuration, creates a canvas, and asks each module to draw its content.
3. Output to E-Paper Driver¶
The generated monochrome (and optionally colour) images are sent to:
- Waveshare displays
- Custom drivers (via plugin system)
π¦ Architecture Overview¶
settings.json β Inkycal Core β Module Pipeline β Canvas β Display Driver β E-Paper
Core components:¶
| Component | Purpose |
|---|---|
Inkycal (main class) |
Loads settings, initializes modules & display |
Canvas |
Handles text rendering, fonts, layout, drawing |
Modules |
Individual blocks (calendar, weather, custom text, etc.) |
Display |
Hardware-specific driver abstraction |
utils |
Fonts, timezones, wrapping, border drawing |
π§± Modules (Extendable Architecture)¶
Modules are small Python classes that each render a part of the final screen.
Built-in modules include:
CalendarWeatherForecastRSSReaderImageFrameClockCustomText
You can write your own module by subclassing:
from inkycal.modules.base import InkycalModule
class MyModule(InkycalModule):
def generate_image(self):
# Draw on canvas
return im_black, im_colour
More detailed module development docs will be added in the Developer Guide.
π Internationalization¶
Inkycal supports: * Multiple languages * Localized month and weekday names * Custom date/time formatting (arrow tokens) * Unicode fonts including CJK (Chinese/Japanese/Korean)
The built-in Noto font family ensures wide glyph coverage.
β‘ Performance & Hardware Targets¶
Inkycal is optimized for slow hardware such as:
- Raspberry Pi Zero W
- Pi Zero 2
- Raspberry Pi 3/4 (faster rendering)
Key performance features:
- Font caching
- Minimal RAM usage
- Efficient grayscale-to-bi-level rendering
- Optional image optimization for e-paper ghosting reduction
β€οΈ Why Inkycal Exists¶
E-paper displays are uniquely suited for: * Static, glanceable information * Environments where a full monitor is wasteful * Always-on dashboards that draw no power after an update * Low-maintenance IoT devices * Minimalist home and office setups
Inkycal aims to bring premium-quality layouts to affordable hardware, without requiring deep programming knowledge.
π€ Contributing¶
Inkycal is open to contributions from developers, designers, and testers.
Ways to help:
- Report issues and suggest features
- Contribute new modules
- Improve documentation
- Help with translations
- Sponsor ongoing development
π¬ Support & Community¶
You can reach the project through:
- GitHub Issues
- Discussions (soon)
- Sponsor messages
- Documentation site
If you rely on Inkycal for your daily routine, please consider supporting the project as it funds ongoing maintenance, display testing, and PiZero optimizations.
π Whatβs Next?¶
The roadmap includes:
- More built-in modules
- A plugin system for third-party modules
- Improved layout engine
- Live preview in Web UI
- Multi-display setups
- InkycalOS full desktop environment
π Acknowledgements¶
Inkycal uses:
- Pillow for image rendering
- Arrow for datetime operations
- Requests for network modules
- tzlocal for system timezone detection
- Numpy for pixel-level operations
- Sphinx / MkDocs for documentation
- A modified Waveshare driver base
Special thanks to the Inkycal community for testing and for their amazing custom module ideas.