2020-09-11 15:00:39 +00:00
|
|
|
#!/usr/bin/perl
|
|
|
|
|
|
|
|
# TODO: If gammastep is already running, allow location to update
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use LWP::UserAgent;
|
|
|
|
use JSON::XS;
|
|
|
|
|
|
|
|
my $location = "https://papillon.john.me.tz/data/location.json";
|
2021-07-27 05:25:41 +00:00
|
|
|
my $lat_lon = fetch_lat_lon($location);
|
2020-09-11 15:00:39 +00:00
|
|
|
|
|
|
|
my $pid = fork;
|
|
|
|
unless ($pid) {
|
2024-03-08 19:11:04 +00:00
|
|
|
open(my $fh, ">", $ENV{HOME}."/.local/state/gammastep.pid");
|
2023-01-06 19:41:31 +00:00
|
|
|
print $fh $$;
|
|
|
|
close($fh);
|
2024-03-08 19:11:04 +00:00
|
|
|
open($fh, ">", $ENV{HOME}."/.local/state/gammastep.status");
|
2023-01-06 19:41:31 +00:00
|
|
|
print $fh 1;
|
|
|
|
close($fh);
|
|
|
|
|
|
|
|
open STDIN, '/dev/null';
|
|
|
|
open STDOUT, '>>/dev/null';
|
|
|
|
open STDERR, '>>/dev/null';
|
|
|
|
|
2023-07-20 19:44:13 +00:00
|
|
|
exec "exec $ENV{HOME}/.dotfiles/nix/bin/gammastep -l $lat_lon -b 0.7:0.3";
|
2020-09-11 15:00:39 +00:00
|
|
|
}
|
|
|
|
|
2020-11-23 09:35:26 +00:00
|
|
|
sub fetch_lat_lon
|
|
|
|
{
|
2023-01-06 19:41:31 +00:00
|
|
|
my ($location) = shift;
|
2021-07-27 05:25:41 +00:00
|
|
|
|
2023-01-06 19:41:31 +00:00
|
|
|
my $ua = LWP::UserAgent->new();
|
|
|
|
my $json = JSON::XS->new();
|
2020-09-11 15:00:39 +00:00
|
|
|
|
2023-01-06 19:41:31 +00:00
|
|
|
my $raw = $ua->get($location)->content();
|
2021-07-27 05:25:41 +00:00
|
|
|
|
2023-01-06 19:41:31 +00:00
|
|
|
if (defined $raw) {
|
|
|
|
my $decoded = $json->decode($raw);
|
|
|
|
if (defined $decoded->{lat} && defined $decoded->{lon}) {
|
|
|
|
return "$decoded->{lat}:$decoded->{lon}";
|
2020-11-23 09:35:26 +00:00
|
|
|
}
|
2023-01-06 19:41:31 +00:00
|
|
|
}
|
|
|
|
sleep 5;
|
|
|
|
return fetch_lat_lon($ua, $json, $location);
|
2020-09-11 15:00:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
exit;
|