58 lines
3.9 KiB
Bash
Executable file
58 lines
3.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# ██╗ ██╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗
|
|
# ██║ ██║██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
|
# ██║ █╗ ██║███████║██║ ██║ ██████╔╝███████║██████╔╝█████╗ ██████╔╝
|
|
# ██║███╗██║██╔══██║██║ ██║ ██╔═══╝ ██╔══██║██╔═══╝ ██╔══╝ ██╔══██╗
|
|
# ╚███╔███╔╝██║ ██║███████╗███████╗██║ ██║ ██║██║ ███████╗██║ ██║
|
|
# ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝
|
|
#
|
|
# ██╗ █████╗ ██╗ ██╗███╗ ██╗ ██████╗██╗ ██╗███████╗██████╗
|
|
# ██║ ██╔══██╗██║ ██║████╗ ██║██╔════╝██║ ██║██╔════╝██╔══██╗
|
|
# ██║ ███████║██║ ██║██╔██╗ ██║██║ ███████║█████╗ ██████╔╝
|
|
# ██║ ██╔══██║██║ ██║██║╚██╗██║██║ ██╔══██║██╔══╝ ██╔══██╗
|
|
# ███████╗██║ ██║╚██████╔╝██║ ╚████║╚██████╗██║ ██║███████╗██║ ██║
|
|
# ╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
|
|
# originally written by: gh0stzk - https://github.com/gh0stzk/dotfiles
|
|
# rewritten for hyprland by : develcooking - https://github.com/develcooking/hyprland-dotfiles
|
|
# Info - This script runs the rofi launcher, to select
|
|
# the wallpapers included in the theme you are in.
|
|
|
|
|
|
|
|
# Set some variables
|
|
wall_dir="${HOME}/Pictures/wallpapers/"
|
|
cacheDir="${HOME}/.cache/images/${theme}"
|
|
rofi_command="rofi -x11 -dmenu -theme ${HOME}/.config/rofi/wallSelect.rasi -theme-str ${rofi_override}"
|
|
|
|
# Create cache dir if not exists
|
|
if [ ! -d "${cacheDir}" ] ; then
|
|
mkdir -p "${cacheDir}"
|
|
fi
|
|
|
|
|
|
physical_monitor_size=24
|
|
monitor_res=$(hyprctl monitors |grep -A2 Monitor |head -n 2 |awk '{print $1}' | grep -oE '^[0-9]+')
|
|
dotsperinch=$(echo "scale=2; $monitor_res / $physical_monitor_size" | bc | xargs printf "%.0f")
|
|
monitor_res=$(( $monitor_res * $physical_monitor_size / $dotsperinch ))
|
|
|
|
rofi_override="element-icon{size:${monitor_res}px;border-radius:0px;}"
|
|
|
|
# Convert images in directory and save to cache dir
|
|
for imagen in "$wall_dir"/*.{jpg,jpeg,png,webp}; do
|
|
if [ -f "$imagen" ]; then
|
|
nombre_archivo=$(basename "$imagen")
|
|
if [ ! -f "${cacheDir}/${nombre_archivo}" ] ; then
|
|
imagick -strip "$imagen" -thumbnail 500x500^ -gravity center -extent 500x500 "${cacheDir}/${nombre_archivo}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Select a picture with rofi
|
|
wall_selection=$(find "${wall_dir}" -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.webp" \) -exec basename {} \; | sort | while read -r A ; do echo -en "$A\x00icon\x1f""${cacheDir}"/"$A\n" ; done | $rofi_command)
|
|
|
|
# Set the wallpaper
|
|
[[ -n "$wall_selection" ]] || exit 1
|
|
swww img ${wall_dir}/${wall_selection}
|
|
|
|
exit 0
|
|
|