From 4c1d73153288e2f41a5ff039fa74fb635f3e0231 Mon Sep 17 00:00:00 2001 From: Rune Juhl Jacobsen Date: Tue, 28 Jan 2025 23:44:25 +0100 Subject: [PATCH 1/4] add Intel platform_profile toggle script --- platform_profile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100755 platform_profile diff --git a/platform_profile b/platform_profile new file mode 100755 index 0000000..22cebd8 --- /dev/null +++ b/platform_profile @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +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 From e0068dacee8ba87138e71a8c9f42f1e11f696102 Mon Sep 17 00:00:00 2001 From: Rune Juhl Jacobsen Date: Mon, 28 Apr 2025 10:14:17 +0200 Subject: [PATCH 2/4] [platform_profile] remove debugging --- platform_profile | 1 - 1 file changed, 1 deletion(-) diff --git a/platform_profile b/platform_profile index 22cebd8..de7d6fc 100755 --- a/platform_profile +++ b/platform_profile @@ -1,6 +1,5 @@ #!/usr/bin/env bash set -euo pipefail -set -x case "${1}" in get) From e6af9de435260080e212622196b7c5b8bba11dc9 Mon Sep 17 00:00:00 2001 From: Rune Juhl Jacobsen Date: Mon, 28 Apr 2025 10:14:34 +0200 Subject: [PATCH 3/4] [toggle_theme] change theme preference --- toggle_theme | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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" From 18ff2a0636900c72679d9e68b3c683e4476c967e Mon Sep 17 00:00:00 2001 From: Rune Juhl Jacobsen Date: Mon, 28 Apr 2025 10:15:15 +0200 Subject: [PATCH 4/4] add ymmw, toggle_displays.clj --- toggle_displays.clj | 54 +++++++++++++++++++++++++++++++++++++++++++++ ymmw | 34 ++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100755 toggle_displays.clj create mode 100644 ymmw 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/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:])