Skip to main content

Wallpaper Changing Daemon (wcd)

Wallpaper Changing Daemon reminds me of mpd, but it manages wallpapers instead of music.

Overview

  • It comes with wcc too, which is a CLI client app, used to interact with the Daemon.
  • It works on python 3.9 (and, probably, on 3.7 and 3.8 too, not sure about lower versions though).
  • It only depends on PyYAML and coloredlogs, but you don't have to worry about installing them manually, pip's got you covered.
  • It copies it's default config file into ~/.config/wcd/, or to wherever you point it to, via $WCD_CFG.
  • I only code as a hobby, but I'd say I made a good job to make this very readable and, thus, feel very welcomed to check how things are implemented, to get a better understanding of what this program does, its capabilities, etc...
  • You need to have a program which will do the wallpaper switching (such as xwallpaper, feh or nitrogen) installed on your machine.

Why shouldn't I just use a shell script instead

Lots of people use shell scripts like this, to manage their wallpapers:

while true; do
    for file in "$(find /usr/share/backgrounds/ -type f | shuf)"; do
        xwallpaper --zoom "$file"
    done
done

And that's fine, but I don't like that approach because it's too limiting. What if, actually, you don't like a wallpaper that has been presented to you? Well, then, you'd have to manually change it. With wcd and wcc, you can interact with the daemon as it presents wallpapers to you, going back and forward in a history buffer, choosing to start or to stop randomizing wallpapers, or just getting the next one presented to you if you don't like the current one anymore, all with a single keypress (see "sxhkd keybindings for wcc" below).

Installation

  1. Install the package with pipx: pipx install wcd or clone this repo and run setup.py
    • If you use Arch based distros, you can install pipx as such: sudo pacman -S python-pipx
  2. Run the package once, to generate config files. If you want to, you can point to where you want your config to be stored in by exporting an evironment variable named WCD_CFG, like this:
    • export WCD_CFG="path/to/config" # be sure to add this line to your ~/.profile or ~/.bashrc or whatever shell you use
    • wcd
  3. Load the config file (defaults to ~/.config/wcd/cfg.yml) on your text editor and change the wallpaper_cmd entry to whatever suits you best.
  4. Kill the previous running instance if you haven't already and, then, restart the program.
  5. You're all set, enjoy.

Installing and Running as systemd Service

  1. Clone this repo: git clone https://github.com/brunofauth/wcd.git
  2. cd into it: cd wcd
  3. edit wcd.service to include whatever you get when you run which wcd
  4. Copy the unit file to your systemd config folder: cp wcd.service ~/.config/systemd/user/wcd.service
  5. To enable starting wcd on login, run: systemctl enable --user wcd.service
  6. To immediatly start wcd, run: systemctl start --user wcd.service

Communicating with the wcd

  • Run: wcc --help, it stands for Wallpaper Changing Client and comes bundled with wcd

sxhkd keybindings for wcc (append to your sxhkdrc)

shift + XF86Audio{Play,Next,Prev}
    wcc {toggle_cycle,next,prev}

TODO

  • update pkgbuild to aur, along with the systemd service
  • use less memory (tracemalloc says it's fine, but htop disagrees)

Metadata

Release files for wcd 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wcd 0.1.0
File Size Uploaded
wcd-0.1.0.tar.gz 10.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wcd 0.1.0
File Interpreter ABI Platform
wcd-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / wcd-0.1.0.tar.gz

Download URL wcd-0.1.0.tar.gz
Size 10.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d1bd15385ce2edec89bce71f378a8adbaf1f462ad5ba08fb0f74b1c3e525a4de
BLAKE2b-256 checksum
How to use checksums
150b9d4f5d65a3facdd2a86e1a458c3f86a7c7a9d8b17bd9936c911e7e60f8b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / wcd-0.1.0-py3-none-any.whl

Download URL wcd-0.1.0-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
16c930de2ba7a154d2b00944633d037a606b7252a8764211f2d5d640146528c7
BLAKE2b-256 checksum
How to use checksums
53a6bcbec4fd97b11c91bf79cc2e717e0e17ab720971bd67a01c7769a6200b49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page