#!/usr/bin/env bash # ------------------------------------------------------------------------------ # Copyright (c) 2013-2026 Geoffray Levasseur # Protected by the BSD3 license. Please read bellow for details. # # * Redistribution and use in source and binary forms, # * with or without modification, are permitted provided # * that the following conditions are met: # * # * Redistributions of source code must retain the above # * copyright notice, this list of conditions and the # * following disclaimer. # * # * Redistributions in binary form must reproduce the above # * copyright notice, this list of conditions and the following # * disclaimer in the documentation and/or other materials # * provided with the distribution. # * # * Neither the name of the copyright holder nor the names # * of any other contributors may be used to endorse or # * promote products derived from this software without # * specific prior written permission. # * # * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND # * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, # * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # * OF SUCH DAMAGE. # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # Show profile version # Usage: ver ver() { local PARSED PARSED=$(getopt -o h --long help -n 'ver' -- "$@") if [[ $? -ne 0 ]]; then disp E "Invalid options, use \"ver --help\" to display usage." return 1 fi eval set -- "$PARSED" while true; do case "$1" in -h|--help) printf "ver: Display the current profile version.\nUsage: ver\n" return 0 ;; --) shift break ;; *) disp E "Invalid options, use \"ver --help\" to display usage." return 1 ;; esac done [[ -z $PROFVERSION ]] && \ disp W "No version defined. Profile is probably badly installed." && \ return 1 disp "Profile version $PROFVERSION." } export -f ver # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # Display weather for the given city (or the default one) # Usage: meteo [city1 city2 ...] meteo() { local PARSED PARSED=$(getopt -o h --long help -n 'meteo' -- "$@") if [[ $? -ne 0 ]]; then disp E "Invalid options, use \"meteo --help\" to display usage." return 1 fi eval set -- "$PARSED" while true; do case "$1" in -h|--help) printf "meteo: Fetch weather data.\n" printf "Usage: meteo [city1 city2 ...]\n" printf "If no city is provided, the default city from configuration will be used.\n" return 0 ;; --) shift break ;; *) disp E "Invalid options, use \"meteo --help\" to display usage." return 1 ;; esac done local cities=("$@") local city="" encoded="" [[ $# -eq 0 ]] && cities=("$DEFAULT_CITY") for city in "${cities[@]}"; do encoded=$(urlencode "$city") dwl "https://wttr.in/$encoded" || \ disp E "Failed to fetch weather data for $city." done } export -f meteo # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # Display system general information # Usage: showinfo showinfo() { local PARSED PARSED=$(getopt -o h --long help -n 'showinfo' -- "$@") if [[ $? -ne 0 ]]; then disp E "Invalid options, use \"showinfo --help\" to display usage." return 1 fi eval set -- "$PARSED" while true; do case "$1" in -h|--help) printf "showinfo: Display system information (hostname, kernel, uptime and fetch output when available).\n" printf "Usage: showinfo\n" return 0 ;; --) shift break ;; *) disp E "Invalid options, use \"showinfo --help\" to display usage." return 1 ;; esac done local hostname_str local figopt=() hostname_str="$(hostname)" printf "\n" if command -v figlet >/dev/null 2>&1; then [[ -s /usr/share/figlet/ansi_shadow.flf ]] && \ figopt=(-f ansi_shadow) figlet -k "${figopt[@]}" "$hostname_str" else printf "%s\n" "$hostname_str" fi printf "\n" if command -v neofetch >/dev/null 2>&1; then neofetch elif command -v fastfetch >/dev/null 2>&1; then fastfetch else ( if [[ -s /etc/os-release ]]; then # shellcheck disable=SC1091 . /etc/os-release printf "%s %s\n" "$NAME" "$VERSION" else cat /proc/version fi printf "Uptime: %s\n" "$(uptime -p)" ) fi } export -f showinfo # ------------------------------------------------------------------------------ load_conf info # EOF