diff --git a/platform_profile b/platform_profile new file mode 100755 index 0000000..de7d6fc --- /dev/null +++ b/platform_profile @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail + +case "${1}" in + get) + head -c1 /sys/firmware/acpi/platform_profile | tr '[:lower:]' '[:upper:]' + ;; + toggle) + current="$(cat /sys/firmware/acpi/platform_profile)" + choices="$(cat /sys/firmware/acpi/platform_profile_choices)" + next="$(echo "${choices} ${choices}" | tr \ \\n | grep -A1 "${current}" | tail -n+2 | head -n1)" + echo "${next}" | sudo tee /sys/firmware/acpi/platform_profile +esac diff --git a/toggle_displays.clj b/toggle_displays.clj new file mode 100755 index 0000000..c12a079 --- /dev/null +++ b/toggle_displays.clj @@ -0,0 +1,54 @@ +#!/usr/bin/env -S bb +(ns toggle-displays + (:require [clojure.edn :as edn] + [clojure.java.io :as io] + [clojure.java.shell :refer [sh]] + [babashka.fs :as fs])) + +(def state-file + (fs/path + (System/getenv "XDG_RUNTIME_DIR") + (str (fs/file-name (or (System/getProperty "babashka.file") *file*)) ".state"))) + +(defn get-state! + [] + (if (fs/exists? state-file) + (some->> + (->> state-file + fs/unixify + io/reader + java.io.PushbackReader. + edn/read)) + (some->> + (sh "journalctl" "--user" "--unit" "kanshi.service" "--reverse" "--lines" "1") + ;; {:exit 0, :out "Mar 06 07:39:48 aegir kanshi[3318847]: configuration for profile 'kvm-1' applied\n", :err ""} + :out + (re-find #"configuration for profile '(.+?)' applied") + (second) + (keyword)))) + +(defn save-state! + [state] + (spit (fs/unixify state-file) state)) + +(defn apply-state! + [state] + (sh "kanshictl" "switch" (name state))) + +(defn next-state + [state] + (let [modes (apply concat (repeat 2 [:kvm-left + :kvm-right + :single]))] + (nth modes (inc (.indexOf modes state))))) + +(defn -main + [& [toggle?]] + (when toggle? + (let [state (get-state!) + state* (next-state state)] + (apply-state! state*) + (save-state! state*)))) + +(when (= *file* (System/getProperty "babashka.file")) + (apply -main *command-line-args*)) diff --git a/toggle_theme b/toggle_theme index a937b34..f308e16 100755 --- a/toggle_theme +++ b/toggle_theme @@ -8,11 +8,11 @@ (def themes {:light {:emacs "doom-oksolar-light" :gnome "Adwaita" - :kitty "doom-oksolar-light"} + :kitty "Doom OKsolar Light"} :dark {:emacs "doom-opera" :gnome "Adwaita-dark" - :kitty "Solarized Darcula"}}) + :kitty "Default"}}) (def theme-preferences ["gtk" diff --git a/ymmw b/ymmw new file mode 100644 index 0000000..2f9f85f --- /dev/null +++ b/ymmw @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +"""Re-format YAML passed on stdin or read from any arguments.""" + +import yaml +import sys + + +# https://stackoverflow.com/a/72265455 +def str_presenter(dumper, data): + if len(data.splitlines()) > 1 or "\n" in data: + text_list = [line.rstrip() for line in data.splitlines()] + fixed_data = "\n".join(text_list) + return dumper.represent_scalar("tag:yaml.org,2002:str", fixed_data, style="|") + return dumper.represent_scalar("tag:yaml.org,2002:str", data) + + +yaml.add_representer(str, str_presenter) + + +def ymmw(files): + if not files: + files=[sys.stdin] + + for f in files: + try: + print(f) + print(yaml.dump(yaml.load(open(f) if not f == sys.stdin else f, Loader=yaml.FullLoader)), end='') + except OSError as ex: + sys.exit(f"""ERROR: Couldn't read input from stdin, or couldn't write output to stdout. Exiting. + +{ex}""") + +if __name__ == '__main__': + ymmw(sys.argv[1:])