MCPcopy Index your code
hub / github.com/fatihak/InkyPi

github.com/fatihak/InkyPi @main sqlite

repository ↗ · DeepWiki ↗
371 symbols 1,328 edges 59 files 143 documented · 39%
README

InkyPi

About InkyPi

InkyPi is an open-source, customizable E-Ink display powered by a Raspberry Pi. Designed for simplicity and flexibility, it allows you to effortlessly display the content you care about, with a simple web interface that makes setup and configuration effortless.

Features: - Natural paper-like aethetic: crisp, minimalist visuals that are easy on the eyes, with no glare or backlight - Web Interface allows you to update and configure the display from any device on your network - Minimize distractions: no LEDS, noise, or notifications, just the content you care about - Easy installation and configuration, perfect for beginners and makers alike - Open source project allowing you to modify, customize, and create your own plugins - Set up scheduled playlists to display different plugins at designated times

Plugins:

  • Image Upload: Upload and display any image from your browser
  • Daily Newspaper/Comic: Show daily comics and front pages of major newspapers from around the world
  • Clock: Customizable clock faces for displaying time
  • AI Image/Text: Generate images and dynamic text from prompts using OpenAI's models
  • Weather: Display current weather conditions and multi-day forecasts with a customizable layout
  • Calendar: Visualize your calendar from Google, Outlook, or Apple Calendar with customizable layouts

And additional plugins coming soon! For documentation on building custom plugins, see Building InkyPi Plugins.

See the wiki for a list of community-maintained third-party plugins.

Hardware

Disclosure: The links above are affiliate links. I may earn a commission from qualifying purchases made through them, at no extra cost to you, which helps maintain and develop this project.

Installation

To install InkyPi, follow these steps:

  1. Clone the repository: bash git clone https://github.com/fatihak/InkyPi.git
  2. Navigate to the project directory: bash cd InkyPi
  3. Run the installation script with sudo: bash sudo bash install/install.sh [-W <waveshare device model>] Option:

    • -W \<waveshare device model> - specify this parameter ONLY if installing for a Waveshare display. After the -W option specify the Waveshare device model e.g. epd7in3f.

    e.g. for Inky displays use: bash sudo bash install/install.sh

    and for Waveshare displays use: bash sudo bash install/install.sh -W epd7in3f

After the installation is complete, the script will prompt you to reboot your Raspberry Pi. Once rebooted, the display will update to show the InkyPi splash screen.

Note: - The installation script requires sudo privileges to install and run the service. We recommend starting with a fresh installation of Raspberry Pi OS to avoid potential conflicts with existing software or configurations. - The installation process will automatically enable the required SPI and I2C interfaces on your Raspberry Pi.

For more details, including instructions on how to image your microSD with Raspberry Pi OS, refer to installation.md. You can also checkout this YouTube tutorial.

Update

To update your InkyPi with the latest code changes, follow these steps: 1. Navigate to the project directory: bash cd InkyPi 2. Fetch the latest changes from the repository: bash git pull 3. Run the update script with sudo: bash sudo bash install/update.sh This process ensures that any new updates, including code changes and additional dependencies, are properly applied without requiring a full reinstallation.

Uninstall

To install InkyPi, simply run the following command:

sudo bash install/uninstall.sh

Roadmap

The InkyPi project is constantly evolving, with many exciting features and improvements planned for the future.

  • Plugins, plugins, plugins
  • Modular layouts to mix and match plugins
  • Support for buttons with customizable action bindings
  • Improved Web UI on mobile devices

Check out the public trello board to explore upcoming features and vote on what you'd like to see next!

Waveshare Display Support

Waveshare offers a range of e-Paper displays, similar to the Inky screens from Pimoroni, but with slightly different requirements. While Inky displays auto-configure via the inky Python library, Waveshare displays require model-specific drivers from their Python EPD library.

This project has been tested with several Waveshare models. Displays based on the IT8951 controller are not supported, and screens smaller than 4 inches are not recommended due to limited resolution.

If your display model has a corresponding driver in the link above, it’s likely to be compatible. When running the installation script, use the -W option to specify your display model (without the .py extension). The script will automatically fetch and install the correct driver.

License

Distributed under the GPL 3.0 License, see LICENSE for more information.

This project includes fonts and icons with separate licensing and attribution requirements. See Attribution for details.

Issues

Check out the troubleshooting guide. If you're still having trouble, feel free to create an issue on the GitHub Issues page.

If you're using a Pi Zero W, note that there are known issues during the installation process. See Known Issues during Pi Zero W Installation section in the troubleshooting guide for additional details..

Sponsoring

InkyPi is maintained and developed with the help of sponsors. If you enjoy the project or find it useful, consider supporting its continued development.

Become a Patreon Become a Patreon Buy Me A Coffee

Acknowledgements

Check out these similar projects:

  • PaperPi - awesome project that supports waveshare devices
    • shoutout to @txoof for assisting with InkyPi's installation process
  • InkyCal - has modular plugins for building custom dashboards
  • PiInk - inspiration behind InkyPi's flask web ui
  • rpi_weather_display - alternative eink weather dashboard with advanced power efficiency

Core symbols most depended-on inside this repo

get_config
called by 49
src/config.py
get_plugin_dir
called by 25
src/plugins/base_plugin/base_plugin.py
get_resolution
called by 24
src/config.py
open
called by 14
src/static/scripts/refresh_settings_manager.js
get_playlist_manager
called by 11
src/config.py
render_image
called by 10
src/plugins/base_plugin/base_plugin.py
write_config
called by 9
src/config.py
find_plugin
called by 9
src/model.py

Shape

Method 230
Function 74
Class 46
Route 21

Languages

Python94%
TypeScript6%

Modules by API surface

src/model.py39 symbols
src/display/waveshare_epd/epdconfig.py30 symbols
src/refresh_task.py24 symbols
src/plugins/weather/weather.py23 symbols
src/config.py17 symbols
src/plugins/clock/clock.py16 symbols
src/blueprints/plugin.py15 symbols
src/static/scripts/refresh_settings_manager.js14 symbols
src/utils/image_loader.py13 symbols
src/blueprints/settings.py12 symbols
src/blueprints/playlist.py11 symbols
src/utils/app_utils.py10 symbols

Dependencies from manifests, versioned

astral3.1 · 1×
cysystemd2.0.1 · 1×
feedparser6.0.11 · 1×
flask3.1.2 · 1×
icalendar6.3.2 · 1×
inky2.3.0 · 1×
numpy2.4.2 · 1×
openai2.20.0 · 1×
pi-heif1.2.0 · 1×
pillow12.1.1 · 1×
psutil7.2.2 · 1×
pytest8.4.2 · 1×

For agents

$ claude mcp add InkyPi \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact