lua rewrite
This commit is contained in:
Executable
+171
@@ -0,0 +1,171 @@
|
||||
#!/bin/bash
|
||||
|
||||
# color definitions
|
||||
C_RESET=$'\e[0m'
|
||||
C_GRAY=$'\e[90m'
|
||||
C_CYAN=$'\e[36m'
|
||||
C_WHITE=$'\e[97m'
|
||||
C_BYELLOW_BOLD=$'\e[1;93m'
|
||||
C_BWHITE_BOLD=$'\e[1;97m'
|
||||
C_DIMYELLOW_ITALIC=$'\e[3;93m'
|
||||
|
||||
# Gruvbox Dark Hard palette
|
||||
C_RESET=$'\e[0m'
|
||||
C_GRAY=$'\e[38;2;102;92;84m' # gray
|
||||
C_CYAN=$'\e[38;2;125;174;163m' # muted blue
|
||||
C_WHITE=$'\e[38;2;235;219;178m' # light foreground
|
||||
C_BYELLOW_BOLD=$'\e[1;38;2;250;189;47m'
|
||||
C_BWHITE_BOLD=$'\e[1;38;2;235;219;178m'
|
||||
C_DIMYELLOW_ITALIC=$'\e[3;38;2;215;153;33m' # yellow
|
||||
|
||||
C_AQUA=$'\e[38;2;142;192;124m'
|
||||
|
||||
LOGO=" $C_GRAY|$C_RESET
|
||||
$C_CYAN /\\ /\\ $C_GRAY|$C_RESET
|
||||
$C_CYAN // \\ \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN // \\ \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN /// \\ \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN // \\ \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN \\ $C_GRAY|$C_RESET
|
||||
$C_GRAY|$C_RESET"
|
||||
|
||||
LOGO_ARCH=" $C_GRAY|$C_RESET
|
||||
$C_CYAN /\\ $C_GRAY|$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN / ,, \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN / | | \\ $C_GRAY|$C_RESET
|
||||
$C_CYAN /_-'' ''-_\\ $C_GRAY|$C_RESET
|
||||
$C_GRAY|$C_RESET"
|
||||
|
||||
LOGO_slash=" $C_GRAY/$C_RESET
|
||||
$C_CYAN /\\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / ,, \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / | | \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN /_-'' ''-_\\ $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
LOGO_VOID=" $C_GRAY/$C_RESET
|
||||
$C_CYAN _______ $C_GRAY/$C_RESET
|
||||
$C_CYAN _ \______ \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN | \ ___ \ | $C_GRAY/$C_RESET
|
||||
$C_CYAN | | / \ | | $C_GRAY/$C_RESET
|
||||
$C_CYAN | | \___/ | | $C_GRAY/$C_RESET
|
||||
$C_CYAN | \______ \_| $C_GRAY/$C_RESET
|
||||
$C_AQUA \\_______\ $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
LOGO_DEVUAN=" $C_GRAY/$C_RESET
|
||||
$C_CYAN ..:::. $C_GRAY/$C_RESET
|
||||
$C_CYAN ..-==- $C_GRAY/$C_RESET
|
||||
$C_CYAN .+#: $C_GRAY/$C_RESET
|
||||
$C_CYAN =@@ $C_GRAY/$C_RESET
|
||||
$C_CYAN :+%@#: $C_GRAY/$C_RESET
|
||||
$C_CYAN .:=+#@@%*: $C_GRAY/$C_RESET
|
||||
$C_CYAN #@@@#=: $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
|
||||
LOGO_GENTOO=" $C_GRAY/$C_RESET
|
||||
$C_WHITE _-----_ $C_GRAY/$C_RESET
|
||||
$C_WHITE ( \ $C_GRAY/$C_RESET
|
||||
$C_WHITE \ 0 \ $C_GRAY/$C_RESET
|
||||
$C_WHITE \ ) $C_GRAY/$C_RESET
|
||||
$C_WHITE / _/ $C_GRAY/$C_RESET
|
||||
$C_WHITE ( _- $C_GRAY/$C_RESET
|
||||
$C_WHITE \____- $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
|
||||
# all the info fields
|
||||
USER=$USER
|
||||
HOSTNAME=$(cat /etc/hostname)
|
||||
CPU_MODELNAME=$(cat /proc/cpuinfo | awk -F ":" '/model name/ {print $2}' | awk -F " " '{print $3}' | head -1)
|
||||
CPU_THREADS_NUM=$(nproc)
|
||||
|
||||
RAM_TOTAL=$(awk '/MemTotal:/ { printf "%.1f\n", $2 / 1000000 }' /proc/meminfo)
|
||||
RAM_FREE=$(awk '/MemAvailable:/ { printf "%.1f\n", $2 / 1000000 }' /proc/meminfo)
|
||||
RAM="$(awk -v total="${RAM_TOTAL}" -v free="${RAM_FREE}" 'BEGIN { print (total - free) }') G / ${RAM_TOTAL} G"
|
||||
|
||||
DISTRO="$(source /etc/os-release && echo $NAME)"
|
||||
|
||||
APK_INSTALLED_PACKAGES="apk list --installed"
|
||||
INSTALLED_PACKAGES_COUNT=$($APK_INSTALLED_PACKAGES | wc -l)
|
||||
|
||||
format_duration() {
|
||||
local seconds=$1
|
||||
local days=$((seconds / 86400))
|
||||
local hours=$((seconds % 86400 / 3600))
|
||||
local minutes=$((seconds % 3600 / 60))
|
||||
local result=""
|
||||
|
||||
(( days > 0 )) && result+="${days}d "
|
||||
(( hours > 0 )) && result+="${hours}h "
|
||||
(( minutes > 0 )) && result+="${minutes}m"
|
||||
|
||||
printf '%s' "${result% }"
|
||||
}
|
||||
|
||||
installed="Thu Nov 5 05:00:00 PM CET 2026" # Alpine Linux install date
|
||||
installed_ts=$(date -d "$installed" +%s)
|
||||
now_ts=$(date +%s)
|
||||
TIME_SINCE_LAST_REINSTALL=$(format_duration "$((now_ts - installed_ts))")
|
||||
|
||||
uptime_seconds=$(awk '{ print int($1) }' /proc/uptime)
|
||||
UPTIME=$(format_duration "$uptime_seconds")
|
||||
|
||||
KERNEL=$(uname -r)
|
||||
|
||||
if [ -n "$HYPRLAND_INSTANCE_SIGNATURE" ]; then
|
||||
WM="hyprland"
|
||||
elif [ -n "$SWAYSOCK" ]; then
|
||||
WM="sway"
|
||||
else
|
||||
WM="unknown"
|
||||
fi
|
||||
|
||||
TERM=$TERM
|
||||
SHELL="${SHELL##*/}"
|
||||
|
||||
|
||||
horizontal_n=$((${#USER} + ${#HOSTNAME} + 3))
|
||||
horizontal_separator_char="-"
|
||||
HORIZONTAL_SEPARATOR=$(printf '%*s' "$horizontal_n" ' ' | tr ' ' "$horizontal_separator_char")
|
||||
|
||||
value=$(grep -E '^gtk-theme-name=' "$HOME/.config/gtk-4.0/settings.ini")
|
||||
value=${value#*=}
|
||||
value=${value//-/ }
|
||||
THEME="$value"
|
||||
|
||||
# -----
|
||||
# output login
|
||||
|
||||
# convert the logo into an array of "lines" (strings)
|
||||
mapfile -t LOGO_LINES <<< "$LOGO"
|
||||
|
||||
# array of strings as well for the info fields
|
||||
INFO_LINES=(
|
||||
"${C_CYAN}$USER${C_GRAY} @ ${C_WHITE}$HOSTNAME${C_RESET}"
|
||||
${C_DIMYELLOW_ITALIC}$HORIZONTAL_SEPARATOR${C_RESET}
|
||||
# "${C_CYAN}cpu ${C_DIMYELLOW_ITALIC} : $CPU_MODELNAME ($CPU_THREADS_NUM threads)${C_RESET}"
|
||||
"${C_CYAN}distro${C_DIMYELLOW_ITALIC} : $DISTRO${C_RESET}"
|
||||
"${C_CYAN}theme ${C_DIMYELLOW_ITALIC} : $THEME${C_RESET}"
|
||||
#"${C_CYAN}ram ${C_DIMYELLOW_ITALIC} : $RAM${C_RESET}"
|
||||
"${C_CYAN}age ${C_DIMYELLOW_ITALIC} : $TIME_SINCE_LAST_REINSTALL${C_RESET}"
|
||||
"${C_CYAN}pkgs ${C_DIMYELLOW_ITALIC} : $INSTALLED_PACKAGES_COUNT${C_RESET}"
|
||||
# "${C_CYAN}uptime${C_DIMYELLOW_ITALIC} : $UPTIME${C_RESET}"
|
||||
#"${C_CYAN}kernel${C_DIMYELLOW_ITALIC} : $KERNEL${C_RESET}"
|
||||
"${C_CYAN}wm ${C_DIMYELLOW_ITALIC} : $WM${C_RESET}"
|
||||
"${C_CYAN}term ${C_DIMYELLOW_ITALIC} : $TERM${C_RESET}"
|
||||
"${C_CYAN}shell ${C_DIMYELLOW_ITALIC} : $SHELL${C_RESET}"
|
||||
)
|
||||
|
||||
for i in "${!LOGO_LINES[@]}"; do
|
||||
# 15 chars is the length of the logo
|
||||
printf "%-15s" "${LOGO_LINES[$i]}"
|
||||
# only print info if it exists for this line
|
||||
[ $i -lt ${#INFO_LINES[@]} ] && printf " %s" "${INFO_LINES[$i]}"
|
||||
printf "\n"
|
||||
done
|
||||
printf "${C_RESET}"
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
|
||||
# color definitions
|
||||
C_RESET=$'\e[0m'
|
||||
C_GRAY=$'\e[90m'
|
||||
C_CYAN=$'\e[36m'
|
||||
C_WHITE=$'\e[97m'
|
||||
C_BYELLOW_BOLD=$'\e[1;93m'
|
||||
C_BWHITE_BOLD=$'\e[1;97m'
|
||||
C_DIMYELLOW_ITALIC=$'\e[3;93m'
|
||||
|
||||
# logo definition
|
||||
LOGO=" $C_GRAY/$C_RESET
|
||||
$C_CYAN /\\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / ,, \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN / | | \\ $C_GRAY/$C_RESET
|
||||
$C_CYAN /_-'' ''-_\\ $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
|
||||
LOGO_GENTOO=" $C_GRAY/$C_RESET
|
||||
$C_WHITE _-----_ $C_GRAY/$C_RESET
|
||||
$C_WHITE ( \ $C_GRAY/$C_RESET
|
||||
$C_WHITE \ 0 \ $C_GRAY/$C_RESET
|
||||
$C_WHITE \ ) $C_GRAY/$C_RESET
|
||||
$C_WHITE / _/ $C_GRAY/$C_RESET
|
||||
$C_WHITE ( _- $C_GRAY/$C_RESET
|
||||
$C_WHITE \____- $C_GRAY/$C_RESET
|
||||
$C_GRAY/$C_RESET"
|
||||
|
||||
# all the info fields
|
||||
USER=$USER
|
||||
HOSTNAME=$(cat /etc/hostname)
|
||||
CPU_MODELNAME=$(cat /proc/cpuinfo | awk -F ":" '/model name/ {print $2}' | awk -F " " '{print $3}' | head -1)
|
||||
CPU_THREADS_NUM=$(nproc)
|
||||
|
||||
RAM_TOTAL=$(awk '/MemTotal:/ { printf "%.1f\n", $2 / 1000000 }' /proc/meminfo)
|
||||
RAM_FREE=$(awk '/MemAvailable:/ { printf "%.1f\n", $2 / 1000000 }' /proc/meminfo)
|
||||
RAM="$(awk -v total="${RAM_TOTAL}" -v free="${RAM_FREE}" 'BEGIN { print (total - free) }') G / ${RAM_TOTAL} G"
|
||||
|
||||
installed="Tue Aug 18 17:45:01 2026"
|
||||
installed_ts=$(date -d "$installed" +%s)
|
||||
now_ts=$(date +%s)
|
||||
diff=$((now_ts - installed_ts))
|
||||
TIME_SINCE_LAST_REINSTALL=$(d=$(( $(date +%s) - $(date -d 'Tue Aug 18 17:45:01 2026' +%s) )); printf '%d days, %02d hours, %02d minutes, %02d seconds\n' $((d/86400)) $((d%86400/3600)) $((d%3600/60)) $((d%60))
|
||||
)
|
||||
|
||||
UPTIME=$(awk '{ s=int($1); printf "%dd %dh %dm\n", s/86400, (s%86400)/3600, (s%3600)/60 }' /proc/uptime)
|
||||
KERNEL=$(uname -r)
|
||||
WM="xfwm"
|
||||
TERM=$TERM
|
||||
SHELL=$(echo -n $SHELL | awk -F "/" '{print $NF}')
|
||||
|
||||
|
||||
horizontal_n=$((${#USER} + ${#HOSTNAME} + 3))
|
||||
horizontal_separator_char="-"
|
||||
HORIZONTAL_SEPARATOR=$(printf '%*s' "$horizontal_n" ' ' | tr ' ' "$horizontal_separator_char")
|
||||
|
||||
# -----
|
||||
# output login
|
||||
|
||||
# convert the logo into an array of "lines" (strings)
|
||||
mapfile -t LOGO_LINES <<< "$LOGO"
|
||||
|
||||
# array of strings as well for the info fields
|
||||
INFO_LINES=(
|
||||
"${C_BYELLOW_BOLD}$USER${C_BWHITE_BOLD} @ ${C_BYELLOW_BOLD}$HOSTNAME${C_RESET}"
|
||||
${C_GRAY}$HORIZONTAL_SEPARATOR${C_RESET}
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $CPU_MODELNAME ($CPU_THREADS_NUM threads)${C_RESET}"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $RAM${C_RESET}"
|
||||
#"GPU: $GPU"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $UPTIME${C_RESET}"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $KERNEL${C_RESET}"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $WM${C_RESET}"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $TERM${C_RESET}"
|
||||
"${C_CYAN}${C_DIMYELLOW_ITALIC} : $SHELL${C_RESET}"
|
||||
)
|
||||
|
||||
for i in "${!LOGO_LINES[@]}"; do
|
||||
# 15 chars is the length of the logo
|
||||
printf "%-15s" "${LOGO_LINES[$i]}"
|
||||
# only print info if it exists for this line
|
||||
[ $i -lt ${#INFO_LINES[@]} ] && printf " %s" "${INFO_LINES[$i]}"
|
||||
printf "\n"
|
||||
done
|
||||
printf "${C_RESET}"
|
||||
Reference in New Issue
Block a user