https://github.com/hyprutils/hyprwall
GUI for setting wallpapers with hyprpaper, swww, swaybg, wallutils, and feh. Written in blazingly fast Rust! 🚀🦀
https://github.com/hyprutils/hyprwall
gui hyprland hyprutils rust wallpaper wallpapergui wallpapers wallpapersetting
Last synced: 8 days ago
JSON representation
GUI for setting wallpapers with hyprpaper, swww, swaybg, wallutils, and feh. Written in blazingly fast Rust! 🚀🦀
- Host: GitHub
- URL: https://github.com/hyprutils/hyprwall
- Owner: hyprutils
- License: gpl-2.0
- Created: 2024-10-16T19:10:05.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-12-19T10:27:53.000Z (4 months ago)
- Last Synced: 2024-12-25T18:45:11.324Z (4 months ago)
- Topics: gui, hyprland, hyprutils, rust, wallpaper, wallpapergui, wallpapers, wallpapersetting
- Language: Rust
- Homepage:
- Size: 2.55 MB
- Stars: 88
- Watchers: 2
- Forks: 7
- Open Issues: 4
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-hyprland - hyprwall
README
Hyprwall
![]()
[](https://github.com/The-Grindhouse/guidelines)
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
## Requirements
- IPC enabled **(only for hyprland / hyprpaper users)**
- any backend listed above installed
- GTK-4 installed## Installation
[](https://repology.org/project/hyprwall/versions)
### GitHub Releases
See Hyprwall's [releases page](https://github.com/hyprutils/hyprwall/releases) for downloadable binaries.### Arch Linux
There are 2 different [AUR](https://aur.archlinux.org) packages available:- [hyprwall](https://aur.archlinux.org/packages/hyprwall) - Latest release built from source
- [hyprwall-bin](https://aur.archlinux.org/packages/hyprwall-bin) - Latest release in binary formInstall the preferred package with:
```bash
git clone https://aur.archlinux.org/.git
cd
makepkg -si
```Or, if you're using an [AUR Helper](https://wiki.archlinux.org/title/AUR_helpers), it's even simpler (using [paru](https://github.com/Morganamilo/paru) as an example):
```bash
paru -S
```## Building from source
1. Install Rust (preferably `rustup`) through your distro's package or [the official script](https://www.rust-lang.org/tools/install)
2. Install `git`, `pango`, and `gtk4`
3. Clone this repository:
`git clone https://github.com/hyprutils/hyprwall && cd hyprwall`
4. Compile the app with `cargo build --release` or run it directly with `cargo run --release`## TODO:
- [x] Implement GUI
- [x] Implement wrapping## Credits:
- [Nyx](https://github.com/nnyyxxxx) - Implementing the GUI and maintaining the project
- [Adam](https://github.com/adamperkowski) - Rust improvements, maintaining the project
- [Vaxry](https://github.com/vaxerski) - Hyprpaper
- [rust-gtk](https://github.com/gtk-rs/gtk4-rs) - The GTK4 library
- [Hyprland](https://github.com/hyprwm/Hyprland) - The wayland compositorCopyright (C) 2024 HyprUtils