67 lines
2 KiB
Clojure
Executable file
67 lines
2 KiB
Clojure
Executable file
#!/usr/bin/env bb
|
|
(ns toggle-theme
|
|
"Script to toggle between light and dark themes. Inspired by
|
|
https://github.com/pedrocr/dotfiles/blob/master/.config/sway/envsetup."
|
|
(:require [clojure.java.shell :refer [sh]]
|
|
[babashka.fs :as fs]))
|
|
|
|
(def themes
|
|
{:light {:emacs "doom-oksolar-light"
|
|
:gnome "Adwaita"
|
|
:kitty "Doom OKsolar Light"}
|
|
|
|
:dark {:emacs "doom-opera"
|
|
:gnome "Adwaita-dark"
|
|
:kitty "Default"}})
|
|
|
|
(def theme-preferences
|
|
["gtk"
|
|
"icon"
|
|
"cursor"])
|
|
|
|
(defn current-theme
|
|
[]
|
|
(if (re-find #"dark" (->> (sh "gsettings" "get" "org.gnome.desktop.interface" "color-scheme")
|
|
:out))
|
|
:dark
|
|
:light))
|
|
|
|
(defn next-theme
|
|
[]
|
|
(if (= :dark (current-theme))
|
|
:light
|
|
:dark))
|
|
|
|
(case (some->> *command-line-args*
|
|
first)
|
|
"get" (println (name (current-theme)))
|
|
|
|
"toggle"
|
|
(let [next-scheme (next-theme)
|
|
next-themes (next-scheme themes)
|
|
gnome-theme (:gnome next-themes)]
|
|
;; https://askubuntu.com/questions/1464937/inconsistent-dark-theme-for-gtk-apps-on-23-04
|
|
;;
|
|
;; $ gsettings get org.gnome.desktop.interface color-scheme
|
|
;; 'prefer-dark'
|
|
;; $ gsettings get org.gnome.desktop.interface gtk-theme
|
|
;; 'Yaru-dark'
|
|
;; $ gsettings get org.gnome.desktop.wm.preferences theme
|
|
;; 'Yaru-dark'
|
|
|
|
;; [["org.gnome.desktop.interface" "gtk-theme"]
|
|
;; ["org.gnome.desktop.wm.preferences" "theme"]]
|
|
|
|
(run!
|
|
#(sh "gsettings" "set" "org.gnome.desktop.interface" (str % "-theme") gnome-theme)
|
|
theme-preferences)
|
|
(sh "gsettings" "set" "org.gnome.desktop.interface" "color-scheme" (str "prefer-" (name next-scheme)))
|
|
(sh "gsettings" "set" "org.gnome.desktop.wm.preferences" "theme" gnome-theme)
|
|
|
|
(run!
|
|
#(sh "emacsclient" "--socket-name" % "--eval" (str "(load-theme '" (:emacs next-themes) ")"))
|
|
(map str (fs/list-dir (fs/file (System/getenv "XDG_RUNTIME_DIR") "emacs"))))
|
|
(sh "kitty" "+kitten" "themes" "--reload-in=all" (:kitty next-themes))
|
|
nil)
|
|
|
|
false)
|