Files
wallpaper-engine-caelestia/dmenu_set_wallpaper.sh
2026-03-30 14:53:09 -06:00

112 lines
3.5 KiB
Bash
Executable File

#!/bin/bash/
#SE ENCARGA DE DESPLEGAR EN UN DMENU CON LA LISTA DE WALLPAPERS QUE HAY EN /scripts/wallpapers_list.txt
#Y AL SELECCIONAR UNO MODIFICA EL ARCHIVO
source ~/scripts/constantlib.sh
#modifica el wallpaper recibe 3 parametros el link de steam, el monitor y el ajuste de pantalla
setwallpaper='/home/arthur/scripts/set-wallpaperengine.sh'
wengine_setter='/home/arthur/.config/themes/wallpaper-engine.sh'
wengine_setter_tema='/home/arthur/.config/themes/wallpaper-engine.sh.'
not_found="$HOME/Pictures/.cache_wgengine/not_found.jpg"
hyprpaper="$HOME/.config/hypr/hyprpaper.conf"
dir="$HOME/.config/rofi/launchers/type-7"
theme='style-9'
wallpapers_dir="$HOME/Pictures/wallpapers"
opciones_monitors=""
opciones_wallpapers=""
lineas_wallpapers=0
label="󰍹_Monitor: "
label_w="_Wallpaper: "
linea4=$( sed -n '4p' ~/.bashrc )
valor_tem=$(echo $linea4 | cut -d '=' -f2)
wengine_setter_tema=$wengine_setter_tema$valor_tem
opciones_wallpapers=$opciones_wallpapers"kill ~ none\n"
while read -r nombre url scaling; do
ID=$(cut -c 56-$lenght <<< $url)
img="$HOME/Pictures/.cache_wgengine/$ID.png"
nombre=$(printf '%-35s' "$nombre")
if [ -e "$img" ]; then
opciones_wallpapers=$opciones_wallpapers$nombre" ~ "$url" ~ "$scaling"\0icon\x1f$img\n"
else
opciones_wallpapers=$opciones_wallpapers$nombre" ~ "$url" ~ "$scaling"\0icon\x1f$not_found\n"
fi
done < ~/scripts/wallpapers_list.txt
wallpaper=$(echo -e "$opciones_wallpapers" | rofi -dmenu -p "$label_w" -theme ${dir}/${theme}.rasi )
if [ -z "$wallpaper" ]; then
exit 1
fi
IFS='~' read -r -a partes <<< "$wallpaper"
wallpaper=${partes[1]}
opc=${partes[0]}
scaling=${partes[2]}
wallpaper=$(echo "$wallpaper" | sed 's/^[ \t]*//;s/[ \t]*$//')
opc=$(echo "$opc" | sed 's/^[ \t]*//;s/[ \t]*$//')
#poner wallpaper al inicio del archivo de wallpapers
#primero eliminar fila
sed -i "/^$opc[[:space:]]/d" ~/scripts/wallpapers_list.txt
sed -i "1i$opc $wallpaper $scaling" ~/scripts/wallpapers_list.txt
if [ $opc == 'kill' ]; then
killall linux-wallpaperengine
sed -i "/^sh /c\sh ${setwallpaper} > /dev/null \&" "$wengine_setter"
sed -i "/^sh /c\sh ${setwallpaper} > /dev/null \&" "$wengine_setter_tema"
else
temp_mon=$( hyprctl monitors -j | jq -r '.[].name' )
while IFS= read -r line
do
ruta=$(grep "wallpaper = $line," $hyprpaper | cut -d',' -f2)
opciones_monitors="$opciones_monitors$line""\0icon\x1f$ruta\n"
done <<< "$temp_mon"
monitor=$( echo -e "$opciones_monitors" |rofi -dmenu -p "$label" -theme ${dir}/${theme}.rasi )
IFS='\0icon' read -r -a partes <<< "$monitor"
monitor=${partes[0]}
echo "MONITORES: "$monitor
if [ -z "$monitor" ]; then
exit 1
fi
echo "HACIENDO SED DE :>>>>>>>"$monitor
sed -i "/#${monitor} preload/{n;s|^sh .*|sh ${setwallpaper} ${wallpaper} ${monitor} ${scaling} > /dev/null \& |}" "$wengine_setter"
#sed -i "/#${monitor} preload/{n;s|^sh .*|sh ${setwallpaper} ${wallpaper} ${monitor} ${scaling} |}" "$wengine_setter_tema"
#PYWAL GENERATE
lenght=$(echo $wallpaper| wc -c)
workspace_ID=$(cut -c 56-$lenght <<< $wallpaper)
IMG_PATH=$HOME'/Pictures/.cache_wgengine/'$workspace_ID'.png'
if [ -e "$IMG_PATH" ]; then
echo "El archivo existe"
else
linux-wallpaperengine --bg $workspace_ID --screenshot $IMG_PATH > /dev/null &
sleep 3
echo "El archivo no existe"
echo "archivo creado>>>"$IMG_PATH
fi
sh $HOME/.config/ranger/set_wallpaper.sh $IMG_PATH $monitor
fi
killall linux-wallpaperengine
sh $wengine_setter