You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.0 KiB
48 lines
1.0 KiB
#!/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='' |
|
SIMPLE='' |
|
|
|
if [ ! -z "$1" ]; then |
|
while [ "$#" -gt 0 ]; do |
|
case "$1" in |
|
--simple|-s) |
|
export SIMPLE=1 |
|
export NO_COLOR=1 |
|
shift |
|
;; |
|
*) |
|
export initialCommand="$1" |
|
break |
|
esac |
|
done |
|
fi; |
|
|
|
# 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 |
|
current="$(project current --path)" |
|
if [ -n "$CWD" ]; then |
|
cd "$CWD" && $CMD |
|
elif [ -n "$current" ]; then |
|
cd "$current" && $CMD |
|
else |
|
$CMD |
|
fi
|
|
|