aboutsummaryrefslogtreecommitdiff
path: root/extras
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-12-14 12:55:45 -0700
committerJosh Rahm <rahm@google.com>2022-12-14 12:56:36 -0700
commitd7f4e6cdc9693e58733f67168a1fe84f0c805507 (patch)
treef099adfed510e22ce851d030746bb6b80bffd213 /extras
parentc8b87f9bb5336ca4866d54b5bf468e55fece32c3 (diff)
downloadrde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.tar.gz
rde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.tar.bz2
rde-d7f4e6cdc9693e58733f67168a1fe84f0c805507.zip
Rewrite xmobar-weather in Haskell.
This adds a new binary that replaces the jenky Perl weather script. In addition this switches the weather source to wttr.in. Before it would always pull the weather from the same weather station, which is not what I want.
Diffstat (limited to 'extras')
-rwxr-xr-xextras/HOME/.xmonad/xmobar-weather103
1 files changed, 0 insertions, 103 deletions
diff --git a/extras/HOME/.xmonad/xmobar-weather b/extras/HOME/.xmonad/xmobar-weather
deleted file mode 100755
index b95fadb..0000000
--- a/extras/HOME/.xmonad/xmobar-weather
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/perl
-
-use Time::Local;
-use POSIX;
-
-$content = `curl https://ipinfo.io`;
-
-die "Unable to get IP info" unless defined $content;
-
-($city, $lat, $lon) =
- ($content =~ m/.*"city":\s+"([^"]+)".*"loc":\s+"(-?[0-9.]+),(-?[0-9.]+).*"/ims);
-
-$content = `curl "https://api.sunrise-sunset.org/json?lat=$lat&lng=$lon&formatted=0"`;
-
-die "Unable to get sunrise/sunset data" unless defined $content;
-
-if (length($content) == 0) {
- printf("<fc=#404040></fc> ");
- exit
-}
-
-$sunrise_str=$content;
-$sunset_str=$content;
-$sunrise_str =~ s#.*"sunrise":"([^"]*)".*#\1#;
-$sunset_str =~ s#.*"sunset":"([^"]*)".*#\1#;
-$current_str=strftime "%Y-%m-%dT%H:%M:%S+00:00", gmtime();
-
-$content = `curl "https://tgftp.nws.noaa.gov/data/observations/metar/decoded/KLMO.TXT"`;
-
-die "Unable to get weather data" unless defined $content;
-
-$sky_conditions = $content;
-$sky_conditions =~ s#.*Sky conditions:\s+([^\n]+).*#\1#ims;
-$sky_conditions =~ s#\s#_#g;
-
-$wind = $content;
-$wind =~ s#.*Wind:\s+([^\n]+).*#\1#ims;
-($wind_direction, $wind_speed) =
- ($wind =~ m/from the ([A-Z]+).*at (\d+) MPH.*/g);
-
-
-$temp = $content;
-$temp =~ s#.*Temperature:\s+(-?[0-9.]+) F.*#\1#ims;
-
-if ($current_str gt $sunrise_str and $current_str lt $sunset_str) {
- $is_day = 1;
-} else {
- $is_day = 0;
-}
-
-%directions = (
- NE => "",
- NNE => "",
- ENE => "",
- SE => "",
- SSE => "",
- ESE => "",
- NW => "",
- NNW => "",
- WNW => "",
- SW => "",
- SSW => "",
- WSW => "",
- N => "",
- S => "",
- W => "",
- E => "" );
-
-$dir=%directions{$wind_direction};
-
-%conditions_day = (
- clear => "<fc=#ddcf04></fc> ",
- sunny => "<fc=#ddcf04></fc> ",
- mostly_clear => "<fc=#00a3c4></fc> ",
- mostly_sunny => "<fc=#ddcf04></fc> ",
- partly_sunny => "<fc=#ddcf04></fc> ",
- fair => "<fc=#a0a0a0>🌑</fc> ",
- cloudy =>"<fc=#a0a0a0>摒</fc> ",
- overcast =>"<fc=#808080></fc> ",
- partly_cloudy => "<fc=#a0a0a0>杖</fc> ",
- mostly_cloudy => "<fc=#808080></fc> ",
- considerable_cloudiness => "<fc=#a0a0a0>ﭽ</fc> " );
-
-%conditions_night = (
- clear => "<fc=#00a3c4></fc> ",
- sunny => "<fc=#00a3c4></fc> ",
- mostly_clear => "<fc=#00a3c4></fc> ",
- mostly_sunny => "<fc=#00a3c4></fc> ",
- partly_sunny => "<fc=#00a3c4></fc> ",
- fair => "<fc=#808080>🌑</fc> ",
- cloudy =>"<fc=#808080>摒</fc> ",
- overcast =>"<fc=#404040></fc> ",
- partly_cloudy => "<fc=#a0a0a0></fc> ",
- mostly_cloudy => "<fc=#808080></fc> ",
- considerable_cloudiness => "<fc=#a0a0a0>ﭽ</fc> " );
-
-if ($is_day) {
- $conditions = %conditions_day{$sky_conditions};
-} else {
- $conditions = %conditions_night{$sky_conditions};
-}
-
-printf("<fc=#a0a0a0><fn=3>$city</fn> <fn=3>$dir</fn> <fn=3>${wind_speed}</fn></fc> <fn=8>$conditions</fn><fn=3><fc=#a0a0a0>%.0f°F</fc></fn>\n", $temp);