- Detect monitor resolutions and set the desktop wallpaper, for any window manager (please file an issue if your window manager is not supported yet).
- Supports GNOME timed wallpapers, and includes a utility that can run an event loop for changing them (also supports cross fading).
- Introduces a new file format for timed wallpapers: The Simple Timed Wallpaper format: Web | Markdown | PDF
The Mojave timed wallpaper and other timed wallpapers can be set with the settimed command, and will cross fade from image to image as the day progresses:
getdpi, for retrieving the average DPI, for all monitors (supports-lfor both X and Y DPI).lscollection, for listing installed wallpaper collections (supports-l).timedinfo, for showing more information about installed GNOME timed wallpapers.lsmonlists the connected monitors and resolutions.lstimedfor listing installed GNOME timed wallpapers.lswallpaper, for listing all installed wallpapers.setcollection, for setting a suitable (in terms of resolution) wallpaper from a wallpaper collection.setrandom, for setting a random wallpaper.settimed, for setting GNOME timed wallpapers (will continue to run, to handle time events).setwallpapercan be used for setting a wallpaper (works both over X and the Wayland protocol).wayinfoshows detailed information about the connected monitors, via Wayland.xinfoshows detailed information about the connected monitors, via X.xml2stwfor converting GNOME timed wallpapers to the Simple Timed Wallpaper format.
$ lsmon
0: 1920x1200
1: 1920x1200
2: 1920x1200Using make, for building and installing all included utilities:
make
make install
Using Go 1.11 or later, for a single utility:
go get -u github.com/xyproto/wallutils/cmd/settimed
On Arch Linux:
Install wallutils from AUR, or:
sudo pacman -Syu git go libxcursor libxmu wayland xbitmaps xorgproto
git clone https://github.com/xyproto/wallutils
cd wallutils
make
sudo make install
On Ubuntu:
sudo apt get update
sudo apt get install libxcursor-dev libxmu-dev libx11-dev git golang-go
git clone https://github.com/xyproto/wallutils
cd wallutils
make
sudo make install
settimed mojave-timed
setwallpaper /path/to/background/image.png
setrandom /usr/share/pixmaps
package main
import (
"fmt"
"os"
"github.com/xyproto/wallutils"
)
func main() {
// Retrieve a slice of Monitor structs, or exit with an error
monitors, err := wallutils.Monitors()
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
// For every monitor, output the ID, width and height
for _, monitor := range monitors {
fmt.Printf("%d: %dx%d\n", monitor.ID, monitor.Width, monitor.Height)
}
}fmt.Println("Setting background image to: " + imageFilename)
if err := wallutils.SetWallpaper(imageFilename); err != nil {
return err
}- Go 1.11 or later.
- A working C compiler (tested with GCC 8.2.1).
- Header files for Wayland and X.
libwayland-client.so, for Wayland support.libX11.so, for X support.
- Author: Alexander F. Rødseth <xyproto@archlinux.org>
- License: MIT
- Version: 5.2.1
