From 054504a8ab0d5027156154cba4ef6f893f62e75e Mon Sep 17 00:00:00 2001 From: dylan araps Date: Thu, 31 Dec 2015 15:42:58 +1100 Subject: [PATCH] Detect 'free' version, Add flags to customize underline, Change all negative flags to neutral ones --- Readme.md | 12 +- "\\" | 518 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ fetch.sh | 105 +++++++---- 3 files changed, 593 insertions(+), 42 deletions(-) create mode 100644 "\\" diff --git a/Readme.md b/Readme.md index 5b76449a..3de24e1d 100644 --- a/Readme.md +++ b/Readme.md @@ -77,13 +77,15 @@ Text Colors: --infocol num Change the color of the info Text Formatting: ---nowrap Disable line wrapping ---nobold Disable bold text +--underline on/off Enable/Disable title underline" +--underline_char char Character to use when underlineing title" +--linewrap on/off Enable/Disable line wrapping" +--bold on/off Enable/Disable bold text" Color Blocks: --printcols start end Range of colors to print as blocks --blockwidth num Width of color blocks" ---nopal Disable the color blocks +--color_blocks on/off Enable/Disable the color blocks" Image: --image Image to display with the script @@ -103,8 +105,8 @@ Image: to the top edge of the window --gap num Gap between image and text right side ---noimg Disable all images ---nowall Disable the wallpaper function +--images on/off Enable/Disable all images" +--wall on/off Enable/Disable the wallpaper function" and fallback to \$img --clean Remove all cropped images diff --git "a/\\" "b/\\" new file mode 100644 index 00000000..116f87b3 --- /dev/null +++ "b/\\" @@ -0,0 +1,518 @@ +#!/usr/bin/env bash +# Fetch info about your system +# +# Optional Dependencies: (You'll lose these features without them) +# Displaying Images: w3m +# Image Cropping: ImageMagick +# Wallpaper Display: feh Window Manager Detection: wmctrl +# Current Song: mpc +# Text formatting, dynamic image size and padding: tput +# +# Created by Dylan Araps +# https://github.com/dylanaraps/dotfiles + + +# Info Prefixes {{{ +# The titles that come before the info (Ram:, Cpu:, Uptime:) +# TODO: Add an easy way to specify these at launch. + + +title_os="OS" +title_kernel="Kernel" +title_uptime="Uptime" +title_packages="Packages" +title_shell="Shell" +title_windowmanager="Window Manager" +title_cpu="CPU" +title_memory="Memory" +title_song="Song" + + +# }}} + + +# Text Formatting {{{ + + +# Line wrap +# Set this to 0 or use the flag "--nowrap" to disable +# line wrapping. Really useful for small terminal windows +# and long lines. +linewrap=1 + +# Set to "", comment this line or use the flaf "--nobold" +# to disable bold text. +bold=$(tput bold) + +# Default colors +# Colors can be defined at launch with: +# "--titlecol 1, --subtitlecol 2, --coloncol 3, --infocol 4" +# Or the shorthand "-c/--color 1 2 3 4" +# Or by editing them below. +title_color=$(tput setaf 7) +subtitle_color=$(tput setaf 1) +colon_color=$(tput setaf 7) # Also changes underline color +info_color=$(tput setaf 7) + +# Reset formatting +# Removing this line will fuck up the text formatting +clear=$(tput sgr0) + +# Amount of left padding to use when images are disabled. +# The variable takes a count of spaces. So a value of 10 +# will pad the text to the right 10 spaces. +padding=0 + + +# }}} + + +# Custom Image {{{ + + +# Enable or disable the use of images (Disable images at launch with "--noimg") +enableimages=1 + +# If 1, fetch will use a cropped version of your wallpaper as the image +# (Disable this at launch with "--nowall") +# NOTE: This is only compatible with feh, I can add support for more +# wallpaper setters but you'll need to show me a way to get the current +# wallpaper from the commandline. +usewall=1 + +# The image to use if usewall=0. There's also the launch flags "-i" + "--image" +# to set a custom image at launch. +img="$HOME/Pictures/avatars/gon.png" + +# Image size is based on terminal size +# Using the flag "--size" sets this to 0. +img_auto=1 + +# Image size to use if img_auto=0 +# Also configureable at launch with "--size" +size=128 + +# Font width is needed to properly calulate the image size +# If there's a gap on the right try increasing the value by 1 +# If there's an overlap try decreasing the value by 1 +fontwidth=5 + +# Gap is the amount of space between the image and the text on the right +gap=4 + +# Image size/offset +# (Customizable at launch with these flags: --xoffset 0 --yoffset 0") +yoffset=0 +xoffset=0 + +# Default crop offset (Customizable at launch with --cropoffset) +# Possible values: +# northwest, north, northeast, west, center, east, southwest, south, southeast +crop_offset="center" + +# Directory to store cropped images +imgtempdir="$HOME/.fetchimages" + + +# }}} + + +# Get Info {{{ +# Commands to use when gathering info + + +# Title (Configurable with "-t" and "--title" at launch) +# To use the usual "user@hostname" change the line below to: +title="$(whoami)@$(hostname)" + +# Operating System (Configurable with "-O" and "--distro" at launch) +# You can manually set this if the command below doesn't work for you. +if type -p crux >/dev/null 2>&1; then + os="CRUX" +else + os=$(awk '/^NAME=/' /etc/*ease | sed -n 's/^NAME=//p' | tr -d '"') +fi + +# Linux kernel name/version (Configurable with "-K" and "--kernel" at launch) +kernel=$(uname -r) + +# System Uptime (Configurable with "-U" and "--uptime" at launch) +uptime=$(uptime -p) + +# Total number of packages (Configurable with "-P" and "--packages" at launch) +# If your package manager can't be found open an issue on my github repo. +# (Link is at the top) +getpackages () { + case $os in + 'Arch Linux'|'Parabola GNU/Linux-libre'|'Manjaro'|'Antergos') \ + packages=$(pacman -Q | wc -l) ;; + 'Ubuntu'|'Mint'|'Debian'|'Kali Linux'|'Deepin Linux') \ + packages=$(dpkg --get-selections | grep -v deinstall$ | wc -l) ;; + 'Slackware') \ + packages=$(ls -1 /var/log/packages | wc -l) ;; + 'Gentoo'|'Funtoo') \ + packages=$(ls -d /var/db/pkg/*/* | wc -l) ;; + 'Fedora'|'openSUSE'|'Red Hat Enterprise Linux'|'CentOS') \ + packages=$(rpm -qa | wc -l) ;; + 'CRUX') \ + packages=$(pkginfo -i | wc -l) ;; + *) packages="unknown" ;; + esac +} + + +# Shell (Configurable with "-s" and "--shell" at launch) +shell="$SHELL" + +# Window manager (Configurable with "-W" and "--windowmanager" at launch) +# (depends on wmctrl) +# This can be detected without wmctrl by using an array of window manager +# process names and pgrep but it's really slow. +# (Doubles script startup time in some cases). +# If you don't want to install wmctrl you can either edit the var below, +# export the "windowmanager" variable in your shell's configuration file, +# or run the script with: --windowmanager wmname +# windowmanager="openbox" +getwindowmanager () { + if type -p wmctrl >/dev/null 2>&1; then + windowmanager=$(wmctrl -m | awk '/Name:/ {printf $2}') + elif [ -e ~/.xinitrc ]; then + windowmanager=$(grep -v "^#" "${HOME}/.xinitrc" | tail -n 1 | cut -d " " -f2) + else + windowmanager="Unknown" + fi +} + +# Processor (Configurable with "-C", "-S" and "--cpu", "--speed" at launch) +cpu="$(awk 'BEGIN{FS=":"} /model name/ {print $2; exit}' /proc/cpuinfo |\ + awk 'BEGIN{FS="@"; OFS="\n"} { print $1; exit }' |\ + sed -e 's/\((tm)\|(TM)\)//' -e 's/\((R)\|(r)\)//' -e 's/^\ //')" + +# Get current/min/max cpu speed +speed_type="max" +cpuspeed () { + case $speed_type in + current) speed="$(lscpu | awk '/CPU MHz:/ {printf "scale=1; " $3 " / 1000 \n"}' | bc -l)" ;; + min) speed="$(lscpu | awk '/CPU min MHz:/ {printf "scale=1; " $4 " / 1000 \n"}' | bc -l)" ;; + max) speed="$(lscpu | awk '/CPU max MHz:/ {printf "scale=1; " $4 " / 1000 \n"}' | bc -l)" ;; + esac +} + +# Memory (Configurable with "-M" and "--memory" at launch) +# Print the total amount of ram and amount of ram in use +getmemory () { + case $os in + 'Ubuntu'|'Mint'|'Debian'|'Kali Linux'|'Deepin Linux') \ + usedmem=$(free -m | awk '/cache:/ {print $3}'); \ + totalmem=$(free -m | awk '/Mem:/ {print $2}'); \ + memory="${usedmem}MB / ${totalmem}MB" ;; + + *) memory=$(free -m | awk '/Mem:/ {printf $3 "MB / " $2 "MB"}') ;; + esac +} + +# Currently playing song/artist (Configurable with "-m" and "--song" at launch) +if type -p mpc >/dev/null 2>&1; then + song=$(mpc current) +else + song="Unknown" +fi + +# Print terminal colors in a line +# (Configurable with "--printcols start end" at launch) +# Start/End are vars for the range of colors to print +# The default values below print 8 colors in total. +start=0 +end=7 + +# Print the color blocks by default. +printcols=1 + +# Widh of the color blocks +blockwidth=3 + +printcols () { + while [ "$start" -le "$end" ]; do + printf "%s%${blockwidth}s" "$(tput setab $start)" + start=$((start + 1)) + + # Split the blocks at 8 colors + [ $end -ge 9 ] && [ $start -eq 8 ] && printf "\n%${pad}s" "$clear$pad" + done + + # Clear formatting + printf %s "$clear" +} + + +# }}} + + +# Usage {{{ + + +usage () { + printf '%s\n' + printf '%s\n' "usage: ${0##*/} [--colors 1 2 4 5] [--kernel \"\$(uname -rs)\"]" + printf '%s\n' + printf '%s\n' " Info:" + printf '%s\n' " --title string Change the title at the top" + printf '%s\n' " --distro string/cmd Manually set the distro" + printf '%s\n' " --kernel string/cmd Manually set the kernel" + printf '%s\n' " --uptime string/cmd Manually set the uptime" + printf '%s\n' " --packages string/cmd Manually set the package count" + printf '%s\n' " --shell string/cmd Manually set the shell" + printf '%s\n' " --winman string/cmd Manually set the window manager" + printf '%s\n' " --cpu string/cmd Manually set the cpu name" + printf '%s\n' " --memory string/cmd Manually set the memory" + printf '%s\n' " --speed string/cmd Manually set the cpu speed" + printf '%s\n' " --speed_type Change the type of cpu speed to get" + printf '%s\n' " Possible values: current, min, max" + printf '%s\n' " --song string/cmd Manually set the current song" + printf '%s\n' + printf '%s\n' " Text Colors:" + printf '%s\n' " --colors 1 2 3 4 Change the color of text" + printf '%s\n' " (title, subtitle, colon, info)" + printf '%s\n' " --titlecol num Change the color of the title" + printf '%s\n' " --subtitlecol num Change the color of the subtitle" + printf '%s\n' " --coloncol num Change the color of the colons" + printf '%s\n' " --infocol num Change the color of the info" + printf '%s\n' + printf '%s\n' " Text Formatting:" + printf '%s\n' " --nowrap Disable line wrapping" + printf '%s\n' " --nobold Disable bold text" + printf '%s\n' + printf '%s\n' " Color Blocks:" + printf '%s\n' " --printcols start end Range of colors to print as blocks" + printf '%s\n' " --blockwidth num Width of color blocks" + printf '%s\n' " --nopal Disable the color blocks" + printf '%s\n' + printf '%s\n' " Image:" + printf '%s\n' " --image Image to display with the script" + printf '%s\n' " The image gets priority over other" + printf '%s\n' " images: (wallpaper, \$img)" + printf '%s\n' " --fontwidth px Used to automatically size the image" + printf '%s\n' " --size px Change the size of the image" + printf '%s\n' " --cropoffset value Change the crop offset. Possible values:" + printf '%s\n' " northwest, north, northeast, west, center" + printf '%s\n' " east, southwest, south, southeast" + printf '%s\n' + printf '%s\n' " --padding num How many spaces to pad the text" + printf '%s\n' " to the right" + printf '%s\n' " --xoffset px How close the image will be " + printf '%s\n' " to the left edge of the window" + printf '%s\n' " --yoffset px How close the image will be " + printf '%s\n' " --gap num Gap between image and text right side" + printf '%s\n' " to the top edge of the window" + printf '%s\n' " --noimg Disable all images" + printf '%s\n' " --nowall Disable the wallpaper function" + printf '%s\n' " and fallback to \$img" + printf '%s\n' " --clean Remove all cropped images" + printf '%s\n' + printf '%s\n' " Other:" + printf '%s\n' " --help Print this text and exit" + printf '%s\n' + exit 1 +} + + +# }}} + + +# Args {{{ + + +for argument in "$@"; do + case $1 in + # Info + --title) title="$2" ;; + --distro) os="$2" ;; + --kernel) kernel="$2" ;; + --uptime) uptime="$2" ;; + --packages) packages="$2" ;; + --shell) shell="$2" ;; + --winman) windowmanager="$2" ;; + --cpu) cpu="$2" ;; + --speed) speed="$2" ;; + --speed_type) speed_type="$2" ;; + --memory) memory="$2" ;; + --song) song="$2" ;; + + # Text Colors + --colors) title_color="$(tput setaf $2)"; \ + [ ! -z $3 ] && subtitle_color="$(tput setaf $3)"; \ + [ ! -z $4 ] && colon_color="$(tput setaf $4)"; \ + [ ! -z $5 ] && info_color="$(tput setaf $5)" ;; + --titlecol) title_color="$(tput setaf $2)" ;; + --subtitlecol) subtitle_color="$(tput setaf $2)" ;; + --coloncol) colon_color="$(tput setaf $2)" ;; + --infocol) info_color="$(tput setaf $2)" ;; + + # Text Formatting + --nowrap) linewrap=0 ;; + --nobold) bold="" ;; + + # Color Blocks + --printcols) start=$2; end=$3 ;; + --nopal) printcols=0 ;; + + # Image + --image) usewall=0; img="$2" ;; + --fontwidth) fontwidth="$2" ;; + --size) img_auto=0 imgsize="$2" ;; + --cropoffset) crop_offset="$2" ;; + --padding) padding="$2" ;; + --xoffset) xoffset="$2" ;; + --yoffset) yoffset="$2" ;; + --gap) gap="$2" ;; + --noimg) enableimages=0 ;; + --nowall) usewall=0 ;; + --clean) rm -rf "$imgtempdir" || exit ;; + + # Other + --help) usage ;; + esac + + # The check here fixes shift in sh/mksh + [ ! -z "$1" ] && shift +done + + +# }}} + + +# Image {{{ + + +# If the script was called with --noimg, disable images and padding +if [ $enableimages -eq 1 ]; then + # Check to see if auto=1 + if [ $img_auto -eq 1 ]; then + # Image size is half of the terminal + imgsize=$(($(tput cols) * fontwidth / 2)) + + # Padding is half the terminal width + gap + padding=$(($(tput cols) / 2 + gap)) + fi + + # If usewall=1, Get image to display from current wallpaper. + # (only works with feh) + [ $usewall -eq 1 ] && \ + img=$(awk '/feh/ {printf $3}' "$HOME/.fehbg" | sed -e "s/'//g") + + # Get name of image and prefix it with it's crop offset + imgname="$crop_offset-${img##*/}" + + # This check allows you to resize the image at launch + if [ -f "$imgtempdir/$imgname" ]; then + imgheight=$(identify -format "%h" "$imgtempdir/$imgname") + [ $imgheight != $imgsize ] && rm "$imgtempdir/$imgname" + fi + + # Check to see if the tempfile exists before we do any cropping. + if [ ! -f "$imgtempdir/$imgname" ]; then + # Check if the directory exists and create it if it doesn't + [ ! -d "$imgtempdir" ] && (mkdir "$imgtempdir" || exit) + + # Get wallpaper size so that we can do a better crop + size=($(identify -format "%w %h" $img)) + + # This checks to see if height is geater than width + # so we can do a better crop of portrait images. + if [ ${size[1]} -gt ${size[0]} ]; then + size=${size[0]} + else + size=${size[1]} + fi + + # Crop the image and save it to the $imgtempdir + # By default we crop a square in the center of the image which is + # "image height x image height". + # We then resize it to the image size specified above. + # (default 128x128 px, uses var $height) + # This way we get a full image crop with the speed benefit + # of a tiny image. + convert \ + -crop "$size"x"$size"+0+0 \ + -gravity $crop_offset "$img" \ + -resize "$imgsize"x"$imgsize" "$imgtempdir/$imgname" + fi + + # The final image + img="$imgtempdir/$imgname" +else + img="" +fi + + +# }}} + + +# Print Info {{{ + + +# Get cpu speed +cpuspeed + +# Get packages +[ -z $packages ] && getpackages + +# Get window manager +[ -z $windowmanager ] && getwindowmanager + +# Padding +pad=$(printf "%${padding}s") + +clear + +# Underline title with length of title +underline=$(printf %"${#title}"s |tr " " "-") + +# Hide the terminal cursor while we print the info +tput civis + +# Print the title and underline +printf "%s\n" "$pad$bold$title_color$title$clear" +printf "%s\n" "$pad$colon_color$underline$clear" + +# Custom printf function to make it easier to edit the info lines. +printinfo () { + printf "$pad$bold$subtitle_color$1$clear" + printf "$colon_color:$clear " + printf "%s\n" "$info_color$2$clear" +} + +# Disable line wrap +[ $linewrap -eq 0 ] && tput rmam + +printinfo "$title_os" "$os" +printinfo "$title_kernel" "$kernel" +printinfo "$title_uptime" "$uptime" +printinfo "$title_packages" "$packages" +printinfo "$title_shell" "$shell" +printinfo "$title_windowmanager" "$windowmanager" +printinfo "$title_cpu" "$cpu @ ${speed}GHz" +printinfo "$title_memory" "$memory" +printinfo "$title_song" "$song" + +# Display the color blocks +printf "\n" +[ $printcols -eq 1 ] && printf "$pad$(printcols)" + +# Enable line wrap again +[ $linewrap -eq 0 ] && tput smam + +# If w3mimgviewer is found Display the image +if type -p /usr/lib/w3m/w3mimgdisplay >/dev/null 2>&1; then + printf "0;1;$xoffset;$yoffset;$imgsize;$imgsize;;;;;$img\n4;\n3;" |\ + /usr/lib/w3m/w3mimgdisplay +fi + +# Show the cursor again +tput cnorm + +# Move the cursor to the bottom of the terminal +tput cup $(tput lines) + + +# }}} diff --git a/fetch.sh b/fetch.sh index 08a90380..8dc5ee8a 100755 --- a/fetch.sh +++ b/fetch.sh @@ -35,14 +35,22 @@ title_song="Song" # Line wrap -# Set this to 0 or use the flag "--nowrap" to disable +# Set this to 0 or use the flag "--wrap on/off" to disable # line wrapping. Really useful for small terminal windows # and long lines. -linewrap=1 +linewrap="on" -# Set to "", comment this line or use the flaf "--nobold" +# Set to "", comment this line or use the flag "--bold on/off" # to disable bold text. -bold=$(tput bold) +bold="on" + +# Whether or not to underline the title. +# Configurable at launch with "--underline on/off" +underline="on" + +# Character to underline title with +# Configurable at launch with "--underline_char char" +underline_char="-" # Default colors # Colors can be defined at launch with: @@ -70,17 +78,17 @@ padding=0 # Custom Image {{{ -# Enable or disable the use of images (Disable images at launch with "--noimg") -enableimages=1 +# Enable or disable the use of images (Disable images at launch with "--images on/off") +images="on" -# If 1, fetch will use a cropped version of your wallpaper as the image -# (Disable this at launch with "--nowall") +# If "on", fetch will use a cropped version of your wallpaper as the image +# (Disable this at launch with "--wall off") # NOTE: This is only compatible with feh, I can add support for more # wallpaper setters but you'll need to show me a way to get the current # wallpaper from the commandline. -usewall=1 +wall="on" -# The image to use if usewall=0. There's also the launch flags "-i" + "--image" +# The image to use if wall="off". There's also the launch flag "--image" # to set a custom image at launch. img="$HOME/Pictures/avatars/gon.png" @@ -198,9 +206,21 @@ cpuspeed () { esac } -# Memory (Configurable with "-M" and "--memory" at launch) -# Print the total amount of ram and amount of ram in use -memory=$(free -m | awk '/Mem:/ {printf $3 "MB / " $2 "MB"}') +# Memory (Configurable with "--memory" at launch) +# Print used ram / total ram +# This function checks the "free" command's version as +# version 3.3.0 changed the layout of columns. +getmemory () { + freeversion=$(free --version | awk '{printf $4}') + + if [ ${freeversion//.} -gt 330 ] || [${freeversion//.} -gt 3300 ]; then + memory=$(free -m | awk '/Mem:/ {printf $3 "MB / " $2 "MB"}') + else + usedmem=$(free -m | awk '/cache:/ {print $3}') + totalmem=$(free -m | awk '/Mem:/ {print $2}') + memory="${usedmem}MB / ${totalmem}MB" + fi +} # Currently playing song/artist (Configurable with "-m" and "--song" at launch) if type -p mpc >/dev/null 2>&1; then @@ -217,7 +237,7 @@ start=0 end=7 # Print the color blocks by default. -printcols=1 +color_blocks="on" # Widh of the color blocks blockwidth=3 @@ -232,7 +252,7 @@ printcols () { done # Clear formatting - printf "$clear" + printf %s "$clear" } @@ -270,13 +290,15 @@ usage () { printf '%s\n' " --infocol num Change the color of the info" printf '%s\n' printf '%s\n' " Text Formatting:" - printf '%s\n' " --nowrap Disable line wrapping" - printf '%s\n' " --nobold Disable bold text" + printf '%s\n' " --underline on/off Enable/Disable title underline" + printf '%s\n' " --underline_char char Character to use when underlineing title" + printf '%s\n' " --linewrap on/off Enable/Disable line wrapping" + printf '%s\n' " --bold on/off Enable/Disable bold text" printf '%s\n' printf '%s\n' " Color Blocks:" printf '%s\n' " --printcols start end Range of colors to print as blocks" printf '%s\n' " --blockwidth num Width of color blocks" - printf '%s\n' " --nopal Disable the color blocks" + printf '%s\n' " --color_blocks on/off Enable/Disable the color blocks" printf '%s\n' printf '%s\n' " Image:" printf '%s\n' " --image Image to display with the script" @@ -295,8 +317,8 @@ usage () { printf '%s\n' " --yoffset px How close the image will be " printf '%s\n' " --gap num Gap between image and text right side" printf '%s\n' " to the top edge of the window" - printf '%s\n' " --noimg Disable all images" - printf '%s\n' " --nowall Disable the wallpaper function" + printf '%s\n' " --images on/off Enable/Disable all images" + printf '%s\n' " --wall on/off Enable/Disable the wallpaper function" printf '%s\n' " and fallback to \$img" printf '%s\n' " --clean Remove all cropped images" printf '%s\n' @@ -340,15 +362,17 @@ for argument in "$@"; do --infocol) info_color="$(tput setaf $2)" ;; # Text Formatting - --nowrap) linewrap=0 ;; - --nobold) bold="" ;; + --underline) underline="$2" ;; + --underline_char) underline_char="$2" ;; + --linewrap) linewrap="$2" ;; + --bold) bold="$2" ;; # Color Blocks --printcols) start=$2; end=$3 ;; - --nopal) printcols=0 ;; + --color_blocks) color_blocks="$2" ;; # Image - --image) usewall=0; img="$2" ;; + --image) wall="off"; img="$2" ;; --fontwidth) fontwidth="$2" ;; --size) img_auto=0 imgsize="$2" ;; --cropoffset) crop_offset="$2" ;; @@ -356,8 +380,8 @@ for argument in "$@"; do --xoffset) xoffset="$2" ;; --yoffset) yoffset="$2" ;; --gap) gap="$2" ;; - --noimg) enableimages=0 ;; - --nowall) usewall=0 ;; + --images) images="$2" ;; + --wall) wall="$2" ;; --clean) rm -rf "$imgtempdir" || exit ;; # Other @@ -376,7 +400,7 @@ done # If the script was called with --noimg, disable images and padding -if [ $enableimages -eq 1 ]; then +if [ $images == "on" ]; then # Check to see if auto=1 if [ $img_auto -eq 1 ]; then # Image size is half of the terminal @@ -386,9 +410,9 @@ if [ $enableimages -eq 1 ]; then padding=$(($(tput cols) / 2 + gap)) fi - # If usewall=1, Get image to display from current wallpaper. + # If wall=on, Get image to display from current wallpaper. # (only works with feh) - [ $usewall -eq 1 ] && \ + [ $wall == "on" ] && \ img=$(awk '/feh/ {printf $3}' "$HOME/.fehbg" | sed -e "s/'//g") # Get name of image and prefix it with it's crop offset @@ -443,7 +467,7 @@ fi # Get cpu speed -cpuspeed +[ -z $speed ] && cpuspeed # Get packages [ -z $packages ] && getpackages @@ -451,30 +475,37 @@ cpuspeed # Get window manager [ -z $windowmanager ] && getwindowmanager +# Get memory +[ -z $memory ] && getmemory + +# Check for whether or not we bold text +[ $bold == "on" ] && b=$(tput bold) + # Padding pad=$(printf "%${padding}s") +# Clear terminal before printing anything clear # Underline title with length of title -underline=$(printf %"${#title}"s |tr " " "-") +[ $underline == "on" ] && uline=$(printf %"${#title}"s |tr " " "$underline_char") # Hide the terminal cursor while we print the info tput civis # Print the title and underline -printf "%s\n" "$pad$bold$title_color$title$clear" -printf "%s\n" "$pad$colon_color$underline$clear" +printf "%s\n" "$pad$b$title_color$title$clear" +[ $underline == "on" ] && printf "%s\n" "$pad$colon_color$uline$clear" # Custom printf function to make it easier to edit the info lines. printinfo () { - printf "$pad$bold$subtitle_color$1$clear" + printf "$pad$b$subtitle_color$1$clear" printf "$colon_color:$clear " printf "%s\n" "$info_color$2$clear" } # Disable line wrap -[ $linewrap -eq 0 ] && tput rmam +[ $linewrap == "off" ] && tput rmam printinfo "$title_os" "$os" printinfo "$title_kernel" "$kernel" @@ -488,10 +519,10 @@ printinfo "$title_song" "$song" # Display the color blocks printf "\n" -[ $printcols -eq 1 ] && printf "$pad$(printcols)" +[ $color_blocks == "on" ] && printf "$pad$(printcols)" # Enable line wrap again -[ $linewrap -eq 0 ] && tput smam +[ $linewrap == "off" ] && tput smam # If w3mimgviewer is found Display the image if type -p /usr/lib/w3m/w3mimgdisplay >/dev/null 2>&1; then