1
0
Files
dotfiles/tmux/.is_vim.sh
2025-02-13 20:24:17 +01:00

26 lines
583 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 $?