aboutsummaryrefslogtreecommitdiff
path: root/x/spawn-alacritty
diff options
context:
space:
mode:
authorBryson Steck <me@brysonsteck.xyz>2023-09-13 21:45:58 -0600
committerBryson Steck <me@brysonsteck.xyz>2023-09-13 21:45:58 -0600
commit8ea71ee2baf86d32f810bc6f6c560e6677cc2e09 (patch)
treebc9307615ed4fe2d8a0d1c32cb7f22ad70eed67b /x/spawn-alacritty
parent907c402cf16497f2652c406922100f4a098af942 (diff)
downloaddotfiles-8ea71ee2baf86d32f810bc6f6c560e6677cc2e09.tar
dotfiles-8ea71ee2baf86d32f810bc6f6c560e6677cc2e09.tar.gz
dotfiles-8ea71ee2baf86d32f810bc6f6c560e6677cc2e09.tar.bz2
updates again
Diffstat (limited to 'x/spawn-alacritty')
-rwxr-xr-xx/spawn-alacritty37
1 files changed, 37 insertions, 0 deletions
diff --git a/x/spawn-alacritty b/x/spawn-alacritty
new file mode 100755
index 0000000..7292478
--- /dev/null
+++ b/x/spawn-alacritty
@@ -0,0 +1,37 @@
+#!/bin/bash
+# Stole from https://github.com/alacritty/alacritty/issues/808#issuecomment-334200570
+#
+# Spawn a new instance of Alacritty using the CWD of the currently focused
+# Alacritty process.
+#
+# This is useful in environment like i3 where terminals are opened using a
+# key-combination while another terminal is already focused.
+#
+# If the script is run with a non-Alacritty window in focus or a non-compliant
+# version of Alacritty, an instance will be spawned in the user's $HOME.
+
+ACTIVE_WINDOW=$(xdotool getactivewindow)
+ACTIVE_WM_CLASS=$(xprop -id $ACTIVE_WINDOW | grep WM_CLASS)
+if [[ $ACTIVE_WM_CLASS == *"Alacritty"* ]]
+then
+ # Get PID. If _NET_WM_PID isn't set, bail.
+ PID=$(xprop -id $ACTIVE_WINDOW | grep _NET_WM_PID | grep -oP "\d+")
+ if [[ "$PID" == "" ]]
+ then
+ WINIT_X11_SCALE_FACTOR=1 alacritty
+ fi
+ # Get first child of terminal
+ CHILD_PID=$(pgrep -P $PID)
+ if [[ "$PID" == "" ]]
+ then
+ WINIT_X11_SCALE_FACTOR=1 alacritty
+ fi
+ # Get current directory of child. The first child should be the shell.
+ pushd "/proc/${CHILD_PID}/cwd"
+ SHELL_CWD=$(pwd -P)
+ popd
+ # Start alacritty with the working directory
+ WINIT_X11_SCALE_FACTOR=1 alacritty --working-directory "$SHELL_CWD"
+else
+ WINIT_X11_SCALE_FACTOR=1 alacritty
+fi