aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-06-24 00:31:15 +0530
committerAkshay Nair <phenax5@gmail.com>2026-06-24 00:31:15 +0530
commit2ca3c071b8180e846e379dac8e30db7cbc6b0d7a (patch)
treed3acb20b4b35bf53a86e5576c59baab84e132e55 /scripts
parent4b6b717e88f9ee24d45d7cfdc66b01bf4a4951eb (diff)
downloadkakoune-config-2ca3c071b8180e846e379dac8e30db7cbc6b0d7a.tar.gz
kakoune-config-2ca3c071b8180e846e379dac8e30db7cbc6b0d7a.zip
Refactor terminal-singleton to clojure
Diffstat (limited to '')
-rwxr-xr-xscripts/term.clj32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/term.clj b/scripts/term.clj
new file mode 100755
index 0000000..acf7f8b
--- /dev/null
+++ b/scripts/term.clj
@@ -0,0 +1,32 @@
+#!/usr/bin/env bb
+
+(require '[clojure.java.shell :refer [sh]])
+
+(defn open-term-win [name cmd args]
+ (let [kak_session (System/getenv "KAKOUNE_SESSION")
+ kak_client (System/getenv "KAKOUNE_CLIENT")]
+ (->
+ (apply sh "tmux" "new-window" "-n" name
+ "env" (str "KAKOUNE_SESSION=" kak_session) (str "KAKOUNE_CLIENT=" kak_client)
+ cmd args)
+ :exit
+ (= 0))))
+
+(defn focus-term-win [name]
+ (-> (sh "tmux" "select-window" "-t" name) :exit (= 0)))
+
+(defn cmd-terminal-singleton [[name cmd & args]]
+ (if (or (focus-term-win name) (open-term-win name cmd args))
+ (println "ok")
+ (println "sorri")))
+
+(def commands
+ {"singleton" cmd-terminal-singleton})
+
+(let [[cmd & args] *command-line-args*]
+ (if-let [command-fn (commands cmd)]
+ (command-fn args)
+ (binding [*out* *err*]
+ (println (str "invalid command: " (or cmd "")))
+ (println (str "Valid commands: " (keys commands))))))
+