Skip to content

NeoWall v0.7.2

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Sep 22:21
· 12 commits to main since this release

NeoWall 0.7.2

GPU-accelerated live shader wallpapers for Wayland & X11.

Privacy fix — update if you are on 0.5.0 or newer

neowall was opening your microphone. If your desktop warned you that
neowall was using the mic, it was telling the truth. Details below.

What happened

The audio path spawns parec so a wallpaper can react to whatever your
speakers are playing. It was spawning it without a device argument, and
with no device parec records the default source — which on a normal
desktop is your microphone, not the speaker loopback. The comment directly
above the code said "capturing the default monitor", so the intent was always
right and the implementation quietly did the opposite.

It was also doing this whether or not anything needed audio. The capture
thread started with the daemon, so even a static image wallpaper opened a
recording stream.

What did not happen

None of that audio left your machine. The samples land in a stack buffer
that is reduced to a volume level, an FFT spectrum and a downsampled envelope,
then uploaded to a GPU texture to be drawn. Nothing is written to disk, nothing
is logged, and neowall contains no network code at all — no telemetry, no
uploads, no crash reporting. Nothing was recorded or transmitted.

That does not make opening the mic acceptable. It should not have shipped.

The fix

  • Capture now runs against @DEFAULT_MONITOR@, the loopback of your default
    output. It can no longer reach an input device.
  • Capture is opt-in. It only starts if the shader you loaded actually reads
    audio — an iAudio* uniform, one of the stdlib helpers (spectrum(),
    waveform(), beat(), audioBand()), or an iChannel bound to audio.
    Every other wallpaper spawns no parec at all.

Verify it yourself

Run pactl list source-outputs while neowall is running. On an affected build
there is a parec stream on your input device. Here there is no stream at all
unless your shader uses audio — and when there is, it is attached to your
output monitor, not your mic.

Affects 0.5.0 through 0.7.1, introduced with the reactive shader library.
Fixes #84, reported by @mastermach50.

Packages

Pick the native package for your distro — each pulls in the right runtime deps.

Distro File Install
Arch / Manjaro neowall-*-x86_64.pkg.tar.zst sudo pacman -U <file>
Debian / Mint neowall_*_amd64.deb sudo apt install ./<file>
Ubuntu 24.04+ neowall_*-ubuntu24.04_amd64.deb sudo apt install ./<file>
Fedora / RHEL neowall-*.fc.x86_64.rpm sudo dnf install ./<file>
openSUSE neowall-*.suse.x86_64.rpm sudo zypper install ./<file>
Any (universal) neowall-*-x86_64.AppImage chmod +x <file> && ./<file>

Plain binaries (no package manager)

File Build
neowall-linux-x86_64-arch.tar.gz glibc (Arch)
neowall-linux-x86_64-debian.tar.gz glibc (Debian bookworm)
neowall-linux-x86_64-fedora.tar.gz glibc (Fedora)
neowall-0.7.2-source.tar.gz source
tar -xzf neowall-linux-x86_64-*.tar.gz
sudo install -m755 neowall /usr/local/bin/

Arch (AUR, tracks git)

yay -S neowall-git

From source

tar -xzf neowall-0.7.2-source.tar.gz
cd neowall-0.7.2
meson setup build --buildtype=release
ninja -C build
sudo ninja -C build install

Requirements

  • OpenGL 3.3+ capable GPU
  • Wayland compositor with layer-shell (Hyprland, Sway, River, …) or X11

Verify downloads against SHA256SUMS.txt.