<div align="center">
  <h1>pihkaal's wallpaper</h1>
  <img src="docs/demo.gif" alt="demo" />
</div>

An animated and interactive wallpaper I'm building for myself, designed to run on [Hyprland](https://hyprland.org/).

## What it does

- Animated stars
- Metaballs-like effect with the "clouds"

## Limitations

- The wallpaper will only work on one monitor and on 1920x1080px for now

## Stack

- [C](https://en.wikipedia.org/wiki/C_(programming_language))
- [Raylib](https://www.raylib.com/)
- [Hyprland](https://hypr.land/)

## Quick start

### Build and install

```console
$ make

# generate distance field with 100px ball radius (needed to offset vertically the effect)
# NOTE:  I already ship a generated distance field
# USAGE: distance_field_generator <mask_path> <output_path> <ball_radius>
$ ./distance_field_generator ./assets/textures/background_mask.png ./assets/textures/background_distance_field.png 100

# install
$ make install

# uninstall
$ make uninstall
```

### Run as wallpaper

You'll need to install [hyprwinwrap](https://code.hyprland.org/hyprwm/hyprland-plugins/src/branch/main/hyprwinwrap), then add this to your hyprland configuration:

```ini
plugin {
    hyprwinwrap {
        class = pkl-wallpaper
    }
}
```

### Run on start

Add this to your hyprland config (usually `~/.config/hypr/hyprland.conf`)

```ini
exec-once = pkl-wallpaper
```

### Run as debug

Even if you've configured the app to always run as wallpaper using hyprwinwrap, you can still run it in debug mode:

```console
$ DEBUG=1 ./pkl-wallpaper
```
