diff --git a/.config/conky/conky.conf b/.config/conky/conky.conf index 29f02def..9a79e3ad 100644 --- a/.config/conky/conky.conf +++ b/.config/conky/conky.conf @@ -1,5 +1,7 @@ -- 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! conky.config = { own_window = true, own_window_title = 'Conky', @@ -50,7 +52,6 @@ conky.config = { 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 @@ -96,4 +97,3 @@ ${color6}${upspeedgraph eno1 36,200} ${downspeedgraph eno1 36,200}$color$endif${ 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..75e5d63c --- /dev/null +++ b/.config/conky/gen.sh @@ -0,0 +1,255 @@ +#! /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() { + # Generate our actual functional Conky stuff + 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 +${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 +]] +EOF +} +genconfig() { + 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 basename; 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