vitorpy's Dotfiles
at main 32 lines 1.7 kB view raw
1function _fzf_search_processes --description "Search all running processes. Replace the current token with the pid of the selected process." 2 # Directly use ps command because it is often aliased to a different command entirely 3 # or with options that dirty the search results and preview output 4 set -f ps_cmd (command -v ps || echo "ps") 5 # use all caps to be consistent with ps default format 6 # snake_case because ps doesn't seem to allow spaces in the field names 7 set -f ps_preview_fmt (string join ',' 'pid' 'ppid=PARENT' 'user' '%cpu' 'rss=RSS_IN_KB' 'start=START_TIME' 'command') 8 set -f processes_selected ( 9 $ps_cmd -A -opid,command | \ 10 _fzf_wrapper --multi \ 11 --prompt="Processes> " \ 12 --query (commandline --current-token) \ 13 --ansi \ 14 # first line outputted by ps is a header, so we need to mark it as so 15 --header-lines=1 \ 16 # ps uses exit code 1 if the process was not found, in which case show an message explaining so 17 --preview="$ps_cmd -o '$ps_preview_fmt' -p {1} || echo 'Cannot preview {1} because it exited.'" \ 18 --preview-window="bottom:4:wrap" \ 19 $fzf_processes_opts 20 ) 21 22 if test $status -eq 0 23 for process in $processes_selected 24 set -f --append pids_selected (string split --no-empty --field=1 -- " " $process) 25 end 26 27 # string join to replace the newlines outputted by string split with spaces 28 commandline --current-token --replace -- (string join ' ' $pids_selected) 29 end 30 31 commandline --function repaint 32end