Skip to content

Commit a1a42d6

Browse files
committed
v0.7.1 various fixes, optimizations, cleanup and added comments
1 parent b5b6a19 commit a1a42d6

File tree

1 file changed

+51
-87
lines changed

1 file changed

+51
-87
lines changed

bashtop

+51-87
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ banner=(
4040
"██╔══██╗██╔══██║╚════██║██╔══██║ ██║ ██║ ██║██╔═══╝ "
4141
"██████╔╝██║ ██║███████║██║ ██║ ██║ ╚██████╔╝██║ "
4242
"╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ")
43-
declare version="0.7.0"
43+
declare version="0.7.1"
4444
declare banner_width=${#banner[0]}
4545
banner_colors=("#E62525" "#CD2121" "#B31D1D" "#9A1919" "#801414")
4646

@@ -394,6 +394,27 @@ quit_() { #? Clean exit
394394
exit 0
395395
}
396396

397+
sleep_() { #? Restore terminal options, stop and send to background if caught SIGTSTP (ctrl+z)
398+
tput rmcup
399+
stty echo
400+
tput cnorm
401+
402+
kill -s SIGSTOP $$
403+
}
404+
405+
resume_() { #? Set terminal options and resume if caught SIGCONT ('fg' from terminal)
406+
sleepy=0
407+
tput smcup
408+
stty -echo
409+
tput civis
410+
411+
if [[ -n $pause_screen ]]; then
412+
echo -en "$pause_screen"
413+
else
414+
echo -en "${boxes_out}${proc_det}${last_screen}${mem_out}${proc_misc}${proc_misc2}${update_string}${clock_out}"
415+
fi
416+
}
417+
397418
traperr() { #? Function for reporting error line numbers
398419
local match len trap_muted err="${BASH_LINENO[0]}"
399420

@@ -2007,7 +2028,7 @@ draw_cpu() { #? Draw cpu and core graphs and print percentages
20072028
print -v cpu_out_var -m $((p_line-1)) $((p_col+p_width-5-${#cpu[freq_string]})) -fg 30 -t "" -fg ee -b -t "${cpu[freq_string]}" -rs -fg 30 -t ""
20082029

20092030
#* Print created text, graph and meters to output variable
2010-
draw_out="${draw_out}${cpu_graph_a[*]}${cpu_graph_b[*]}${cpu_out_var}"
2031+
draw_out+="${cpu_graph_a[*]}${cpu_graph_b[*]}${cpu_out_var}"
20112032

20122033
}
20132034

@@ -2120,7 +2141,7 @@ draw_mem() { #? Draw mem, swap and disk statistics
21202141

21212142
if ((resized>0)); then ((resized++)); fi
21222143
#* Print created text, graph and meters to output variable
2123-
draw_out="${draw_out}${mem_graph[*]}${swap_graph[*]}${mem_out}"
2144+
draw_out+="${mem_graph[*]}${swap_graph[*]}${mem_out}"
21242145

21252146
}
21262147

@@ -2178,9 +2199,6 @@ draw_processes() { #? Draw processes and values to screen
21782199
if ((${#proc[detailed_cmd]}>(right_width-6)*2)); then ((det_y--)); dets=2
21792200
elif ((${#proc[detailed_cmd]}>right_width-6)); then dets=1; fi
21802201

2181-
2182-
2183-
#print -v proc_det2 -m $((d_line+det_y++)) ${right_col} -fg ee -b -jc $((right_width-4)) -t "Start command:"
21842202
print -v proc_det2 -fg ee -b
21852203
for i in C M D; do
21862204
print -v proc_det2 -m $((d_line+5+cmd_y++)) $right_col -t "$i"
@@ -2242,13 +2260,8 @@ draw_processes() { #? Draw processes and values to screen
22422260
print -v proc_out -m $((d_line+4)) ${right_col} -fg ee -b -jr $((right_width/3+2)) -t "Memory: ${proc[detailed_mem]}%" -t " "
22432261
if ((tty_width>120)); then print -v proc_out -rs -fg 30 -rp $((right_width/3-3)) "" -l $((right_width/3-3)) -fg 13 231 86 -t "${detail_mem_graph}" -t " "; fi
22442262
print -v proc_out -fg ee -b -t "${proc[detailed_mem_string]}"
2245-
#if ((tty_width>120)); then print -v proc_out -m $((d_line+4)) ${right_col} -r $((right_width/3-2)) -rs -t "${detail_mem_graph}"; fi
2246-
22472263
fi
22482264

2249-
#* proc[detailed_name] proc[detailed_cpu] proc[detailed_cpu_int] proc[detailed_cmd] detail_history
2250-
#* proc[detailed_mem] proc[detailed_mem_int] proc[detailed_user] proc[detailed_threads]
2251-
#* proc[detailed_runtime] proc[detailed_mem_string] proc[detailed_parent_pid] proc[detailed_parent_name]
22522265

22532266
if ((proc[page]==1)); then proc_start=1
22542267
else proc_start=$(( (height-3)*(proc[page]-1)+1 )); fi
@@ -2338,7 +2351,7 @@ draw_processes() { #? Draw processes and values to screen
23382351

23392352

23402353

2341-
proc_out="${proc_out}${proc_misc}"
2354+
proc_out+="${proc_misc}"
23422355
fi
23432356

23442357
if ((proc[page_change]==1 | resized>0)); then
@@ -2362,7 +2375,7 @@ draw_processes() { #? Draw processes and values to screen
23622375

23632376

23642377

2365-
proc_out="${proc_out}${proc_misc2}"
2378+
proc_out+="${proc_misc2}"
23662379
fi
23672380

23682381
#page_string="1/$((${#proc_array[@]}/(height-2)))"
@@ -2376,8 +2389,6 @@ draw_processes() { #? Draw processes and values to screen
23762389

23772390
if [[ $argument == "now" ]]; then
23782391
echo -en "${proc_out}"
2379-
#else
2380-
# draw_out="${draw_out}${detail_graph[*]}${proc_out}"
23812392
fi
23822393

23832394
}
@@ -2430,7 +2441,7 @@ draw_net() { #? Draw net information and graphs to screen
24302441

24312442

24322443
#* Print graphs and text to output variable
2433-
draw_out="${draw_out}${download_graph[*]}${upload_graph[*]}${net_out}"
2444+
draw_out+="${download_graph[*]}${upload_graph[*]}${net_out}"
24342445
}
24352446

24362447
draw_clock() { #? Draw a clock at top of screen
@@ -2444,13 +2455,12 @@ draw_clock() { #? Draw a clock at top of screen
24442455
print -v clock_out -m 1 $((width/2-${#time_string}/2)) -rs -fg ${color} -t "" -fg ee -b -t "${time_string}" -fg ${color} -t ""
24452456
fi
24462457
if [[ $1 == "now" ]]; then echo -en "${clock_out}"; fi
2447-
#print -v draw_out -t "${clock_out}"
24482458
}
24492459

24502460
draw_update_string() {
24512461
unset update_string
24522462
print -v update_string -m ${box[cpu_line]} $((box[cpu_col]+box[cpu_width]-${#update_ms}-14)) -rs -fg ${box[cpu_color]} -t "────┤" -fg "aa" -b -t "+" -fg "ee" -b -t " ${update_ms}ms " -fg "aa" -b -t "-" -rs -fg ${box[cpu_color]} -t ""
2453-
if [[ $1 == "quiet" ]]; then draw_out="${draw_out}${update_string}"
2463+
if [[ $1 == "quiet" ]]; then draw_out+="${update_string}"
24542464
else echo -en "${update_string}"; fi
24552465
}
24562466

@@ -2460,7 +2470,7 @@ pause_() { #? Pause input and draw a darkened version of main ui
24602470
if [[ $1 != "off" ]]; then
24612471
prev_screen="${boxes_out}${proc_det}${last_screen}${mem_out}${detail_graph[*]}${proc_out}${proc_misc}${proc_misc2}${update_string}${clock_out}"
24622472
if [[ -n $skip_process_draw ]]; then
2463-
prev_screen="${prev_screen}${proc_out}"
2473+
prev_screen+="${proc_out}"
24642474
unset skip_process_draw proc_out
24652475
fi
24662476

@@ -2831,40 +2841,22 @@ options_() { #? Shows the options overlay
28312841
unset inputting inputting_value
28322842
fi
28332843
;;
2834-
"update_ms backspace")
2844+
"update_ms backspace"|"draw_clock backspace"|"custom_cpu_name backspace")
28352845
if [[ ${#inputting_value} -gt 0 ]]; then
28362846
inputting_value="${inputting_value::-1}"
28372847
fi
28382848
;;
28392849
"update_ms"*)
2840-
#if [[ $keypress =~ ^[0-9]$ ]]; then
2841-
inputting_value="${inputting_value}${keypress//[^0-9]/}"
2842-
#fi
2850+
inputting_value+="${keypress//[^0-9]/}"
28432851
;;
28442852
"draw_clock enter")
28452853
if [[ -z $inputting ]]; then inputting=1; inputting_value="${draw_clock}"
28462854
else draw_clock="${inputting_value}"; unset inputting inputting_value clock_out; fi
28472855
;;
2848-
"draw_clock backspace")
2849-
if [[ ${#inputting_value} -gt 0 ]]; then
2850-
inputting_value="${inputting_value::-1}"
2851-
fi
2852-
;;
2853-
"draw_clock"*)
2854-
inputting_value="${inputting_value}${keypress//[\\\$\"\']/}"
2855-
;;
28562856
"custom_cpu_name enter")
28572857
if [[ -z $inputting ]]; then inputting=1; inputting_value="${custom_cpu_name}"
28582858
else custom_cpu_name="${inputting_value}"; changed_cpu_name=1; unset inputting inputting_value; fi
2859-
;;
2860-
"custom_cpu_name backspace")
2861-
if [[ ${#inputting_value} -gt 0 ]]; then
2862-
inputting_value="${inputting_value::-1}"
2863-
fi
2864-
;;
2865-
"custom_cpu_name"*)
2866-
inputting_value="${inputting_value}${keypress//[\\\$\"\']/}"
2867-
;;
2859+
;;
28682860
"proc_reversed"*|"check_temp"*|"error_logging"*|"background_update"*)
28692861
local -n selected_var=${selected}
28702862
if [[ ${selected_var} == "true" ]]; then
@@ -2888,6 +2880,9 @@ options_() { #? Shows the options overlay
28882880
proc_sorting="${sorting[proc[sorting_int]]}"
28892881
proc[order_change]=1
28902882
;;
2883+
"draw_clock"*|"custom_cpu_name"*)
2884+
inputting_value+="${keypress//[\\\$\"\']/}"
2885+
;;
28912886
esac
28922887

28932888
fi
@@ -2903,16 +2898,16 @@ options_() { #? Shows the options overlay
29032898

29042899
if ((resized>0)); then
29052900
calc_sizes; draw_bg quiet
2906-
redraw_misc=1; time_left=0
2901+
redraw_misc=1
29072902
unset options_out bannerd menu_out
29082903
fi
29092904

29102905
get_ms timestamp_end
29112906
time_left=$((timestamp_start+update_ms-timestamp_end))
2912-
if ((time_left<=0)); then get_ms timestamp_start; collect_and_draw; fi
2907+
if ((time_left<=0 | resized>0)); then get_ms timestamp_start; collect_and_draw; fi
29132908
if ((resized>0)); then resized=0; fi
29142909

2915-
if [[ -n $updated_ms ]] && ((updated_ms++==2)); then
2910+
if [[ -n $updated_ms ]] && ((updated_ms++==2)); then
29162911
unset updated_ms
29172912
draw_update_string quiet
29182913
fi
@@ -3107,7 +3102,7 @@ process_input() { #? Process keypresses for main ui
31073102
"enter") unset input_to_filter ;;
31083103
"backspace") if [[ ${#filter} -gt 0 ]]; then filter="${filter:: (-1)}"; else unset filter_change; fi ;;
31093104
"escape") unset input_to_filter filter ;;
3110-
*) if [[ ${#keypress} -eq 1 ]]; then filter="${filter}${keypress//[\\\$\"\']/}"; else unset filter_change; fi ;;
3105+
*) if [[ ${#keypress} -eq 1 ]]; then filter+="${keypress//[\\\$\"\']/}"; else unset filter_change; fi ;;
31113106
esac
31123107

31133108
else
@@ -3124,22 +3119,21 @@ process_input() { #? Process keypresses for main ui
31243119
proc_sorting="${sorting[proc[sorting_int]]}"
31253120
filter_change=1
31263121
;;
3127-
up|shift_tab)
3122+
up|shift_tab) #* Move process selector up one
31283123
if [[ ${proc[selected]} -gt 0 ]]; then
3129-
#if ! ((--proc[selected] & proc[page]==1)); then proc[page_change]=1; fi
31303124
((proc[selected]--))
31313125
if ((proc[page]>1 & proc[selected]==0)); then ((--proc[page])); proc[selected]=$((box[processes_height]-3)); fi
31323126
proc[page_change]=1
31333127
fi
31343128
;;
3135-
down|tab)
3129+
down|tab) #* Move process selector down one
31363130
if ! ((proc[page]==proc[pages] & proc[selected]>=box[processes_height]-3)); then
31373131
if ((++proc[selected]==1)); then collect_processes now; proc[detailed_change]=1; fi
31383132
if ((proc[selected]>box[processes_height]-3)); then ((proc[page]++)); proc[selected]=1; fi
31393133
proc[page_change]=1
31403134
fi
31413135
;;
3142-
enter)
3136+
enter) #* Show detailed info for selected process or close detailed info if no new process is selected
31433137
if ((proc[selected]>0 & proc[detailed_pid]!=proc[selected_pid])) && ps -p ${proc[selected_pid]} > /dev/null 2>&1; then
31443138
proc[detailed]=1
31453139
proc[detailed_change]=1
@@ -3156,7 +3150,7 @@ process_input() { #? Process keypresses for main ui
31563150
calc_sizes
31573151
fi
31583152
;;
3159-
page_up)
3153+
page_up) #* Move up one page in process box
31603154
if [[ ${proc[page]} -gt 1 ]]; then
31613155
((--proc[page]))
31623156
proc[page_change]=1
@@ -3165,7 +3159,7 @@ process_input() { #? Process keypresses for main ui
31653159
proc[page_change]=1
31663160
fi
31673161
;;
3168-
page_down)
3162+
page_down) #* Move down one page in process box
31693163
if [[ ${proc[page]} -lt ${proc[pages]} ]]; then
31703164
if ((proc[page]++==1)); then collect_processes now; fi
31713165
proc[page_change]=1
@@ -3174,14 +3168,12 @@ process_input() { #? Process keypresses for main ui
31743168
proc[page_change]=1
31753169
fi
31763170
;;
3177-
home)
3178-
#proc[selected]=1
3171+
home) #* Go to first page in process box
31793172
proc[page]=1
31803173
proc[page_change]=1
31813174
;;
3182-
end)
3175+
end) #* Go to last page in process box
31833176
if ((proc[selected]==0)); then collect_processes now; fi
3184-
#proc[selected]=$((box[processes_height]-3))
31853177
proc[page]=${proc[pages]}
31863178
proc[page_change]=1
31873179
;;
@@ -3222,15 +3214,14 @@ process_input() { #? Process keypresses for main ui
32223214
f|F) #* Start process filtering input
32233215
input_to_filter=1
32243216
filter_change=1
3225-
#filter_proc init
32263217
;;
32273218
c|C) #* Clear process filter
32283219
if [[ -n $filter ]]; then
32293220
unset input_to_filter filter
32303221
filter_change=1
32313222
fi
32323223
;;
3233-
t|T|k|K|i|I)
3224+
t|T|k|K|i|I) #* Send terminate, kill or interrupt signal
32343225
if [[ ${proc[selected]} -gt 0 ]]; then
32353226
killer_ "$keypress" "${proc[selected_pid]}"
32363227
elif [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_killed]} ]]; then
@@ -3263,16 +3254,16 @@ collect_and_draw() { #? Run all collect and draw functions
32633254
((++task_int))
32643255
if [[ -n $pause_screen && -n ${saved_key[0]} ]]; then
32653256
return
3266-
else
3257+
elif [[ -z $pause_screen ]]; then
32673258
while [[ -n ${saved_key[0]} ]]; do
32683259
process_input 0.001
32693260
unset late_update
32703261
done
32713262
fi
32723263
collect_${task}
3273-
if get_key -save; then process_input; fi
3264+
if get_key -save && [[ -z $pause_screen ]]; then process_input; fi
32743265
draw_${task}
3275-
if get_key -save; then process_input; fi
3266+
if get_key -save && [[ -z $pause_screen ]]; then process_input; fi
32763267
draw_clock "$1"
32773268
if ((resized>0 & resized<task_int)); then return; fi
32783269
done
@@ -3358,33 +3349,6 @@ main_loop() { #? main loop...
33583349
if ((skip_process_draw==1)); then unset skip_process_draw; fi
33593350
}
33603351

3361-
sleep_() {
3362-
3363-
tput rmcup
3364-
stty echo
3365-
tput cnorm
3366-
3367-
kill -s SIGSTOP $$
3368-
}
3369-
3370-
resume_() {
3371-
3372-
sleepy=0
3373-
3374-
tput smcup
3375-
stty -echo
3376-
tput civis
3377-
3378-
3379-
3380-
if [[ -n $pause_screen ]]; then
3381-
echo -en "$pause_screen"
3382-
else
3383-
echo -en "${boxes_out}${proc_det}${last_screen}${mem_out}${proc_misc}${proc_misc2}${update_string}${clock_out}"
3384-
fi
3385-
3386-
}
3387-
33883352
#? Pre main loop
33893353

33903354
#* Read config file or create if non existant
@@ -3410,7 +3374,7 @@ else
34103374
unset 'save_array[@]'
34113375
fi
34123376

3413-
#* Set up traps for ctrl-c, soft kill, window resize and resume from ctrl-z
3377+
#* Set up traps for ctrl-c, soft kill, window resize, ctrl-z and resume from ctrl-z
34143378
trap 'quitting=1; time_left=0' SIGINT SIGQUIT SIGTERM
34153379
trap 'resized=1; time_left=0' SIGWINCH
34163380
trap 'sleepy=1; time_left=0' SIGTSTP

0 commit comments

Comments
 (0)