#!/bin/sh # Show a Doppler RADAR of a user's preferred location. secs=600 # Download a new doppler radar if one hasn't been downloaded in $secs seconds. radarloc="${XDG_CACHE_HOME:-$HOME/.cache}/radar" doppler="${XDG_CACHE_HOME:-$HOME/.cache}/doppler.gif" pickloc() { chosen="$(echo "US: CONUS: Continental United States US: Northeast US: Southeast US: PacNorthWest US: PacSouthWest US: UpperMissVly US: SouthMissVly US: SouthPlains US: NorthRockies US: SouthRockies US: Alaska US: Carib US: Hawaii US: CentGrLakes US: Conus-Large US: KABR: Aberdeen, SD US: KBIS: Bismarck, ND US: KFTG: Denver/Boulder, CO US: KDMX: Des Moines, IA US: KDTX: Detroit, MI US: KDDC: Dodge City, KS US: KDLH: Duluth, MN US: KCYS: Cheyenne, WY US: KLOT: Chicago, IL US: KGLD: Goodland, KS US: KUEX: Hastings, NE US: KGJX: Grand Junction, CO US: KGRR: Grand Rapids, MI US: KMVX: Fargo/Grand Forks, ND US: KGRB: Green Bay, WI US: KIND: Indianapolis, IN US: KJKL: Jackson, KY US: KARX: La Crosse, WI US: KILX: Lincoln/Central Illinois, IL US: KLVX: Louisville, KY US: KMQT: Marquette US: KMKX: Milwaukee, WI US: KMPX: Minneapolis, MN US: KAPX: Gaylord/Alpena, MI US: KLNX: North Platte, NE US: KIWX: N. Webster/Northern, IN US: KOAX: Omaha, NE US: KPAH: Paducah, KY US: KEAX: Pleasant Hill, MO US: KPUX: Pueblo, CO US: KDVN: Quad Cities, IA US: KUDX: Rapid City, SD US: KRIW: Riverton, WY US: KSGF: Springfield, MO US: KLSX: St. LOUIS, MO US: KFSD: Sioux Falls, SD US: KTWX: Topeka, KS US: KICT: Wichita, KS US: KVWX: Paducah, KY US: ICAO: Responsible Wfo US: KLTX: WILMINGTON, NC US: KCCX: State College/Central, PA US: KLWX: Sterling, VA US: KFCX: Blacksburg/Roanoke, VA US: KRAX: Raleigh/Durham, NC US: KGYX: Portland, ME US: KDIX: Mt Holly/Philadelphia, PA US: KPBZ: Pittsburgh, PA US: KAKQ: Wakefield, VA US: KMHX: Morehead City, NC US: KGSP: Greer/Greenville/Sprtbg, SC US: KILN: Wilmington/Cincinnati, OH US: KCLE: Cleveland, OH US: KCAE: Columbia, SC US: KBGM: Binghamton, NY US: KENX: Albany, NY US: KBUF: Buffalo, NY US: KCXX: Burlington, VT US: KCBW: Caribou, ME US: KBOX: Boston /Taunton, MA US: KOKX: New York City, NY US: KCLX: Charleston, SC US: KRLX: Charleston, WV US: ICAO: Responsible WFO US: KBRO: Brownsville, TX US: KABX: Albuquerque, NM US: KAMA: Amarillo, TX US: KFFC: Peachtree City/Atlanta, GA US: KEWX: Austin/Sanantonio, TX US: KBMX: Birmingham, AL US: KCRP: Corpus Christi, TX US: KFWS: Dallas / Ft. Worth, TX US: KEPZ: El Paso, TX US: KHGX: Houston/ Galveston, TX US: KJAX: Jacksonville, FL US: KBYX: Key West, FL US: KMRX: Morristown/knoxville, TN US: KLBB: Lubbock, TX US: KLZK: Little Rock, AR US: KLCH: Lake Charles, LA US: KOHX: Nashville, TN US: KMLB: Melbourne, FL US: KNQA: Memphis, TN US: KAMX: Miami, FL US: KMAF: Midland/odessa, TX US: KTLX: Norman, OK US: KHTX: Huntsville, AL US: KMOB: Mobile, AL US: KTLH: Tallahassee, FL US: KTBW: Tampa Bay Area, FL US: KSJT: San Angelo, TX US: KINX: Tulsa, OK US: KSRX: Tulsa, OK US: KLIX: New Orleans/slidell, LA US: KDGX: Jackson, MS US: KSHV: Shreveport, LA US: ICAO: Responsible WFO US: KLGX: Seattle / Tacoma, WA US: KOTX: Spokane, WA US: KEMX: Tucson, AZ US: KYUX: Phoenix, AZ US: KNKX: San Diego, CA US: KMUX: Monterey/san Francisco, CA US: KHNX: San Joaquin/hanford, CA US: KSOX: San Diego, CA US: KATX: Seattle / Tacoma, WA US: KIWA: Phoenix, AZ US: KRTX: Portland, OR US: KSFX: Pocatello, ID US: KRGX: Reno, NV US: KDAX: Sacramento, CA US: KMTX: Salt Lake City, UT US: KPDT: Pendleton, OR US: KMSX: Missoula, MT US: KESX: Las Vegas, NV US: KVTX: Los Angeles, CA US: KMAX: Medford, OR US: KFSX: Flagstaff, AZ US: KGGW: Glasgow, MT US: KLRX: Elko, NV US: KBHX: Eureka, CA US: KTFX: Great Falls, MT US: KCBX: Boise, ID US: KBLX: Billings, MT US: KICX: Salt Lake City, UT US: ICAO: Responsible Wfo W/ MSCF US: PABC: Anchorage, AK US: PAPD: Fairbanks, AK US: PHKM: Honolulu, HI US: PAHG: Anchorage, AK US: PAKC: Anchorage, AK US: PAIH: Anchorage, AK US: PHMO: Honolulu, HI US: PAEC: Fairbanks, AK US: TJUA: San Juan, PR US: PACG: Juneau, AK US: PHKI: Honolulu, HI US: PHWA: Honolulu, HI US: ICAO: Responsible Wfo W/ MSCF US: KFDR: Norman, OK US: PGUA: Guam US: KBBX: Sacramento, CA US: KFDX: Albuquerque, NM US: KGWX: Jackson, MS US: KDOX: Wakefield, VA US: KDYX: San Angelo, TX US: KEYX: Las Vegas, NV US: KEVX: Mobile, AL US: KHPX: Paducah, KY US: KTYX: Burlington, VT US: KGRK: Dallas / Ft. Worth, TX US: KPOE: Lake Charles, LA US: KEOX: Tallahassee, FL US: KHDX: El Paso, TX US: KDFX: San Antonio, TX US: KMXX: Birmingham, AL US: KMBX: Bismarck, ND US: KVAX: Jacksonville, FL US: KJGX: Peachtree City/atlanta, GA US: KVNX: Norman, OK US: KVBX: Vandenberg Afb: Orcutt, CA DE: BAW: Baden-Württemberg DE: BAY: Bavaria DE: BBB: Berlin DE: BBB: Brandenburg DE: HES: Hesse DE: MVP: Mecklenburg-Western Pomerania DE: NIB: Lower Saxony DE: NIB: Bremen DE: NRW: North Rhine-Westphalia DE: RPS: Rhineland-Palatinate DE: RPS: Saarland DE: SAC: Saxony DE: SAA: Saxony-Anhalt DE: SHH: Schleswig-Holstein DE: SHH: Hamburg DE: THU: Thuringia NL: The Netherlands" | tofi --prompt-text "Select a radar to use as default:")" # Ensure user did not escape. [ -z "$chosen" ] && exit 1 # Set country code and radar code. countrycode=${chosen%%:*} radarcode=${chosen#* } radarcode=${radarcode%:*} # Print codes to $radarloc file. printf "%s,%s\\n" "$countrycode" "$radarcode" > "$radarloc" ;} getdoppler() { country=$(cut -c -2 "$radarloc") province=$(cut -c 4- "$radarloc") notify-send "🌦️ Doppler RADAR" "Pulling most recent Doppler RADAR for $province." case "$country" in "US") province="$(echo "$province" | tr "[:lower:]" "[:upper:]")" curl -sL "https://radar.weather.gov/ridge/standard/${province}_loop.gif" > "$doppler" ;; "DE") province="$(echo "$province" | tr "[:upper:]" "[:lower:]")" curl -sL "https://www.dwd.de/DWD/wetter/radar/radfilm_${province}_akt.gif" > "$doppler" ;; "NL") curl -sL "https://cdn.knmi.nl/knmi/map/general/weather-map.gif" > "$doppler" ;; esac } showdoppler() { setsid -f mpv --no-osc --loop=inf --no-terminal "$doppler" ;} pickloc && getdoppler && showdoppler