Advanced
Transitions
gSlapper supports smooth fade transitions between static images, providing a polished wallpaper switching experience.
gSlapper supports smooth fade transitions between static images, providing a polished wallpaper switching experience.
Enabling Transitions
Transitions are enabled via command-line options:
gslapper --transition-type fade --transition-duration 2.0 -I /tmp/gslapper.sock DP-1 image.jpgOptions
-
--transition-type TYPE- Transition effect typenone(default) - No transitionfade- Smooth fade between images
-
--transition-duration SECS- Transition duration in seconds (default: 0.5)
Requirements
- IPC must be enabled - Transitions require the
-Ior--ipc-socketoption - Static images only - Transitions work between images, not videos
- Same or different aspect ratios - Both images will correctly fill the screen
Usage
Basic Fade Transition
# Start with first image
gslapper --transition-type fade --transition-duration 2.0 -I /tmp/gslapper.sock DP-1 image1.jpg
# Switch to second image (transition happens automatically)
echo "change /path/to/image2.jpg" | nc -U /tmp/gslapper.sockDifferent Aspect Ratios
Transitions handle images with different aspect ratios correctly:
# 4:3 image -> 16:9 image
gslapper --transition-type fade --transition-duration 1.5 -I /tmp/gslapper.sock DP-1 4x3_image.jpg
echo "change /path/to/16x9_image.jpg" | nc -U /tmp/gslapper.sockBoth images will fill the screen properly during the transition, with no letterboxing.
How It Works
- Capture - When a transition starts, the current image is captured
- Load - The new image is loaded asynchronously
- Resize - Both images are resized to display resolution with fill mode
- Blend - Images are blended pixel-by-pixel using CPU-based alpha blending
- Complete - Transition completes when duration is reached
Supported Formats
Transitions work with all supported image formats:
- JPEG (.jpg, .jpeg)
- PNG (.png)
- WebP (.webp)
- GIF (.gif) - First frame only
Performance
- CPU-based blending - Uses efficient pixel blending similar to swww
- Display resolution - Blends at logical display resolution for optimal performance
- Smooth animation - Frame rate capped to ensure smooth transitions
Limitations
- Transitions only work between static images
- Video wallpapers do not support transitions
- IPC socket must be enabled
- Rapid transitions (multiple changes in quick succession) may cancel previous transitions
Examples
Slideshow Script
#!/bin/bash
SOCKET="/tmp/gslapper.sock"
IMAGES=(
"/path/to/image1.jpg"
"/path/to/image2.png"
"/path/to/image3.webp"
)
# Start with first image
gslapper --transition-type fade --transition-duration 2.0 -I "$SOCKET" DP-1 "${IMAGES[0]}" &
sleep 3
# Cycle through images
for img in "${IMAGES[@]:1}"; do
echo "change $img" | nc -U "$SOCKET"
sleep 3
doneRandom Wallpaper with Transition
#!/bin/bash
SOCKET="/tmp/gslapper.sock"
WALLPAPER_DIR="/home/user/Pictures/wallpapers"
# Get random image
RANDOM_IMG=$(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.webp" \) | shuf -n 1)
# Start or change wallpaper
if pgrep -x gslapper > /dev/null; then
echo "change $RANDOM_IMG" | nc -U "$SOCKET"
else
gslapper --transition-type fade --transition-duration 1.5 -I "$SOCKET" DP-1 "$RANDOM_IMG"
fi