aboutsummaryrefslogtreecommitdiff
path: root/scripts/term.clj
blob: acf7f8ba817f56bfdd5d53345569643e16e1d3cd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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))))))