Uses CyberLeo/Scraps/XineramaDump
Still a work in progress
# Compute the full canvas size, and the size of each display canvas_size() { xwininfo -root | sed -e ' /^ *\(Width\|Height\)/ { s/: /=/; H }; /./d; $ { g; s/\n/ /g; s/^\(.*\)$/\L\1/ }; /^$/d ' } canvas=$(eval $(canvas_size); printf "%ux%u" "${width}" "${height}") printf "Building canvas (%s)\n" "${canvas}" convert -size ${canvas} xc:transparent canvas.png xinerama_dump | while read line do eval ${line} printf "Processing screen %u (%ux%u+%u+%u)\n" "${screen}" "${width}" "${height}" "${x_org}" "${y_org}" img="$(printf "bg-%u.png" "${screen}")" [ -f "${img}" ] || img="${HOME}/.backgrounds/blank.png" convert "${img}" -resize ${width}x${height}\! canvas-tmp.png composite -geometry +${x_org}+${y_org} canvas-tmp.png canvas.png canvas.png rm -f canvas-tmp.png done # Reload background icewmbg -r exit # This will take a while. Display a blank background ln -svf .backgrounds/blank.png ~/.background icewmbg -r # Create canvas convert -size 3360x1080 xc:transparent canvas.png # Prescale source images convert ~/.backgrounds/blank.png -resize 1920x1080\! bg-0.png convert ~/.backgrounds/musicfox-wallpaper.png -resize 1440x900\! bg-1.png # Composite images onto canvas composite bg-0.png canvas.png canvas.png composite -geometry +1920+180 bg-1.png canvas.png canvas.png # Load newly created background ln -svf tmp/background/canvas.png ~/.background icewmbg -r