summaryrefslogtreecommitdiffstats
path: root/.scripts/samedir
diff options
context:
space:
mode:
authorLuke Smith <luke@lukesmith.xyz>2018-07-03 10:48:25 -0400
committerLuke Smith <luke@lukesmith.xyz>2018-07-03 10:48:25 -0400
commit7bc830c09cfc5d8a978503e2f81a27d633299991 (patch)
tree16088b53d6799b99a9e0b2c6cae27acf91b2e0f0 /.scripts/samedir
parentbd4bac8870ade1ae05e49c9aab24ee75a5c66722 (diff)
downloadeibhear-7bc830c09cfc5d8a978503e2f81a27d633299991.tar.gz
eibhear-7bc830c09cfc5d8a978503e2f81a27d633299991.tar.zst
eibhear-7bc830c09cfc5d8a978503e2f81a27d633299991.zip
mod+shift+enter spawns terminal in same dir
Diffstat (limited to '.scripts/samedir')
-rwxr-xr-x.scripts/samedir27
1 files changed, 27 insertions, 0 deletions
diff --git a/.scripts/samedir b/.scripts/samedir
new file mode 100755
index 0000000..1bc1701
--- /dev/null
+++ b/.scripts/samedir
@@ -0,0 +1,27 @@
+#!/bin/bash
+# i3 thread: https://faq.i3wm.org/question/150/how-to-launch-a-terminal-from-here/?answer=152#post-id-152
+
+CMD=$TERMINAL
+CWD=''
+
+# Get window ID
+ID=$(xdpyinfo | grep focus | cut -f4 -d " ")
+
+# Get PID of process whose window this is
+PID=$(xprop -id $ID | grep -m 1 PID | cut -d " " -f 3)
+
+# Get last child process (shell, vim, etc)
+if [ -n "$PID" ]; then
+ TREE=$(pstree -lpA $PID | tail -n 1)
+ PID=$(echo $TREE | awk -F'---' '{print $NF}' | sed -re 's/[^0-9]//g')
+
+ # If we find the working directory, run the command in that directory
+ if [ -e "/proc/$PID/cwd" ]; then
+ CWD=$(readlink /proc/$PID/cwd)
+ fi
+fi
+if [ -n "$CWD" ]; then
+ cd $CWD && $CMD
+else
+ $CMD
+fi