Hyprwall
An unofficial GUI for setting wallpapers with multiple backends, built with GTK4 and Rust. ππ¦
Differences between other GUI wallpaper pickers:
- Rust - Built with Rust, so it's blazingly fast and memory-safe.
- No dependencies - Unlike other GUI wallpaper pickers, Hyprwall doesn't have any package dependencies (other than rust), so it's lightweight and easy to install.
- Minimalist - Hyprwall is minimalist, the source code is very small compared to other wallpaper pickers e.g. (waypaper).
- Wrapping - Hyprwall supports wrapping, so if you choose to you can have a lot of wallpapers shown in the GUI at once (wraps with window size).
- Performance - Hyprwall is designed to be performant, it uses a thread pool to load images in parallel and caches images.
- High capacity - Hyprwall can handle a large number of wallpapers (over 1000 at one time!) without any issues.
- Multiple monitors - Hyprwall supports setting wallpapers on Multiple monitors at once.
- True async - Hyprwall is built to be asynchronous, it uses tokio to run commands in this manner massively improving performance.
- Cross display protocol/server support - Hyprwall supports both wayland (swaybg, swww, hyprpaper, wallutils) and x11 (feh, wallutils).
- Cli args - Hyprwall supports command line arguments, to view these type
hyprwall --help
, --restore is one of them, if you wish you can restore your last used wallpaper in the gui with this argument.
- GIF support - Hyprwall supports GIFs, but only if the swww backend is used.
- Search functionality - Hyprwall has search functionality that can filter through your wallpapers in real time.
- Previewable images - Hyprwall can preview images at a much larger scale via right clicking on an image: it will bring up a preview window.
- Supports swaybg, swww, wallutils, feh, and hyprpaper - Hyprwall supports a variety of wallpaper backends, so you can use it with your preferred wallpaper tool.
## Preview
![Preview](.github/preview.png)
Requirements
- IPC enabled (only for hyprland / hyprpaper users)
- any backend listed above installed
- GTK-4 installed
Installation
GitHub Releases
See Hyprwall's releases page for downloadable binaries.
Arch Linux
There are 2 different AUR packages available:
Install the preferred package with:
git clone https://aur.archlinux.org/<package>.git
cd <package>
makepkg -si
Or, if you're using an AUR Helper, it's even simpler (using paru as an example):
paru -S <package>
Building from source
- Install Rust (preferably
rustup
) through your distro's package or the official script
- Install
git
, pango
, and gtk4
- Clone this repository:
git clone https://github.com/hyprutils/hyprwall && cd hyprwall
- Compile the app with
cargo build --release
or run it directly with cargo run --release
TODO:
- [x] Implement GUI
- [x] Implement wrapping
Credits:
- Nyx - Implementing the GUI and maintaining the project
- Adam - Rust improvements, maintaining the project
- Vaxry - Hyprpaper
- rust-gtk - The GTK4 library
- Hyprland - The wayland compositor
Copyright (C) 2024 HyprUtils