Skip to content

feat(themes): ✨ add theme installer#7

Merged
amd989 merged 3 commits intomasterfrom
feature/themeinstaller
Apr 12, 2026
Merged

feat(themes): ✨ add theme installer#7
amd989 merged 3 commits intomasterfrom
feature/themeinstaller

Conversation

@amd989
Copy link
Copy Markdown
Owner

@amd989 amd989 commented Apr 11, 2026

Summary

  • Add lcd4linux-ax206-themes as a separate optional Debian package containing 39 pre-built themes, 5 TrueType font families, and the new lcd4linux-theme CLI
  • Add WorkingDirectory=/usr/share/lcd4linux to the systemd service so relative paths in theme configs resolve correctly out of the box
  • Add lcd4linux-theme CLI for listing, applying, and tracking themes without manual config editing

Details

Previously, installing the package gave users a bare text-only config with no themes available. Using a theme required manually locating the config, background image, and fonts, copying everything into place, and hand-editing all paths to be absolute. because lcd4linux resolves resource paths relative to its working directory.

This PR fixes that end-to-end:

New package: lcd4linux-ax206-themes
Keeps themes and fonts (~17MB) out of the core package for users who don't need them. Depends on lcd4linux-ax206.

lcd4linux-theme CLI (/usr/bin/lcd4linux-theme):

lcd4linux-theme list                    # list all 39 themes with descriptions
sudo lcd4linux-theme apply SimpleBlue   # apply a theme, backs up current config
lcd4linux-theme current                 # show active theme

apply creates a timestamped backup of the existing config before overwriting, and restarts the service if it is running.

Systemd service fix
WorkingDirectory=/usr/share/lcd4linux is the key change that makes all theme configs work as-is — no path editing required. The default dpf_320x240.conf is unaffected (it uses only the built-in bitmap font).

Bugfix
Fixed a pre-existing typo in themes/SimpleOrangeFall/dpf_simpleorangefall.conf where the background image path referenced SimpleOarngeFall instead of SimpleOrangeFall, causing a silent render failure.

Files changed

File Change
lcd4linux-theme New theme management CLI script
debian/control Add lcd4linux-ax206-themes package stanza
debian/lcd4linux-ax206-themes.install New install list for themes package
debian/lcd4linux-ax206.dirs Ensure /usr/share/lcd4linux exists in main package
debian/lcd4linux-ax206.service Add WorkingDirectory, update error message
debian/rules Add chmod 0755 for the script
themes/SimpleOrangeFall/dpf_simpleorangefall.conf Fix background path typo
themes/README.md Document lcd4linux-theme usage
README.md Document themes package and CLI
wiki/theme_management.md New wiki page
wiki/ax206_features.md Add Theme Management section
wiki/Home.md, wiki/_Sidebar.md Add navigation links

Test plan

  • lcd4linux-theme list prints all 39 themes with descriptions
  • sudo lcd4linux-theme apply SimpleBlue copies config, creates backup, restarts service
  • lcd4linux-theme current shows SimpleBlue after apply
  • Re-applying a theme creates a new timestamped backup
  • dpkg-buildpackage produces both lcd4linux-ax206 and lcd4linux-ax206-themes debs
  • lcd4linux-ax206 contains /usr/share/lcd4linux/ (empty dir) but not themes/fonts
  • lcd4linux-ax206-themes contains themes, fonts, and lcd4linux-theme binary
  • Systemd service starts successfully with WorkingDirectory set; theme background and fonts render correctly
  • Default dpf_320x240.conf still works on a system with only lcd4linux-ax206 installed (no themes package)

Publish a new package that contains all the themes in the repo for easy installing. This way we can quicky swap them around as needed without having to struggle to download them manually.
@amd989 amd989 force-pushed the feature/themeinstaller branch from 1a8772e to a2b614c Compare April 11, 2026 02:00
@amd989 amd989 merged commit 6c67826 into master Apr 12, 2026
24 checks passed
@amd989 amd989 deleted the feature/themeinstaller branch April 12, 2026 00:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant