diff --git a/.local/bin/station-cmd-terminal-cwd b/.local/bin/station-cmd-terminal-cwd new file mode 100755 index 0000000..e62e345 --- /dev/null +++ b/.local/bin/station-cmd-terminal-cwd @@ -0,0 +1,22 @@ +#!/bin/bash + +# Returns the current working directory of the active terminal window, +# so a new terminal window can be started in the same directory. + +# Go from current active terminal to its child shell process and run cwd there +terminal_pid=$(hyprctl activewindow | awk '/pid:/ {print $2}') +shell_pid=$(pgrep -P "$terminal_pid" | tail -n1) + +if [[ -n $shell_pid ]]; then + cwd=$(readlink -f "/proc/$shell_pid/cwd" 2>/dev/null) + shell=$(readlink -f "/proc/$shell_pid/exe" 2>/dev/null) + + # Check if $shell is a valid shell and $cwd is a directory. + if grep -qs "$shell" /etc/shells && [[ -d $cwd ]]; then + echo "$cwd" + else + echo "$HOME" + fi +else + echo "$HOME" +fi