{"id":42123728,"url":"https://github.com/muldjord/leddy","last_synced_at":"2026-01-26T15:01:21.039Z","repository":{"id":133929415,"uuid":"282719811","full_name":"muldjord/leddy","owner":"muldjord","description":"Displays pixelly goodness on a Unicorn HAT HD or Ubercorn for the Raspberry Pi","archived":false,"fork":false,"pushed_at":"2026-01-24T08:42:22.000Z","size":6646,"stargazers_count":14,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-24T19:18:32.314Z","etag":null,"topics":["led-matrix","raspberry-pi","ubercorn","unicorn-hat-hd"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/muldjord.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-26T19:34:30.000Z","updated_at":"2026-01-24T08:42:27.000Z","dependencies_parsed_at":"2024-05-20T14:35:43.803Z","dependency_job_id":null,"html_url":"https://github.com/muldjord/leddy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/muldjord/leddy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muldjord%2Fleddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muldjord%2Fleddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muldjord%2Fleddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muldjord%2Fleddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/muldjord","download_url":"https://codeload.github.com/muldjord/leddy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/muldjord%2Fleddy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28781308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["led-matrix","raspberry-pi","ubercorn","unicorn-hat-hd"],"created_at":"2026-01-26T15:00:46.600Z","updated_at":"2026-01-26T15:01:21.032Z","avatar_url":"https://github.com/muldjord.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Leddy\nLeddy displays easily customizable pixelly goodness on a variety of LED matrix displays. Currently it supports the following LED matrices:\n- [Unicorn Hat HD](https://shop.pimoroni.com/products/unicorn-hat-hd)\n- [Ubercorn Hat](https://shop.pimoroni.com/products/ubercorn)\n- [Adafruit RGB Bonnet for the Raspberry Pi](https://www.adafruit.com/product/3211)\n- An LED matrix simulator (running in a window on your desktop using Qt6).\n\n## Video demonstration\nA small video demonstrating some of the features of Leddy using an Ubercorn LED matrix can be seen [here](https://youtu.be/06wdx83tDZE). I've built a frame using the instructions seen [here](https://johnmccabe.net/technology/projects/ubercorn-gameframe-pt1) with a slight variation in the four spacer blocks to better hold the Ubercorn in place. All STL files can be found in the `stl` subfolder.\n\nThe scene rotation and look of each scene is easily customizable through just one XML file per [theme](docs/THEMES.md). Default themes are provided for a 16x16 matrix and for a 64x32 matrix. Those should get you started in no time.\n\nLeddy supports the following features:\n- Animations (PNG sprite sheet or animated GIF)\n- Chroma-keyed transitions (PNG sprite sheet or animated GIF)\n- Weather (using OpenWeatherMap API)\n- Time / Date\n- Rss feed headlines / titles as scrolling text\n- Conway's \"Game of Life\"\n- Run terminal commands and display output on LED matrix\n- Scrolling image gallery\n- A cozy snowfall scene\n\nThe general configuration of Leddy is handled through the `config.ini` file. It is created in the same folder as the executable when you run Leddy for the first time. In this file you can configure which theme to load with:\n```\n[theme]\nxml=themes/yourtheme/theme.xml\n```\nYou can also adjust the rotation, framerate and default brightness of your LED matrix:\n```\n[matrix]\nbrightness=50\nframerate=30\nrotation=180\n```\nBut the fun stuff happens in the `themes` subfolder. In here you can create your own [theme](docs/THEMES.md) that Leddy can load and display on your LED matrix. A theme consists of a single XML file with theme definitions and a folder that contains all of the theme resources.\n\nRead more on how to customize a theme XML file [here](docs/THEMES.md).\n\n## Leddy prerequisites\n\n### Hardware\n* Raspberry Pi (most likely)\n* A supported LED matrix (unless you just want to use the LED matrix simulator)\n\n### Software\nYou will need the following packages installed on your Raspberry Pi OS:\n```\n$ sudo apt-get update\n$ sudo apt-get install build-essential qt6-base-dev libgif-dev\n```\nFor the Unicorn HAT HD or the Ubercorn HAT you need to enable the Raspberry Pi SPI interface. This can be easily done by editing `/boot/config.txt` and uncommenting the line `#rdtparam=spi=on` (by removing the `#`). Save the file and reboot the pi for the change to take effect.\n\n## Compiling Leddy\nFollow these instructions to clone the Leddy repository and compile the code.\n```\n$ git clone https://github.com/muldjord/leddy.git\n$ cd leddy\n$ mkdir build\n$ cd build\n$ cmake .. -DMATRIX_IMPL=MATRIXEXAMPLE\n$ make\n$ make install\n```\nBe sure to change `MATRIXEXAMPLE` to match your LED matrix. The `make install` command installs all relevant files in the `leddy/release` folder and makes a symbolic link to the `themes` folder.\n\n## Running\nFrom the `build` folder:\n```\n$ cd ../release\n$ ./leddy\n```\n\n## Running as a service\nYou should consider running Leddy as a service using systemd. This enables it to auto-start when you boot the Raspberry Pi. I've provided a very simple systemd service file you can use to run it as a service. It's located under `systemd/leddy.service`. All you need to do is copy that file to `/etc/systemd/system/leddy.service` and edit the `ExecStart` path and executable to wherever your compiled `leddy` executable is located (most likely `release/leddy`). If you want to run Leddy with a different user than the `pi` user and group, you can also change that. Then run the following to reload the systemd services and enable it upon next reboot:\n```\n$ sudo systemctl daemon-reload\n$ sudo systemctl enable leddy\n```\nIf you don't want to reboot, you can start the service manually with:\n```\n$ sudo systemctl start leddy\n```\nAnd that's it! Your chosen LED matrix should hopefully come to life now.\n\n#### Version 1.1.0 (26jan2026):\n* Switched project from Qt5 to Qt6\n* Switched project from qmake to cmake\n* Added support for the Adafruit RGB LED bonnet (https://www.adafruit.com/product/3211)\n* Added 'snowfall' scene type\n* Added 'gallery' scene type\n* Now uses EasyGifReader (MIT License) by Viktor Chlumsky which in turn uses gif_lib\n* Fixed config framerate to be a framerate rather than a frametime\n* Now uses MATRIX::WIDTH and MATRIX::HEIGHT constexpr for all matrix dimension manipulations\n\n#### Version 1.0.0 (Unreleased):\n* First code upload to the public\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuldjord%2Fleddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmuldjord%2Fleddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmuldjord%2Fleddy/lists"}