100 lines
3.8 KiB
Bash
Executable file
100 lines
3.8 KiB
Bash
Executable file
#!/bin/bash
|
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
|
|
# Wallpaper Effects using ImageMagick (SUPER SHIFT W)
|
|
|
|
# Variables
|
|
current_wallpaper="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
|
|
wallpaper_output="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified"
|
|
SCRIPTSDIR="$HOME/.config/hypr/scripts"
|
|
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
|
|
|
|
# Directory for swaync
|
|
iDIR="$HOME/.config/swaync/images"
|
|
|
|
# swww transition config
|
|
FPS=60
|
|
TYPE="wipe"
|
|
DURATION=2
|
|
BEZIER=".43,1.19,1,.4"
|
|
SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION"
|
|
|
|
# Define ImageMagick effects
|
|
declare -A effects=(
|
|
["No Effects"]="no-effects"
|
|
["Black & White"]="magick $current_wallpaper -colorspace gray -sigmoidal-contrast 10,40% $wallpaper_output"
|
|
["Blurred"]="magick $current_wallpaper -blur 0x10 $wallpaper_output"
|
|
["Charcoal"]="magick $current_wallpaper -charcoal 0x5 $wallpaper_output"
|
|
["Edge Detect"]="magick $current_wallpaper -edge 1 $wallpaper_output"
|
|
["Emboss"]="magick $current_wallpaper -emboss 0x5 $wallpaper_output"
|
|
["Negate"]="magick $current_wallpaper -negate $wallpaper_output"
|
|
["Oil Paint"]="magick $current_wallpaper -paint 4 $wallpaper_output"
|
|
["Posterize"]="magick $current_wallpaper -posterize 4 $wallpaper_output"
|
|
["Polaroid"]="magick $current_wallpaper -polaroid 0 $wallpaper_output"
|
|
["Sepia Tone"]="magick $current_wallpaper -sepia-tone 65% $wallpaper_output"
|
|
["Solarize"]="magick $current_wallpaper -solarize 80% $wallpaper_output"
|
|
["Sharpen"]="magick $current_wallpaper -sharpen 0x5 $wallpaper_output"
|
|
["Vignette"]="magick $current_wallpaper -vignette 0x5 $wallpaper_output"
|
|
["Zoomed"]="magick $current_wallpaper -gravity Center -extent 1:1 $wallpaper_output"
|
|
)
|
|
|
|
# Function to apply no effects
|
|
no-effects() {
|
|
swww img -o "$focused_monitor" "$current_wallpaper" $SWWW_PARAMS &&
|
|
# Wait for swww command to complete
|
|
wait $!
|
|
# Run other commands after swww
|
|
wallust run "$current_wallpaper" -s &&
|
|
wait $!
|
|
# Refresh rofi, waybar, wallust palettes
|
|
sleep 2
|
|
"$SCRIPTSDIR/Refresh.sh"
|
|
|
|
notify-send -u low -i "$iDIR/bell.png" "No wallpaper" "effects applied"
|
|
# copying wallpaper for rofi menu
|
|
cp "$current_wallpaper" "$wallpaper_output"
|
|
}
|
|
|
|
# Function to run rofi menu
|
|
main() {
|
|
# Populate rofi menu options
|
|
options=("No Effects")
|
|
for effect in "${!effects[@]}"; do
|
|
[[ "$effect" != "No Effects" ]] && options+=("$effect")
|
|
done
|
|
|
|
# Show rofi menu and handle user choice
|
|
choice=$(printf "%s\n" "${options[@]}" | LC_COLLATE=C sort | rofi -dmenu -p "Choose effect" -i -config ~/.config/rofi/config-wallpaper-effect.rasi)
|
|
|
|
# Process user choice
|
|
if [[ -n "$choice" ]]; then
|
|
if [[ "$choice" == "No Effects" ]]; then
|
|
no-effects
|
|
elif [[ "${effects[$choice]+exists}" ]]; then
|
|
# Apply selected effect
|
|
notify-send -u normal -i "$iDIR/bell.png" "Applying:" "$choice effects"
|
|
eval "${effects[$choice]}"
|
|
# Wait for effects to be applied
|
|
sleep 1
|
|
# Execute swww command after image conversion
|
|
swww img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS &
|
|
# Wait for swww command to complete
|
|
sleep 2
|
|
# Wait for other commands to finish
|
|
wallust run "$wallpaper_output" -s &
|
|
# Wait for other commands to finish
|
|
sleep 0.5
|
|
# Refresh rofi, waybar, wallust palettes
|
|
"${SCRIPTSDIR}/Refresh.sh"
|
|
notify-send -u low -i "$iDIR/bell.png" "$choice" "effects applied"
|
|
else
|
|
echo "Effect '$choice' not recognized."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Check if rofi is already running and kill it
|
|
if pidof rofi > /dev/null; then
|
|
pkill rofi
|
|
fi
|
|
|
|
main
|