Update README

- Description
- Usage instructions
- Config instructions
- Install instructions
- Requirements
- Future plans
- Notes
This commit is contained in:
Candifloss 2025-12-18 15:42:33 +05:30
parent 7fc8c0051f
commit 960ca4489a

160
README.md
View File

@ -1,3 +1,159 @@
# icing # Icing: The sweet coating on your desktop 🍰
**`icing`** is a small, fast X11 wallpaper setter written in Rust.
It sets a wallpaper directly on the X11 root window, without daemons, background services, or unnecessary dependencies.
Configuration is optional, and the app exits immediately after setting the wallpaper.
---
## Features
* Simple CLI usage
* Optional config file
* Two image scaling modes: **Fill** and **Stretch**
* Minimal dependencies
* X11 only (Wayland not supported)
---
## Usage
### Set wallpaper once (no config change)
```sh
icing --set /path/to/image.png
```
Sets the wallpaper immediately but does **not** update the config file.
---
### Update config and set wallpaper
```sh
icing --update /path/to/image.png
```
* Writes the image path to the config file
* Sets the wallpaper immediately
* Future runs of `icing` will reuse this image
---
### Use config only
```sh
icing
```
Uses the image path and settings from the config file.
Fails if no config exists.
---
### Optional arguments
```sh
--mode fill|stretch
```
Overrides the default or configured scaling mode (see below).
---
## Configuration
Config file location:
```text
~/.config/candywidgets/icing/config.toml
```
Example config:
```toml
background_image = "/path/to/image.png"
mode = "fill"
```
### Config options
| Key | Description |
| ------------------ | ---------------------------------- |
| `background_image` | Path to the wallpaper image |
| `mode` | Scaling mode (`fill` or `stretch`) |
If `mode` is missing, **`fill` is used by default**.
Invalid modes cause `icing` to exit with an error.
---
## Scaling modes
| `fill` (default) | `stretch` |
| ------------------------------- | ---------------------------------------- |
| Covers the entire screen | Covers the entire screen |
| Aspect ratio preserved | Aspect ratio not preserved |
| Excess image cropped (centered) | Image may be stretched and distorted |
| Best choice for most wallpapers | Useful for exact fits or abstract images |
---
## Installation
### Build from source
```sh
git clone https://git.candifloss.cc/candifloss/icing.git
cd icing
cargo build --release
```
Binary will be located at:
```text
target/release/icing
```
Optionally move it to your `$PATH` (for example `/usr/bin/`) if desired.
---
## Requirements
* X11 (Xorg)
* A window manager
* Rust (for building)
---
## Future plans
* Multi-monitor support via `--monitor <MONITOR>`
```sh
icing --monitor HDMI-1 --set image.png
icing --monitor HDMI-2 --set image2.jpg --mode stretch
```
* Probably not:
* Additional scaling modes (unless they make sense)
* Wayland support
---
## Notes
* `icing` does not run in the background
* No daemon, no config watcher
* Intended to be called explicitly (startup scripts, keybindings, etc.)
---
## License
GPL-3.0-or-later
Wallpaper setter