aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
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))))))
+