29 lines
		
	
	
	
		
			778 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			778 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| # i3 thread: https://faq.i3wm.org/question/150/how-to-launch-a-terminal-from-here/?answer=152#post-id-152
 | |
| 
 | |
| # I stole this from here: https://gist.github.com/viking/5851049 and modified it slightly
 | |
| 
 | |
| 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
 |