From 8dc36bbdcbda180542d976e5d74a1efa4037c834 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 30 Jan 2016 02:14:29 +1100 Subject: [PATCH] Added config support --- config | 328 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ fetch | 90 +++++++++++++--- 2 files changed, 402 insertions(+), 16 deletions(-) create mode 100644 config diff --git a/config b/config new file mode 100644 index 00000000..1b7f45d6 --- /dev/null +++ b/config @@ -0,0 +1,328 @@ +#!/usr/bin/env bash +# vim:fdm=marker +# +# Fetch config file +# https://github.com/dylanaraps/fetch + +# Speed up script by not using unicode +export LC_ALL=C +export LANG=c +export LANGUAGE=C + +# Config Options {{{ + + +# Info Options {{{ + + +# Info +# What to display and in what order. +# You can use ANY bash syntax in the function below! +# For example you could use if statments to only print info +# when a condition is true! +# +# The script comes with two helper functions: +# info: +# info "subtitle" funcname +# prin: +# prin "Custom message to print" +# prin "Subtitle: Custom message to print" +# prin "Subtitle: $(date)" +# +# You can also just use printf / echo to add lines but you'll +# need to prefix your msg with "${padding}", for example: +# echo -e "${padding} My custom message here" +# +# Info functions enabled by default are: +# "title" "distro" "kernel" "uptime" "packages" +# "shell" "resolution" "windowmanager" "gtktheme" +# "gtkicons" "cpu" "gpu" "memory" "cols" +# +# Info functions that are disabled by default are: +# "resolution" "song" "visualstyle" "font" "disk" +# +# See this wiki page for more info: +# https://github.com/dylanaraps/fetch/wiki/Customizing-Info +printinfo () { + info linebreak + + info title + info underline + + info "OS" distro + info "Kernel" kernel + info "Uptime" uptime + info "Packages" packages + info "Shell" shell + info "Window Manager" windowmanager + info "GTK Theme" gtktheme + info "Icons" gtkicons + info "CPU" cpu + info "GPU" gpu + info "Memory" memory + + # info "Font" gtkfont + # info "Disk" disk + # info "Resolution" resolution + # info "Song" song + # info "Visual Style" visualstyle + + info linebreak + info cols + info linebreak +} + + +# Kernel + +# Show more kernel info +# --kernel_shorthand on/off +kernel_shorthand="on" + + +# Distro + +# Mac OS X hide/show build version +# --osx_buildversion on/off +osx_buildversion="on" + + +# Uptime + +# Shorten the output of the uptime function +# --uptime_shorthand tiny, on, off +uptime_shorthand="off" + + +# Shell + +# Show the path to $SHELL +# --shell_path on/off +shell_path="on" + +# Show $SHELL's version +# --shell_version on/off +shell_version="off" + + +# CPU + +# CPU speed type +# Only works on Linux with cpufreq. +# --speed_type current, min, max, bios, +# scaling_current, scaling_min, scaling_max +speed_type="max" + + +# GPU + +# Shorten output of the getgpu funcion +# --gpu_shorthand on/off +gpu_shorthand="off" + + +# Gtk Theme / Icons + +# Shorten output (Hide [GTK2] etc) +# --gtk_shorthand on/off +gtk_shorthand="off" + + +# Enable/Disable gtk2 theme/icons output +# --gtk2 on/off +gtk2="on" + +# Enable/Disable gtk3 theme/icons output +# --gtk3 on/off +gtk3="on" + + +# 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 + +# Color of "@" symbol in title +# --at_color num +at_color=6 + +# --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="-" + +# Prompt height +# You should only have to change this if your +# prompt is greater than 2 lines high. +# --prompt_height num +prompt_height=1 + + +# }}} + +# Image Options {{{ + + +# Image Source +# --image wall, shuffle, ascii, /path/to/img, off +image="wall" + +# Thumbnail directory +imgtempdir="$HOME/.fetchimages" + +# Image Backend +# Which program to draw images with +# --image_backend w3m, iterm2 +image_backend="w3m" + +# W3m-img path +# Some systems have this in another location +w3m_img_path="/usr/lib/w3m/w3mimgdisplay" + +# 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 +# Only works with the w3m backend +# --image_position left/right +image_position="left" + +# Shuffle dir +shuffle_dir="$HOME/Pictures/wallpapers/wash" + +# 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 + + +# }}} + +# Ascii Options {{{ + + +# Default ascii image to use +# When this is set to distro it will use your +# distro's logo as the ascii. +# --ascii 'distro', path/to/ascii +ascii="distro" + +# Ascii color +# When this is set to distro it will use your +# ditro's colors to color the ascii. +# --ascii_color distro, number +ascii_color="distro" + + +# }}} + +# Scrot Options {{{ + + +# Whether or not to always take a screenshot +# You can manually take a screenshot with "--scrot" or "-s" +scrot="off" + +# Screenshot program to launch +# --scrot_cmd +scrot_cmd="scrot -c -d 3" + +# Scrot dir +# Where to save the screenshots +# --scrot_dir /path/to/screenshot/folder +scrot_dir="$HOME/Pictures" + +# Scrot filename +# What to name the screenshots +# --scrot_name str +scrot_name="fetch-%Y-%m-%d-%H:%M.png" + + +# }}} + +# Config Options {{{ + + +# Path to config file +# --config path/to/config +config_file="$HOME/.config/fetch/config" + + +# }}} + + +# }}} diff --git a/fetch b/fetch index f77b19e9..8cdfb4a9 100755 --- a/fetch +++ b/fetch @@ -1,5 +1,6 @@ #!/usr/bin/env bash # vim:fdm=marker +# # Fetch info about your system # https://github.com/dylanaraps/fetch # @@ -306,7 +307,7 @@ ascii_color="distro" # }}} -# Other Options {{{ +# Scrot Options {{{ # Whether or not to always take a screenshot @@ -328,6 +329,16 @@ scrot_dir="$HOME/Pictures" scrot_name="fetch-%Y-%m-%d-%H:%M.png" +# }}} + +# Config Options {{{ + + +# Path to config file +# --config path/to/config +config_file="$HOME/.config/fetch/config" + + # }}} @@ -1397,29 +1408,17 @@ getascii () { if [ -f "/usr/share/fetch/ascii/distro/${ascii/ *}" ]; then ascii="/usr/share/fetch/ascii/distro/${ascii/ *}" else - # Use $0 to get the script's physical path. - cd "${0%/*}" - ascii_dir=${0##*/} - - # Iterate down a (possible) chain of symlinks. - while [ -L "$ascii_dir" ]; do - ascii_dir="$(readlink $ascii_dir)" - cd "${ascii_dir%/*}" - ascii_dir="${ascii_dir##*/}" - done - - # Final directory - ascii_dir="$(pwd -P)" + getscriptdir # If the ascii file doesn't exist # fallback to text mode. - if [ ! -f "$ascii_dir/ascii/distro/${ascii/ *}" ]; then + if [ ! -f "$script_dir/ascii/distro/${ascii/ *}" ]; then padding="\033[0C" image="off" return fi - ascii="$ascii_dir/ascii/distro/${ascii/ *}" + ascii="$script_dir/ascii/distro/${ascii/ *}" fi # Overwrite distro colors if '$ascii_color` doesn't @@ -1739,6 +1738,64 @@ clear="\033[0m" # }}} +# Other {{{ + + +# Get script directory {{{ + +getscriptdir () { + # Use $0 to get the script's physical path. + cd "${0%/*}" + script_dir=${0##*/} + + # Iterate down a (possible) chain of symlinks. + while [ -L "$script_dir" ]; do + script_dir="$(readlink $script_dir)" + cd "${script_dir%/*}" + script_dir="${script_dir##*/}" + done + + # Final directory + script_dir="$(pwd -P)" +} + +# }}} + +# Source Config {{{ + + +# Check for $config_file first +getconfig () { + if [ -f "$config_file" ]; then + source "$config_file" + return + fi + + # Check $HOME/.config/fetch and create the + # dir/files if they don't exist. + if [ -f "$HOME/.config/fetch/config" ]; then + source "$HOME/.config/fetch/config" + elif [ -f "/usr/share/fetch/config" ]; then + mkdir -p "$HOME/.config/fetch/" + cp "/usr/share/fetch/config" "$HOME/.config/fetch" + source "$HOME/.config/fetch/config" + else + getscriptdir + + mkdir -p "$HOME/.config/fetch/" + cp "$script_dir/config" "$HOME/.config/fetch" + source "$HOME/.config/fetch/config" + fi +} +getconfig + + +# }}} + + +# }}} + + # Usage {{{ @@ -1925,6 +1982,7 @@ while [ "$1" ]; do --scrot_cmd) scrot_cmd="$2" ;; # Other + --config) config_file="$2"; getconfig ;; --help) usage ;; esac