Files

93 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/env bash
WORK_DIR="$HOME/.config/scripts/live-earth-wallpaper"
OUTPUT_IMG_DIR="$WORK_DIR"
IMG_DIR="$WORK_DIR/images"
MAP_DIR="$IMG_DIR/maps"
OUTPUT_RENDER_DIR="$IMG_DIR/renders"
CLOUD_SRC_IMG="$MAP_DIR/clouds-alpha.jpg"
OUTPUT_IMG_ULTRAWIDE="$OUTPUT_RENDER_DIR/DP-2-render.png"
OUTPUT_IMG_EDP="$OUTPUT_RENDER_DIR/eDP-1-render.png"
OUTPUT_IMG_ULTRAWIDE_NATIVE="$OUTPUT_RENDER_DIR/blue-ULTRAWIDE-native.png"
# OUTPUT_IMG_STARFNATIVE="$OUTPUT_IMG_DIR/stars-native.png"
STARS_FILE="/usr/share/xplanet/stars/BSC"
STATIONS_TLE="$WORK_DIR/stations.tle"
STATIONS_FINAL="$WORK_DIR/stations"
ULTRAWIDE_RES_NATIVE="3840x1080"
ULTRAWIDE_RES_FINAL="10240x2880"
source functions.sh
cd "$WORK_DIR" || exit 1
# TODO make this sometihng like fetchCloudFile or something and have it return a path (functionally)
downloadClouds "$CLOUD_SRC_IMG" || exit # Download latest clouds image or exit with error
# downloadStations # Download latest stations data
cacheImages "eDP-1" "$OUTPUT_RENDER_DIR" # Check for existing images and cache them if they exist
cacheImages "DP-2" "$OUTPUT_RENDER_DIR" # Check for existing images and cache them if they exist
# TODO handle errors here
# Render Planets Centered on Tuscaloosa
# TODO udpate with current long and lat
# xplanet -num_times 1 -output "$OUTPUT_IMG_ULTRAWIDE" -geometry "3840x1080" -config xplanet.conf -longitude -87.56 -latitude 33.21
PROJECTIONS=(
azimuthal
mollweid
peters
polyconic
)
RENDER_FLAGS=(
-num_times 1
-config xplanet.conf
-longitude -87.56
-latitude 33.21
-radius 40
-range 2
# -projection "${PROJECTIONS[1]}"
-starfreq 0.005
-starmap BSC
-base_magnitude 12
# -separation moon:45
# -body moon
# -glare 30
)
# TODO: make the rest of this functional and handle errors better, maybe even make it a function that takes the monitor name and resolution as args
echo Rendering wallpapers...
monitors="$(connectedMonitors)"
if [[ "$monitors" == *"DP-2"* ]]; then
echo "Ultrawide monitor detected"
# Render the ultrawide wallpaper at native resolution and then supersample it to a higher resolution for better quality while maintaining relative starmap
xplanet "${RENDER_FLAGS[@]}" \
-output "$OUTPUT_IMG_ULTRAWIDE_NATIVE" \
-geometry "$ULTRAWIDE_RES_NATIVE" \
-base_magnitude 12 \
&& echo render ultrawide native resolution wallpaper successful || exit 1 #echo Error: failed to render ultrawide wallpaper at native resolution
xplanet "${RENDER_FLAGS[@]}" \
-output "$OUTPUT_IMG_ULTRAWIDE" \
-geometry "$ULTRAWIDE_RES_FINAL" \
-background "$OUTPUT_IMG_ULTRAWIDE_NATIVE" \
&& echo render ultrawide wallpaper superize successful || exit 1 # echo Error: failed to render ultrawide wallpaper at super resolution
noctalia msg wallpaper-set DP-2 "$OUTPUT_IMG_ULTRAWIDE" 1>/dev/null && echo ultrawide wallpaper set successfully || echo Warning: not connected to monitor DP-2, wallpaper will not be set.
rm "$OUTPUT_IMG_ULTRAWIDE_NATIVE" # Remove the native resolution image after the supersampled image is created
rm "$OUTPUT_IMG_ULTRAWIDE.tmp" # Remove the cached image after the new image is created
fi
if [[ "$monitors" == *"eDP-1"* ]]; then # TODO: technicall no if statement needed here, should be functional tho
echo "Builtin monitor detected"
# Render Builtin Wallpaper
xplanet "${RENDER_FLAGS[@]}" \
-output "$OUTPUT_IMG_EDP" \
-geometry "2560x1600" \
&& echo render builtin wallpaper successful || exit 1 # echo Error: failed to render builtin wallpaper
noctalia msg wallpaper-set eDP-1 "$OUTPUT_IMG_EDP" 1>/dev/null && echo builtin wallpaper set successfully || echo Warning: not connected to monitor eDP-1, wallpaper will not be set.
rm "$OUTPUT_IMG_EDP.tmp" # Remove the cached image after the new image is created
fi