471 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			471 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| link="https://source.unsplash.com/random/"
 | |
| 
 | |
| if [ -z ${XDG_CONFIG_HOME+x} ]; then
 | |
|     XDG_CONFIG_HOME="${HOME}/.config"
 | |
| fi
 | |
| if [ -z ${XDG_HOME+x} ]; then
 | |
|     XDG_HOME="${HOME}"
 | |
| fi
 | |
| confdir="${XDG_CONFIG_HOME}/styli.sh"
 | |
| if [ ! -d "${confdir}" ]; then
 | |
|     mkdir -p "${confdir}"
 | |
| fi
 | |
| cachedir="${XDG_HOME}/Pictures/wallpapers"
 | |
| if [ ! -d "${cachedir}" ]; then
 | |
|     mkdir -p "${cachedir}"
 | |
| fi
 | |
| 
 | |
| wallpaper="${cachedir}/wallpaper.jpg"
 | |
| wallpath=""
 | |
| die() {
 | |
|     printf "ERR: %s\n" "$1" >&2
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| # https://github.com/egeesin/alacritty-color-export
 | |
| alacritty_change() {
 | |
|     DEFAULT_MACOS_CONFIG="$HOME"/.config/alacritty/alacritty.yml
 | |
|     
 | |
|     # Wal generates a shell script that defines color0..color15
 | |
|     SRC="$HOME"/.cache/wal/colors.sh
 | |
|     
 | |
|     [ -e "$SRC" ] || die "Wal colors not found, exiting script. Have you executed Wal before?"
 | |
|     printf "Colors found, source ready.\n"
 | |
|     
 | |
|     READLINK=$( command -v greadlink || command -v readlink )
 | |
|     
 | |
|     # Get config file
 | |
|     if [ -n "$1" ]; then
 | |
|         [ -e "$1" ] || die "Selected config doesn't exist, exiting script."
 | |
|         printf "Config found, destination ready.\n"
 | |
|         CFG=$1
 | |
|         [ -L "$1" ] && {
 | |
|             printf "Following symlink to config...\n"
 | |
|             CFG=$($READLINK -f "$1")
 | |
|         }
 | |
|     else
 | |
|         # Default config path in Mac systems
 | |
|         [ -e "$DEFAULT_MACOS_CONFIG" ] || die "Alacritty config not found, exiting script."
 | |
|         
 | |
|         CFG="$DEFAULT_MACOS_CONFIG"
 | |
|         [ -L "$DEFAULT_MACOS_CONFIG" ] && {
 | |
|             printf "Following symlink to config...\n"
 | |
|             CFG=$($READLINK -f "$DEFAULT_MACOS_CONFIG")
 | |
|         }
 | |
|     fi
 | |
|     
 | |
|     # Get hex colors from Wal cache
 | |
|     # No need for shellcheck to check this, it comes from pywal
 | |
|     # shellcheck disable=SC1090
 | |
|     . "$SRC"
 | |
|     
 | |
|     # Create temp file for sed results
 | |
|     tempfile=$(mktemp)
 | |
|     trap 'rm $tempfile' INT TERM EXIT
 | |
|     
 | |
|     # Delete existing color declarations generated by this script
 | |
|     # If begin comment exists
 | |
|     if grep -q '^# BEGIN ACE' "$CFG"; then
 | |
|         # And if end comment exists
 | |
|         if grep -q '^# END ACE' "$CFG"; then
 | |
|             # Delete contents of the block
 | |
|             printf "Existing generated colors found, replacing new colors...\n"
 | |
|             sed '/^# BEGIN ACE/,/^# END ACE/ {
 | |
|         /^# BEGIN ACE/! { /^# END ACE/!d; }
 | |
|             }' "$CFG" > "$tempfile" \
 | |
|             && cat "$tempfile" > "$CFG"
 | |
|             # If no end comment, don't do anything
 | |
|         else
 | |
|             die "No '# END ACE' comment found, please ensure it is present."
 | |
|         fi
 | |
|         # If no begin comment found
 | |
|     else
 | |
|         # Don't do anything and notify user if there's an end comment in the file
 | |
|         ! grep -q '^# END ACE' "$CFG" || die "Found '# END ACE' comment, but no '# BEGIN ACE' comment found. Please ensure it is present."
 | |
|         printf "There's no existing 'generated' colors, adding comments...\n";
 | |
|         printf '# BEGIN ACE\n# END ACE' >> "$CFG";
 | |
|     fi
 | |
|     
 | |
|     # Write new color definitions
 | |
|     # We know $colorX is unset, we set it by sourcing above
 | |
|     # shellcheck disable=SC2154
 | |
|     { sed "/^# BEGIN ACE/ r /dev/stdin" "$CFG" > "$tempfile" <<EOP
 | |
| colors:
 | |
|   primary:
 | |
|     background: '$color0'
 | |
|     foreground: '$color7'
 | |
|   cursor:
 | |
|     text:       '$color0'
 | |
|     cursor:     '$color7'
 | |
|   normal:
 | |
|     black:      '$color0'
 | |
|     red:        '$color1'
 | |
|     green:      '$color2'
 | |
|     yellow:     '$color3'
 | |
|     blue:       '$color4'
 | |
|     magenta:    '$color5'
 | |
|     cyan:       '$color6'
 | |
|     white:      '$color7'
 | |
|   bright:
 | |
|     black:      '$color8'
 | |
|     red:        '$color9'
 | |
|     green:      '$color10'
 | |
|     yellow:     '$color11'
 | |
|     blue:       '$color12'
 | |
|     magenta:    '$color13'
 | |
|     cyan:       '$color14'
 | |
|     white:      '$color15'
 | |
| EOP
 | |
| } && cat "$tempfile" > "$CFG" \
 | |
| && rm "$tempfile"
 | |
| trap - INT TERM EXIT
 | |
| printf "'%s' exported to '%s'\n" "$SRC" "$CFG"
 | |
| }
 | |
| 
 | |
| reddit(){
 | |
| useragent="thevinter"
 | |
| timeout=60
 | |
| 
 | |
| sort=$2
 | |
| top_time=$3
 | |
| if [ -z $sort ]; then
 | |
|     sort="hot"
 | |
| fi
 | |
| 
 | |
| if [ -z $top_time ]; then
 | |
|     top_time=""
 | |
| fi
 | |
| 
 | |
| if [ ! -z $1 ]; then
 | |
|     sub=$1
 | |
| else
 | |
|     if [ ! -f "${confdir}/subreddits" ]; then
 | |
|         echo "Please install the subreddits file in ${confdir}"
 | |
|         exit 2
 | |
|     fi
 | |
|     readarray subreddits < "${confdir}/subreddits"
 | |
|     a=${#subreddits[@]}
 | |
|     b=$(($RANDOM % $a))
 | |
|     sub=${subreddits[$b]}
 | |
|     sub="$(echo -e "${sub}" | tr -d '[:space:]')"
 | |
| fi
 | |
| 
 | |
| url="https://www.reddit.com/r/$sub/$sort/.json?raw_json=1&t=$top_time"
 | |
| content=`wget -T $timeout -U "$useragent" -q -O - $url`
 | |
| urls=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.preview.images[0].source.url')
 | |
| names=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.title')
 | |
| ids=$(echo -n "$content"| jq -r '.data.children[]|select(.data.post_hint|test("image")?) | .data.id')
 | |
| arrURLS=($urls)
 | |
| arrNAMES=($names)
 | |
| arrIDS=($ids)
 | |
| wait # prevent spawning too many processes
 | |
| size=${#arrURLS[@]}
 | |
| if [ $size -eq 0 ]; then
 | |
|     echo The current subreddit is not valid.
 | |
|     exit 1
 | |
| fi
 | |
| idx=$(($RANDOM % $size))
 | |
| target_url=${arrURLS[$idx]}
 | |
| target_name=${arrNAMES[$idx]}
 | |
| target_id=${arrIDS[$idx]}
 | |
| ext=`echo -n "${target_url##*.}"|cut -d '?' -f 1`
 | |
| newname=`echo $target_name | sed "s/^\///;s/\// /g"`_"$subreddit"_$target_id.$ext
 | |
| wget -T $timeout -U "$useragent" --no-check-certificate -q -P down -O ${wallpaper} $target_url &>/dev/null
 | |
| }
 | |
| 
 | |
| unsplash() {
 | |
|     local search="${search// /_}"
 | |
|     if [ ! -z $height ] || [ ! -z $width ]; then
 | |
|         link="${link}${width}x${height}";
 | |
|     else
 | |
|         link="${link}1920x1080";
 | |
|     fi
 | |
|     
 | |
|     if [ ! -z $search ]; then
 | |
|         link="${link}/?${search}"
 | |
|     fi
 | |
|     
 | |
|     wget -q -O ${wallpaper} $link
 | |
| }
 | |
| 
 | |
| deviantart(){
 | |
|     client_id=16531
 | |
|     client_secret=68c00f3d0ceab95b0fac638b33a3368e
 | |
|     payload="grant_type=client_credentials&client_id=${client_id}&client_secret=${client_secret}"
 | |
|     access_token=`curl --silent -d $payload https://www.deviantart.com/oauth2/token | jq -r '.access_token'`
 | |
|     if [ ! -z $1 ]; then
 | |
|         artist=$1
 | |
|         url="https://www.deviantart.com/api/v1/oauth2/gallery/?username=${artist}&mode=popular&limit=24"
 | |
|     elif [ ! -z $search ]; then
 | |
|         [[ "$search" =~ ^(tag:)(.*)$ ]] && tag=${BASH_REMATCH[2]}
 | |
|         if [ ! -z $tag ]; then
 | |
|             url="https://www.deviantart.com/api/v1/oauth2/browse/tags?tag=$tag&offset=${RANDOM:0:2}&limit=24"
 | |
|         else
 | |
|             url="https://www.deviantart.com/api/v1/oauth2/browse/popular?q=$search&limit=24&timerange=1month"
 | |
|         fi
 | |
|     else
 | |
|         #url="https://www.deviantart.com/api/v1/oauth2/browse/hot?limit=24&offset=${offset}"
 | |
|         topics=( "adoptables" "artisan-crafts" "anthro" "comics" "drawings-and-paintings" "fan-art" "poetry" "stock-images" "sculpture" "science-fiction" "traditional-art" "street-photography" "street-art" "pixel-art" "wallpaper" "digital-art" "photo-manipulation" "science-fiction" "fractal" "game-art" "fantasy" "3d" "drawings-and-paintings" "game-art" )
 | |
|         rand=$[$RANDOM % ${#topics[@]}]
 | |
|         url="https://www.deviantart.com/api/v1/oauth2/browse/topic?limit=24&topic=${topics[$rand]}"
 | |
|     fi
 | |
|     content=`curl --silent -H "Authorization: Bearer ${access_token}" -H "Accept: application/json" -H "Content-Type: application/json" $url`
 | |
|     urls=$(echo -n $content | jq -r '.results[].content.src')
 | |
|     arrURLS=($urls)
 | |
|     size=${#arrURLS[@]}
 | |
|     idx=$(($RANDOM % $size))
 | |
|     target_url=${arrURLS[$idx]}
 | |
|     wget --no-check-certificate -q -P down -O ${wallpaper} $target_url &>/dev/null
 | |
| }
 | |
| 
 | |
| usage(){
 | |
|     echo "Usage: styli.sh [-s | --search <string>]
 | |
|     [-h | --height <height>]
 | |
|     [-w | --width <width>]
 | |
|     [-b | --fehbg <feh bg opt>]
 | |
|     [-c | --fehopt <feh opt>]
 | |
|     [-a | --artist <deviant artist>]
 | |
|     [-r | --subreddit <subreddit>]
 | |
|     [-l | --link <source>]
 | |
|     [-p | --termcolor]
 | |
|     [-d | --directory]
 | |
|     [-k | --kde]
 | |
|     [-x | --xfce]
 | |
|     [-g | --gnome]
 | |
|     [-m | --monitors <monitor count (nitrogen)>]
 | |
|     [-n | --nitrogen]
 | |
|     "
 | |
|     exit 2
 | |
| }
 | |
| 
 | |
| type_check() {
 | |
|     mime_types=("image/bmp" "image/jpeg" "image/gif" "image/png" "image/heic")
 | |
|     isType=false
 | |
|     
 | |
|     for requiredType in "${mime_types[@]}"
 | |
|     do
 | |
|         if [ $dir ]; then
 | |
| 						imageType=$(file --mime-type "$HOME/Pictures/wallpaper_dump/${wallpaper}" | sed 's/.*image/image/')
 | |
| 						echo $imageType
 | |
| 						if [ "$requiredType" = "$imageType" ]; then
 | |
| 								isType=true
 | |
| 								break
 | |
| 						fi
 | |
|         else
 | |
| 						imageType=$(file --mime-type ${wallpaper} | awk '{print $2}')
 | |
| 						if [ "$requiredType" = "$imageType" ]; then
 | |
| 								isType=true
 | |
| 								break
 | |
| 						fi
 | |
| 				fi
 | |
|     done
 | |
|     
 | |
|     if [ $isType = false ]; then
 | |
|         echo "MIME-Type missmatch. Downloaded file is not an image!"
 | |
|         exit 1
 | |
|     fi
 | |
| }
 | |
| 
 | |
| select_random_wallpaper () {
 | |
|     wallpaper=$(ls $HOME/Pictures/wallpaper_dump | shuf -n 1)
 | |
| }
 | |
| 
 | |
| pywal_cmd() {
 | |
|     
 | |
|     if [ $pywal -eq 1 ]; then
 | |
|         wal -c
 | |
|         wal -i ${wallpaper} -n -q
 | |
|         if [ $TERM = alacritty ]; then
 | |
|             alacritty_change
 | |
|         fi
 | |
|     fi
 | |
|     
 | |
| }
 | |
| 
 | |
| sway_cmd() {
 | |
|     mode="fill"
 | |
|     if [ ! -z $dir ]; then
 | |
|         cp "$HOME/Pictures/wallpaper_dump/${wallpaper}" "$HOME/Pictures/wallpapers/wallpaper"
 | |
|         swaymsg output "*" bg "$HOME/Pictures/wallpaper_dump/${wallpaper}" "${mode}"
 | |
|     else
 | |
|         swaymsg output "*" bg "${wallpaper}" "${mode}"
 | |
|     fi
 | |
|     
 | |
| }
 | |
| 
 | |
| nitrogen_cmd() {
 | |
|     for ((monitor=0; monitor < $monitors; monitor++))
 | |
|     do
 | |
|         local nitrogen=(nitrogen --save --head=${monitor})
 | |
|         
 | |
|         if [ ! -z $bgtype ]; then
 | |
|             if [ $bgtype == 'bg-center' ]; then
 | |
|                 nitrogen+=(--set-centered)
 | |
|             fi
 | |
|             if [ $bgtype == 'bg-fill' ]; then
 | |
|                 nitrogen+=(--set-zoom-fill)
 | |
|             fi
 | |
|             if [ $bgtype == 'bg-max' ]; then
 | |
|                 nitrogen+=(--set-zoom)
 | |
|             fi
 | |
|             if [ $bgtype == 'bg-scale' ]; then
 | |
|                 nitrogen+=(--set-scaled)
 | |
|             fi
 | |
|             if [ $bgtype == 'bg-tile' ]; then
 | |
|                 nitrogen+=(--set-tiled)
 | |
|             fi
 | |
|         else
 | |
|             nitrogen+=(--set-scaled)
 | |
|         fi
 | |
|         
 | |
|         if [ ! -z $custom ]; then
 | |
|             nitrogen+=($custom)
 | |
|         fi
 | |
|         
 | |
|         nitrogen+=(${wallpaper})
 | |
|         
 | |
|         "${nitrogen[@]}"
 | |
|     done
 | |
| }
 | |
| 
 | |
| kde_cmd() {
 | |
|     if [ ! -z $dir ]; then
 | |
| 				qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = \"org.kde.image\";d.currentConfigGroup = Array(\"Wallpaper\", \"org.kde.image\", \"General\");d.writeConfig(\"Image\", \"file:$HOME/Pictures/wallpaper_dump/${wallpaper}\")}"
 | |
| 				qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = \"org.kde.image\";d.currentConfigGroup = Array(\"Wallpaper\", \"org.kde.image\", \"General\");d.writeConfig(\"Image\", \"file:$HOME/Pictures/wallpaper_dump/${wallpaper}\")}"
 | |
|     else
 | |
| 				cp ${wallpaper} "${cachedir}/tmp.jpg"
 | |
| 				qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = \"org.kde.image\";d.currentConfigGroup = Array(\"Wallpaper\", \"org.kde.image\", \"General\");d.writeConfig(\"Image\", \"file:${cachedir}/tmp.jpg\")}"
 | |
| 				qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = \"org.kde.image\";d.currentConfigGroup = Array(\"Wallpaper\", \"org.kde.image\", \"General\");d.writeConfig(\"Image\", \"file:${wallpaper}\")}"
 | |
| 				rm "${cachedir}/tmp.jpg"
 | |
| 		fi
 | |
| }
 | |
| 
 | |
| xfce_cmd() {
 | |
|     connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
 | |
|     activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
 | |
|     connected=$(echo $connectedOutputs | wc -w)
 | |
|     
 | |
|     xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s ~/Pictures/1.jpeg
 | |
|     xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s  ~/Pictures/1.jpeg
 | |
|     
 | |
|     for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
 | |
|         xfconf-query -c xfce4-desktop -p $i -n -t string -s ${wallpaper}
 | |
|         xfconf-query -c xfce4-desktop -p $i -s ${wallpaper}
 | |
|     done
 | |
| }
 | |
| 
 | |
| gnome_cmd() {
 | |
|     if [ ! -z $dir ]; then
 | |
|     	gsettings set org.gnome.desktop.background picture-uri "file://$HOME/Pictures/wallpaper_dump/${wallpaper}"
 | |
|     	gsettings set org.gnome.desktop.background picture-uri-dark "file://$HOME/Pictures/wallpaper_dump/${wallpaper}"
 | |
|     else
 | |
|         gsettings set org.gnome.desktop.background picture-uri "file://${wallpaper}"
 | |
|         gsettings set org.gnome.desktop.background picture-uri-dark "file://${wallpaper}"
 | |
|     fi
 | |
| }
 | |
| 
 | |
| feh_cmd() {
 | |
|     local feh=(feh)
 | |
|     if [ ! -z $bgtype ]; then
 | |
|         if [ $bgtype == 'bg-center' ]; then
 | |
|             feh+=(--bg-center)
 | |
|         fi
 | |
|         if [ $bgtype == 'bg-fill' ]; then
 | |
|             feh+=(--bg-fill)
 | |
|         fi
 | |
|         if [ $bgtype == 'bg-max' ]; then
 | |
|             feh+=(--bg-max)
 | |
|         fi
 | |
|         if [ $bgtype == 'bg-scale' ]; then
 | |
|             feh+=(--bg-scale)
 | |
|         fi
 | |
|         if [ $bgtype == 'bg-tile' ]; then
 | |
|             feh+=(--bg-tile)
 | |
|         fi
 | |
|     else
 | |
|         feh+=(--bg-scale)
 | |
|     fi
 | |
|     
 | |
|     if [ ! -z $custom ]; then
 | |
|         feh+=($custom)
 | |
|     fi
 | |
| 
 | |
|     if [ ! -z $dir ]; then
 | |
|         cp "$HOME/Pictures/wallpaper_dump/${wallpaper}" "$HOME/Pictures/wallpapers/wallpaper"
 | |
|         feh+=("$HOME/Pictures/wallpaper_dump/${wallpaper}")
 | |
|     else
 | |
|         feh+=(${wallpaper})
 | |
|     fi
 | |
|     
 | |
|     "${feh[@]}"
 | |
| }
 | |
| 
 | |
| pywal=0
 | |
| kde=false
 | |
| xfce=false
 | |
| gnome=false
 | |
| nitrogen=false
 | |
| sway=false
 | |
| monitors=1
 | |
| 
 | |
| PARSED_ARGUMENTS=$(getopt -a -n $0 -o h:w:s:l:b:r:a:c:d:m:pknxgy --long search:,height:,width:,fehbg:,fehopt:,artist:,subreddit:,directory:,monitors:,termcolor:,kde,nitrogen,xfce,gnome,sway -- "$@")
 | |
| 
 | |
| VALID_ARGUMENTS=$?
 | |
| if [ "$VALID_ARGUMENTS" != "0" ]; then
 | |
|     usage
 | |
|     exit
 | |
| fi
 | |
| while :
 | |
| do
 | |
|     case "${1}" in
 | |
|         -b | --fehbg)     bgtype=${2} ; shift 2 ;;
 | |
|         -s | --search)    search=${2} ; shift 2 ;;
 | |
|         -h | --height)    height=${2} ; shift 2 ;;
 | |
|         -w | --width)     width=${2} ; shift 2 ;;
 | |
|         -l | --link)      link=${2} ; shift 2 ;;
 | |
|         -r | --subreddit) sub=${2} ; shift 2 ;;
 | |
|         -a | --artist) artist=${2} ; shift 2 ;;
 | |
|         -c | --fehopt)    custom=${2} ; shift 2 ;;
 | |
|         -m | --monitors)  monitors=${2} ; shift 2 ;;
 | |
|         -n | --nitrogen)  nitrogen=true ; shift ;;
 | |
|         -d | --directory) dir=${2} ; shift 2 ;;
 | |
|         -p | --termcolor) pywal=1 ; shift ;;
 | |
|         -k | --kde)       kde=true ; shift ;;
 | |
|         -x | --xfce)      xfce=true ; shift ;;
 | |
|         -g | --gnome)     gnome=true ; shift ;;
 | |
|         -y | --sway)      sway=true ; shift ;;
 | |
|         -- | '') shift; break ;;
 | |
|         *) echo "Unexpected option: $1 - this should not happen." ; usage ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| if [ ! -z $dir ]; then
 | |
|     select_random_wallpaper
 | |
| elif [ $link = "reddit" ] || [ ! -z $sub ]; then
 | |
|     reddit "$sub"
 | |
| elif [ $link = "deviantart" ] || [ ! -z $artist ]; then
 | |
|     deviantart "$artist"
 | |
| else
 | |
|     unsplash
 | |
| fi
 | |
| echo $dir
 | |
| type_check
 | |
| 
 | |
| if [ $kde = true ]; then
 | |
|     kde_cmd
 | |
| elif [ $xfce = true ]; then
 | |
|     xfce_cmd
 | |
| elif [ $gnome = true ]; then
 | |
|     gnome_cmd
 | |
| elif [ $nitrogen = true ]; then
 | |
|     nitrogen_cmd
 | |
| elif [ $sway = true ]; then
 | |
|     sway_cmd
 | |
| else
 | |
|     feh_cmd
 | |
| fi
 | |
| 
 | |
| 
 | |
| pywal_cmd
 | 
