@@ -40,7 +40,7 @@ banner=(
40
40
" ██╔══██╗██╔══██║╚════██║██╔══██║ ██║ ██║ ██║██╔═══╝ "
41
41
" ██████╔╝██║ ██║███████║██║ ██║ ██║ ╚██████╔╝██║ "
42
42
" ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ " )
43
- declare version=" 0.7.0 "
43
+ declare version=" 0.7.1 "
44
44
declare banner_width=${# banner[0]}
45
45
banner_colors=(" #E62525" " #CD2121" " #B31D1D" " #9A1919" " #801414" )
46
46
@@ -394,6 +394,27 @@ quit_() { #? Clean exit
394
394
exit 0
395
395
}
396
396
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
+
397
418
traperr () { # ? Function for reporting error line numbers
398
419
local match len trap_muted err=" ${BASH_LINENO[0]} "
399
420
@@ -2007,7 +2028,7 @@ draw_cpu() { #? Draw cpu and core graphs and print percentages
2007
2028
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 " ├"
2008
2029
2009
2030
# * 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} "
2011
2032
2012
2033
}
2013
2034
@@ -2120,7 +2141,7 @@ draw_mem() { #? Draw mem, swap and disk statistics
2120
2141
2121
2142
if (( resized> 0 )) ; then (( resized++ )) ; fi
2122
2143
# * 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} "
2124
2145
2125
2146
}
2126
2147
@@ -2178,9 +2199,6 @@ draw_processes() { #? Draw processes and values to screen
2178
2199
if (( ${# proc[detailed_cmd]} > (right_width- 6 )* 2 )) ; then (( det_y-- )) ; dets=2
2179
2200
elif (( ${# proc[detailed_cmd]} > right_width- 6 )) ; then dets=1; fi
2180
2201
2181
-
2182
-
2183
- # print -v proc_det2 -m $((d_line+det_y++)) ${right_col} -fg ee -b -jc $((right_width-4)) -t "Start command:"
2184
2202
print -v proc_det2 -fg ee -b
2185
2203
for i in C M D; do
2186
2204
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
2242
2260
print -v proc_out -m $(( d_line+ 4 )) ${right_col} -fg ee -b -jr $(( right_width/ 3 + 2 )) -t " Memory: ${proc[detailed_mem]} %" -t " "
2243
2261
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
2244
2262
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
-
2247
2263
fi
2248
2264
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]
2252
2265
2253
2266
if (( proc[page]== 1 )) ; then proc_start=1
2254
2267
else proc_start=$(( (height- 3 )* (proc[page]- 1 )+ 1 )) ; fi
@@ -2338,7 +2351,7 @@ draw_processes() { #? Draw processes and values to screen
2338
2351
2339
2352
2340
2353
2341
- proc_out= " ${proc_out} ${proc_misc}"
2354
+ proc_out+= " ${proc_misc} "
2342
2355
fi
2343
2356
2344
2357
if (( proc[page_change]== 1 | resized> 0 )) ; then
@@ -2362,7 +2375,7 @@ draw_processes() { #? Draw processes and values to screen
2362
2375
2363
2376
2364
2377
2365
- proc_out= " ${proc_out} ${proc_misc2}"
2378
+ proc_out+= " ${proc_misc2} "
2366
2379
fi
2367
2380
2368
2381
# page_string="1/$((${#proc_array[@]}/(height-2)))"
@@ -2376,8 +2389,6 @@ draw_processes() { #? Draw processes and values to screen
2376
2389
2377
2390
if [[ $argument == " now" ]]; then
2378
2391
echo -en " ${proc_out} "
2379
- # else
2380
- # draw_out="${draw_out}${detail_graph[*]}${proc_out}"
2381
2392
fi
2382
2393
2383
2394
}
@@ -2430,7 +2441,7 @@ draw_net() { #? Draw net information and graphs to screen
2430
2441
2431
2442
2432
2443
# * 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} "
2434
2445
}
2435
2446
2436
2447
draw_clock () { # ? Draw a clock at top of screen
@@ -2444,13 +2455,12 @@ draw_clock() { #? Draw a clock at top of screen
2444
2455
print -v clock_out -m 1 $(( width/ 2 - ${# time_string} / 2 )) -rs -fg ${color} -t " ┤" -fg ee -b -t " ${time_string} " -fg ${color} -t " ├"
2445
2456
fi
2446
2457
if [[ $1 == " now" ]]; then echo -en " ${clock_out} " ; fi
2447
- # print -v draw_out -t "${clock_out}"
2448
2458
}
2449
2459
2450
2460
draw_update_string () {
2451
2461
unset update_string
2452
2462
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} "
2454
2464
else echo -en " ${update_string} " ; fi
2455
2465
}
2456
2466
@@ -2460,7 +2470,7 @@ pause_() { #? Pause input and draw a darkened version of main ui
2460
2470
if [[ $1 != " off" ]]; then
2461
2471
prev_screen=" ${boxes_out}${proc_det}${last_screen}${mem_out}${detail_graph[*]}${proc_out}${proc_misc}${proc_misc2}${update_string}${clock_out} "
2462
2472
if [[ -n $skip_process_draw ]]; then
2463
- prev_screen= " ${prev_screen} ${proc_out}"
2473
+ prev_screen+= " ${proc_out} "
2464
2474
unset skip_process_draw proc_out
2465
2475
fi
2466
2476
@@ -2831,40 +2841,22 @@ options_() { #? Shows the options overlay
2831
2841
unset inputting inputting_value
2832
2842
fi
2833
2843
;;
2834
- " update_ms backspace" )
2844
+ " update_ms backspace" | " draw_clock backspace " | " custom_cpu_name backspace " )
2835
2845
if [[ ${# inputting_value} -gt 0 ]]; then
2836
2846
inputting_value=" ${inputting_value::- 1} "
2837
2847
fi
2838
2848
;;
2839
2849
" update_ms" * )
2840
- # if [[ $keypress =~ ^[0-9]$ ]]; then
2841
- inputting_value=" ${inputting_value}${keypress// [^0-9]/ } "
2842
- # fi
2850
+ inputting_value+=" ${keypress// [^0-9]/ } "
2843
2851
;;
2844
2852
" draw_clock enter" )
2845
2853
if [[ -z $inputting ]]; then inputting=1; inputting_value=" ${draw_clock} "
2846
2854
else draw_clock=" ${inputting_value} " ; unset inputting inputting_value clock_out; fi
2847
2855
;;
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
- ;;
2856
2856
" custom_cpu_name enter" )
2857
2857
if [[ -z $inputting ]]; then inputting=1; inputting_value=" ${custom_cpu_name} "
2858
2858
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
+ ;;
2868
2860
" proc_reversed" * |" check_temp" * |" error_logging" * |" background_update" * )
2869
2861
local -n selected_var=${selected}
2870
2862
if [[ ${selected_var} == " true" ]]; then
@@ -2888,6 +2880,9 @@ options_() { #? Shows the options overlay
2888
2880
proc_sorting=" ${sorting[proc[sorting_int]]} "
2889
2881
proc[order_change]=1
2890
2882
;;
2883
+ " draw_clock" * |" custom_cpu_name" * )
2884
+ inputting_value+=" ${keypress// [\\\$\"\']/ } "
2885
+ ;;
2891
2886
esac
2892
2887
2893
2888
fi
@@ -2903,16 +2898,16 @@ options_() { #? Shows the options overlay
2903
2898
2904
2899
if (( resized> 0 )) ; then
2905
2900
calc_sizes; draw_bg quiet
2906
- redraw_misc=1; time_left=0
2901
+ redraw_misc=1
2907
2902
unset options_out bannerd menu_out
2908
2903
fi
2909
2904
2910
2905
get_ms timestamp_end
2911
2906
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
2913
2908
if (( resized> 0 )) ; then resized=0; fi
2914
2909
2915
- if [[ -n $updated_ms ]] && (( updated_ms++== 2 )) ; then
2910
+ if [[ -n $updated_ms ]] && (( updated_ms++== 2 )) ; then
2916
2911
unset updated_ms
2917
2912
draw_update_string quiet
2918
2913
fi
@@ -3107,7 +3102,7 @@ process_input() { #? Process keypresses for main ui
3107
3102
" enter" ) unset input_to_filter ;;
3108
3103
" backspace" ) if [[ ${# filter} -gt 0 ]]; then filter=" ${filter:: (-1)} " ; else unset filter_change; fi ;;
3109
3104
" 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 ;;
3111
3106
esac
3112
3107
3113
3108
else
@@ -3124,22 +3119,21 @@ process_input() { #? Process keypresses for main ui
3124
3119
proc_sorting=" ${sorting[proc[sorting_int]]} "
3125
3120
filter_change=1
3126
3121
;;
3127
- up|shift_tab)
3122
+ up|shift_tab) # * Move process selector up one
3128
3123
if [[ ${proc[selected]} -gt 0 ]]; then
3129
- # if ! ((--proc[selected] & proc[page]==1)); then proc[page_change]=1; fi
3130
3124
(( proc[selected]-- ))
3131
3125
if (( proc[page]> 1 & proc[selected]== 0 )) ; then (( -- proc[page])) ; proc[selected]=$(( box[processes_height]- 3 )) ; fi
3132
3126
proc[page_change]=1
3133
3127
fi
3134
3128
;;
3135
- down|tab)
3129
+ down|tab) # * Move process selector down one
3136
3130
if ! (( proc[page]== proc[pages] & proc[selected]>= box[processes_height]- 3 )) ; then
3137
3131
if (( ++ proc[selected]== 1 )) ; then collect_processes now; proc[detailed_change]=1; fi
3138
3132
if (( proc[selected]> box[processes_height]- 3 )) ; then (( proc[page]++ )) ; proc[selected]=1; fi
3139
3133
proc[page_change]=1
3140
3134
fi
3141
3135
;;
3142
- enter)
3136
+ enter) # * Show detailed info for selected process or close detailed info if no new process is selected
3143
3137
if (( proc[selected]> 0 & proc[detailed_pid]!= proc[selected_pid])) && ps -p ${proc[selected_pid]} > /dev/null 2>&1 ; then
3144
3138
proc[detailed]=1
3145
3139
proc[detailed_change]=1
@@ -3156,7 +3150,7 @@ process_input() { #? Process keypresses for main ui
3156
3150
calc_sizes
3157
3151
fi
3158
3152
;;
3159
- page_up)
3153
+ page_up) # * Move up one page in process box
3160
3154
if [[ ${proc[page]} -gt 1 ]]; then
3161
3155
(( -- proc[page]))
3162
3156
proc[page_change]=1
@@ -3165,7 +3159,7 @@ process_input() { #? Process keypresses for main ui
3165
3159
proc[page_change]=1
3166
3160
fi
3167
3161
;;
3168
- page_down)
3162
+ page_down) # * Move down one page in process box
3169
3163
if [[ ${proc[page]} -lt ${proc[pages]} ]]; then
3170
3164
if (( proc[page]++== 1 )) ; then collect_processes now; fi
3171
3165
proc[page_change]=1
@@ -3174,14 +3168,12 @@ process_input() { #? Process keypresses for main ui
3174
3168
proc[page_change]=1
3175
3169
fi
3176
3170
;;
3177
- home)
3178
- # proc[selected]=1
3171
+ home) # * Go to first page in process box
3179
3172
proc[page]=1
3180
3173
proc[page_change]=1
3181
3174
;;
3182
- end)
3175
+ end) # * Go to last page in process box
3183
3176
if (( proc[selected]== 0 )) ; then collect_processes now; fi
3184
- # proc[selected]=$((box[processes_height]-3))
3185
3177
proc[page]=${proc[pages]}
3186
3178
proc[page_change]=1
3187
3179
;;
@@ -3222,15 +3214,14 @@ process_input() { #? Process keypresses for main ui
3222
3214
f|F) # * Start process filtering input
3223
3215
input_to_filter=1
3224
3216
filter_change=1
3225
- # filter_proc init
3226
3217
;;
3227
3218
c|C) # * Clear process filter
3228
3219
if [[ -n $filter ]]; then
3229
3220
unset input_to_filter filter
3230
3221
filter_change=1
3231
3222
fi
3232
3223
;;
3233
- t|T|k|K|i|I)
3224
+ t|T|k|K|i|I) # * Send terminate, kill or interrupt signal
3234
3225
if [[ ${proc[selected]} -gt 0 ]]; then
3235
3226
killer_ " $keypress " " ${proc[selected_pid]} "
3236
3227
elif [[ ${proc[detailed]} -eq 1 && -z ${proc[detailed_killed]} ]]; then
@@ -3263,16 +3254,16 @@ collect_and_draw() { #? Run all collect and draw functions
3263
3254
(( ++ task_int))
3264
3255
if [[ -n $pause_screen && -n ${saved_key[0]} ]]; then
3265
3256
return
3266
- else
3257
+ elif [[ -z $pause_screen ]] ; then
3267
3258
while [[ -n ${saved_key[0]} ]]; do
3268
3259
process_input 0.001
3269
3260
unset late_update
3270
3261
done
3271
3262
fi
3272
3263
collect_${task}
3273
- if get_key -save; then process_input; fi
3264
+ if get_key -save && [[ -z $pause_screen ]] ; then process_input; fi
3274
3265
draw_${task}
3275
- if get_key -save; then process_input; fi
3266
+ if get_key -save && [[ -z $pause_screen ]] ; then process_input; fi
3276
3267
draw_clock " $1 "
3277
3268
if (( resized> 0 & resized< task_int)) ; then return ; fi
3278
3269
done
@@ -3358,33 +3349,6 @@ main_loop() { #? main loop...
3358
3349
if (( skip_process_draw== 1 )) ; then unset skip_process_draw; fi
3359
3350
}
3360
3351
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
-
3388
3352
# ? Pre main loop
3389
3353
3390
3354
# * Read config file or create if non existant
@@ -3410,7 +3374,7 @@ else
3410
3374
unset ' save_array[@]'
3411
3375
fi
3412
3376
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
3414
3378
trap ' quitting=1; time_left=0' SIGINT SIGQUIT SIGTERM
3415
3379
trap ' resized=1; time_left=0' SIGWINCH
3416
3380
trap ' sleepy=1; time_left=0' SIGTSTP
0 commit comments