mural-server 1.1.1

Server software for the mural wallpaper service
Documentation
# Mural Server

This is the server software for mural.

Mural is a program that allows you to synchronize a wallpaper slideshow across your devices.
It supports having multiple different slideshows (called pools). For example, you might have
a pool called "Games" for wallpapers related to games and a pool called "Landscapes" for
wallpapers of beautiful landscapes.

## Setup

### Using Docker (recommended)

1. Download the provided `docker-compose.yml` file:

```bash
wget https://raw.githubusercontent.com/mural-sync/mural-server/refs/heads/main/docker-compose.yml
```

2. Create the `config` and `config/wallpapers` directories:

```bash
mkdir config
mkdir config/wallpapers
```

3. Put your wallpapers into `config/wallpapers`. For this guide, we will assume that there are
   two wallpapers in the directory: `wallpapers/picture1.png` and `wallpapers/picture2.jpg`.

4. Setup your pools in `config/config.toml`:

```toml
[pools]
default = [
  "picture1",
  "picture2",
]
```

5. Start the server:

```bash
docker compose up -d
```

### From Source

1. Download the source code for `mural-server`:

```bash
git clone https://github.com/mural-sync/mural-server
cd mural-server
```

2. Create the configuration and wallpaper directories in your configurations directory:

```bash
mkdir ~/.config/mural-server
mkdir ~/.config/mural-server/wallpapers
```

3. Put your wallpapers into `~/.config/mural-server/wallpapers`. For this guide, we will assume that there are
   two wallpapers in the directory: `wallpapers/picture1.png` and `wallpapers/picture2.jpg`.

4. Setup your pools in `~/.config/mural-server/config.toml`:

```toml
[pools]
default = [
  "picture1",
  "picture2",
]
```

5. Start the server:

```bash
RUST_LOG=info cargo run
```

## Configuration

This is a full configuration file using all the default options (except the pools configuration; `mural-server` does not setup any pools by default):

```toml
port = 46666 # the port to bind the server to
interval = 600 # how long each wallpaper should be shown (in seconds)

[pool]
foo = [
  "picture1",
  "picture2",
]
bar = [
  "picture2",
  "picture3",
]
```