From 49485ded35d8affed2ece7b986a6f517c0806178 Mon Sep 17 00:00:00 2001 From: Shamus Taylor Date: Tue, 9 May 2023 18:01:43 -0500 Subject: [PATCH] Initial commit --- .gitignore | 1 + Makefile | 14 ++++++ src/DEBIAN/config | 6 +++ src/DEBIAN/control | 7 +++ src/DEBIAN/postinst | 18 ++++++++ src/DEBIAN/postrm | 8 ++++ src/DEBIAN/templates | 3 ++ src/etc/cron.d/nasa-apod-background | 2 + src/opt/nasa-apod-background/logrotate.config | 9 ++++ .../nasa-apod-background.fish | 44 +++++++++++++++++++ .../nasa-apod-background.xml | 22 ++++++++++ 11 files changed, 134 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100755 src/DEBIAN/config create mode 100644 src/DEBIAN/control create mode 100755 src/DEBIAN/postinst create mode 100755 src/DEBIAN/postrm create mode 100644 src/DEBIAN/templates create mode 100644 src/etc/cron.d/nasa-apod-background create mode 100644 src/opt/nasa-apod-background/logrotate.config create mode 100755 src/opt/nasa-apod-background/nasa-apod-background.fish create mode 100644 src/usr/share/gnome-background-properties/nasa-apod-background.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e19e72c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +nasa-apod-background.deb \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7033e57 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +nasa-apod-background.deb: $(wildcard src/**/*) + dpkg-deb --root-owner-group --build ./src nasa-apod-background.deb + +clean: + rm -f nasa-apod-background.deb +.PHONY: clean + +configure: + +.PHONY: configure + +install: nasa-apod-background.deb + apt-get install --reinstall ./nasa-apod-background.deb +.PHONY: install diff --git a/src/DEBIAN/config b/src/DEBIAN/config new file mode 100755 index 0000000..0b7fdf8 --- /dev/null +++ b/src/DEBIAN/config @@ -0,0 +1,6 @@ +#!/bin/sh -e + +. /usr/share/debconf/confmodule + +db_input critical nasa-apod-background/api_key || : +db_go diff --git a/src/DEBIAN/control b/src/DEBIAN/control new file mode 100644 index 0000000..5ccf833 --- /dev/null +++ b/src/DEBIAN/control @@ -0,0 +1,7 @@ +Package: nasa-apod-background +Version: 1.0.0 +Maintainer: Shamus +Description: Automatically set your background to the NASA picture of the day +Homepage: https://github.com/Shamus03/nasa-apod-background +Architecture: all +Depends: curl, debconf (>= 0.2.17), fish, imagemagick, jp, logrotate diff --git a/src/DEBIAN/postinst b/src/DEBIAN/postinst new file mode 100755 index 0000000..8c684e8 --- /dev/null +++ b/src/DEBIAN/postinst @@ -0,0 +1,18 @@ +#!/bin/sh -e + +. /usr/share/debconf/confmodule + +db_get nasa-apod-background/api_key + +mkdir -p /opt/nasa-apod-background +printf '%s' "$RET" > /opt/nasa-apod-background/api.key + +/usr/bin/fish /opt/nasa-apod-background/nasa-apod-background.fish + +pid="$(pgrep gnome-session)" +export DBUS_SESSION_BUS_ADDRESS="$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | cut -d= -f2-)" + +gsettings set org.gnome.desktop.background picture-uri file:///opt/nasa-apod-background/apod_desktop.jpg +gsettings set org.gnome.desktop.background picture-options wallpaper +gsettings set org.gnome.desktop.screensaver picture-uri file:///opt/nasa-apod-background/apod_lock.jpg +gsettings set org.gnome.desktop.screensaver picture-options wallpaper diff --git a/src/DEBIAN/postrm b/src/DEBIAN/postrm new file mode 100755 index 0000000..2839329 --- /dev/null +++ b/src/DEBIAN/postrm @@ -0,0 +1,8 @@ +#!/bin/sh -e + +if [ "$1" = "purge" -a -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + db_purge +fi + +rm -rf /opt/nasa-apod-background diff --git a/src/DEBIAN/templates b/src/DEBIAN/templates new file mode 100644 index 0000000..b5b2c61 --- /dev/null +++ b/src/DEBIAN/templates @@ -0,0 +1,3 @@ +Template: nasa-apod-background/api_key +Type: string +Description: Enter your NASA API key. Get one from https://api.nasa.gov/ diff --git a/src/etc/cron.d/nasa-apod-background b/src/etc/cron.d/nasa-apod-background new file mode 100644 index 0000000..fc72683 --- /dev/null +++ b/src/etc/cron.d/nasa-apod-background @@ -0,0 +1,2 @@ +0 * * * * root /usr/bin/fish /opt/nasa-apod-background/nasa-apod-background.fish >> /opt/nasa-apod-background/cron.log 2>&1 +1 * * * * root logrotate -s /opt/nasa-apod-background/logrotate.status /opt/nasa-apod-background/logrotate.config diff --git a/src/opt/nasa-apod-background/logrotate.config b/src/opt/nasa-apod-background/logrotate.config new file mode 100644 index 0000000..2d1c005 --- /dev/null +++ b/src/opt/nasa-apod-background/logrotate.config @@ -0,0 +1,9 @@ +/opt/nasa-apod-background/cron.log { + rotate 2 + olddir oldlogs + createolddir + dateext + size 100k + create + nocompress +} diff --git a/src/opt/nasa-apod-background/nasa-apod-background.fish b/src/opt/nasa-apod-background/nasa-apod-background.fish new file mode 100755 index 0000000..0248fcd --- /dev/null +++ b/src/opt/nasa-apod-background/nasa-apod-background.fish @@ -0,0 +1,44 @@ +#!/usr/bin/fish + +argparse --name=nasa-apod-background 'f/force' -- $argv +or return + +set config_dir /opt/nasa-apod-background +set date_file $config_dir/date.txt +set api_key_file $config_dir/api.key + +set img_full $config_dir/apod_full.jpg +set img_desktop $config_dir/apod_desktop.jpg +set img_lock $config_dir/apod_lock.jpg + +if not test -f $api_key_file + echo "Api key not found - please create a file $api_key_file containing your NASA API key" + exit 1 +end +set api_key (cat $api_key_file) + +set apod (curl -s "https://api.nasa.gov/planetary/apod?api_key=$api_key") +set apod_url (echo $apod | jp -u url) +set apod_hdurl (echo $apod | jp -u hdurl) +set apod_explanation (echo $apod | jp -u explanation) +set apod_date (echo $apod | jp -u date) + +set last_downloaded_date (cat $date_file 2>/dev/null) + +if string length -- $_flag_force; or test "$apod_date" != "$last_downloaded_date" + rm -f $date_file + if not wget -O $img_full $apod_hdurl + echo "HD image not found: $apod_hdurl" + echo "Will download low quality version" + wget -O $img_full $apod_url + end + + # Resize full image to fit screen + and convert -background black -resize 1920 -extent 1920x1080 -gravity center -quiet $img_full $img_desktop + + # Create captioned image for lock screen + and convert $img_desktop \( -background none -size 1920x -fill white -undercolor black -pointsize 20 caption:(string replace --all "'" "\'" $apod_explanation) \) -gravity southwest -compose over -composite $img_lock + + and echo $apod_date > $date_file +end + diff --git a/src/usr/share/gnome-background-properties/nasa-apod-background.xml b/src/usr/share/gnome-background-properties/nasa-apod-background.xml new file mode 100644 index 0000000..2540a2d --- /dev/null +++ b/src/usr/share/gnome-background-properties/nasa-apod-background.xml @@ -0,0 +1,22 @@ + + + + + NASA APOD + NASA APOD + /opt/nasa-apod-background/apod_desktop.jpg + zoom + solid + #ffffff + #000000 + + + NASA APOD (captioned) + NASA APOD (captioned) + /opt/nasa-apod-background/apod_lock.jpg + zoom + solid + #ffffff + #000000 + + \ No newline at end of file