1
0
Files
dotfiles/tmux/.is_vim.sh
2025-03-31 20:18:34 +02:00

24 lines
586 B
Bash
Executable File

#!/usr/bin/env bash
# Usage: is_vim.sh <tty>
# tty: Specify tty to check for vim process.
tty=$1
# Construct process tree.
children=()
pids=($(ps -o pid= -t $tty))
while read -r pid ppid; do
[[ -n $pid && $pid -ne $ppid ]] && children[ppid]+=" $pid"
done <<<"$(ps -Ao pid=,ppid=)"
# Get all descendant pids of processes in $tty with BFS
idx=0
while ((${#pids[@]} > idx)); do
pid=${pids[idx++]}
pids+=(${children[pid]-})
done
# Check whether any child pids are vim
ps -o state=,comm= -p "${pids[@]}" | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'
exit $?