diff options
| author | srdusr <trevorgray@srdusr.com> | 2024-01-15 16:11:55 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2024-01-15 16:11:55 +0200 |
| commit | 0bac058c53fdd9bc9089a83a3ad43d380f542fde (patch) | |
| tree | 305d13313c9b9cb5e680e23053f1a3c1d1d7f350 /.local/bin | |
| parent | aab673874ba7bb80cf6fb052bea0fff4582624eb (diff) | |
| download | dotfiles-0bac058c53fdd9bc9089a83a3ad43d380f542fde.tar.gz dotfiles-0bac058c53fdd9bc9089a83a3ad43d380f542fde.zip | |
Add .local/bin/nitrogen
Diffstat (limited to '.local/bin')
| -rwxr-xr-x | .local/bin/nitrogen | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/.local/bin/nitrogen b/.local/bin/nitrogen new file mode 100755 index 0000000..935e3d5 --- /dev/null +++ b/.local/bin/nitrogen @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Wrapper for nitrogen setting the freedesktop.org AccountsService/BackgroundFile so LightDM wallpaper is synced. +# Inspired by <https://rafaelc.org/posts/sync-wm-wallpaper-with-lightdm-on-linux-mint/> + +key_value_retriever(){ + KEY="${1}" + if [[ -z "${KEY}" ]]; then + printf "ERROR: KEY should not be empty\n" + return + fi + FILE="${2}" + if [[ ! -f "${FILE}" ]]; then + printf "ERROR: Cannot find FILE: %s\n" "${FILE}" + return + fi + VALUE_VARNAME="${3}" + if [[ -z "${VALUE_VARNAME}" ]]; then + printf "ERROR: VALUE_VARNAME should not be empty\n" + return + fi + MATCH=$(grep -m1 "^[[:space:]]*${KEY}=" "${FILE}") + INDEX_OF_FIRST_EQUAL=$(expr index "${MATCH}" =) + VALUE="${MATCH:${INDEX_OF_FIRST_EQUAL}}" + export "${VALUE_VARNAME}"="${VALUE}" +} + +/usr/bin/nitrogen "$@" +if [[ "${1:-}" == "--restore" ]]; then + exit $? +fi + +NITROGEN_BG_SAVED_CFG_FILE="${HOME}/.config/nitrogen/bg-saved.cfg" +if [[ ! -f "${NITROGEN_BG_SAVED_CFG_FILE}" ]]; then + printf "!ERROR! Cannot find NITROGEN_BG_SAVED_CFG_FILE[%s]\n" "${NITROGEN_BG_SAVED_CFG_FILE}" 1>&2 + exit 1 +fi + +key_value_retriever "file" "${NITROGEN_BG_SAVED_CFG_FILE}" "NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE" + +if [[ -z "${NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE}" ]]; then + printf "!ERROR! Cannot retrieve NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE from NITROGEN_BG_SAVED_CFG_FILE[%s]\n" "NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE" 1>&2 + exit 1 +fi + +if [[ ! -f "${NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE}" ]]; then + printf "!ERROR! Cannot find NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE[%s]\n" "${NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE}" 1>&2 + exit 1 +fi + +printf "Setting nitrogen background into freedesktop.org AccountsService...\n" +printf "NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE[%s]\n" "${NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE}" + +dbus-send \ + --print-reply \ + --system \ + --dest=org.freedesktop.Accounts \ + /org/freedesktop/Accounts/User$(id -u) \ + org.freedesktop.DBus.Properties.Set \ + string:org.freedesktop.DisplayManager.AccountsService \ + string:BackgroundFile \ + variant:string:"${NITROGEN_BG_SAVED_CFG_FIRST_BACKGROUND_FILE}" |
