#!/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))))))