diff --git a/.config/conky/conky.conf b/.config/conky/conky.conf deleted file mode 100644 index 29f02def..00000000 --- a/.config/conky/conky.conf +++ /dev/null @@ -1,99 +0,0 @@ --- vim: ts=4 sw=4 noet ai cindent syntax=lua - -conky.config = { - own_window = true, - own_window_title = 'Conky', - own_window_class = 'Conky', - own_window_type = 'desktop', - own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', - own_window_argb_visual = true, - own_window_transparent = true, - own_window_colour = '000000', - - double_buffer = true, - cpu_avg_samples = 2, - net_avg_samples = 2, - no_buffers = true, - update_interval = 1, - - use_xft = true, - font = 'Roboto:style=Light:size=9', - default_color = '#fffcf6', - color1 = '383c4a', -- Background - color2 = 'fffcf6', -- Foreground - color3 = '4b5162', -- Background-alt - color4 = '11d116', -- Green (Battery) - color6 = '1abc9c', -- Cyan (Network) - color7 = 'fdbc4b', -- Yellow (Disk) - color8 = '1d99f3', -- Blue (CPU) - color9 = '9b59b6', -- Magenta (Memory) - - alignment = 'bottom_right', - xinerama_head = 0, - minimum_height = 0, - minimum_width = 304, - border_width = 0, - border_outer_margin = 1, - border_inner_margin = 16, - gap_x = 32, - gap_y = 48, - - format_human_readable = true, - temperature_unit = "celsius", - if_up_strictness = "link", - - default_bar_height = 11, - default_bar_width = 130, - default_graph_height = 36, - draw_borders = true, - draw_outline = false, - draw_graph_borders = true, - draw_shades = false -} - -conky.text = [[ -${font Roboto:style=Light:size=30}$alignr${no_update $nodename_short}$font -${font Roboto:style=Light:size=17}$alignr${time %I:%M %p}$font -${font Roboto:style=Light:size=12}${acpitemp}°C$alignr${time %A, %B %d, %Y}$font -${color3}$hr$color -${font Roboto:style=Medium:size=9}CPU$font: $freq_g GHz$alignr$cpu% -${color8}${cpugraph cpu1 36,200} ${cpugraph cpu2 36,200} -${cpugraph cpu3 36,200} ${cpugraph cpu4 36,200}$color -${color8}${top name 1}$color$alignr${top cpu 1}% -${color8}${top name 2}$color$alignr${top cpu 2}% -${color8}${top name 3}$color$alignr${top cpu 3}% -${color8}${top name 4}$color$alignr${top cpu 4}% -${color3}$hr$color -${font Roboto:style=Medium:size=9}Memory$font: $mem / $memmax used$alignr$memperc% -${color9}${memgraph}$color -Memory$alignr$memeasyfree ${color9}${membar}$color -Swap$alignr$swapfree ${color9}${swapbar}$color -${color9}${top_mem name 1}$color$alignr${top_mem mem 1}% -${color9}${top_mem name 2}$color$alignr${top_mem mem 2}% -${color9}${top_mem name 3}$color$alignr${top_mem mem 3}% -${color9}${top_mem name 4}$color$alignr${top_mem mem 4}% -${color3}$hr$color -${font Roboto:style=Medium:size=9}Disk$font (R/W):$alignr${diskio /dev/sda} -${color7}${diskiograph_read /dev/sda 36,200} ${diskiograph_write /dev/sda 36,200}$color -/$alignr${fs_free /} ${color7}${fs_bar /}$color -/home$alignr${fs_free /home} ${color7}${fs_bar /home}$color -/boot$alignr${fs_free /boot} ${color7}${fs_bar /boot}$color -/boot/efi$alignr${fs_free /boot/efi} ${color7}${fs_bar /boot/efi}$color -${color7}${top_io name 1}$color$alignr${top_io io_perc 1}% -${color7}${top_io name 2}$color$alignr${top_io io_perc 2}% -${color7}${top_io name 3}$color$alignr${top_io io_perc 3}% -${color7}${top_io name 4}$color$alignr${top_io io_perc 4}% -${color3}$hr$color -${font Roboto:style=Medium:size=9}Network$font:${alignr}Default $gw_iface${if_up wlp1s0} -wlp1s0 (U/D):$alignr${addr wlp1s0} / ${wireless_essid wlp1s0} -${color6}${upspeedgraph wlp1s0 36,200} ${downspeedgraph wlp1s0 36,200}$color$endif${if_up wlp5s0} -wlp5s0 (U/D):$alignr${addr wlp5s0} / ${wireless_essid wlp5s0} -${color6}${upspeedgraph wlp5s0 36,200} ${downspeedgraph wlp5s0 36,200}$color$endif${if_up enp0s31f6} -enp0s31f6 (U/D):$alignr${addr enp0s31f6} -${color6}${upspeedgraph enp0s31f6 36,200} ${downspeedgraph enp0s31f6 36,200}$color$endif${if_up eno1} -eno1 (U/D):$alignr${addr eno1} -${color6}${upspeedgraph eno1 36,200} ${downspeedgraph eno1 36,200}$color$endif${if_up enp0s20f0u2} -enp0s20f0u2 (U/D):$alignr${addr enp0s20f0u2} -${color6}${upspeedgraph enp0s20f0u2 36,200} ${downspeedgraph enp0s20f0u2 36,200}$color$endif -]] - diff --git a/.config/conky/gen.sh b/.config/conky/gen.sh new file mode 100755 index 00000000..47e7bab0 --- /dev/null +++ b/.config/conky/gen.sh @@ -0,0 +1,307 @@ +#! /bin/bash +# _ +# ___ ___ _ __ | | ___ _ __ _ ___ _ __ +# / __/ _ \| '_ \| |/ / | | |/ _` |/ _ \ '_ \ +# | (_| (_) | | | | <| |_| | (_| | __/ | | | +# \___\___/|_| |_|_|\_\\__, |\__, |\___|_| |_| +# |___/ |___/ +# +# conkygen.sh +# Create a Conky configuration file dynamically +# +# Copyright (c) 2020 Vintage Salt +# Distributed under the terms of the MIT License +# +set -e + +# Read-only set-once variables +declare -r _name="$(basename -- "$0")" +# Options +declare _optout="./conky.conf" +declare -i _opthelp +declare -i _optverbose +# Working variables +declare -a _args +declare _return + +# Helper functions +log() { + # Print a line to the terminal if _optverbose is greater than $2 + # $2 defaults to 0 + # loglevel 0: Daily-use messages + # loglevel 1: Detailed but not quite debugging + # loglevel 2: Definitely debugging + [ -z "$1" ] && return 1 + if (( _optverbose >= ${2:-0} )); then + printf "%s\\n" "$1" + fi +} +warn() { + # Print a yellow line to the terminal, respecting _optverbose + [ -z "$1" ] && return 1 + if (( _optverbose >= ${2:-0} )); then + if [ -t 1 ]; then + printf "\\e[33m%s\\e[0m\\n" "$1" + else + printf "WARN: %s\\n" "$1" + fi + fi +} +error() { + # Print a red line to the terminal, exit if $2 is specified + [ -z "$1" ] && return 1 + if [ -t 2 ]; then + printf "\\e[31m%s\\e[0m\\n" "$1" 1>&2 + else + printf "ERROR: %s\\n" "$1" 1>&2 + fi + [ -z "$2" ] && return + exit "${2:-1}" +} +has() { + # Parse out all arguments and try to find them in path + # If an argument cannot be found, set _return and fail + for prog in "$@"; do + if ! command -v "$prog" > /dev/null 2>&1; then + _return="$prog" + return 1 + fi + done + return 0 +} + +# Core program functions +printhelp() { + cat << EOF +Usage: $_name [OPTION]... +Generate a conky.conf configuration file in the current directory + + -o Specify output file. Defaults to ./conky.conf + -h Print this help text + -v Print more status messages. Stacks + +Copyright (c) 2020 rehashedsalt@cock.li +Licensed under the MIT license +EOF +} +step_header() { + # Clobber output file with header + cat << EOF > "$_optout" +-- vim: ts=4 sw=4 noet ai cindent syntax=lua +-- WARNING: +-- This file was generated with conkygen. See gen.sh if you need to edit this! +-- Any changes you make here can and probably will be clobbered! +EOF +} +step_config() { + # Append config to the output file + cat << EOF >> "$_optout" +conky.config = { + own_window = true, + own_window_title = 'Conky', + own_window_class = 'Conky', + own_window_type = 'desktop', + own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager', + own_window_argb_visual = true, + own_window_transparent = true, + own_window_colour = '000000', + + double_buffer = true, + cpu_avg_samples = 2, + net_avg_samples = 2, + no_buffers = true, + update_interval = 1, + + use_xft = true, + font = 'Roboto:style=Light:size=9', + default_color = '#fffcf6', + color1 = '383c4a', -- Background + color2 = 'fffcf6', -- Foreground + color3 = '4b5162', -- Background-alt + color4 = '11d116', -- Green (Battery) + color6 = '1abc9c', -- Cyan (Network) + color7 = 'fdbc4b', -- Yellow (Disk) + color8 = '1d99f3', -- Blue (CPU) + color9 = '9b59b6', -- Magenta (Memory) + + alignment = 'bottom_right', + xinerama_head = 0, + minimum_height = 0, + minimum_width = 304, + border_width = 0, + border_outer_margin = 1, + border_inner_margin = 16, + gap_x = 32, + gap_y = 48, + + format_human_readable = true, + temperature_unit = "celsius", + if_up_strictness = "link", + + default_bar_height = 11, + default_bar_width = 130, + default_graph_height = 36, + draw_borders = true, + draw_outline = false, + draw_graph_borders = true, + draw_shades = false +} +EOF +} +step_text() { + local -r topitems=4 + local -r nproc="$(nproc)" + # Generate our actual functional Conky stuff + # Header + cat <<- 'EOF' >> "$_optout" + conky.text = [[ + ${font Roboto:style=Light:size=30}$alignr${no_update $nodename_short}$font + ${font Roboto:style=Light:size=17}$alignr${time %I:%M %p}$font + ${font Roboto:style=Light:size=12}${acpitemp}°C$alignr${time %A, %B %d, %Y}$font + EOF + + # CPU info + cat <<- 'EOF' >> "$_optout" + ${color3}$hr$color + ${font Roboto:style=Medium:size=9}CPU$font: $freq_g GHz$alignr$cpu% + EOF + local gpl=1 + if (( nproc <= 2 )); then + gpl=1 + elif (( nproc <= 4 )); then + gpl=2 + elif (( nproc <= 8 )); then + gpl=4 + else + gpl=8 + fi + local width=$(( 400 / gpl )) + log "Generating $gpl graphs per row of CPU core stats" 1 + log "Graphs will be $width wide" 2 + local cpuinfo + for i in $(seq 1 "$gpl" "$nproc"); do + # Generate lines + local line + for j in $(seq 0 $(( gpl - 1 ))); do + # Generate graphs + local cpu=$(( i + j )) + log "Generating graph for CPU $cpu" 2 + if [ -z "$line" ]; then + line="\${cpugraph cpu$cpu 36,$width}" + else + line="$line \${cpugraph cpu$cpu 36,$width}" + fi + done + # Trim whitespace + line="\${color8}${line%" "}\$color" + log "Appending line: $line" 2 + cpuinfo="$cpuinfo$line\n" + unset line + done + while [ "$cpuinfo" != "${cpuinfo%\\n}" ]; do + cpuinfo="${cpuinfo%\\n}" + done + echo -e "$cpuinfo" >> "$_optout" + for i in $(seq $topitems); do + echo "\${color8}\${top name $i}\$color\$alignr\${top cpu $i}%" >> "$_optout" + done + + # Memory info + cat <<- 'EOF' >> "$_optout" + ${color3}$hr$color + ${font Roboto:style=Medium:size=9}Memory$font: $mem / $memmax used$alignr$memperc% + ${color9}${memgraph}$color + Memory$alignr$memeasyfree ${color9}${membar}$color + EOF + if [ -n "$(swapon)" ]; then + echo "Swap\$alignr\$swapfree \${color9}\${swapbar}\$color" >> "$_optout" + fi + for i in $(seq $topitems); do + echo "\${color9}\${top_mem name $i}\$color\$alignr\${top_mem mem $i}%" >> "$_optout" + done + + # Disk info + cat <<- 'EOF' >> "$_optout" + ${color3}$hr$color + ${font Roboto:style=Medium:size=9}Disk$font (R/W):$alignr${diskio /dev/sda} + ${color7}${diskiograph_read /dev/sda 36,200} ${diskiograph_write /dev/sda 36,200}$color + EOF + # Mountpoint detection + for mountpoint in / /home /var /usr /opt /boot /boot/efi; do + if mountpoint $mountpoint > /dev/null 2>&1; then + echo "$mountpoint\$alignr\${fs_free $mountpoint} \${color7}\${fs_bar $mountpoint}\$color" >> "$_optout" + fi + done + for i in $(seq $topitems); do + echo "\${color7}\${top_io name $i}\$color\$alignr\${top_io io_perc $i}%" >> "$_optout" + done + + # Networking + cat <<-'EOF' >>"$_optout" + ${color3}$hr$color + ${font Roboto:style=Medium:size=9}Network$font:${alignr}Default $gw_iface${if_up wlp1s0} + EOF + for interface in $(iw dev | awk '$1=="Interface"{print $2}'); do + cat <<- EOF >>"$_optout" + $interface (U/D): \$alignr\${addr $interface} / \${wireless_essid $interface} + \${color6}\${upspeedgraph $interface 36,200} \${downspeedgraph $interface 36,200}\$color + EOF + done + echo "]]" >> "$_optout" +} +genconfig() { + log "Generating config: $_optout" + step_header + step_config + step_text +} + +# Main +main() { + # Parse out arguments + while [ -n "$1" ]; do + # Parse out flags + while getopts ":ho:v" opt; do + case $opt in + o) + _optout="$OPTARG" + ;; + h) + _opthelp=1 + ;; + v) + _optverbose+=1 + ;; + :) + error "Option requires argument: -$OPTARG" 2 + ;; + *) + error "Invalid option: -$OPTARG" 2 + ;; + esac + done + # Store arguments + shift $((OPTIND - 1)) + if [ -n "$1" ]; then + _args+=("$1") + shift + fi + unset OPTIND + done + # Early hook for help + [ -n "$_opthelp" ] && printhelp && exit 0 + # Validate critical options + # TODO: That + # Validate core program dependencies + log "Validating dependencies" 2 + if ! has awk basename iw seq; then + error "Failed to find program: $_return" 1 + fi + + # Do the do + genconfig + exit 0 +} + +main "$@" + diff --git a/.config/firestarter/stat-glances b/.config/firestarter/stat-glances index 3e5a7551..08f8109e 100644 --- a/.config/firestarter/stat-glances +++ b/.config/firestarter/stat-glances @@ -3,5 +3,7 @@ : # Note: the dumb sleep hack is because Conky crashes with window_type override if the WM hasn't loaded yet # This gives the WM ample time to load up +command -v conky && [ -r "${XDG_CONFIG_HOME:-/home/salt/.config}/conky/gen.sh" ] +sleep 5 && "${XDG_CONFIG_HOME:-/home/salt/.config}/conky/gen.sh" && conky command -v conky && [ -r "${XDG_CONFIG_HOME:-/home/salt/.config}/conky/conky.conf" ] sleep 5 && conky diff --git a/.config/polybar/config b/.config/polybar/config index 80d1ab61..c74a7f08 100644 --- a/.config/polybar/config +++ b/.config/polybar/config @@ -1,10 +1,10 @@ # vim:ft=dosini -# _ _ -# _ __ ___ | |_ _| |__ __ _ _ __ +# _ _ +# _ __ ___ | |_ _| |__ __ _ _ __ # | '_ \ / _ \| | | | | '_ \ / _` | '__| -# | |_) | (_) | | |_| | |_) | (_| | | -# | .__/ \___/|_|\__, |_.__/ \__,_|_| -# |_| |___/ +# | |_) | (_) | | |_| | |_) | (_| | | +# | .__/ \___/|_|\__, |_.__/ \__,_|_| +# |_| |___/ # # Copyright (c) 2020 Vintage Salt # Distributed under the terms of the MIT License @@ -143,7 +143,6 @@ label-empty-padding = 4 [module/cpu] type = internal/cpu interval = 1 - format = format-prefix = "CPU: " format-prefix-foreground = ${res/colors.blue} diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh index 825dd767..d7da1ff7 100755 --- a/.config/polybar/launch.sh +++ b/.config/polybar/launch.sh @@ -66,7 +66,9 @@ step_wait() { # Main main() { # Dirty hack for i3 - sleep 2 + if pgrep -x i3 > /dev/null 2>&1; then + sleep 2 + fi step_fallback step_configure step_spawn_primary diff --git a/.vim/bundle/vim-template b/.vim/bundle/vim-template index b2fe1823..db11ae8b 160000 --- a/.vim/bundle/vim-template +++ b/.vim/bundle/vim-template @@ -1 +1 @@ -Subproject commit b2fe18239d862120778175c0e1a768c74a5cb6c0 +Subproject commit db11ae8bf0a13d6b01dd5f2b5a3e401b33d3c8fc