summaryrefslogtreecommitdiff
path: root/bin/system-theme
diff options
context:
space:
mode:
Diffstat (limited to 'bin/system-theme')
-rwxr-xr-xbin/system-theme29
1 files changed, 29 insertions, 0 deletions
diff --git a/bin/system-theme b/bin/system-theme
new file mode 100755
index 0000000..862b243
--- /dev/null
+++ b/bin/system-theme
@@ -0,0 +1,29 @@
+#!/usr/bin/env sh
+# Switch the COSMIC desktop between light and dark mode, and optionally the
+# wallpaper with it: set SYSTEM_THEME_WALLPAPER_DARK and
+# SYSTEM_THEME_WALLPAPER_LIGHT to image files. Emacs's auto-dark follows the
+# desktop's mode on its own. On another desktop, this is the file to rewrite.
+
+COSMIC="${XDG_CONFIG_HOME:-$HOME/.config}/cosmic"
+
+set_wallpaper() {
+ [ -n "$1" ] || return 0
+ wallpaper="$(realpath "$1")" || return 1
+ sed -i 's|^.*source: Path(".*"),$| source: Path("'"$wallpaper"'"),|' \
+ "$COSMIC/com.system76.CosmicBackground/v1/all"
+}
+
+case "$1" in
+ dark)
+ echo "true" > "$COSMIC/com.system76.CosmicTheme.Mode/v1/is_dark"
+ set_wallpaper "${SYSTEM_THEME_WALLPAPER_DARK:-}"
+ ;;
+ light)
+ echo "false" > "$COSMIC/com.system76.CosmicTheme.Mode/v1/is_dark"
+ set_wallpaper "${SYSTEM_THEME_WALLPAPER_LIGHT:-}"
+ ;;
+ *)
+ echo "usage: system-theme dark|light" >&2
+ exit 1
+ ;;
+esac