aboutsummaryrefslogtreecommitdiff
path: root/scripts/term.clj
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-06-26 22:35:20 +0530
committerAkshay Nair <phenax5@gmail.com>2026-06-27 10:41:08 +0530
commit7bee16c7013ef1da84e723b1ced976f432d5b77a (patch)
treee8d32566209a775e4fc251779afe8741ee789640 /scripts/term.clj
parente751362d9194d9291057759fa33073720c3535fd (diff)
downloadkakoune-config-7bee16c7013ef1da84e723b1ced976f432d5b77a.tar.gz
kakoune-config-7bee16c7013ef1da84e723b1ced976f432d5b77a.zip
Add non-tmux support for term.clj
Diffstat (limited to '')
-rwxr-xr-xscripts/term.clj36
1 files changed, 22 insertions, 14 deletions
diff --git a/scripts/term.clj b/scripts/term.clj
index acf7f8b..169d34e 100755
--- a/scripts/term.clj
+++ b/scripts/term.clj
@@ -1,24 +1,32 @@
#!/usr/bin/env bb
(require '[clojure.java.shell :refer [sh]])
+(require '[babashka.process :as process])
-(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 tmux-open-term [name cmd args]
+ (-> (apply sh "tmux" "new-window" "-n" name
+ "-e" (str "KAKOUNE_SESSION=" (System/getenv "KAKOUNE_SESSION"))
+ "-e" (str "KAKOUNE_CLIENT=" (System/getenv "KAKOUNE_CLIENT"))
+ cmd args)
+ :exit (= 0)))
-(defn focus-term-win [name]
- (-> (sh "tmux" "select-window" "-t" name) :exit (= 0)))
+(defn tmux-focus-term [name]
+ (-> (sh "tmux" "select-window" "-t" name)
+ :exit (= 0)))
+
+(defn x11-class [name] (str "kak-term-" name))
+
+(defn x11-open-term [name cmd args]
+ (apply process/shell "setsid" "-f" "st" "-c" (x11-class name) "-t" name "-e" cmd args))
+
+(defn x11-focus-term [name]
+ (-> (sh "xdotool" "search" "--class" (x11-class name) "windowactivate")
+ :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")))
+ (if (empty? (System/getenv "TMUX"))
+ (or (x11-focus-term name) (x11-open-term name cmd args))
+ (or (tmux-focus-term name) (tmux-open-term name cmd args))))
(def commands
{"singleton" cmd-terminal-singleton})