You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
892 lines
22 KiB
892 lines
22 KiB
#!/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 |
|
# Current Song: mpc |
|
# Text formatting, dynamic image size and padding: tput |
|
# Resolution detection: xorg-xdpyinfo |
|
# |
|
# Created by Dylan Araps |
|
# https://github.com/dylanaraps/dotfiles |
|
|
|
# Speed up script by not using unicode |
|
export LC_ALL=C |
|
|
|
|
|
# Config Options {{{ |
|
|
|
|
|
# Info Options {{{ |
|
|
|
# Info |
|
# What to display and in what order. |
|
# |
|
# Format is: "Subtitle: function name" |
|
# Additional lines you can use include: |
|
# "underline" "linebreak" "echo: msg here" "title: title here" |
|
# |
|
# You can also include your own custom lines by using: |
|
# "echo: subtitlehere: $(custom cmd here)" |
|
# "echo: Custom string to print" |
|
# |
|
# Optional info lines that are disabled by default are: |
|
# "getresolution" "getsong" |
|
info=( |
|
"gettitle" |
|
"underline" |
|
"OS: getdistro" |
|
"Kernel: getkernel" |
|
"Uptime: getuptime" |
|
"Packages: getpackages" |
|
"Shell: getshell" |
|
"Window Manager: getwindowmanager" |
|
"CPU: getcpu" |
|
"Memory: getmemory" |
|
"linebreak" |
|
"getcols" |
|
) |
|
|
|
# CPU |
|
|
|
# CPU speed type |
|
# --speed_type current/min/max |
|
speed_type="max" |
|
|
|
|
|
# Uptime |
|
|
|
# Shorten the output of the uptime function |
|
uptime_shorthand="off" |
|
|
|
|
|
# Color Blocks |
|
|
|
# Color block range |
|
# --block_range start end |
|
start=0 |
|
end=7 |
|
|
|
# Toggle color blocks |
|
# --color_blocks on/off |
|
color_blocks="on" |
|
|
|
# Color block width |
|
# --color_block_width num |
|
block_width=3 |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Text Colors {{{ |
|
# --colors 1 2 3 4 5 |
|
|
|
|
|
# --title_color num |
|
title_color=4 |
|
|
|
# --subtitle_color num |
|
subtitle_color=1 |
|
|
|
# --colon_color num |
|
colon_color=8 |
|
|
|
# --underline_color num |
|
underline_color=8 |
|
|
|
# --info_color num |
|
info_color=6 |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Text Options {{{ |
|
|
|
|
|
# Toggle line wrapping |
|
# --line_wrap on/off |
|
line_wrap="on" |
|
|
|
# Toggle bold text |
|
# --bold on/off |
|
bold="on" |
|
|
|
# Toggle title underline |
|
# --underline on/off |
|
underline="on" |
|
|
|
# Underline character |
|
# --underline_char char |
|
underline_char="-" |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Image Options {{{ |
|
|
|
|
|
# Toggle all images |
|
# --images on/off |
|
images="on" |
|
|
|
# Thumbnail directory |
|
imgtempdir="$HOME/.fetchimages" |
|
|
|
# Split Size |
|
# Sizing for the img and text splits |
|
# The larger the value the less space fetch will take up. |
|
# The default value of 2 splits the image and text at |
|
# half terminal width each. |
|
# A value of 3 splits them at a third width each and etc. |
|
# --split_size num |
|
split_size=2 |
|
|
|
# Image position |
|
# --image_position left/right |
|
image_position="left" |
|
|
|
# Use current wallpaper as the image |
|
# --wall on/off |
|
wall="on" |
|
|
|
# Default image to use if wallpaper use is disabled |
|
# --image img |
|
img="$HOME/Pictures/avatars/gon.png" |
|
|
|
# Crop mode |
|
# --crop_mode normal/fit/fill |
|
crop_mode="normal" |
|
|
|
# Crop offset |
|
# Only affects normal mode. |
|
# --crop_offset northwest/north/northeast/west/center |
|
# east/southwest/south/southeast |
|
crop_offset="center" |
|
|
|
# Font width |
|
# Used when calculating dynamic image size |
|
font_width=5 |
|
|
|
# Right gap between image and text |
|
# --gap num |
|
gap=4 |
|
|
|
# Image offsets |
|
# --xoffset px |
|
# --yoffset px |
|
yoffset=0 |
|
xoffset=0 |
|
|
|
|
|
# }}} |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Gather Info {{{ |
|
|
|
|
|
# Get Operating System Type |
|
case "$(uname)" in |
|
"Linux") |
|
os="Linux" |
|
;; |
|
|
|
"Darwin") |
|
os="Mac OS X" |
|
;; |
|
|
|
"OpenBSD") |
|
os="OpenBSD" |
|
;; |
|
esac |
|
|
|
# Get Distro |
|
getdistro () { |
|
case "$os" in |
|
"Linux" ) |
|
if type -p crux >/dev/null 2>&1; then |
|
distro="CRUX" |
|
else |
|
distro="$(awk -F'=' '/^NAME=/ {printf $2; exit}' /etc/*ease)" |
|
distro=${distro#\"*} |
|
distro=${distro%*\"} |
|
fi |
|
;; |
|
|
|
"Mac OS X") |
|
distro="Mac OS X $(sw_vers -productVersion)" |
|
;; |
|
|
|
"OpenBSD") |
|
distro="OpenBSD" |
|
;; |
|
|
|
*) |
|
distro="Unknown" |
|
;; |
|
esac |
|
} |
|
|
|
# Get Title |
|
gettitle () { |
|
title="${USER}@$(hostname)" |
|
} |
|
|
|
# Get kernel version |
|
getkernel() { |
|
kernel="$(uname -r)" |
|
} |
|
|
|
# Get uptime |
|
getuptime () { |
|
case "$os" in |
|
"Linux") |
|
uptime="$(uptime -p)" |
|
;; |
|
|
|
"Mac OS X") |
|
# Get boottime in seconds |
|
boot="$(sysctl -n kern.boottime)" |
|
boot=${boot/{ sec = /} |
|
boot=${boot/,*} |
|
|
|
# Get current date in seconds |
|
now=$(date +%s) |
|
uptime=$(($now-$boot)) |
|
|
|
# Convert uptime to days/hours/mins |
|
secs=$((${uptime}%60)) |
|
mins=$((${uptime}/60%60)) |
|
hours=$((${uptime}/3600%24)) |
|
days=$((${uptime}/86400)) |
|
|
|
case "$mins" in |
|
0) ;; |
|
1) uptime="up ${mins} minute" ;; |
|
*) uptime="up ${mins} minutes" ;; |
|
esac |
|
|
|
case "$hours" in |
|
0) ;; |
|
1) uptime="up ${hours} hour, ${uptime/up /}" ;; |
|
*) uptime="up ${hours} hours, ${uptime/up /}" ;; |
|
esac |
|
|
|
case "$days" in |
|
0) ;; |
|
1) uptime="up ${days} day, ${uptime/up /}" ;; |
|
*) uptime="up ${days} days, ${uptime/up /}" ;; |
|
esac |
|
;; |
|
|
|
"OpenBSD") |
|
uptime=$(uptime | awk -F',' '{print $1}') |
|
uptime=${uptime# } |
|
;; |
|
|
|
*) |
|
uptime="Unknown" |
|
;; |
|
|
|
esac |
|
|
|
if [ "$uptime_shorthand" == "on" ]; then |
|
uptime=${uptime/up/} |
|
uptime=${uptime/minutes/mins} |
|
uptime=${uptime# } |
|
fi |
|
} |
|
|
|
# Get package count |
|
getpackages () { |
|
case "$distro" in |
|
"Arch Linux"|"Parabola GNU/Linux-libre"|"Manjaro"|"Antergos") |
|
packages="$(pacman -Q | wc -l)" |
|
;; |
|
|
|
"void") |
|
packages="$(xbps-query -l | 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)" |
|
;; |
|
|
|
"Mac OS X"*) |
|
packages="$(pkgutil --pkgs | wc -l)" |
|
packages=${packages//[[:blank:]]/} |
|
;; |
|
|
|
"OpenBSD") |
|
packages=$(pkg_info | wc -l) |
|
;; |
|
|
|
*) |
|
packages="Unknown" |
|
;; |
|
esac |
|
} |
|
|
|
# Get shell |
|
getshell () { |
|
shell="$SHELL" |
|
} |
|
|
|
# Get window manager |
|
getwindowmanager () { |
|
if [ ! -z "$XDG_CURRENT_DESKTOP" ]; then |
|
windowmanager="$XDG_CURRENT_DESKTOP" |
|
elif type -p wmctrl >/dev/null 2>&1; then |
|
windowmanager="$(wmctrl -m | head -n1)" |
|
windowmanager=${windowmanager/Name: /} |
|
elif [ -e "$HOME/.xinitrc" ]; then |
|
xinitrc=$(awk '/^[^#]*exec/ {print $2}' "${HOME}/.xinitrc") |
|
windowmanager="${xinitrc/-session/}" |
|
else |
|
case "$os" in |
|
"Mac OS X") |
|
windowmanager="Quartz Compositor" |
|
;; |
|
|
|
*) |
|
windowmanager="Unknown" |
|
;; |
|
|
|
esac |
|
fi |
|
} |
|
|
|
# Get cpu |
|
getcpu () { |
|
case "$os" in |
|
"Linux") |
|
cpu="$(awk -F ': ' '/model name/ {printf $2; exit}' /proc/cpuinfo)" |
|
|
|
# We're using lscpu because /proc/cpuinfo doesn't have min/max speed. |
|
case $speed_type in |
|
current) speed="$(lscpu | awk '/CPU MHz:/ {printf $3}')" ;; |
|
min) speed="$(lscpu | awk '/CPU min MHz:/ {printf $4}')" ;; |
|
max) speed="$(lscpu | awk '/CPU max MHz:/ {printf $4}')" ;; |
|
esac |
|
|
|
# Convert mhz to ghz without bc |
|
speed=$((${speed/.*/} / 100)) |
|
speed=${speed:0:1}.${speed:1} |
|
cpu="$cpu @ ${speed}GHz" |
|
;; |
|
|
|
"Mac OS X") |
|
cpu="$(sysctl -n machdep.cpu.brand_string)" |
|
;; |
|
|
|
"OpenBSD") |
|
cpu="$(sysctl -n hw.model)" |
|
;; |
|
|
|
*) |
|
cpu="Unknown" |
|
;; |
|
esac |
|
|
|
# Remove uneeded patterns from cpu output |
|
# This is faster than sed/gsub |
|
cpu=${cpu//(tm)/} |
|
cpu=${cpu//(TM)/} |
|
cpu=${cpu//(r)/} |
|
cpu=${cpu//(R)/} |
|
cpu=${cpu// CPU/} |
|
cpu=${cpu// Processor/} |
|
cpu=${cpu// Six-Core/} |
|
} |
|
|
|
# Get memory |
|
getmemory () { |
|
case "$os" in |
|
"Linux") |
|
mem="$(awk 'NR < 4 {printf $2 " "}' /proc/meminfo)" |
|
|
|
# Split the string above into 3 vars |
|
# This is faster than using an array. |
|
set $mem |
|
|
|
memtotal=$1 |
|
memfree=$2 |
|
memavail=$3 |
|
memused="$((memtotal - memavail))" |
|
memory="$(( ${memused%% *} / 1024))MB / $(( ${memtotal%% *} / 1024))MB" |
|
;; |
|
|
|
"Mac OS X") |
|
memtotal=$(printf "%s\n" "$(sysctl -n hw.memsize)"/1024^2 | bc) |
|
memwired=$(vm_stat | awk '/wired/ { print $4 }') |
|
memactive=$(vm_stat | awk '/active / { print $3 }') |
|
memcompressed=$(vm_stat | awk '/occupied/ { print $5 }') |
|
memused=$(((${memwired//.} + ${memactive//.} + ${memcompressed//.}) * 4 / 1024)) |
|
memory="${memused}MB / ${memtotal}MB" |
|
;; |
|
|
|
"OpenBSD") |
|
memtotal=$(dmesg | awk '/real mem/ {printf $5}') |
|
memused=$(top -1 1 | awk '/Real:/ {print $3}') |
|
memtotal=${memtotal/()MB/} |
|
memused=${memused/M/} |
|
memory="${memused}MB / ${memtotal}MB" |
|
;; |
|
|
|
*) |
|
memory="Unknown" |
|
;; |
|
esac |
|
} |
|
|
|
# Get song |
|
getsong () { |
|
song=$(mpc current 2>/dev/null || printf "%s" "Unknown") |
|
} |
|
|
|
# Get Resolution |
|
getresolution () { |
|
case "$os" in |
|
"Linux"|"OpenBSD") |
|
resolution=$(xdpyinfo | awk '/dimensions:/ {printf $2}') |
|
;; |
|
|
|
"Mac OS X") |
|
resolution=$(system_profiler SPDisplaysDataType | awk '/Resolution:/ {print $2"x"$4" "}') |
|
;; |
|
|
|
*) |
|
resolution="Unknown" |
|
;; |
|
esac |
|
|
|
} |
|
|
|
getcols () { |
|
if [ "$color_blocks" == "on" ]; then |
|
printf "%s" "${padding}" |
|
while [ $start -le $end ]; do |
|
printf "%s%${block_width}s" "$(tput setab $start)" |
|
start=$((start + 1)) |
|
|
|
# Split the blocks at 8 colors |
|
[ $end -ge 9 ] && [ $start -eq 8 ] && \ |
|
printf "\n%s" "${clear}${padding}" |
|
done |
|
|
|
# Clear formatting |
|
printf "%s" "$clear" |
|
fi |
|
} |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Images {{{ |
|
|
|
|
|
getimage () { |
|
# Check if the directory exists |
|
[ ! -d "$imgtempdir" ] && (mkdir "$imgtempdir" || exit) |
|
|
|
# Get columns |
|
columns=$(tput cols) |
|
|
|
# Image size is half of the terminal |
|
imgsize=$((columns * font_width / split_size)) |
|
|
|
# Where to draw the image |
|
case "$image_position" in |
|
"left") |
|
# Padding is half the terminal width + gap |
|
padding="$(tput cuf $((columns / split_size + gap)))" |
|
;; |
|
|
|
"right") |
|
padding=$(tput cuf 0) |
|
xoffset=$((columns * font_width / split_size - gap)) |
|
;; |
|
esac |
|
|
|
# If wall=on, Get image to display from current wallpaper. |
|
if [ "$wall" == "on" ]; then |
|
img=$(awk '/feh/ {printf $3}' "$HOME/.fehbg") |
|
img=${img#\'*} |
|
img=${img%*\'} |
|
fi |
|
|
|
# Get name of image and prefix it with it's crop mode and offset |
|
imgname="$crop_mode-$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 thumbnail exists before we do any cropping. |
|
if [ ! -f "$imgtempdir/$imgname" ]; then |
|
# Get image size so that we can do a better crop |
|
size=$(identify -format "%w %h" $img) |
|
width=${size%% *} |
|
height=${size##* } |
|
|
|
# This checks to see if height is geater than width |
|
# so we can do a better crop of portrait images. |
|
if [ $height -gt $width ]; then |
|
size=$width |
|
else |
|
size=$height |
|
fi |
|
|
|
case "$crop_mode" in |
|
fit) |
|
c=$(convert "$img" -colorspace srgb -format "%[pixel:p{0,0}]" info:) |
|
convert \ |
|
"$img" \ |
|
-trim +repage \ |
|
-gravity south \ |
|
-background "$c" \ |
|
-extent "$size"x"$size" \ |
|
-scale "$imgsize"x"$imgsize" \ |
|
"$imgtempdir/$imgname" |
|
;; |
|
|
|
fill) |
|
c=$(convert "$img" -colorspace srgb -format "%[pixel:p{0,0}]" info:) |
|
convert \ |
|
"$img" \ |
|
-trim +repage \ |
|
-scale "$imgsize"x"$imgsize"^ \ |
|
-background "$c" \ |
|
-extent "$imgsize"x"$imgsize" \ |
|
"$imgtempdir/$imgname" |
|
;; |
|
|
|
*) |
|
convert \ |
|
"$img" \ |
|
-gravity $crop_offset \ |
|
-crop "$size"x"$size"+0+0 \ |
|
-scale "$imgsize"x"$imgsize" \ |
|
"$imgtempdir/$imgname" |
|
;; |
|
|
|
esac |
|
fi |
|
|
|
# The final image |
|
img="$imgtempdir/$imgname" |
|
} |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Text Formatting {{{ |
|
|
|
|
|
underline () { |
|
uline=$(printf %"$length"s) |
|
uline=${uline// /$underline_char} |
|
} |
|
|
|
colors () { |
|
title_color="$(tput setaf $title_color)" |
|
subtitle_color="$(tput setaf $subtitle_color)" |
|
colon_color="$(tput setaf $colon_color)" |
|
underline_color="$(tput setaf $underline_color)" |
|
info_color="$(tput setaf $info_color)" |
|
} |
|
|
|
bold () { |
|
if [ "$bold" == "on" ]; then |
|
bold="$(tput bold)" |
|
else |
|
bold="" |
|
fi |
|
} |
|
|
|
clear="$(tput sgr0)" |
|
|
|
|
|
# }}} |
|
|
|
|
|
# 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" " --uptime_shorthand on/off --v" |
|
printf "%s\n" " Shorten the output of 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_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 5 Change the color of text" |
|
printf "%s\n" " (title, subtitle, colon, underline, info)" |
|
printf "%s\n" " --title_color num Change the color of the title" |
|
printf "%s\n" " --subtitle_color num Change the color of the subtitle" |
|
printf "%s\n" " --colon_color num Change the color of the colons" |
|
printf "%s\n" " --underline_color num Change the color of the underlines" |
|
printf "%s\n" " --info_color num Change the color of the info" |
|
printf "%s\n" |
|
printf "%s\n" " Text Formatting:" |
|
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" " --line_wrap 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" " --color_blocks on/off Enable/Disable the color blocks" |
|
printf "%s\n" " --block_width num Width of color blocks" |
|
printf "%s\n" " --block_range start end --v " |
|
printf "%s\n" " Range of colors to print as 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" " --font_width px Used to automatically size the image" |
|
printf "&s\n" " --image_position Where to display the image: (Left/Right)" |
|
printf "%s\n" " --split_size num Width of img/text splits" |
|
printf "%s\n" " A value of 2 makes each split half the terminal" |
|
printf "%s\n" " width and etc" |
|
printf "%s\n" " --crop_mode Which crop mode to use" |
|
printf "%s\n" " Takes the values: normal, fit, fill" |
|
printf "%s\n" " --crop_offset value Change the crop offset for normal mode." |
|
printf "%s\n" " Possible values: northwest, north, northeast," |
|
printf "%s\n" " west, center, east, southwest, south, southeast" |
|
printf "%s\n" |
|
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" " to the top edge of the window" |
|
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" " --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" |
|
printf "%s\n" " Other:" |
|
printf "%s\n" " --help Print this text and exit" |
|
printf "%s\n" |
|
exit 1 |
|
} |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Args {{{ |
|
|
|
|
|
while [ ! -z "$1" ]; do |
|
case $1 in |
|
# Info |
|
--title) title="$2" ;; |
|
--os) os="$2" ;; |
|
--kernel) kernel="$2" ;; |
|
--uptime) uptime="$2" ;; |
|
--uptime_shorthand) uptime_shorthand="$2" ;; |
|
--packages) packages="$2" ;; |
|
--shell) shell="$2" ;; |
|
--winman) windowmanager="$2" ;; |
|
--cpu) cpu="$2" ;; |
|
--speed_type) speed_type="$2" ;; |
|
--memory) memory="$2" ;; |
|
--song) song="$2" ;; |
|
|
|
# Text Colors |
|
--colors) title_color=$2; \ |
|
[ ! -z $3 ] && subtitle_color=$3; \ |
|
[ ! -z $4 ] && colon_color=$4; \ |
|
[ ! -z $4 ] && underline_color=$5; \ |
|
[ ! -z $5 ] && info_color=$6 ;; |
|
--title_color) title_color=$2 ;; |
|
--subtitle_color) subtitle_color=$2 ;; |
|
--colon_color) colon_color=$2 ;; |
|
--underline_color) underline_color=$2 ;; |
|
--info_color) info_color=$2 ;; |
|
|
|
# Text Formatting |
|
--underline) underline="$2" ;; |
|
--underline_char) underline_char="$2" ;; |
|
--line_wrap) line_wrap="$2" ;; |
|
--bold) bold="$2" ;; |
|
|
|
# Color Blocks |
|
--color_blocks) color_blocks="$2" ;; |
|
--block_range) start=$2; end=$3 ;; |
|
--block_width) block_width="$2" ;; |
|
|
|
# Image |
|
--image) wall="off"; img="$2" ;; |
|
--font_width) font_width="$2" ;; |
|
--image_position) image_position="$2" ;; |
|
--split_size) split_size="$2" ;; |
|
--crop_mode) crop_mode="$2" ;; |
|
--crop_offset) crop_offset="$2" ;; |
|
--xoffset) xoffset="$2" ;; |
|
--yoffset) yoffset="$2" ;; |
|
--gap) gap="$2" ;; |
|
--images) images="$2" ;; |
|
--wall) wall="$2" ;; |
|
--clean) rm -rf "$imgtempdir" || exit ;; |
|
|
|
# Other |
|
--help) usage ;; |
|
esac |
|
|
|
# The check here fixes shift in sh/mksh |
|
[ ! -z "$1" ] && shift |
|
done |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Print Info {{{ |
|
|
|
|
|
printinfo () { |
|
for info in "${info[@]}"; do |
|
function=${info#*: } |
|
subtitle=${info%:*} |
|
|
|
case "$info" in |
|
echo:*:*) |
|
info=${function#*: } |
|
subtitle=${function/:*/} |
|
string="${bold}${subtitle_color}${subtitle}${clear}${colon_color}: ${info_color}${info}" |
|
length=${#function} |
|
;; |
|
|
|
echo:*) |
|
string="${info_color}${function}" |
|
length=${#function} |
|
;; |
|
|
|
title:*) |
|
string="${bold}${title_color}${function}" |
|
length=${#function} |
|
;; |
|
|
|
linebreak) |
|
string="" |
|
;; |
|
|
|
underline) |
|
if [ "$underline" == "on" ]; then |
|
underline |
|
string="${underline_color}${uline}" |
|
fi |
|
;; |
|
|
|
*:*|*) |
|
# Update the var |
|
var=${function/get/} |
|
typeset -n output=$var |
|
|
|
# Call the function |
|
[ -z "$output" ] && $function |
|
;;& |
|
|
|
gettitle) |
|
string="${bold}${title_color}${output}" |
|
length=${#output} |
|
;; |
|
|
|
*:*) |
|
string="${bold}${subtitle_color}${subtitle}${clear}${colon_color}: ${info_color}${output}" |
|
length=$((${#subtitle} + ${#output} + 2)) |
|
;; |
|
|
|
*) |
|
string="$output" |
|
length=${#output} |
|
;; |
|
|
|
esac |
|
|
|
printf "%s\n" "${padding}${string}${clear}" |
|
done |
|
} |
|
|
|
|
|
# }}} |
|
|
|
|
|
# Call Functions and Finish Up {{{ |
|
|
|
|
|
# Get image |
|
[ "$images" == "on" ] && getimage |
|
|
|
# Hide the terminal cursor |
|
tput civis |
|
|
|
# Clear the terminal |
|
clear |
|
|
|
# Disable line wrap |
|
[ $line_wrap == "off" ] && printf '\e[?7l' |
|
|
|
# Call functions and display info |
|
colors |
|
bold |
|
printinfo |
|
|
|
# Display the image |
|
[ "$images" == "on" ] && printf "0;1;$xoffset;$yoffset;$imgsize;$imgsize;;;;;$img\n4;\n3;" |\ |
|
/usr/lib/w3m/w3mimgdisplay |
|
|
|
# Enable line wrap again |
|
[ $line_wrap == "off" ] && printf '\e[?7h' |
|
|
|
# Move cursor to bottom and redisplay it. |
|
printf "cup $(tput lines) \n cuu1 \n cnorm" | tput -S |
|
|
|
|
|
# }}} |
|
|
|
|
|
|