v0.8.0 added theme support, update checker and misc fixes

pull/19/head
aristocratos 2020-04-16 21:05:34 +02:00
parent 28e16612cf
commit 52be06fc5b
1 changed files with 26 additions and 37 deletions

63
bashtop
View File

@ -324,7 +324,7 @@ color_init_() { #? Check for theme file and set colors
done
#* Set background color if set, otherwise use terminal default
if [[ -n ${theme[main_bg]} ]]; then theme[main_bg]=";48;2;${theme[main_bg]// /;}"; fi
if [[ -n ${theme[main_bg]} ]]; then theme[main_bg_dec]="${theme[main_bg]}"; theme[main_bg]=";48;2;${theme[main_bg]// /;}"; fi
#* Set colors from theme file if found, otherwise use default values
theme[main_fg]="${theme[main_fg]:-$main_fg}"
@ -973,16 +973,16 @@ create_graph() { #? Create a graph from an array of percentage values, usage;
#* Set up graph array print side numbers and lines
print -v graph_array[0] -rs
print -v graph_array[0] -m $((line+g_index[0])) ${col} ${normal_vals:+-jr 3 -fg ee -b -t "${side_num[0]}" -rs -fg 90 -t "${g_char[0]}"} -fg ${colors[100]}
print -v graph_array[0] -m $((line+g_index[0])) ${col} ${normal_vals:+-jr 3 -fg ee -b -t "${side_num[0]}" -rs -fg ${theme[main_fg]} -t "${g_char[0]}"} -fg ${colors[100]}
for((i=1;i<height;i++)); do
print -v graph_array[i] -m $((line+g_index[i])) ${col} ${normal_vals:+-r 3 -fg 90 -t "${g_char[0]}"} -fg ${colors[$((100-i*100/height))]}
print -v graph_array[i] -m $((line+g_index[i])) ${col} ${normal_vals:+-r 3 -fg ${theme[main_fg]} -t "${g_char[0]}"} -fg ${colors[$((100-i*100/height))]}
done
if [[ -z $no_guide ]]; then width=$((width-5)); fi
graph_array[height]=""
if [[ -z $no_guide ]]; then
print -v graph_array[$height] -m $((line+g_index[(-1)])) ${col} -jr 3 -fg ee -b -t "${side_num[1]}" -rs -fg 90 -t "${g_char[1]}" -rp ${width} -t "${g_char[2]}"
print -v graph_array[$height] -m $((line+g_index[(-1)])) ${col} -jr 3 -fg ee -b -t "${side_num[1]}" -rs -fg $[${theme[main_fg]}] -t "${g_char[1]}" -rp ${width} -t "${g_char[2]}"
fi
#* If no color array was given, create a simple greyscale array
@ -1948,11 +1948,11 @@ draw_cpu() { #? Draw cpu and core graphs and print percentages
if ((resized>0)); then
local graph_a_size graph_b_size
graph_a_size=$((height/2)); graph_b_size=${graph_a_size}
if ((graph_a_size*2<height)); then ((graph_a_size++)); fi
# create_graph -o cpu_graph_a -d ${line} ${col} ${height} $((width-p_width-2)) -c color_cpu_graph cpu_history
create_graph -o cpu_graph_a -d ${line} ${col} ${graph_a_size} $((width-p_width-2)) -c color_cpu_graph -n cpu_history
create_graph -o cpu_graph_b -d $((line+graph_a_size)) ${col} ${graph_b_size} $((width-p_width-2)) -c color_cpu_graph -i -n cpu_history
# threads=${box[testing]} #! For testing, remove <--------------
for((i=1;i<=threads;i++)); do
create_mini_graph -o "cpu_core_graph_$i" -w 10 -c color_cpu_graph "cpu_core_history_$i"
done
@ -2017,17 +2017,17 @@ draw_cpu() { #? Draw cpu and core graphs and print percentages
elif ((p_width>24+temp_width & i>=p_height-2)); then pt_line=$((p_line+i-y*2)); pt_col=$((p_col+24+temp_width))
else y=$i; fi
print -v cpu_out_var -m $((pt_line+y)) $pt_col -rs -fg $p_normal_color -jl 7 -t "$name" -fg 30 "⡀⡀⡀⡀⡀⡀⡀⡀⡀⡀" -l 10 -t "$meter"\
print -v cpu_out_var -m $((pt_line+y)) $pt_col -rs -fg $p_normal_color -jl 7 -t "$name" -fg ${theme[inactive_fg]} "⡀⡀⡀⡀⡀⡀⡀⡀⡀⡀" -l 10 -t "$meter"\
-fg $cpu_p_color -jr 4 -t "${cpu_usage[i]}" -fg $p_normal_color -t "%"
if [[ $check_temp == true ]]; then
print -v cpu_out_var -fg 30 " ⡀⡀⡀⡀⡀" -l 7 -t " ${!temp_name}" -fg $temp_color -jr 4 -t ${cpu[temp_${i}]} -fg $p_normal_color -t ${cpu[temp_unit]}
print -v cpu_out_var -fg ${theme[inactive_fg]} " ⡀⡀⡀⡀⡀" -l 7 -t " ${!temp_name}" -fg $temp_color -jr 4 -t ${cpu[temp_${i}]} -fg $p_normal_color -t ${cpu[temp_unit]}
fi
if (( i>(p_height-2)*( p_width/(24+temp_width) )-( p_width/(24+temp_width) )-1 )); then break; fi
done
#* Print current CPU frequency right of the title in the meter box
print -v cpu_out_var -m $((p_line-1)) $((p_col+p_width-5-${#cpu[freq_string]})) -fg 30 -t "┤" -fg ${theme[title]} -b -t "${cpu[freq_string]}" -rs -fg 30 -t "├"
print -v cpu_out_var -m $((p_line-1)) $((p_col+p_width-5-${#cpu[freq_string]})) -fg ${theme[div_line]} -t "┤" -fg ${theme[title]} -b -t "${cpu[freq_string]}" -rs -fg ${theme[div_line]} -t "├"
#* Print created text, graph and meters to output variable
draw_out+="${cpu_graph_a[*]}${cpu_graph_b[*]}${cpu_out_var}"
@ -2150,9 +2150,9 @@ draw_mem() { #? Draw mem, swap and disk statistics
draw_processes() { #? Draw processes and values to screen
local argument="$1"
if [[ -n $skip_process_draw && $argument != "now" ]]; then return; fi
local line=${box[processes_line]} col=${box[processes_col]} width=${box[processes_width]} height=${box[processes_height]} out_line y=1 fg_step_r fg_step_g fg_step_b checker=2 page_string
local line=${box[processes_line]} col=${box[processes_col]} width=${box[processes_width]} height=${box[processes_height]} out_line y=1 fg_step_r=0 fg_step_g=0 fg_step_b=0 checker=2 page_string
local reverse_string reverse_pos order_left="───────────┤" filter_string current_num detail_location det_no_add com_fg pg_arrow_up_fg pg_arrow_down_fg
local pid=0 pid_graph pid_step_r pid_step_g pid_step_b pid_add_r pid_add_g pid_add_b bg_add bg_step rgb_d=70 d_step proc_start up_fg down_fg page_up_fg page_down_fg this_box=processes
local pid=0 pid_graph pid_step_r pid_step_g pid_step_b pid_add_r pid_add_g pid_add_b bg_add bg_step proc_start up_fg down_fg page_up_fg page_down_fg this_box=processes
local d_width=${box[details_width]} d_height=${box[details_height]} d_line=${box[details_line]} d_col=${box[details_col]}
local detail_graph_width=$((d_width/3+2)) detail_graph_height=$((d_height-1)) kill_fg det_mod fg_add_r fg_add_g fg_add_b
local right_width=$((d_width-detail_graph_width-2))
@ -2169,8 +2169,6 @@ draw_processes() { #? Draw processes and values to screen
pid_add_r=$(( (pid_r-(pid_r/6) )/height))
pid_add_g=$(( (pid_g-(pid_g/6) )/height))
pid_add_b=$(( (pid_b-(pid_b/6) )/height))
#p_add=$((110/height))
d_add=$((rgb_d/height))
unset proc_out
@ -2185,7 +2183,6 @@ draw_processes() { #? Draw processes and values to screen
if [[ ${#detail_history[@]} -eq 1 ]] || ((resized>0)); then
unset proc_det2
#detail_mem_graph ${#detail_history[@]} -lt 2
create_graph -o detail_graph -d $((d_line+1)) $((d_col+1)) ${detail_graph_height} ${detail_graph_width} -c color_cpu_graph -n detail_history
if ((tty_width>120)); then create_mini_graph -o detail_mem_graph -w $((right_width/3-3)) -nc detail_mem_history; fi
det_no_add=1
@ -2268,7 +2265,7 @@ draw_processes() { #? Draw processes and values to screen
if ((det_columns>=5)); then print -v proc_out -jc $((right_width/det_columns-1)) -t "${proc[detailed_threads]}"; fi
print -v proc_out -m $((d_line+4)) ${right_col} -fg ${theme[title]} -b -jr $((right_width/3+2)) -t "Memory: ${proc[detailed_mem]}%" -t " "
if ((tty_width>120)); then print -v proc_out -rs -fg 30 -rp $((right_width/3-3)) "⡀" -l $((right_width/3-3)) -fg ${theme[proc_misc]} -t "${detail_mem_graph}" -t " "; fi
if ((tty_width>120)); then print -v proc_out -rs -fg ${theme[inactive_fg]} -rp $((right_width/3-3)) "⡀" -l $((right_width/3-3)) -fg ${theme[proc_misc]} -t "${detail_mem_graph}" -t " "; fi
print -v proc_out -fg ${theme[title]} -b -t "${proc[detailed_mem_string]}"
fi
@ -2286,8 +2283,6 @@ draw_processes() { #? Draw processes and values to screen
pid_r="$(( pid_r-( pid_add_r*(proc[selected]-1) ) ))"
pid_g="$(( pid_g-( pid_add_g*(proc[selected]-1) ) ))"
pid_b="$(( pid_b-( pid_add_b*(proc[selected]-1) ) ))"
rgb_d="$(( 70-( d_add*(proc[selected]-1) ) ))"
fi
current_num=1
@ -2305,7 +2300,8 @@ draw_processes() { #? Draw processes and values to screen
print -v proc_out -m $((line+y)) $((col+1)) -t "${out_line::$((width-3))} "
if ((current_num==proc[selected])); then print -v proc_out -rs -bg ${theme[selected_bg]}; fi
print -v proc_out -m $((line+y)) $((col+width-12)) -fg $((rgb_d-d_step)) $((rgb_d-d_step)) $((rgb_d-d_step)) -t "⡀⡀⡀⡀⡀"
print -v proc_out -m $((line+y)) $((col+width-12)) -fg ${theme[inactive_fg]} -t "⡀⡀⡀⡀⡀"
if [[ -n ${!pid_graph} ]]; then
print -v proc_out -m $((line+y)) $((col+width-12)) -fg $((pid_r-pid_step_r)) $((pid_g-pid_step_g)) $((pid_b-pid_step_b)) -t "${!pid_graph}"
@ -2317,11 +2313,9 @@ draw_processes() { #? Draw processes and values to screen
if ((current_num<proc[selected]+1)); then
fg_step_r=$((fg_step_r-fg_add_r)); fg_step_g=$((fg_step_g-fg_add_g)); fg_step_b=$((fg_step_b-fg_add_b))
pid_step_r=$((pid_step_r-pid_add_r)); pid_step_g=$((pid_step_g-pid_add_g)); pid_step_b=$((pid_step_b-pid_add_b))
d_step=$((d_step-d_add))
elif ((current_num>=proc[selected])); then
fg_step_r=$((fg_step_r+fg_add_r)); fg_step_g=$((fg_step_g+fg_add_g)); fg_step_b=$((fg_step_b+fg_add_b))
pid_step_r=$((pid_step_r+pid_add_r)); pid_step_g=$((pid_step_g+pid_add_g)); pid_step_b=$((pid_step_b+pid_add_b))
d_step=$((d_step+d_add))
fi
done
@ -2344,7 +2338,6 @@ draw_processes() { #? Draw processes and values to screen
if ((tty_width>100)); then
reverse_string="-fg ${box[processes_color]} -t ┤ -fg ${theme[hi_fg]}${proc[reverse]:+ -ul} -b -t r -fg ${theme[title]} -t everse -rs -fg ${box[processes_color]} -t ├"
reverse_pos=9
#unset order_left
fi
print -v proc_misc -m $line $((col+width-${#proc_sorting}-8-reverse_pos)) -rs ${reverse_string}\
-fg ${box[processes_color]} -t "┤" -fg ${theme[hi_fg]} -b -t "" -fg ${theme[title]} -t " ${proc_sorting} " -fg ${theme[hi_fg]} -t "" -rs -fg ${box[processes_color]} -t "├"
@ -2498,7 +2491,7 @@ unpause_() { #? Unpause
}
menu_() { #? Shows the main menu overlay
local menu i count keypress selected_int=0 selected up local_rez d_banner=1 menu_out bannerd skipped menu_pause out_out wait_string
local menu i count keypress selected_int=0 selected up local_rez d_banner=1 menu_out bannerd skipped menu_pause out_out wait_string trans
local -a menus=("options" "help" "quit") color
until false; do
@ -2525,6 +2518,7 @@ menu_() { #? Shows the main menu overlay
print -v menu_out -d 1 -rs
selected="${menus[selected_int]}"
unset up
if ((${theme[main_bg_dec]// /*}>255**3/2)); then print -v menu_out -bg "#00"; unset trans; else trans=" -trans"; fi
for menu in "${menus[@]}"; do
if [[ $menu == "$selected" ]]; then
local -n menu_array="menu_${menu}_selected"
@ -2535,10 +2529,10 @@ menu_() { #? Shows the main menu overlay
fi
up=$((up+${#menu_array[@]}))
for((i=0;i<${#menu_array[@]};i++)); do
print -v menu_out -d 1 -fg ${color[i]} -c -trans -t "${menu_array[i]}"
print -v menu_out -d 1 -fg ${color[i]} -c${trans} -t "${menu_array[i]}"
done
done
print -v menu_out -u ${up}
print -v menu_out -rs -u ${up}
fi
unset out_out
out_out="${menu_pause}${menu_out}"
@ -2760,21 +2754,19 @@ options_() { #? Shows the options overlay
fi
if [[ -n $redraw_misc ]]; then
unset options_misc
unset options_misc redraw_misc
col=$((tty_width/2-39))
line=$((tty_height/2-4))
desc_col=$((col+30))
draw_banner "$((tty_height/2-11))" options_misc
create_box -v options_misc -w 29 -h $((${#options_array[@]}*2+2)) -l $line -c $((col-1)) -fill -lc ${theme[div_line]} -title "options"
unset redraw_misc
fi
if [[ -n $keypress || -z $options_out ]]; then
unset options_out desc_height
unset options_out desc_height lr inp valid
selected="${options_array[selected_int]}"
local -n selected_desc="desc_${selected}"
unset lr inp valid
if [[ $background_update == false ]]; then desc_pos=$line; desc_height=$((${#options_array[@]}*2+2))
elif ((selected_int*2+${#selected_desc[@]}<${#options_array[@]}*2)); then desc_pos=$((line+selected_int*2))
else desc_pos=$((line+${#options_array[@]}*2-${#selected_desc[@]})); fi
@ -2819,21 +2811,19 @@ options_() { #? Shows the options overlay
if [[ -n $theme_check ]]; then
local -a theme_index
local git_theme new_themes=0
unset 'theme_index[@]' options_out
unset 'theme_index[@]' 'desc_color_theme[-1]' options_out
theme_index=($(curl -m 3 --raw https://raw.githubusercontent.com/aristocratos/bashtop/master/themes/index.txt 2>/dev/null))
if [[ ${theme_index[*]} =~ .theme ]]; then
for git_theme in ${theme_index[@]}; do
if [[ ! -e "${theme_dir}/${git_theme}" ]]; then
if [[ $git_theme =~ .theme && ! -e "${theme_dir}/${git_theme}" ]]; then
if curl -m 3 --raw "https://raw.githubusercontent.com/aristocratos/bashtop/master/themes/${git_theme}" >"${theme_dir}/${git_theme}" 2>/dev/null; then
((++new_themes))
themes+=("${git_theme%.theme}")
fi
fi
done
unset 'desc_color_theme[-1]'
desc_color_theme+=("Found ${new_themes} new theme(s)!")
else
unset 'desc_color_theme[-1]'
desc_color_theme+=("ERROR: Couldn't get theme index!")
fi
fi
@ -2984,7 +2974,7 @@ options_() { #? Shows the options overlay
}
killer_() { #? Kill process with selected signal
local kill_op="$1" kill_pid="$2" killer_out killer_box col line program keypress selected selected_int=0 sig confirmed=0 option killer_pause status status_fg msg
local kill_op="$1" kill_pid="$2" killer_out killer_box col line program keypress selected selected_int=0 sig confirmed=0 option killer_pause status msg
local -a options=("yes" "no")
if ! program="$(ps -o comm --no-header -p ${kill_pid})"; then return; fi
@ -3024,8 +3014,8 @@ killer_() { #? Kill process with selected signal
elif ((confirmed==1)); then
selected="ok"
print -v killer_out -m $((line+2)) $col -fg ${theme[title]} -b -jc 38 -t "Sending signal ${sig} to pid ${kill_pid}!"
print -v killer_out -m $((line+4)) $col -fg ${status_fg} -jc 38 -t "${status^}!" -m $((line+6)) $col
if [[ -n $msg ]]; then print -v killer_out -m $((line+5)) $col -fg ee -jc 38 -t "${msg}" -m $((line+7)) $col; fi
print -v killer_out -m $((line+4)) $col -fg ${theme[main_fg]} -jc 38 -t "${status^}!" -m $((line+6)) $col
if [[ -n $msg ]]; then print -v killer_out -m $((line+5)) $col -fg ${theme[main_fg]} -jc 38 -t "${msg}" -m $((line+7)) $col; fi
print -v killer_out -fg ${theme[selected_fg]} -bg ${theme[selected_bg]} -b -r 15 -t "[ Ok ]" -rs
fi
@ -3065,7 +3055,6 @@ killer_() { #? Kill process with selected signal
elif ((confirmed>0)) && [[ -z $status ]]; then
if kill -${sig} ${kill_pid} >/dev/null 2>&1; then
status="success"
status_fg="30ee20"
else
if ! ps -p ${kill_pid} >/dev/null 2>&1; then
msg="Process not running."
@ -3074,7 +3063,7 @@ killer_() { #? Kill process with selected signal
else
msg="Unknown error."
fi
status="failed"; status_fg="ee3020"; fi
status="failed"; fi
fi