diff --git a/1.1.md b/1.1.md index b6bc0d81..cbc9debf 100644 --- a/1.1.md +++ b/1.1.md @@ -69,6 +69,43 @@ the distro ascii art and the automatic config creation. - Fetch now has a Gentoo/Funtoo e-build courtesy of @z1lt0id +### Stdout + +- Added `stdout` mode which allows you to fetch info in a plain text format that works
+with lemonbar and in your scripts. You can use it by launching fetch with `--stdout` to print all functions enabled
+in your `printinfo` function. You can selectively print functions by passing arguments to `--stdout`
+like so: + +```sh +# Print the output of all info functions enabled in printinfo +fetch --stdout + +# Print the output of memory +fetch --stdout memory + +# Print the output of memory and disk +fetch --stdout disk + +``` + +- Added `--stdout_seperator` and `$stdout_seperator` which takes a string and adds it
+as a seperator between the output. +- Added `--stdout_title` and `$stdout_title` which allow you to toggle the `title@hostname`
+from appearing in the output. +- Added `--stdout_subtitles` which allow you to toggle the `Info:` titles from appearing in
+the output. + +```sh +# Hiding subtitles +fetch --stdout --stdout_subtitles off + +# Custom seperator +fetch --stdout disk gpu --stdout_seperator " | " + +``` + +**NOTE:** `stdout_subtitles` and `stdout_title` only work when `--stdout` is used on its own. + ### Info - You can now display info without a subtitle. eg. `info memory` diff --git a/README.md b/README.md index b1a904fa..e49eeae1 100644 --- a/README.md +++ b/README.md @@ -297,6 +297,15 @@ alias fetch2="fetch \ --ascii_distro distro Which Distro\'s ascii art to print + Stdout: + --stdout info info Launch fetch in stdout mode which prints the info + in a plain-text format that you can use with + lemonbar etc. + --stdout_title on/off Hide/Show the title in stdout mode. + --stdout_seperator string String to use as a seperator in stdout mode. + --stdout_subtitles on/off Hide/Show the subtitles in stdout mode. + + Screenshot: --scrot /path/to/img Take a screenshot, if path is left empty the screen- shot function will use \$scrot_dir and \$scrot_name. diff --git a/config/config b/config/config index 1f6edb90..5049afca 100644 --- a/config/config +++ b/config/config @@ -330,4 +330,20 @@ config="on" config_file="$HOME/.config/fetch/config" +# }}} + +# Other Options {{{ + +# Seperator to use in stdout mode. +# --stdout_seperator string +stdout_seperator=" " + +# Hide/Show the title in stdout mode. +# --stdout_title on/off +stdout_title="off" + +# Hide/Show each info's subtitle in stdout mode. +# --stdout_subtitles on/off +stdout_subtitles="on" + # }}} diff --git a/fetch b/fetch index e905a5b3..f85576d2 100755 --- a/fetch +++ b/fetch @@ -350,6 +350,22 @@ config="on" config_file="$HOME/.config/fetch/config" +# }}} + +# Other Options {{{ + +# Seperator to use in stdout mode. +# --stdout_seperator string +stdout_seperator=" " + +# Hide/Show the title in stdout mode. +# --stdout_title on/off +stdout_title="off" + +# Hide/Show each info's subtitle in stdout mode. +# --stdout_subtitles on/off +stdout_subtitles="on" + # }}} @@ -1222,8 +1238,8 @@ getbattery () { else # If there's only a single battery and it's battery 0, # don't number the subtitle. - if [ "${#batteries[@]}" == 1 ] && [ "$battery_num" == 0 ]; then - prin "${title}: ${batteries[0]}%" + if [ "${#batteries[@]}" == 1 ]; then + battery="${batteries[0]}%" return fi @@ -1782,6 +1798,11 @@ info () { string="${bold}${title_color}${output}" string="${string/@/${at_color}@${title_color}}" length=${#output} + + # Hide the title in stdout mode + [ "$stdout" == "on" ] && \ + [ "$stdout_title" == "off" ] &&\ + string="" ;; underline) @@ -1799,7 +1820,22 @@ info () { [ -z "$2" ] && string=${string/*: } # Print the string - printf "%b%s\n" "${padding}${string}${clear}" + if [ "$stdout" == "on" ]; then + + # Unset the vars containg escape codes as lemonbar doesn't + # support them. + unset -v bold subtitle_color clear colon_color info_color \ + underline_color title_color at_color + + # Show/Hide subtitles + [ "$stdout_subtitles" == "off" ] && string=${string/*: } + + # If the string isn't empty, print it. + [ ! -z "$string" ] && printf "%s" "${string}${stdout_seperator}" + + else + printf "%b%s\n" "${padding}${string}${clear}" + fi } # }}} @@ -1823,7 +1859,34 @@ prin () { ;; esac - printf "%b%s\n" "${padding}${string}${clear}" + # Print the info + if [ "$stdout" == "on" ]; then + printf "%s" "${string}${stdout_seperator}" + else + printf "%b%s\n" "${padding}${string}${clear}" + fi +} + +# }}} + +# Stdout {{{ + +stdout () { + printinfo () { + index=1 + for func in "${args[@]}"; do + + case "$func" in + "--stdout") continue ;; + "--"*) break ;; + *) + case "${args[$((index + 1))]}" in "--"*) unset stdout_seperator ;; esac + info "$func" + ;; + esac + index=$((index + 1)) + done + } } # }}} @@ -2038,11 +2101,21 @@ usage () { cat << EOF --ascii_distro distro Which Distro\'s ascii art to print + Stdout: + --stdout info info Launch fetch in stdout mode which prints the info + in a plain-text format that you can use with + lemonbar etc. + --stdout_title on/off Hide/Show the title in stdout mode. + --stdout_seperator string String to use as a seperator in stdout mode. + --stdout_subtitles on/off Hide/Show the subtitles in stdout mode. + + Screenshot: --scrot /path/to/img Take a screenshot, if path is left empty the screen- shot function will use \$scrot_dir and \$scrot_name. --scrot_cmd cmd Screenshot program to launch + Other: --config /path/to/config Specify a path to a custom config file --config none Launch the script without a config file @@ -2149,6 +2222,22 @@ while [ "$1" ]; do --scrot | -s) scrot="on"; [ "$2" ] && scrot_path="$2" ;; --scrot_cmd) scrot_cmd="$2" ;; + # Stdout + --stdout_title) stdout_title="$2" ;; + --stdout_seperator) stdout_seperator="$2" ;; + --stdout_subtitles) stdout_subtitles="$2" ;; + --stdout) + case "$2" in + "--"* | "") stdout="on" ;; + *) stdout="on"; stdout_args="on"; args=("$@"); stdout ;; + esac + + unset info_color colors + underline="off" + image="off" + color_blocks="off" + ;; + # Other --config) case "$2" in @@ -2213,7 +2302,7 @@ fi [ "$image" != "off" ] && printf "\033[0H" # Get colors / bold -colors +colors 2>/dev/null bold # Print the info