https://github.com/1ay1/neowall
๐จ A reliable Wayland wallpaper engine written in C. Multi-monitor support, smooth transitions, hot-reload. For Wayland (Sway, Hyprland, River. and KWin) and X11
https://github.com/1ay1/neowall
background c compositor desktop-customization desktop-environment egl hyprland i3 linux multi-monitor opengl sway unix wallpaper wallpaper-manager wayland wayland-compositor wlroots x11 xorg
Last synced: 23 days ago
JSON representation
๐จ A reliable Wayland wallpaper engine written in C. Multi-monitor support, smooth transitions, hot-reload. For Wayland (Sway, Hyprland, River. and KWin) and X11
- Host: GitHub
- URL: https://github.com/1ay1/neowall
- Owner: 1ay1
- License: mit
- Created: 2025-10-20T21:47:24.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-01-13T07:33:14.000Z (about 1 month ago)
- Last Synced: 2026-01-13T10:34:06.864Z (about 1 month ago)
- Topics: background, c, compositor, desktop-customization, desktop-environment, egl, hyprland, i3, linux, multi-monitor, opengl, sway, unix, wallpaper, wallpaper-manager, wayland, wayland-compositor, wlroots, x11, xorg
- Language: C
- Homepage: https://github.com/1ay1/neowall#readme
- Size: 5.02 MB
- Stars: 174
- Watchers: 0
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
Live GPU shaders as your wallpaper. Yes, really.
---
## What is this?
NeoWall renders **Shadertoy shaders** directly on your desktop. Wayland, X11, multi-monitor, 60fps, ~2% CPU.
```bash
neowall # That's it. You now have an animated wallpaper.
```
## Install
**Pre-built binaries:**
Download from [Releases](https://github.com/1ay1/neowall/releases/latest):
```bash
# Arch, Debian/Ubuntu, or Fedora
tar -xzf neowall-linux-x86_64-*.tar.gz
sudo mv neowall /usr/local/bin/
```
**Arch (AUR):**
```bash
yay -S neowall-git
```
**Build from source:**
```bash
git clone https://github.com/1ay1/neowall && cd neowall
meson setup build && ninja -C build
sudo ninja -C build install
```
Dependencies
```bash
# Debian/Ubuntu
sudo apt install build-essential meson ninja-build libwayland-dev \
libgles2-mesa-dev libpng-dev libjpeg-dev wayland-protocols \
libx11-dev libxrandr-dev
# Arch
sudo pacman -S base-devel meson ninja wayland mesa libpng libjpeg-turbo \
wayland-protocols libx11 libxrandr
# Fedora
sudo dnf install gcc meson ninja-build wayland-devel mesa-libGLES-devel \
libpng-devel libjpeg-turbo-devel wayland-protocols-devel \
libX11-devel libXrandr-devel
```
## Config
Lives at `~/.config/neowall/config.vibe`
**Shader wallpaper:**
```
default {
shader retro_wave.glsl
shader_speed 0.8
}
```
**Image slideshow:**
```
default {
path ~/Pictures/Wallpapers/
duration 300
transition glitch
}
```
**Multi-monitor:**
```
output {
DP-1 { shader matrix_rain.glsl }
HDMI-A-1 { path ~/Pictures/ duration 600 }
}
```
## Commands
```bash
neowall # start
neowall kill # stop
neowall next # next wallpaper
neowall pause # pause
neowall resume # resume
neowall list # show cycle
neowall set 3 # jump to index 3
neowall current # what's playing?
```
## Shaders
30+ included. Some highlights:
| Vibe | Shaders |
|------|---------|
| ๐ Synthwave | `retro_wave` `synthwave` `neonwave_sunrise` |
| ๐ Nature | `ocean_waves` `aurora` `sunrise` `moon_ocean` |
| ๐ป Cyber | `matrix_rain` `matrix_real` `glowing_triangles` |
| ๐ฎ Abstract | `fractal_land` `plasma` `mandelbrot` |
| ๐ Space | `star_next` `starship_reentry` `cross_galactic_ocean` |
**Use any Shadertoy shader:**
1. Copy code from shadertoy.com
2. Save to `~/.config/neowall/shaders/cool.glsl`
3. Config: `shader cool.glsl`
4. Done
## GLEditor
[**GLEditor**](https://github.com/1ay1/gleditor) โ live shader editor that exports directly to NeoWall. Write, preview, one-click install.
```bash
yay -S gleditor-git
```
## How it works
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ NeoWall Daemon โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Config Parser โ Event Loop โ Shaders โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Wayland (layer-shell) โ X11 (EWMH) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ EGL / OpenGL 3.3 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
- Pure C, single binary
- GPU does the work, CPU chills
- timerfd/signalfd โ no busy loops
- Same code runs everywhere
## vs Others
| | NeoWall | swww | mpvpaper | hyprpaper |
|-|---------|------|----------|-----------|
| Live shaders | โ
| โ | โ | โ |
| Shadertoy | โ
| โ | โ | โ |
| Videos | โ | GIFs | โ
| โ |
| Images | โ
| โ
| โ | โ
|
| X11 | โ
| โ | โ | โ |
| Wayland | โ
| โ
| โ
| โ
|
| Interactive | โ
| โ | โ | โ |
**NeoWall = only Linux tool for live GPU shader wallpapers.**
## Caveats
- **KDE Plasma**: Desktop icons might hide. Use a dock.
- **No video wallpapers**: Use mpvpaper for that.
## Contributing
```bash
meson setup build --buildtype=debug
ninja -C build
./build/neowall -f -v
```
PRs welcome: shaders, bug fixes, docs, testing.
## License
MIT โ do whatever you want.
---
Bugs ยท Chat ยท โญ Star if cool