[PLUGIN] Glass - Phoenix risen from the PeppyMeter Screensaver ashes

Phoenix risen from the PeppyMeter Screensaver ashes

Dear Volumionauts,

PeppyMeter Screensaver is discontinued. Release 3.5.0 “Guard Engine” was its last. Its Python and pygame stack reached its technical limits, and more time went into chasing external dependencies than into the meters.

Glass is what rose from the ashes. The same themes, a new engine written in Rust. Nothing from the old render loop was carried over.

This post is a wiki. It says what Glass is, where to find what, and how to install it. Read post 2 before reporting anything.

What Glass is

  • A Volumio plugin with a native display. It shows VU meters, spectrum analysers, turntables and cassette decks on the player’s screen, moving with the music.
  • It reads the PeppyMeter Screensaver theme format. Existing themes run as they are.
  • glasstap, an audio tap in the ALSA chain, measures every source: local files, web radio, streaming, AirPlay, Spotify, Soloist. The stream passes through byte for byte (PCM, DoP and native DSD), and the tap never touches the sound.
  • A manager page on port 5582 handles themes, the meters live in the browser, the community catalog, fanart and fonts, backups, upgrades, performance profiles, logging and remote displays.
  • Remote displays show the player’s meters on another machine - Linux, Windows or Android - fed over the network.
  • Anymote shows the player’s meters in any browser - a phone, a tablet, a laptop - with nothing to install, and a tap on the theme’s controls acts on the player.

What it costs

Measured on a Raspberry Pi 5 with a 1280x720 screen: eight heavy turntable and tape deck themes at 30 frames a second, averaged.

Glass The Python engine
Processor, share of one core 38 percent 70 percent
Memory 122 MB 1030 MB

Later releases took these figures lower still. The Python engine was not usable below a Raspberry Pi 4 with 4 GB. Glass targets every board below:

Device How it runs
Raspberry Pi 5 Every theme at 30 frames a second, spectrum included.
Raspberry Pi 4 Every theme at 30 frames a second; a large spectrum at 20.
Raspberry Pi 3 800x480 themes at 20 to 30 frames a second.
Raspberry Pi Zero 2 W Light themes at 15 to 20 frames a second.
PC (x64) Everything, with processor time to spare.

The Pi 3 and Zero 2 W rows are estimates from the Pi 5 figures. They have not been benched yet. That is where you come in: reports with numbers, per post 2, are how these rows become measurements. The full method and figures are on the Performance page.

What you need

  • Volumio 4 (Bookworm) on a Raspberry Pi 3, 4, 5 or Zero 2 W, or on a PC.
  • A screen the Touch Display plugin drives: DSI, HDMI or USB. A player without a screen can still serve remote displays.

Fresh Install

One line on the player, as the volumio user:

ssh volumio@volumio.local
curl -fsSL https://raw.githubusercontent.com/foonerd/glass/main/get-glass.sh | sh

The script downloads the latest release and hands it to the player’s plugin manager. It then enables Glass and restarts the backend, so the audio tap joins the sound path. It stops if Glass is installed already: an installed Glass upgrades from the manager’s System tab.

Coming from PeppyMeter Screensaver:

  • Glass takes over themes and settings from PeppyMeter Screensaver 3.5.0, the final release. On an older version, update to 3.5.0 first.
  • Disable PeppyMeter Screensaver before installing Glass. Do not uninstall it yet. The installer stops if it is still enabled.
  • On its first start Glass copies the themes into its own folder, /data/INTERNAL/glass, and leaves the old folder as it was. If the player lacks the free space for the copy, Glass keeps reading the themes from /data/INTERNAL/peppy_screensaver instead.
  • Before uninstalling PeppyMeter Screensaver, open the manager’s Status tab and check the Theme folders line. If it names /data/INTERNAL/glass, PeppyMeter Screensaver is safe to uninstall once Glass is tested and running as you want it. If it still names /data/INTERNAL/peppy_screensaver, do not uninstall: its uninstaller deletes that folder, and with it the themes Glass is using.

On a fresh Volumio install, none of this applies. Run the line above and carry on.

To install by hand from the release zip, follow the Quick Start.

First steps

Play something. The meters appear after the screensaver timeout, sixty seconds by default. A touch or a click brings Volumio back, unless the tap lands on one of the theme’s controls while interactive controls are on; then it acts on the player instead.

Open the plugin’s settings and press “Open the manager here”, or browse to http://volumio.local:5582/. The manager has these tabs:

  • Themes - what is installed, with previews; put a theme on show, choose its meters and rotation. Car Dash, on the same tab, switches between a day theme and a night theme by the clock or by the sun.
  • Face - the player’s meters live in the browser, following the theme and meter on show; a tap on the theme’s controls acts on the player. “Open Anymote” opens the same face on a page of its own.
  • Catalog - install themes from the community collection with one press.
  • Appearance - the artist fanart slideshow, and the fonts each text style is set in, including fonts you upload.
  • Backups - named snapshots of your settings, and moving them between players.
  • System - upgrade or roll back with one press, performance profiles, interactive controls, editing themes over the network share, and logging.
  • Remotes - serve the meters to other screens.
  • Status - the system sheet: the player, the screen, the audio path, the themes, the network and remotes, and the last warnings. “Copy as text” puts it on the clipboard for a forum post.

Remote displays

A remote display is Glass on another machine with a screen. On the player, turn on “Serve remote displays” in the manager’s Remotes tab. Then download the matching file from releases:

  • Linux - glass-<version>-x64.tar.gz for a PC, armv8 for a 64 bit Raspberry Pi OS, armv7 for a 32 bit one. Unpack it and run remote/linux/install.sh as the user who will run the display (SDL2 is needed: sudo apt install libsdl2-2.0-0). install.sh --service also starts it with the session, for a screen on the wall.
  • Windows 10 or later, 64 bit - glass-<version>-windows-x64.zip. Unpack it and run remote\windows\install.ps1 in PowerShell. No administrator rights needed, and SDL2 comes in the archive. Allow glass when Windows Defender Firewall asks.
  • Android 7 or later - glass-<version>-android.apk, installed on the phone or tablet (it is not in the Play Store).

Start “Glass Remote”. The first start shows the address of the remote’s own settings page, on port 5583, where the player is added and the theme, window and frame rate are chosen. The Remotes page has the details.

Anymote

Anymote - any remote, a remote from anywhere - is the player’s meters in a browser, with nothing to install: http://volumio.local:5582/anymote, or the manager’s Face tab, “Open Anymote”. A phone or a tablet keeps it on its home screen as a full-screen app; a computer runs it full screen with a kiosk launch; on the page, the first tap takes the screen. A machine that will live as a display wants a remote display; anything at hand wants Anymote. The Anymote page has the details.

Themes

The community collection lives in peppy_templates and is installed through the Catalog tab. Contributions go in by pull request there. For making themes, see Themes, the Skin Creation Guide, the meters.txt reference and Spectrum.

Where to find what

What Where
Code github.com/foonerd/glass
Releases github.com/foonerd/glass/releases
Documentation Wiki
Settings, one by one Settings
The manager Manager
Meters in a browser Anymote
When something is wrong Troubleshooting
Logs Logging
Technical defects GitHub issues - full log required, see post 2
The old thread, as history PeppyMeter Screensaver for Volumio Bookworm

Status

Work in progress. Glass is a continuous release: every change is a release on GitHub. The System tab upgrades to the latest with one press, keeps a backup first, and can go back to the kept version. Any label beyond that will come on merit, not on a calendar.

Provided as-is, under the MIT licence. No roadmap, no promises. The crystal ball is still in for repairs.

The sleep clinic has relocated. Same patients, new building, better equipment. The admission rules are in post 2.

Also, the clinic now has a tip jar. Two, in fact, because one is never enough when bureaucracy is involved:

Every coffee goes straight into the surgeon, who then goes straight back into the code. Nobody is obliged; the meters stay free, open and as-is either way. Logs remain the preferred currency.

Kind Regards,

5 Likes

Rules of engagement

Dear Volumionauts,

The PeppyMeter Screensaver thread ran to 818 posts. Logs were asked for about twenty times. Ten posts carried one. When a log arrived, the cause was usually found the same day. When none arrived, nothing happened.

Glass now builds the report for you. There is no excuse left, and no exception either.

No report, no reply.

Step 0 - addresses

Use the player’s IP address, not its name. Names get changed, and .local names do not work on every network.

  • Player IP: in Volumio, Settings, Network. Or your router’s list of devices.
  • Remote IP: the remote shows its settings page address on its own screen at first start. Or your router’s list of devices.

Everywhere below, replace <player-ip> and <remote-ip> with those numbers, for example 192.168.1.50.

Step 1 - before you post

  1. Upgrade first. Glass Manager, System tab, Check now. On a remote: its Version panel, Look for a later release. Install what is offered and try again. Your problem may already be fixed.
  2. Read the Troubleshooting page and search this thread.
  3. Write in English. Use a translator if you need one.

Step 2 - pick your case

  • A. Glass on the player misbehaves, and the Glass Manager opens.
  • B. A remote display misbehaves (Linux, Windows or Android).
  • C. The Glass Manager does not open at all, or the problem is Volumio itself: installing, upgrading, booting, sound, the player.

Problems that involve the player and a remote need both A and B.

Case A - a problem on the player

Open the Glass Manager: http://<player-ip>:5582/

  1. Go to the Status tab.
  2. Press Find a problem and pick what comes closest. Read what it finds. Many problems end here.
  3. Press Make a report, then Start.
  4. Do what goes wrong, until it has gone wrong.
  5. In the box, write what you did, what you expected, and what you saw instead. Step by step. “Does not work” is not a description.
  6. Press It has happened: make the report.
  7. Press Copy for the forum and paste it into your post.
  8. Under it, add the hardware block (below).

No internet on the player? The report says the log could not be sent. Press Download the system log and attach the file to your post.

Case B - a problem on a remote display

Open the remote’s settings page: http://<remote-ip>:5583/
On the remote machine itself, http://127.0.0.1:5583/ works too. On Windows, Glass Remote Settings in the Start menu opens it.

  1. Check the Version panel: the remote must be on the same release as the player.
  2. Look at the Connection panel and press Check now. Orange or red means something is blocked, and it says what and where.
  3. In the This remote panel, set Log level of this remote to Verbose.
  4. Do what goes wrong, until it has gone wrong.
  5. In the Report panel, write what you did, what you expected, and what you saw instead.
  6. Press Make a report.
  7. Press Copy for the forum and paste it into your post. Too long for one post? Press Download the report and attach the file.
  8. Under it, add the hardware block (below).

The remote does not start, or its page does not open? Then post its own log, as text:

  • Linux, installed as a service:
journalctl --user -u glass-remote --since "15 minutes ago"
  • Linux, from a terminal: start it like this and post what it prints:
GLASS_LOG=verbose glass --remote
  • Windows: start it from a PowerShell window and post what it prints:
& "$env:LOCALAPPDATA\Programs\Glass Remote\glass.exe" --remote
  • Android: with the device connected to a computer over adb:
adb logcat -s glass

Case C - the Manager does not open, or Volumio itself

  1. Do what goes wrong, until it has gone wrong.
  2. Open http://<player-ip>/dev in a browser.
  3. Press Send Log.
  4. Paste the link it gives you into your post.
  5. Write what you did, what you expected, and what you saw instead.
  6. Add the hardware block (below).

Volumio’s guide: How to send a log link for a bug report.

The hardware block

Every post with a problem ends with this, filled in. Copy it and replace the brackets. Exact values only: “latest” is not a version, “a Pi” is not a device, “a screen” is not a screen.

Player:  [board model and RAM, e.g. Raspberry Pi 5, 8 GB / or PC make and model]
Screen:  [make and model, size, resolution, connection: DSI, HDMI or USB]
Touch:   [yes or no]
Audio:   [DAC, HAT or USB device by make and model, or the board's own output]
Remote:  [device make and model, OS and version, or "none"]

Text, not pictures

  • A report is text. Paste it, or attach the file.
  • A log is text. Paste it, or post the link.
  • A screenshot of a report or a log is not a report or a log.
  • A cropped piece of a report or a log is not a report or a log.
  • A screenshot is welcome only when the problem is what the screen draws, in addition to the report, never instead of it.

What happens without all of the above

Nothing. One standard reply pointing back here, and then silence.

This is not rudeness. A report without the facts cannot be investigated, and guessing from fragments is how the wrong thing gets changed.

GitHub issues

For defects in the code only. Make the report as in Case A or B, then press Open a GitHub issue instead of Copy for the forum. The issue opens with the report already in it; add the hardware block. An issue without a report is closed unread.

Dreams

Feature requests are dreams, and the clinic still takes them. No promises, no dates. What already works comes first.

Manners

Everyone here does this in time rescued from work and family. Replies take the time they take. Be polite, be specific, and if you find the answer yourself, post it so the next patient does not have to ask.

Kind Regards,

4 Likes

Notices and credits

Notices

This post is reserved for notices about Glass: changes of status, breaking changes, and anything every user needs to know. Entries are dated, newest first.

  • 27 Sep 2026 - Thread opened. PeppyMeter Screensaver is discontinued; 3.5.0 “Guard Engine” was its last release. Its repositories stay public, unsupported. Its thread stays as history.

Credits

Glass carries what PeppyMeter Screensaver learned during its Volumio 4 run, and that learning came from people. Thank you to the patients of the old clinic, who followed it to the new building.

Working with me

  • @Wheaten - there from day one: testing, Pi wrangling, keeping the forum sane, and never once saying “that is good enough”.
  • @balbuze - for the work behind the scenes, and for keeping a maintained PeppyMeter in the Plugin Store while this one experimented.
  • @Gelo5 - over twelve hundred skins, and the “what if” behind nearly every feature. The dreams were his; the insomnia was mine.

Shaped it through testing and reports

  • @Lee.Yan - Windows remote testing without end, and the config file that found the reload loop in five minutes after five days.
  • @pjorgenunes - the first and most comprehensive confirmation reports, the remote wizard selections, and the touch dismiss.
  • @dewen - clean reports with hardware details and logs. His CJK squares became a font pipeline covering fifteen writing systems.

Reports that led to fixes

  • @naimnatnod - the OTA and Thai font findings.
  • @Fire - x86 installs and spectrum timing.
  • @vbhvmlk - the touch dismiss report, with a log.
  • @aluisperezh - a report with every log asked for, which showed in plain numbers why the Python engine had to go.

Kind Regards,

6 Likes

Hello everybody.

@nerd I know you told me Glass would not “repair” a 1GB Raspberry Pi, but, you know, I had to test it. And the results are AMAZING. It works, with needles or spectrum at full speed. I tested the three zip packages available for 1024x600 resolution and all of them work fine, even the templates with meters and spectrum together.

There are a couple of things that perhaps don’t work as they should, but right now it’s a working solution that I can install without problems. As this is not a “production” system, I am going to reinstall it from scratch and test everything.

This is not a bug report or anything alike. I don’t know if you are interested in results or debugging from such a low powered machine, or if the results I can find are not relevant for other systems (as it happens with PeppyMeter). If you think It can help, I’ll send complete reports.

Now I only wanted to thank you for your work. I repeat, it’s AMAZING!!! Great job.

Best regards.

Angel

Ps. Testing Tape and CD templates. Working at full speed without a glitch :flushed:

2 Likes

Congratulations to all of you on regenerating/reinventing this. I gave up with the old plugin ages ago - too laggy and a bit temperamental. Glass installed perfectly and I just spent a couple of hours playing and going woo! with all the options and libraries. Everything works perfectly for me (Pi5 4GB + Pi Display-2). Also works with Now Playing screen saver when the music stops. The animations (turntables, needles) are really smooth with my Pi5 4GB.

I haven’t included logs as I have zero issues, but will do so if you need them.

Note on use with Volumio UIs
The Glass Config page works in Manifest perfectly. In Nova, it has HTML formatting code all over the place - still works though.

Hey @aluisperezh,

Glad it runs. One correction first: I did not say Glass would not repair a 1 GB Pi. Post 841 said Glass perhaps would make a 1 GB Pi 4 a suitable host for a local touch UI plus a meter, and that it was too soon to tell:

Your post suggests the answer. Numbers would settle it.

As for whether results from that board are of interest: yes, and post 1 of this thread already says so. The Python engine was not usable below a Pi 4 with 4 GB. Glass targets every board from the Zero 2 W up, and so far only the Pi 5 has been on the bench. Reports with numbers are how the other rows become measurements:

Post 2 says what goes in one:

Keep it to the Pi 4 1 GB with Touch Display running. That is the combination PeppyMeter could not hold, so it is the one worth measuring.

The “couple of things” that perhaps do not work: when you post them, post 2 applies, log included.

Kind Regards,

1 Like

Hey @SimonE,

Thank you. A Pi 5 with the Pi Display 2 is the board Glass was benched on, so smooth is the expected result, and it is good to hear it confirmed from outside the bench. No logs needed when nothing is wrong.

On Nova: the same settings page renders as intended in Manifest. How Nova draws it is Nova’s business, and I have neither its source nor any say in it. Nova is still changing by the day, so please report it in the Nova thread with a screenshot, or through the Help button inside Nova, which is the route Volumio asks for:

Kind Regards,

A few suggestions:
I’ve gone through the “Glass” folder but couldn’t find any configuration files for the Glass program itself. I’d like to make some simple customizations—for instance, using a preferred font (like the PeppyFont-Italic.ttf included in the package, as the Chinese font looks too stiff and lacks aesthetic appeal). I’d also like to customize the icons for various music formats and add icons for formats not supported by the original system.

@nerd

Hey @Lee.Yan,

Glass is not PeppyMeter with a new name. It is a new program, and nothing of the Python layout carries over: not the folders, not the files, not the way things were changed by hand. Looking for the old structure will find nothing, because it is gone.

What Glass offers today is documented in the wiki, and that is where to look:

  • Fonts: the Fonts section of Meters-Reference. The font files are set once for the display and serve every theme; a theme picks light, regular, bold or italic per text field.
  • Format icons: the Format and sample rate section of the same page. A theme can carry its own icons in a format-icons folder.
    Meters Reference · foonerd/glass Wiki · GitHub

A choice of face for Chinese text, and anything else that page does not describe, is a new feature. Put it forward as a feature request: one request, one thing, what you want and why. Requests are weighed against the rest of the work. There is no promise attached, and none should be read into it.

Kind Regards,

This project is amazing! It has no weak points. Give it a try - it’s worth it.
And this feature is very well executed.

I am well aware that the current version of Glass is a brand-new application written in Rust. The released package is a compiled binary, and many parameters are hard-coded—meaning they are stored statically within the code—so I cannot modify them.

Hey @Lee.Yan,

Compiled does not mean fixed. The things you named are not in the code:

  • The font files for the display are set in its meter.txt, in the plugin’s config folder.
  • Which style each text uses, and the icons for each format, belong to the theme.
    Both are described on the Meters-Reference page linked above.

If what you want goes beyond that, there are two ways forward:

  • Describe it: which setting, what it should do, and why the current ones do not cover it. A request that names what it wants can be weighed. “Things are hard-coded” cannot.
  • Change it yourself: the source is public. Fork the repository and open a pull request.

Kind Regards,

@nerd Glass 0.7.31 installed and its working purrfect! :vulcan_salute:
The manager pane is a great addition too.

Since I will be using the Pi/Volumio/Glass setup in my car, I was wondering if it is possible to integrate a time of day based theme selection that switches to a dark theme of choice when time is in PM and vice versa.

Cheers

Hello again.

I installed everything from scratch. Started with Volumio, Touch Display and Glass. Downloaded every 1024x600 package I found and tested Tape, CD and cassette templates in random mode every 10 seconds. Everything working as expected. Not a single failure.

Only thing I could notice is that in the “240G5_MION24C” template needles are not in place, but displaced to the right. It seems that the reason is the Meter Sensitivity. In my case all VUmeters in all templates are almost everytime in the “red” zone, even when only with this template needles are displaced. If I lower this sensitivity to -6DB everything looks right. With values over -6DB (i.e. -3DB or -5DB) the needle keeps getting out of the VUmeter.

Installed Now Playing and Autostart plugins. No changes. Everything keeps working fine.

I’ll go on testing.

Thanks again and best regards.

Angel

PS. Touch screen works and is as responsive as it should be.
PS2. This morning I noticed that when touching the display the screensaver wold stop only for a moment and started again. This did not repeat when starting from scratch. It starts again after the configured time

Change in meters.txt, under the [240G5_MION24C] entries.
position.regular = 461 ----->251

[240G5_MION24C]
meter.type = linear
channels = 2
direction = left-right
ui.refresh.period = 0.033
bgr.filename = OMNIC_bgr.png
fgr.filename = OMNIC_fgr.png
indicator.filename = OMNIC_needle.png
indicator.type = single
left.x = 686
left.y = 26
right.x = 686
right.y = 375
position.regular = 251 <-------- this line
step.width.regular = 1
meter.x = 0
meter.y = 0
screen.bgr = 

or download the skins again. Changed on GitHub.

Installed Glass v0.7.36, Pi4 8Gb it works perfectly, and the screensavers load instantly. Huge thanks! Great project!

Hey @vbhvmlk.

Glad it purrs. Built in from 0.7.37: on the Manager’s Themes tab, “Car Dash” takes a day theme, a night theme and the two times, and the player switches by its own clock, at the times and after every start. One caveat for a car: most of Pi has no clock of its own and takes the time from the network, so the hour is right once the player has been online (a phone hotspot does), or with a small RTC module fitted.

Built 0.7.38: takes it further.

Kind Regards,

1 Like

Dear Volumionauts,

The clinic has been going through its paperwork.

Since v0.7.0, Glass has been downloaded 131 times across 37 releases:

  • Plugin zip: 77
  • Windows remote: 20
  • Android remote: 13
  • x64 tarball: 12
  • ARM tarballs: 9

Feedback received over the same period: enough to count on one hand, with fingers to spare.

This leaves two possibilities. Either Glass works flawlessly on every system it touches, or the patients are taking the medicine and quietly slipping out of the ward. From here the two look identical, and neither counts as a diagnosis.

So, a modest request:

  • If Glass works for you, press the like button on this post. One click. No forms, no logs, no waiting room.
  • If you can spare ten more seconds, reply with one line: hardware (Pi model, x64, Windows or Android remote), Glass version, and theme or meter in use.
    Example: Pi 5, v0.7.38, g5_444_rotate

If it does not work, the rules in post 2 still apply: full log, or it did not happen.

Silence will go on being read as “works perfectly”, which is flattering but statistically suspicious.

@Gelo5 - consider this your cue to lead by example.

Kind Regards,

2 Likes

Will do, boss.
5 installations:
RPi5, 4/8 GB, [1920x1080, 1920x515x2, 1920x480, 1280x400 - all HDMI], Glass (ver=0.7.36 - I can’t keep up with the updates).
It works so perfectly that I’ve spent several nights without sleep!
Of course, I don’t forget about my dreams.
All that’s missing now is airplane mode :crazy_face:
Remote Windows 11 – perfect!
NAS, webradio, USB drive, Tidal - playback without problems
The only, and I repeat the only, error I cannot solve: DAB radio - meters do not work.
I’m testing on all skins ( “0” [zero] errors so far).
I’m testing Remote Android now.
Best regards and Thank you very, very much.

Tested V0.7.39

  • Nice to see it takes over the previous settings from peppy.
  • Love the catalog, to download the templated straight from Github.
  • Way better performance with Glass, then Python ever did.
  • Needles are way more responsive, no lag.

Tested with:

  • Wyse 5070, 1920x440 HDMI screen
  • Primo-Plus, 1920x440 HDMI screen
  • Motivo, 1280x800 DSI screen
  • rPi4, 7Inch DSI screen (800x480)
  • rPi5, 4.3 Inch DSI Screen (800x480)

All ran fine, even on the Primo-Plus that struggled with the spectrum on the Python version, runs fine with Glass.

Same for the Motivo, finally a working screensaver!!!

1 Like