Last active
May 5, 2021 16:54
-
-
Save kabeersvohra/cf3d18275358e9a368138e65e15e6fff to your computer and use it in GitHub Desktop.
Bash script for i3 to run terminal in the same working directory as active window running tmux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# i3 thread: https://faq.i3wm.org/question/150/how-to-launch-a-terminal-from-here/?answer=152#post-id-152 | |
# based on https://gist.github.com/viking/5851049 and https://gist.github.com/TiddoLangerak/c61e1e48df91192f9554 | |
CWD='' | |
CMD='/usr/bin/x-terminal-emulator' | |
# 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 first child process (shell, vim, etc) | |
if [ -n "$PID" ]; then | |
TREE=$(pstree -lpA $PID | head -n 1) | |
PROCESS=$(echo $TREE | awk -F'---' '{print $NF}') | |
if [[ $PROCESS == tmux* ]]; | |
then | |
PID=$(tmux list-panes -F '#{pane_active} #{pane_pid}' | cut -d " " -f 2) | |
fi | |
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment