From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Liav A Date: Tue, 25 Oct 2022 22:06:54 +0300 Subject: [PATCH] Add support for serenity Co-Authored-By: Andreas Kling Co-Authored-By: Nico Weber Co-Authored-By: Linus Groh --- neofetch | 130 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 100 insertions(+), 30 deletions(-) diff --git a/neofetch b/neofetch index 1e4b56462a08dd1ea27fcb21acc6da22f9b6a477..3c111b3207a2abd8107553d353dde9ba42f7bd82 100755 --- a/neofetch +++ b/neofetch @@ -794,7 +794,7 @@ image_source="auto" # popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, # Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, # Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, -# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, +# Septor, SereneLinux, SerenityOS, SharkLinux, Siduction, Slackware, SliTaz, # SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, # openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, # Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, @@ -929,6 +929,7 @@ get_os() { AIX) os=AIX ;; IRIX*) os=IRIX ;; FreeMiNT) os=FreeMiNT ;; + SerenityOS) os=SerenityOS ;; Linux|GNU*) os=Linux @@ -1185,6 +1186,10 @@ get_distro() { FreeMiNT) distro=FreeMiNT ;; + + SerenityOS) + distro=SerenityOS + ;; esac distro=${distro//Enterprise Server} @@ -1356,7 +1361,7 @@ get_title() { get_kernel() { # Since these OS are integrated systems, it's better to skip this function altogether - [[ $os =~ (AIX|IRIX) ]] && return + # [[ $os =~ (AIX|IRIX) ]] && return # Haiku uses 'uname -v' and not - 'uname -r'. [[ $os == Haiku ]] && { @@ -1377,11 +1382,11 @@ get_kernel() { esac # Hide kernel info if it's identical to the distro info. - [[ $os =~ (BSD|MINIX) && $distro == *"$kernel_name"* ]] && - case $distro_shorthand in - on|tiny) kernel=$kernel_version ;; - *) unset kernel ;; - esac + # [[ $os =~ (BSD|MINIX) && $distro == *"$kernel_name"* ]] && + # case $distro_shorthand in + # on|tiny) kernel=$kernel_version ;; + # *) unset kernel ;; + # esac } get_uptime() { @@ -1398,6 +1403,17 @@ get_uptime() { fi ;; + SerenityOS) + if [[ -r /sys/kernel/uptime ]]; then + s=$(< /sys/kernel/uptime) + s=${s/.*} + else + boot=$(date -d"$(uptime -s)" +%s) + now=$(date +%s) + s=$((now - boot)) + fi + ;; + "Mac OS X"|"macOS"|"iPhone OS"|BSD|FreeMiNT) boot=$(sysctl -n kern.boottime) boot=${boot/\{ sec = } @@ -1628,6 +1644,8 @@ get_shell() { off) shell="${SHELL##*/} " ;; esac + [[ "$os" == SerenityOS ]] && shell="SerenityOS Shell " + [[ $shell_version != on ]] && return case ${shell_name:=${SHELL##*/}} in @@ -2096,13 +2114,13 @@ get_cpu() { speed_dir="/sys/devices/system/cpu/cpu0/cpufreq" # Select the right temperature file. - for temp_dir in /sys/class/hwmon/*; do - [[ "$(< "${temp_dir}/name")" =~ (coretemp|fam15h_power|k10temp) ]] && { - temp_dirs=("$temp_dir"/temp*_input) - temp_dir=${temp_dirs[0]} - break - } - done + # for temp_dir in /sys/class/hwmon/*; do + # [[ "$(< "${temp_dir}/name")" =~ (coretemp|fam15h_power|k10temp) ]] && { + # temp_dirs=("$temp_dir"/temp*_input) + # temp_dir=${temp_dirs[0]} + # break + # } + # done # Get CPU speed. if [[ -d "$speed_dir" ]]; then @@ -2268,6 +2286,13 @@ get_cpu() { cpu="$(awk -F':' '/CPU:/ {printf $2}' /kern/cpuinfo)" speed="$(awk -F '[:.M]' '/Clocking:/ {printf $2}' /kern/cpuinfo)" ;; + + "SerenityOS") + cpu="$(jq -r '.[0].brand' /sys/kernel/cpuinfo)" + # `cpu` will contain "@ [speed]GHz" and to be super correct we + # have to cut that off and store it in `speed` only for neofetch + # to append it again later - but that's fine for now this way. + ;; esac # Remove un-needed patterns from cpu output. @@ -2646,6 +2671,15 @@ get_memory() { mem_used="$((mem_used / 1024))" ;; + "SerenityOS") + memstat="$(cat /sys/kernel/memstat)" + physical_allocated="$(echo $memstat | jq .physical_allocated)" + physical_available="$(echo $memstat | jq .physical_available)" + mem_used="$((physical_allocated * 4096 / 1024 / 1024))" + mem_free="$((physical_available * 4096 / 1024 / 1024))" + mem_total="$((mem_used + mem_free))" + ;; + esac [[ "$memory_percent" == "on" ]] && ((mem_perc=mem_used * 100 / mem_total)) @@ -2980,6 +3014,13 @@ get_style() { # Fix weird output when the function is run multiple times. unset gtk2_theme gtk3_theme theme path + if [[ "$os" == "SerenityOS" ]]; then + theme=$(ini /etc/WindowServer.ini Theme Name) + if [ -z "$theme" ]; then + theme="Default" + fi + fi + if [[ "$DISPLAY" && $os != "Mac OS X" && $os != "macOS" ]]; then # Get DE if user has disabled the function. ((de_run != 1)) && get_de @@ -3130,8 +3171,7 @@ get_icons() { xfconf="/Net/IconThemeName" kde="Theme" - get_style - icons="$theme" + icons= } get_font() { @@ -3158,6 +3198,8 @@ get_term() { *) term="${TERM_PROGRAM/\.app}" ;; esac + [[ "$os" == SerenityOS ]] && term="SerenityOS Terminal" + # Most likely TosWin2 on FreeMiNT - quick check [[ "$TERM" == "tw52" || "$TERM" == "tw100" ]] && term="TosWin2" [[ "$SSH_CONNECTION" ]] && term="$SSH_TTY" @@ -3722,10 +3764,10 @@ get_local_ip() { } get_public_ip() { - if type -p dig >/dev/null; then - public_ip="$(dig +time=1 +tries=1 +short myip.opendns.com @resolver1.opendns.com)" - [[ "$public_ip" =~ ^\; ]] && unset public_ip - fi + # if type -p dig >/dev/null; then + # public_ip="$(dig +time=1 +tries=1 +short myip.opendns.com @resolver1.opendns.com)" + # [[ "$public_ip" =~ ^\; ]] && unset public_ip + # fi if [[ -z "$public_ip" ]] && type -p drill >/dev/null; then public_ip="$(drill myip.opendns.com @resolver1.opendns.com | \ @@ -3871,13 +3913,13 @@ image_backend() { } print_ascii() { - if [[ -f "$image_source" && ! "$image_source" =~ (png|jpg|jpeg|jpe|svg|gif) ]]; then - ascii_data="$(< "$image_source")" - elif [[ "$image_source" == "ascii" || $image_source == auto ]]; then - : - else - ascii_data="$image_source" - fi + # if [[ -f "$image_source" && ! "$image_source" =~ (png|jpg|jpeg|jpe|svg|gif) ]]; then + # ascii_data="$(< "$image_source")" + # elif [[ "$image_source" == "ascii" || $image_source == auto ]]; then + # : + # else + # ascii_data="$image_source" + # fi # Set locale to get correct padding. LC_ALL="$sys_locale" @@ -4650,8 +4692,8 @@ term_padding() { padding=${xrdb/*internalBorder:} padding=${padding/$'\n'*} - [[ $padding =~ ^[0-9]+$ ]] || - padding= + # [[ $padding =~ ^[0-9]+$ ]] || + # padding= ;; esac } @@ -4936,7 +4978,7 @@ ASCII: Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, - Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, + Septor, SereneLinux, SerenityOS, SharkLinux, Siduction, Slackware, SliTaz, SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, @@ -9513,6 +9555,34 @@ ${c1} __---''''''---__ EOF ;; + "SerenityOS"*) + set_colors 3 1 7 8 15 + read -rd '' ascii_data <<'EOF' +${c4} _ __ + / o \ ,^ _ `\ + \./ ] | /* / +${c5} - *~ .#_ ${c4}`--` +${c5} ,` ' "w +${c5} ]` / ]${c4}Kp +${c5} B 'M %m ]${c4}KK + K${c5}p \ #${c4}KKH + KK${c5}N,,,w,__,#${c4}KKK + `KKK${c2}\KKKKK${c4}KKK${c3}KK${c4}${c2}KNw${c4} + #R${c3}K${c4}K${c3}\KK${c4}gKKKH${c3}L5${c4}${c2}KK${c4}K + ]K${c3}|a${c4}#KKKKKBKNp${c3}LI${c4}${c2}K${c4}KN + .K${c3}K${c4}KDKBKBBKKKKKKN${c3}]${c4}${c2}KK${c4} +${c2} ]K${c3}IMK${c4}KBKKKKKKKK${c3}RMI${c4}${c2}KKH${c4} +${c2} ]K${c3}I${c4}#KkBBBBBBKKKKN${c3}I${c4}${c2}KK${c4} +${c2} ]K${c3}[K${c4}KKBKKKKKKKKM${c3}*]${c4}KK + `KN${c3}|1${c4}KKKKKKKBKM${c3}`L${c4}KKM + `KN${c3},|]${c4}KKKKK${c3}/|L;${c4}${c2}#${c4}KK + `--KKK KK${c2}KKKKK${c4} + aaNKKKaKK ${c2}`${c4} + KKKKKKKKM + ```` +EOF + ;; + "SharkLinux"*) set_colors 4 7 read -rd '' ascii_data <<'EOF'