summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorAlex Leferry 2 <alexherbo2@gmail.com>2020-08-13 18:21:25 +0200
committerAlex Leferry 2 <alexherbo2@gmail.com>2020-08-13 21:33:41 +0200
commit7fe2efc9bed557373e9c9cfe860d8e684dfd56bc (patch)
tree90e2a1c628b6ccc05c04415011255200c312f746 /bin
parentdefb50fc0ace0195d12e804993b1b74343024ada (diff)
Overhaul
Diffstat (limited to 'bin')
-rwxr-xr-xbin/kak-desktop21
-rwxr-xr-xbin/kak-shell74
2 files changed, 34 insertions, 61 deletions
diff --git a/bin/kak-desktop b/bin/kak-desktop
index 5e03ab7..f9c1aa3 100755
--- a/bin/kak-desktop
+++ b/bin/kak-desktop
@@ -1,24 +1,29 @@
#!/bin/sh
main() {
- # Send the edit command to the client.
- if test -n "$IN_KAKOUNE_CONNECT"; then
- edit "$@"
- # Terminal.
+ # Send the edit command to the client
+ if [ "$IN_KAKOUNE_CONNECT" ]; then
+ :edit "$@"
+
+ # Terminal
elif test -t 0 -a -t 1; then
kak "$@"
- # GUI apps.
+
+ # GUI apps
else
- launch "$@"
+ open "$@"
fi
}
-launch() {
+open() {
+ # Skip options
+ [ "$1" = '--' ] && shift
+
file=$1 line=$2 column=$3
kak -ui dummy -e "
new %{
hook -always -once global ClientClose %val{client} kill!
- edit %{$file} $line $column
+ edit %{$file} %{$line} %{$column}
}
"
}
diff --git a/bin/kak-shell b/bin/kak-shell
index 1516f44..fc44687 100755
--- a/bin/kak-shell
+++ b/bin/kak-shell
@@ -1,67 +1,35 @@
#!/bin/sh
-# Environment variables
-XDG_DATA_HOME=${XDG_DATA_HOME:-~/.local/share}
-KAKOUNE_CONNECT_SCRIPT=$XDG_DATA_HOME/kak/connect/script.sh
-
main() {
- # Interactively set the Kakoune session.
- # Support to connect to a session by its index.
- if test -z "$KAKOUNE_SESSION"; then
- kak_session_list=$(kak -l | sort)
- echo 'Kakoune sessions:'
- echo_n "$kak_session_list" | number_lines
- echo '+ create new session'
- echo_n 'Kakoune session:'
- read kak_session
- if is_number "$kak_session"; then
- kak_session=$(echo "$kak_session_list" | get_line "$kak_session")
- fi
- KAKOUNE_SESSION=$kak_session
- fi
- # Exit if the Kakoune session is empty.
- if test -z "$KAKOUNE_SESSION"; then
- exit 1
- fi
- # Start an interactive shell.
- start "$@"
-}
+ prompt_kakoune_session
+ [ "$text" ] || exit 1
-start() {
- # Start the session in daemon mode.
- setsid kak -s "$KAKOUNE_SESSION" -d < /dev/null > /dev/null 2>&1
- connect "$@"
+ connect "$text" "$@"
}
connect() {
- # Alias terminal to connect-detach and enter in the connect environment.
- # connect-detach allows to run CLI apps in the same terminal window.
- kak -c "$KAKOUNE_SESSION" -e "
- connect-set-detach global
- connect-terminal $@
- "
- # Attach the connect terminal command.
- # Act as a “boot loader”.
- if test -e "$KAKOUNE_CONNECT_SCRIPT"; then
- attach
+ session=$1
+ shift
+ setsid kak -s "$session" -d < /dev/null > /dev/null 2>&1 &
+ kak -c "$session" -e "connect-detach $@"
+ sh connect.sh
+}
+
+prompt_kakoune_session() {
+ kak_session_list=$(kak -l | sort)
+ echo 'Kakoune sessions:'
+ printf "$kak_session_list" | number_lines
+ echo '+ create new session'
+ printf 'Kakoune session:'
+ read kak_session
+ if is_number "$kak_session"; then
+ kak_session=$(echo "$kak_session_list" | get_line "$kak_session")
fi
-}
-attach() {
- mv "$KAKOUNE_CONNECT_SCRIPT" "$KAKOUNE_CONNECT_SCRIPT~"
- sh "$KAKOUNE_CONNECT_SCRIPT~"
- rm -f "$KAKOUNE_CONNECT_SCRIPT~"
+ text=$kak_session
}
-# Utilities
-
-echo() {
- printf '%s\n' "$*"
-}
-
-echo_n() {
- printf '%s' "$*"
-}
+# Utility functions ────────────────────────────────────────────────────────────
is_number() {
test "$1" -eq "$1" 2> /dev/null