An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          


NeoWall


Live GPU shaders as your wallpaper. Yes, really.


Build
License
Release




---

## 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