https://github.com/stagfoo/pennyblack
This is a project to build an e-ink reader for the Raspberry Pi zero.
https://github.com/stagfoo/pennyblack
Last synced: 12 months ago
JSON representation
This is a project to build an e-ink reader for the Raspberry Pi zero.
- Host: GitHub
- URL: https://github.com/stagfoo/pennyblack
- Owner: stagfoo
- Created: 2025-07-07T22:47:11.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-09T08:26:34.000Z (12 months ago)
- Last Synced: 2025-07-09T09:36:56.477Z (12 months ago)
- Language: Go
- Size: 357 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# Penny Black
This is a project to build an e-ink reader for the Raspberry Pi zero.
It's a hobby project to learn about Go, e-ink displays and Raspberry Pi.
also I want to use a dial to navigate the UI.
## Structure
### App
this is a gui for the user to interact with. there is no touch so it will be controller based
- Views
- Lists
- Book/:id
- Settings
### cmd
this will be the backend for the app. it will be responsible for the following:
- generating a list of books from files in the books directory (in toml format)
- take a screenshot of the gui for the e-ink display 0.5 seconds refresh rate
- for development purposes Xvfb will be used for the virtual display
## Run GUI
```
go run app/*.go
```
```mermaid
graph TD
subgraph "User Interaction"
EinkScreen --> User[User Input]
User --> InputHandler[Input Handler]
InputHandler --> FyneApp
end
subgraph "Virtual Display System"
Xvfb[Xvfb Virtual X Server
:99 Display]
FyneApp --> Xvfb
end
subgraph "UI Generation Process"
FyneApp --> Lists[Lists & Routes UI]
Lists --> Screenshot[Screenshot Timer
Every 2 seconds]
Screenshot --> ImageMagick[ImageMagick
import command]
ImageMagick --> Xvfb
end
subgraph "File System"
ImageMagick --> Folder[screendump/
current.png]
Folder --> FileWatch[File Watcher
fsnotify]
end
subgraph "E-ink Display System"
FileWatch --> EinkApp[E-ink Display App]
EinkApp --> ImageProcess[Image Processing
• Format conversion
• Dithering
• Resize]
ImageProcess --> EinkDriver[E-ink Hardware Driver]
EinkDriver --> EinkScreen[E-ink Display]
end
style FyneApp fill:#e1f5fe
style EinkApp fill:#f3e5f5
style EinkScreen fill:#e8f5e8
style Folder fill:#fff3e0
```
## Fonts
https://www.dafont.com/bitmap.php
### Setup Fonts in Fyne
https://github.com/lusingander/fyne-font-example