@@ -2755,7 +2755,7 @@ collect_processes_psutil() {
2755
2755
fi
2756
2756
2757
2757
if (( i== height- 2 )) ; then
2758
- if [[ ${proc[selected]} -gt 0 || ${proc[start]} -gt 1 ]] || [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_cpu]} && -z ${proc[detailed_killed]} ]]; then :
2758
+ if [[ ${proc[selected]} -gt 0 || -n $filter || ${proc[start]} -gt 1 ]] || [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_cpu]} && -z ${proc[detailed_killed]} ]]; then :
2759
2759
else break ; fi
2760
2760
fi
2761
2761
@@ -3380,10 +3380,14 @@ draw_processes() { #? Draw processes and values to screen
3380
3380
fi
3381
3381
3382
3382
# * Print processes
3383
- if (( proc[start]> (${# proc_array[@]} - 1 )- p_height )) ; then
3383
+ if (( ${# proc_array[@]} <= p_height)) ; then
3384
+ proc[start]=1
3385
+ elif (( proc[start]> (${# proc_array[@]} - 1 )- p_height )) ; then
3384
3386
proc[start]=$(( (${# proc_array[@]} - 1 )- p_height ))
3385
3387
fi
3386
3388
3389
+ if (( proc[selected]> ${# proc_array[@]} - 1 )) ; then proc[selected]=$(( ${# proc_array[@]} - 1 )) ; fi
3390
+
3387
3391
if [[ $proc_gradient == true ]] && (( proc[selected]> 1 )) ; then
3388
3392
fg_r=" $(( fg_r- ( fg_add_r* (proc[selected]- 1 ) ) )) "
3389
3393
fg_g=" $(( fg_g- ( fg_add_g* (proc[selected]- 1 ) ) )) "
@@ -3450,7 +3454,7 @@ draw_processes() { #? Draw processes and values to screen
3450
3454
done
3451
3455
3452
3456
if (( proc[selected]> 0 )) ; then sel_string=$(( proc[start]- 1 + proc[selected])) ; else sel_string=0; fi
3453
- page_string=" ${sel_string} /$(( ${# proc_array[@]} - 2 )) "
3457
+ page_string=" ${sel_string} /$(( ${# proc_array[@]} - 2 ${filter : ++1} )) "
3454
3458
print -v proc_out -m $(( line+ height- 1 )) $(( col+ width- 20 )) -fg ${box[processes_color]} -rp 19 -t " ─"
3455
3459
print -v proc_out -m $(( line+ height- 1 )) $(( col+ width- ${# page_string} - 4 )) -fg ${box[processes_color]} -t " ┤" -b -fg ${theme[title]} -t " $page_string " -rs -fg ${box[processes_color]} -t " ├"
3456
3460
@@ -3496,7 +3500,7 @@ draw_processes() { #? Draw processes and values to screen
3496
3500
unset proc_misc2
3497
3501
proc[page_change]=0
3498
3502
if (( proc[selected]> 0 )) ; then kill_fg=" ${theme[hi_fg]} " ; com_fg=" ${theme[title]} " ; else kill_fg=" ${theme[inactive_fg]} " ; com_fg=" ${theme[inactive_fg]} " ; fi
3499
- if (( proc[selected]== (${# proc_array[@]} - 1 )- proc[start])) ; then down_fg=" ${theme[inactive_fg]} " ; else down_fg=" ${theme[hi_fg]} " ; fi
3503
+ if (( proc[selected]== (${# proc_array[@]} - 1 ${filter : ++1} )- proc[start])) ; then down_fg=" ${theme[inactive_fg]} " ; else down_fg=" ${theme[hi_fg]} " ; fi
3500
3504
if (( proc[selected]> 0 | proc[start]> 1 )) ; then up_fg=" ${theme[hi_fg]} " ; else up_fg=" ${theme[inactive_fg]} " ; fi
3501
3505
3502
3506
print -v proc_misc2 -m $(( line+ height- 1 )) $(( col+ 2 )) -fg ${box[processes_color]} -t " ┤" -fg $up_fg -b -t " ↑" -fg ${theme[title]} -t " select " -fg $down_fg -t " ↓" -rs -fg ${box[processes_color]} -t " ├"
@@ -4443,7 +4447,7 @@ process_input() { #? Process keypresses for main ui
4443
4447
" enter" ) unset input_to_filter ;;
4444
4448
" backspace" ) if [[ ${# filter} -gt 0 ]]; then filter=" ${filter:: (-1)} " ; else unset filter_change; fi ;;
4445
4449
" escape" ) unset input_to_filter filter ;;
4446
- * ) if [[ ${# keypress} -eq 1 ]]; then filter+=" ${keypress// [\\\$\"\']/ } " ; else unset filter_change; fi ;;
4450
+ * ) if [[ ${# keypress} -eq 1 && $keypress =~ ^[A-Za-z0-9 \!\@\#\%\&\/\(\)\[\+\-\_\*\,\;\.\: ]$ ]]; then filter+=" ${keypress// [\\\$\"\']/ } " ; else unset filter_change; fi ;;
4447
4451
esac
4448
4452
4449
4453
else
@@ -4504,10 +4508,10 @@ process_input() { #? Process keypresses for main ui
4504
4508
fi
4505
4509
;;
4506
4510
down|tab) # * Move process selector down one
4507
- if (( proc[selected]< p_height & proc[start]+ proc[selected]< (${# proc_array[@]} - 1 ) )) ; then
4511
+ if (( proc[selected]< p_height & proc[start]+ proc[selected]< (${# proc_array[@]} ) )) ; then
4508
4512
(( ++ proc[selected]))
4509
4513
proc[page_change]=1
4510
- elif (( proc[start]+ proc[selected]< (${# proc_array[@]} - 1 ) )) ; then
4514
+ elif (( proc[start]+ proc[selected]< (${# proc_array[@]} ) )) ; then
4511
4515
(( ++ proc[start]))
4512
4516
proc[page_change]=1
4513
4517
fi
@@ -4543,7 +4547,7 @@ process_input() { #? Process keypresses for main ui
4543
4547
if (( proc[start]< (${# proc_array[@]} - 1 )- p_height)) ; then
4544
4548
if (( proc[start]== 1 )) && [[ $use_psutil == false ]]; then collect_processes now; fi
4545
4549
proc[start]=$(( proc[start]+ p_height ))
4546
- if (( proc[start]> (${# proc_array[@]} - 1 )- p_height )) ; then proc[start]=$(( (${# proc_array[@]} - 1 )- p_height )) ; fi
4550
+ if (( proc[start]> (${# proc_array[@]} )- p_height )) ; then proc[start]=$(( (${# proc_array[@]} )- p_height )) ; fi
4547
4551
proc[page_change]=1
4548
4552
elif (( proc[selected]> 0 )) ; then
4549
4553
proc[selected]=$(( p_height))
@@ -4606,6 +4610,8 @@ process_input() { #? Process keypresses for main ui
4606
4610
f|F) # * Start process filtering input
4607
4611
input_to_filter=1
4608
4612
filter_change=1
4613
+ if (( proc[selected]> 1 )) ; then proc[selected]=1; fi
4614
+ proc[start]=1
4609
4615
;;
4610
4616
c|C) # * Clear process filter
4611
4617
if [[ -n $filter ]]; then
0 commit comments