#!/bin/bash # Ocean Heat Content Index # Tracks integrated ocean heat from Climate Reanalyzer # Alias: ohc export DISPLAY=:0 # NOAA Coral Reef Watch SST URLs (working) # Note: NOAA only provides anomaly maps, not raw SST url_sst_anom="https://coralreefwatch.noaa.gov/data_current/5km/v3.1_op/daily/png/ct5km_ssta_v3.1_global_current.png" url_sst_pacific="https://coralreefwatch.noaa.gov/data_current/5km/v3.1_op/daily/png/ct5km_ssta_v3.1_pacific_current.png" url_sst_atlantic="https://coralreefwatch.noaa.gov/data_current/5km/v3.1_op/daily/png/ct5km_ssta_v3.1_satlantic_current.png" url_sst_indian="https://coralreefwatch.noaa.gov/data_current/5km/v3.1_op/daily/png/ct5km_ssta_v3.1_indian_current.png" # NOAA CPC ENSO/Nino monitoring url_sst_nino="https://www.cpc.ncep.noaa.gov/products/analysis_monitoring/enso_update/sstweek_c.gif" # Cache locations cache_dir="$HOME/.cache/maritime/ohc" cache_sst_anom="$cache_dir/sst_anom.png" cache_sst_nino="$cache_dir/sst_nino.gif" cache_sst_pacific="$cache_dir/sst_pacific.png" cache_sst_atlantic="$cache_dir/sst_atlantic.png" cache_sst_indian="$cache_dir/sst_indian.png" # Ensure cache dir exists mkdir -p "$cache_dir" # Update all data update() { echo "Fetching ocean heat content data..." curl -sLo "$cache_sst_anom" "$url_sst_anom" & curl -sLo "$cache_sst_nino" "$url_sst_nino" & curl -sLo "$cache_sst_pacific" "$url_sst_pacific" & curl -sLo "$cache_sst_atlantic" "$url_sst_atlantic" & curl -sLo "$cache_sst_indian" "$url_sst_indian" & wait notify-send -t 3000 -i "$cache_sst_anom" "Ocean Heat Updated" "All data refreshed from NOAA" } # Show specific visualization show() { local target="$cache_sst_anom" local title="SST Anomaly - Global" case "$1" in global|g|anom*|a|"") target="$cache_sst_anom" title="SST Anomaly - Global" ;; nino|enso|n) target="$cache_sst_nino" title="Nino 3.4 Region SST" ;; atlantic|atl) target="$cache_sst_atlantic" title="Atlantic SST Anomaly" ;; pacific|pac) target="$cache_sst_pacific" title="Pacific SST Anomaly" ;; indian|ind) target="$cache_sst_indian" title="Indian Ocean SST Anomaly" ;; esac setsid -f mpv --title="$title" --autofit=70% "$target" } # Show all in slideshow show_all() { setsid -f mpv --title="Ocean Heat Content Overview" --idle --autofit=60% \ --loop-playlist --image-display-duration=5 \ "$cache_sst_anom" "$cache_sst_nino" \ "$cache_sst_pacific" "$cache_sst_atlantic" "$cache_sst_indian" } # Display help help() { cat << EOF Ocean Heat Content Index Usage: ohc [OPTION] Options: update, u Update all ocean heat data show, s [TYPE] Show specific visualization: global, g Global SST anomaly (default) nino, n Nino 3.4 region (ENSO indicator) atlantic, atl Atlantic SST anomaly pacific, pac Pacific SST anomaly indian, ind Indian Ocean SST anomaly all Show all visualizations help, h Show this help Data Source: NOAA Coral Reef Watch 5km SST NOAA CPC ENSO Monitoring Key Indicators: - Global SST anomaly shows deviation from baseline - Nino 3.4 is primary ENSO (El Nino/La Nina) indicator - Warm anomalies indicate ocean heat content trends EOF } # Status bar output tobar() { echo "OHC" } # Handle arguments case "$1" in u*) update ;; show|s) shift; show "$1" ;; all|a) show_all ;; h*|--help) help ;; "") tobar ;; *) show "$1" ;; esac # Status bar click handlers case $BLOCK_BUTTON in 1) notify-send -t 60000 -i "$cache_sst_anom" "Ocean Heat - SST Anomaly" "Global sea surface temperature anomaly vs 1982-2011 baseline" ;; 2) update ;; 3) notify-send -t 60000 -i "$cache_ts_world" "Ocean Heat - Time Series" "Historical SST trends" ;; 4) show "nino" ;; 5) show "ts" ;; 6) setsid -f "$TERMINAL" -e "$EDITOR" "$0" ;; esac