This commit is contained in:
fwastring 2025-10-07 11:28:02 +02:00
commit cb6fa4450a
15 changed files with 3865 additions and 0 deletions

158
README.md Normal file
View file

@ -0,0 +1,158 @@
# Sherlock Confetti
Sherlock Confetti is a lightweight program that displays a confetti animation
as a top-level overlay on Wayland compositors. It provides a fun and colorful
visual effect without interfering with your workflow.
<https://github.com/user-attachments/assets/d4e63a6b-ce41-4faa-8a1e-898570056e84>
## Features
- **Wayland-native:** Built specifically for Wayland environments.
- **Tiling Window Manager Friendly:** Displays on top without disrupting your
window layout.
- **High-performance rendering with WGPU:** Utilizes GPU acceleration for
smooth animation.
- **Shader-driven confetti:** Custom shaders deliver rich, dynamic visual
effects.
- **Multiple Color Palettes:** Choose from a variety of predefined vibrant and
pastel palettes.
- **Standalone or Integrated:** Originally created for the custom launcher
[Sherlock](https://github.com/Skxxtz/sherlock), but fully functional as a
standalone program.
## Usage
Simply run the program to enjoy confetti animations on your Wayland session. It
can be integrated or triggered by other applications such as launchers or
window managers.
```bash
confetti
```
## Installation
### Build Dependencies
- `libxkbcommon`
### Runtime Dependencies
- `vulkan-icd-loader`
- `mesa`
- `wayland`
- `wayland-protocols`
### <ins>From Source</ins>
To build Confetti from source, follow these steps.<br>
Make sure you have the necessary dependencies installed:
- `rust` - [How to install rust](https://www.rust-lang.org/tools/install)
- `git` - [How to install git](https://github.com/git-guides/install-git)
1. **Clone the repository**:
```bash
git clone https://github.com/skxxtz/sherlock-confetti.git
cd sherlock-confetti
```
2. **Build the project**:
```bash
cargo build --release
```
3. **Install the binary**:
After the build completes, install the binary to your system:
```bash
sudo cp target/release/confetti /usr/local/bin/
```
### <ins>From Binary</ins>
Make sure you have the following dependency installed:
- `tar` - [Tar](https://www.gnu.org/software/tar/)
1. **Download the archive containing the latest release**:
The archive can be found [here](https://github.com/Skxxtz/sherlock-confetti/releases/latest).
2. **Extract the files from the archive**:
```bash
cd ~/Downloads/
tar -xzf sherlock-confetti*.tar.gz
```
You can use tab-completion or run `ls` to verify the name of the archive.
3. **Install the binary**:
Now move the binary to a location on your `$PATH` environment variable:
```bash
sudo mv confetti /usr/local/bin/
```
Optionally also move the LICENSE file or delete it:
```bash
sudo mkdir -p /usr/share/doc/confetti
sudo mv LICENSE /usr/share/doc/confetti/
# or, to remove it:
rm LICENSE
```
### <ins>Build Debian Package</ins>
To build a `.deb` package directly from the source, follow these steps:<br>
Make sure you have the following dependencies installed:
- `rust` - [How to install rust](https://www.rust-lang.org/tools/install)
- `git` - [How to install git](https://github.com/git-guides/install-git)
1. **Install the `cargo-deb` tool**:
First, you need to install the `cargo-deb` tool, which simplifies packaging Rust projects as Debian packages:
```bash
cargo install cargo-deb
```
2. **Build the Debian package**:
After installing `cargo-deb`, run the following command to build the `.deb` package:
```bash
cargo deb
```
This will create a `.deb` package in the `target/debian` directory.
3. **Install the generated `.deb` package**:
Once the package is built, you can install it using:
```bash
sudo dpkg -i target/debian/confetti_*.deb
```
You can use tab-completion or `ls target/debian/` to confirm the file name.
(Make sure to replace the filename if the version number is different.)
## Palettes
Palettes can be selected by running `confetti` with the `--palette <name>`
flag. The names for available palettes are listed in the graphic below:
<div align="center" style="text-align:center; border-radius:10px;">
<picture>
<img alt="color palettes" width="100%" style="border-radius: 10px;" src="assets/palettes.png">
</picture>
</div>