Compare commits

...

9 commits

6 changed files with 52 additions and 25 deletions

2
.config/go/env Normal file
View file

@ -0,0 +1,2 @@
GOBIN=/home/ohad/.local/state/go/bin
GOPATH=/home/ohad/.cache/go

View file

@ -1,5 +1,6 @@
[Unit] [Unit]
Description=Refresh the wallpaper using the NASA Astronomy Picture of the Day Description=Refresh the wallpaper using the NASA Astronomy Picture of the Day
After=network-online.target
Wants=get-nasa-apod.timer Wants=get-nasa-apod.timer
[Service] [Service]

View file

@ -1,9 +1,10 @@
[Unit] [Unit]
Description=Daily NASA wallpaper fetch Description=Daily NASA wallpaper fetch
After=network-online.target
Requires=get-nasa-apod.service Requires=get-nasa-apod.service
[Timer] [Timer]
Unit=nasa-apod.service Unit=get-nasa-apod.service
OnCalendar=daily OnCalendar=daily
[Install] [Install]

View file

@ -8,34 +8,47 @@ if [ "${API_KEY}" = "DEMO_KEY" ]; then
echo "No API key set! using demo key." echo "No API key set! using demo key."
fi fi
WALLPAPERS="$(systemd-path user)"/Wallpapers WALLPAPERS="$(systemd-path user)"/Pictures/nasa
mkdir --parents "${WALLPAPERS}" mkdir --parents "${WALLPAPERS}"
APOD_URL="https://api.nasa.gov/planetary/apod?api_key=${API_KEY}" APOD_URL="https://api.nasa.gov/planetary/apod?api_key=${API_KEY}"
response="$(curl --silent "${APOD_URL}")" echo "Fetching data from API"
response="$(curl --silent --write-out '{"rate-limit": %header{x-ratelimit-remaining}}' "${APOD_URL}" | jq --slurp add)"
echo "Received response from API"
# shellcheck disable=SC2005
echo "$(printf '%s' "${response}" | jq '.')"
echo "Parsing data"
picture_date="$(printf '%s' "${response}" | jq --raw-output .date)" picture_date="$(printf '%s' "${response}" | jq --raw-output .date)"
picture_url="$(printf '%s' "${response}" | jq --raw-output .hdurl)" picture_url="$(printf '%s' "${response}" | jq --raw-output .hdurl)"
rate_remaining="$(printf '%s' "${response}" | jq '."rate-limit"')"
echo "Remaining requests until rate limit: ${rate_remaining}"
echo "Generating output filename"
extension="${picture_url##*.}" extension="${picture_url##*.}"
filename="${picture_date}.${extension}" filename="${picture_date}.${extension}"
outfile="${WALLPAPERS}/${filename}" outfile="${WALLPAPERS}/${filename}"
if [ -f "${outfile}" ]; then if [ -f "${outfile}" ]; then
echo "Target file already exists" echo "Target file already exists"
exit 0 else
fi echo "Creating temporary file"
tempfile="$(mktemp)"
tempfile="$(mktemp)" echo "Fetching the daily picture"
curl \ curl \
--location \ --location \
--output "${tempfile}" \ --output "${tempfile}" \
--silent \ --silent \
"${picture_url}" "${picture_url}"
mv "${tempfile}" "${outfile}" echo "Transaction-like file update"
mv "${tempfile}" "${outfile}"
fi
echo "Updating the wallpaper image"
ln \ ln \
--force \ --force \
--symbolic \ --symbolic \
"${outfile}" \ "${outfile}" \
"${WALLPAPERS}/today" "${WALLPAPERS}/today"
echo "Refreshing the desktop background"
swaymsg output "*" bg "${SWAY_WALLPAPER}" fill swaymsg output "*" bg "${SWAY_WALLPAPER}" fill

View file

@ -1,4 +1,7 @@
#! /usr/bin/sh #! /usr/bin/bash
set -euo pipefail
IFS=$'\n\t'
REPO_ROOT_FILE="$(systemd-path user-state-private)"/repo-roots/repo-roots REPO_ROOT_FILE="$(systemd-path user-state-private)"/repo-roots/repo-roots
@ -12,18 +15,25 @@ sync_repo () {
repo=$1 repo=$1
echo git-sync "${repo}" echo git-sync "${repo}"
( cd "${repo}" && "$(systemd-path user-state-private)"/git-sync/git-sync sync ) ( cd "${repo}" && "$(systemd-path user-state-private)"/git-sync/git-sync sync ) || true
echo echo
} }
if [ "list" = "$1" ]; then case "${1:-sync}" in
"list")
while read -r repo_root; do while read -r repo_root; do
list_repos "${repo_root}" list_repos "${repo_root}"
done < "${REPO_ROOT_FILE}" done < "${REPO_ROOT_FILE}"
else ;;
"sync")
while read -r repo_root; do while read -r repo_root; do
for repo in $(list_repos "${repo_root}"); do for repo in $(list_repos "${repo_root}"); do
sync_repo "${repo}" sync_repo "${repo}"
done done
done < "${REPO_ROOT_FILE}" done < "${REPO_ROOT_FILE}"
fi ;;
*)
echo Unknown option \""$1"\"
exit 1
;;
esac

View file

@ -30,7 +30,7 @@ recording_filename() {
echo ~/Pictures/screenshots/recording-"$(ts)".mp4 echo ~/Pictures/screenshots/recording-"$(ts)".mp4
} }
if [ -z "$1" ]; then if [ -z "${1+exists}" ]; then
option=$(listopts | fuzzel --dmenu) option=$(listopts | fuzzel --dmenu)
else else
option="$1" option="$1"