summaryrefslogtreecommitdiff
path: root/bin/alacritty-mosh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/alacritty-mosh')
-rwxr-xr-xbin/alacritty-mosh61
1 files changed, 61 insertions, 0 deletions
diff --git a/bin/alacritty-mosh b/bin/alacritty-mosh
new file mode 100755
index 0000000..6032828
--- /dev/null
+++ b/bin/alacritty-mosh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+set -euo pipefail
+
+target="$1"
+dedicated_dir='/tmp/alacritty'
+dedicated_cfg="${dedicated_dir}/$target.conf"
+dedicated_sh="${dedicated_dir}/${target}.sh"
+mkdir -p "${dedicated_dir}"
+
+main_cfg="${HOME}/.config/alacritty/alacritty.toml"
+
+# Alacritty loads config files in a way that doesn't allow terminal.shell to be
+# overriden, so this doesn't work.
+# cat > "${dedicated_cfg}" <<EOF
+# # [general]
+# # import = [
+# # "${main_cfg}",
+# # ]
+# [terminal.shell]
+# args = ["--login", "-ic", "${dedicated_sh}"]
+# program = "/bin/zsh"
+# [window]
+# title = "${target}"
+# dynamic_title = false
+# EOF
+
+awk -v r='terminal.shell,window' '
+/^\[/ {
+ s = $0
+ gsub(/^\[|\]$/, "", s)
+ p = (index(","r",", ","s",") == 0)
+}
+p
+' "${main_cfg}" > "${dedicated_cfg}"
+cat >> "${dedicated_cfg}" <<EOF
+[terminal.shell]
+args = ["--login", "-ic", "${dedicated_sh}"]
+program = "/bin/zsh"
+
+[window]
+title = "${target}"
+dynamic_title = false
+opacity = 0.96
+# blur = true
+decorations = "buttonless"
+dynamic_padding = true
+option_as_alt = "None"
+EOF
+
+cat > "$dedicated_sh" <<EOF
+#!/bin/bash
+cleanup() {
+ rm -f "${dedicated_cfg}"
+ rm -f "${dedicated_sh}"
+}
+trap cleanup EXIT INT TERM
+mosh ${target} -- tmux new-session -As 0
+EOF
+chmod +x "$dedicated_sh"
+open -n -a Alacritty --args --config-file "${dedicated_cfg}"