#wallpaper #wayland #linux #wayland-compositor #json-format #themeing

bin+lib waytrogen

A GTK graphical user interface for changing your wallpapers on Wayland based compositors

4 releases

new 0.6.12 Feb 15, 2025
0.6.11 Feb 15, 2025
0.6.10 Feb 14, 2025
0.5.0 Jan 9, 2025

#711 in GUI

Download history 117/week @ 2025-01-07 11/week @ 2025-01-14 1/week @ 2025-01-21 9/week @ 2025-02-04 333/week @ 2025-02-11

345 downloads per month

Unlicense

310KB
4K SLoC

Rust 3.5K SLoC // 0.0% comments PO File 516 SLoC // 0.3% comments

Sparkles $${\color{red}Waytrogen \space \color{lightblue}- \space \color{orange}Wallpaper\space setter\space for\space wayland}$$ Sparkles


A GUI wallpaper setter for Wayland that is a spiritual successor for the minimalistic wallpaper changer for X11 nitrogen. Written purely in the Rust 🦀 programming language.

Features

  • Recursive and lightning fast file searching
  • Can load thousands of wallpapers with ease
  • Supports images, GIFs and videos
  • Supports external scripts when changing wallpapers
  • Can list full wallpaper state in JSON format
  • Fully supports:
    • hyprpaper (hyprland - png, jpeg, webp, jxl)
    • swaybg (sway - png, jpeg, tiff, tga, gif)
    • mpvpaper (any video/image format with mpv config)
    • swww (jpeg, png, gif, pnm, tga, tiff, webp, bmp, farbfeld with transitions)

Installation

  1. Install required wallpaper changer(s) based on your needs:
    • hyprpaper for Hyprland
    • swaybg for Sway
    • mpvpaper for video support
    • swww for transition effects
  2. Install waytrogen:
    • Arch Linux: Available on AUR
    • NixOS: Available on Nixpkgs

Usage

  • Launch via terminal: waytrogen
  • Restore previous wallpapers: waytrogen --restore or waytrogen -r
  • List current state in JSON: waytrogen --list or waytrogen -l
  • Use external script: waytrogen --external_script or waytrogen -e
    • Script receives: monitor, wallpaper path, complete state
  • Cycle to the next wallpaper: waytrogen --next or waytrogen -n

Building from source

On NixOS, you can use the provided flake.nix to compile and install from source. Just simply clone the repository using:

git clone https://github.com/nikolaizombie1/waytrogen.git && cd waytrogen

For those who would like to build from source on other distributions, the following dependencies are required:

  • sqlite3 version 3.42 or greater
  • openssl version 3.0 or greater
  • gtk4 version 4.12 or greater
  • gio-2.0 version 2.78 or greater
  • glib-2.0 version 2.78 or greater
  • meson version 1.2 or greater
  • ninja version 1.10 or greater
  • cargo version 1.75 or greater

On Arch use the following command to install the required build dependencies:

sudo pacman -S gtk4 sqlite openssl glib2 rust meson ninja

On Ubuntu use the following command to install the required build dependencies:

sudo apt install sqlite3 openssl libgtk-4-1 libglib2.0-dev cargo meson ninja-build 

Then clone the repository using:

git clone https://github.com/nikolaizombie1/waytrogen.git && cd waytrogen

Configure meson and build using:

meson setup builddir --prefix=/usr && meson compile -C builddir

If you would like to install to your system, use:

meson install -C builddir

Contribution

All help is welcome and appreciated for waytrogen. If you would like to contribute to waytrogen follow these steps:

  1. Create a fork of waytrogen by clicking the fork button on the top of the github repository.
  2. Clone your fork waytrogen:
git clone https://github.com/YOUR_USERNAME/waytrogen.git && cd waytrogen
  1. Create a branch who's name describe the changes you would like to do. Please be descriptive, do not use titles such as: update-readme or fix-bug
git switch --create descriptive-branch-name main
  1. Perform the changes you like to do.
    • If you want to add a new language to waytrogen, follow these steps:

      1. Install gettext

      On Arch Linux use:

      sudo pacman -S gettext
      

      On Ubuntu use:

      sudo apt install gettext
      

      On NixOS gettext is already installed.

      1. Run cd po
      2. Add the language code you would like to add using a language code from here to the LINGUAS file. Keep the file ordered alphabetically.
      3. Create the skeleton po file using the following command:
      msginit -i waytrogen -o LL.po -l LL_CC.UTF8
      

      Where LL is the language code used in the previous step and CC is the country code can be obtained here

      1. Modify the skeleton po the sections where it says msgstr ""
    • If you would like to do code changes, follow these steps:

      1. Install waytrogen either from source or from your package manager. This is to install the required schemas. Skip this step if developing on NixOS.
      2. Install the required development dependencies:

      On Arch Linux, use:

      sudo pacman -S gtk4 sqlite openssl glib2 rust
      

      On Ubuntu, use:

      sudo apt install sqlite3 openssl libgtk-4-1 libglib2.0-dev cargo
      

      On NixOS, add the following snippet to your configuration.nix

      programs.direnv = {
      enable = true;
      nix-direnv.enable = true;
      };
      

      If the nix flake is not loading in properly, run direnv allow in the root of the repository to enable the flake.

      1. Perform the changes you would like to do on waytrogen.
      2. Compile and run waytrogen with the new changes using the following based on the distribution:
      • If on NixOS simply run:
      nix build && nix run
      
      • On any other distribution, run:
      cargo run --release
      
      1. Repeat steps 3 and 4 until you are satisfied with your changes.
  2. Run cargo clippy and make sure there are no suggestions.
  3. Format the project using cargo fmt --all
  4. Create a commit who's message describes your changes in slightly more detail.
  5. Go to your fork and create a pull request for nikolaizombie1:waytrogen on the main branch. If needed, go into detail what do your changes do in the description of the pull request.

Credits

Logo shape from Inconify Tabler atom.

Dependencies

~67MB
~1M SLoC