getInfo 2.52.0

This commit is contained in:
kyodev 2017-12-02 11:05:56 +01:00
parent 73f89c5802
commit 2a0fce4b6d
2 changed files with 155 additions and 97 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=2.51.2
date="01/12/2017"
version=2.52.0
date="02/12/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getInfo"
@ -11,34 +11,21 @@ script="getInfo"
# contributeurs: kyodev, saiqui, naguam, agentcobra, amilcar
#####
# assigne $affichage_text
f__affichage(){ # 29/10/2017
f__color
affichage_text=" _ ___ __
__ _ ___| |_|_ _|_ __ / _| ___
/ _' |/ _ \ __|| || '_ \| |_ / _ \
| (_| | __/ |_ | || | | | _| (_) |
\__, |\___|\__|___|_| |_|_| \___/
|___/ "
clear
echo -e "$BLUE$affichage_text\n$YELLOW version $version - $date$STD\n"
}
# detect system architecture, assign $architecture : 32bits, i686 | 64bits, amd64 (x86_64),
# détecte system architecture, assign $fu_archi : 32bits, i686 | 64bits, amd64 (x86_64)
# return 1 on unknown architecture
# remarque, debian: dpkg --print-architecture affiche i386
f__architecture(){ # 26/11/2017 spécifique
f__architecture(){ # 2/12/2017 spécifique
case "$(uname -m)" in
amd64 | x86_64 )
architecture="64bits, amd64 (x86_64)";;
fu_archi="64bits, amd64 (x86_64)";;
i?86 | x86 )
architecture="32bits, i686";;
fu_archi="32bits, i686";;
* )
case "$(getconf LONG_BIT)" in
64 )
architecture="64bits, amd64 (x86_64)";;
fu_archi="64bits, amd64 (x86_64)";;
32 )
architecture="32bits, i686";;
fu_archi="32bits, i686";;
*)
return 1
esac ;;
@ -204,10 +191,10 @@ f__sudo(){ # 22/10/2017
done
}
# user ayant initié la session graphique, assigne $user_
# user ayant initié la session graphique, assigne $fu_user
# return 1 sur échec identification user, return 2 sur absence home/
# gestion variable environnement user avec: USER_INSTALL=user script
f__user(){ # 09/10/2017
# gestion variable environnement user avec: USER_INSTALL=<user> script
f__user(){ # 2/12/2017
local user_id test root_login
root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || root_login="root"
if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root
@ -317,6 +304,18 @@ f__which(){ # 27/11/2017
fi
}
f_affichage(){ # 2/12/2017
f__color
affichage_text=" _ ___ __
__ _ ___| |_|_ _|_ __ / _| ___
/ _' |/ _ \ __|| || '_ \| |_ / _ \
| (_| | __/ |_ | || | | | _| (_) |
\__, |\___|\__|___|_| |_|_| \___/
|___/ "
clear
echo -e "$BLUE$affichage_text\n$YELLOW version $version - $date$STD\n"
}
# $1 type de titre var|cmd|sans|+:text|+:vide, $2 variable à afficher [$3 titre] [$4 commentaire]
# $1: cmd->`titre`, var->**titre**, sans: pas de titre
# :text ajouté, affiche le text en liste (avec puce)
@ -905,8 +904,8 @@ fi_efi(){ # 1/12/2017
f_di cmd "efiboot" "efibootmgr -v" "config EFI boot"
}
# assigne $fg_gpu (liste des gpu), $fg_nb_gpu
fi_gpu(){ # 1/12/2017
# assigne $fg_gpu (liste des gpu), $fe_nb_gpu, fe_Xorg
fi_gpu(){ # 2/12/2017
local cards cmd_cards prefixCmd openGl pluriel text
local stck_glxinfo glx_dvc cmd_glx_dvc stck_glxinfoOpt stck_glxinfoDri glx_dvc_temp
local cmd_openGl resolutions cmd_resolutions cmt_resolutions providers cmd_providers
@ -918,14 +917,26 @@ fi_gpu(){ # 1/12/2017
# cardsManuel="lspci -nnv -s $( lspci | grep -Ei 'vga|display|3d' | cut -d" " -f1 )"
# cardsManuel="lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ))"
# liste/description gpu et qte
fg_gpu=$( figet_lspci "video" "name")
fg_nb_gpu=$( f__wcv "-l" "$fg_gpu" )
fe_nb_gpu=$( f__wcv "-l" "$fg_gpu" )
# version Xorg Server
fe_Xorg=$( xdpyinfoT -display $DISPLAY 2>/dev/null | grep 'version:' ) # version Xorg
fe_Xorg=${fe_Xorg//*version: /X.Org X Server}
[ "$fe_Xorg" ] || fe_Xorg=$( X -version 2>/dev/null ) # si ver Xorg vide, essai X
[ "$fe_Xorg" ] || fe_Xorg=$( Xorg -version 2>/dev/null ) # si ver Xorg vide, essai Xorg
if [ "$wayland" ]; then
xScreens=$( xrandr --verbose 2>/dev/null | grep -A1 'Screen' )
[ "$( grep 'XWAYLAND' <<< $xScreens )" ] && wayland+=" Xwayland"
[ "$( grep 'XWAYLAND' <<< $xScreens )" ] && fe_Xorg+=" {Xwayland}"
fi
[ "$1" == "silent" ] && return
[ "$fg_nb_gpu" -eq 0 ] && return 0 # pas de gpu, rien à voir
[ "$fe_nb_gpu" -eq 0 ] && return 0 # pas de gpu, rien à voir
###
# lspci
cmd_cards="lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ))"
if [ "$fg_nb_gpu" -eq 1 ]; then # une seule carte
if [ "$fe_nb_gpu" -eq 1 ]; then # une seule carte
cards=$( figet_lspci "video" "raw" )
else # plusieurs cartes, essai optirun ou prime
cards=$( figet_lspci "video" "raw" "graph")
@ -953,7 +964,7 @@ fi_gpu(){ # 1/12/2017
glx_dvc=$( grep -i 'direct rendering:' <<< "$stck_glxinfo" )$'\n'
glx_dvc+=$( grep 'Device: ' <<< "$stck_glxinfo" | xargs )
cmd_glx_dvc="glxinfo | grep -E 'rendering|Device: '"
if [ "$fg_nb_gpu" -gt 1 ]; then # plusieurs cartes, optirun et prime
if [ "$fe_nb_gpu" -gt 1 ]; then # plusieurs cartes, optirun et prime
if [ $( f__which optirun ) ]; then
stck_glxinfoOpt=$( optirun glxinfo )
glx_dvc_temp=$( grep 'Device: ' <<< $stck_glxinfoOpt | xargs )
@ -967,7 +978,7 @@ fi_gpu(){ # 1/12/2017
fi
# openGL
fi_gpu_openGl # openGl pour une carte ou gpu de base
if [ "$fg_nb_gpu" -gt 1 ]; then # plusieurs cartes, optirun et prime
if [ "$fe_nb_gpu" -gt 1 ]; then # plusieurs cartes, optirun et prime
if [ $( f__which optirun ) ]; then
fi_gpu_openGl "opt" # ajout à $openGl existant, pas de redondance
cmd_openGl="optirun glxinfo"
@ -1009,7 +1020,18 @@ fi_gpu(){ # 1/12/2017
srch_modVid=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
# fonctions externes
[ "$fg_resolution" ] || figet_screen
###
local conf file
toScrut=(
/etc/sysctl.conf
'/etc/X11/xorg.conf '
'/etc/X11/xorg.conf.d/*.conf'
'/usr/share/X11/xorg.conf.d/'
)
confs=$( f_grep_file "${toScrut[*]}" "noinexist" )
###
f_pr titre2 "graphisme"
f_pr l "$( sed -E 's/(.*)/**\1** /' <<< $fg_gpu )" # mise en gras
f_pr
@ -1847,10 +1869,28 @@ fi_ssid(){ #v2 1/12/2017
rm "$fileOutput"
}
fi_system(){ # 01/12/2017
local mbr uname bootImage initDaemon serverX XorgServer shells lastboot uptime charge pluriel text
local alimentation alim_total ligne date_install
fi_system(){ # 2/12/2017
local mbr uname bootImage initDaemon date_install ligne lastboot uptime charge serverX pluriel text
local alimentation alim_total
# appels fonctions externes
[ "$fg_nb_batt" ] || figet_batt
[ "$fg_cpu" ] || figet_cpu
[ "$fg_de" ] || figet_de
[ "$fg_nb_disk" ] || figet_disk
[ "$fg_distrib" ] || figet_distrib
[ "$fg_dsp_mngr" ] || figet_dm
[ "$fg_dmi" ] || figet_dmi
[ "$fg_resolution" ] || figet_screen
[ "$fg_shell" ] || figet_shell
[ "$fg_wm" ] || figet_wm
[ "$fe_cards_audio" ] || fi_audio "silent"
[ "$fe_cards_bluez" ] || fi_bluez "silent"
[ "$fg_gpu" ] || fi_gpu "silent"
[ "$fe_cards_reseau" ] || fi_net "silent"
[ "$fu_archi" ] || f__architecture
echo -n "ø"
# divers système
[ -d /sys/firmware/efi ] && mbr="EFI" || mbr="Legacy (mbr)"
uname=$( uname -rmo )
bootImage=$( gawk '{print $1}{i=2; while (i <= NF-1) { print " ",$i; i++}}' /proc/cmdline )
@ -1861,23 +1901,6 @@ fi_system(){ # 01/12/2017
initDaemon=${initDaemon/systemd /systemd v}
fi
initDaemon=${initDaemon^}
serverX="${XDG_SESSION_TYPE^}" # normalement retourne wayland
[ $( f__which xdpyinfo ) ] && XorgServer=$( xdpyinfo -display $DISPLAY 2>/dev/null | grep 'version:' )
XorgServer=${XorgServer//*version: /X.Org X Server}
[ "$XorgServer" ] || XorgServer=$( X -version 2>/dev/null )
[[ "$XorgServer" ]] && serverX="$XorgServer"
[ "$wayland" ] && serverX="$wayland" # au cas où
[ "$serverX" ] || serverX="n/a"
[ "$ENV_DISPLAY" ] && serverX+=":no DISPLAY"
[ "$ENV_SSH" ] && serverX+=":ssh"
if [ $( grep -c 'AC' <<< $(ls /sys/class/power_supply/ 2>/dev/null) ) -gt 0 ]; then
alim_total=$( grep -cs . <<< $(ls /sys/class/power_supply/AC*/online) )
alimentation=$( gawk -v "alim_total=$alim_total" '
{ alim_on=sprintf("%d", $1); if (alim_on>1) pllo="s" }
END { if ( alim_total > 1 ) pllt="s"; printf alim_total " alimentation" pllt
if ( alim_total != alim_on ) print ", " alim_on " branchée" pllo; else print "" }
' /sys/class/power_supply/AC*/online )
fi
while read ligne; do
date_install=$ligne
done <<< $( ls -lt --time-style '+FORMAT %d/%m/%Y' / )
@ -1898,23 +1921,21 @@ fi_system(){ # 01/12/2017
uptime=${uptime//hour/h} # remplacement global
uptime=${uptime//minutes/mn} # remplacement global
uptime=${uptime//minute/mn} # remplacement global
# appels fonctions externes
[ "$fg_nb_batt" ] || figet_batt
[ "$fg_cpu" ] || figet_cpu
[ "$fg_de" ] || figet_de
[ "$fg_nb_disk" ] || figet_disk
[ "$fg_distrib" ] || figet_distrib
[ "$fg_dsp_mngr" ] || figet_dm
[ "$fg_dmi" ] || figet_dmi
[ "$fg_resolution" ] || figet_screen
[ "$fg_shell" ] || figet_shell
[ "$fg_wm" ] || figet_wm
[ "$fg_gpu" ] || fi_gpu "silent"
[ "$fe_cards_bluez" ] || fi_bluez "silent"
[ "$fe_cards_audio" ] || fi_audio "silent"
[ "$fe_cards_reseau" ] || fi_net "silent"
f__architecture
# server X
serverX="${XDG_SESSION_TYPE^}" # retourne wayland normalement si c'est la cas
serverX+=" $fe_Xorg"
[[ -z "$serverX" && "$ENV_DISPLAY" ]] && serverX+=":no DISPLAY"
[[ -z "$serverX" && "$ENV_SSH" ]] && serverX+=":ssh"
[ -z "$serverX" ] && serverX="n/a"
# alimentation
if [ $( grep -c 'AC' <<< $(ls /sys/class/power_supply/ 2>/dev/null) ) -gt 0 ]; then
alim_total=$( grep -cs . <<< $(ls /sys/class/power_supply/AC*/online) )
alimentation=$( gawk -v "alim_total=$alim_total" '
{ alim_on=sprintf("%d", $1); if (alim_on>1) pllo="s" }
END { if ( alim_total > 1 ) pllt="s"; printf alim_total " alimentation" pllt
if ( alim_total != alim_on ) print ", " alim_on " branchée" pllo; else print "" }
' /sys/class/power_supply/AC*/online )
fi
###
[ "$ORIGIN" ] && f_pr titre2 "système"
f_pr l "$( sed -E 's/(.*)/**\1** /' <<<$fg_dmi )" # en gras
@ -1923,7 +1944,7 @@ fi_system(){ # 01/12/2017
f_pr 2 "**$( sed -n '1p' <<< $fg_cpu )**"
f_pr 1 "Vidéo"
f_pr 2 "$( sed -E 's/(.*)/**\1**/' <<<$fg_gpu )" '[ "$fg_gpu" ]'
f_pr 2 "pas de carte graphique détectée" '[ "$fg_nb_gpu" -eq 0 ]'
f_pr 2 "pas de carte graphique détectée" '[ "$fe_nb_gpu" -eq 0 ]'
f_pr 1 "Réseau"
f_pr 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_cards_reseau )" '[ "$fe_cards_reseau" ]'
f_pr 2 "pas de carte réseau détectée" '[ "$fe_nb_reseau" -eq 0 ]'
@ -1934,17 +1955,17 @@ fi_system(){ # 01/12/2017
f_pr l '```'
f_pr l1 "$fg_distrib"
f_pr l2 "$uname"
f_pr l2 "boot $mbr"
f_pr l2 "architecture système: $architecture"
f_pr l2 "boot: $mbr"
f_pr l2 "architecture système: $fu_archi"
f_pr l2 "date d'installation: $date_install"
f_pr l2 "démon d'initialisation: $initDaemon"
f_pr l2 "shell actif: $fg_shell"
[ $( f__wcv -w ) ] && pluriel="s" || unset pluriel
[ "$( f__wcv -w "$fg_shells" )" ] && pluriel="s" || unset pluriel
f_pr l2 "shell"$pluriel" installé"$pluriel": $fg_shells"
f_pr l2 "$bootImage"
f_pr
f_pr l1 "Environnement"
f_pr l2 "serveur d'affichage $serverX"
f_pr l2 "serveur d'affichage: $serverX"
f_pr l2 "nombre d'écrans: $fg_nb_screen"
[ "$(f__wcv "-wv" "$fg_resolution" "pixels")" -gt 1 ] && pluriel="s" || unset pluriel
f_pr l2 "résolution"$pluriel": $fg_resolution"
@ -2695,7 +2716,7 @@ figet_de(){ #v 30/11/2017 # thanks neofetch
# $fg_disk_part_fixe_m, $fg_disk_part_amov_m : liste partitions montées, fixes ou amovibles
# $fg_disk_part_swap : liste partitions swap
# $fg_disk_part_fixe_nm, $fg_disk_part_amov_nm : liste partitions non montées, fixes ou amovibles
figet_disk(){ #v2 22/11/2017
figet_disk(){ #v2 2/12/2017
local size type list_id idisk lsblk vendor model rev serial
unset fg_disk_fixe fg_disk_amov
# bug printf: caractères accentués diminuent 1 caractère sur arguments suivants, ajouter autant d'espaces
@ -2748,7 +2769,7 @@ figet_disk(){ #v2 22/11/2017
[ "$fg_disk_part_amov_m" ] || fg_disk_part_amov_m="-"
[ "$fg_disk_part_amov_nm" ] || fg_disk_part_amov_nm="-"
# total espaces partitions fixes montées
fg_disk_part_fix_tot="espace des partitions fixes montées (total, utilisé, dispo): "
fg_disk_part_fix_tot="partitions fixes montées (total, utilisé, dispo): "
fg_disk_part_fix_tot+="$(df -h --total --output=size,used,avail $(printf '/dev/%s ' $fg_disk_part_fixe_m) 2>/dev/null | tail -n-1 | xargs)"
fg_disk_part_fix_tot="$(sed 's/G/Go/g; s/M/Mo/g; s/K/ko/g' <<< $fg_disk_part_fix_tot)"
[ "$fg_disk_part_fix_tot" ] || fg_disk_part_fix_tot="n/a"
@ -3359,21 +3380,24 @@ figet_ucode(){ # 29/11/2017
fi
}
# assigne $fg_wm
figet_wm(){ #v 25/11/2017 thanks neofetch
# assigne $fg_wm (compositor non publique, pas fiabilisé)
figet_wm(){ #v 2/12/2017 base départ neofetch
local id wm_brut compositor
fg_wm="n/a"
[ $( f__which xprop ) ] || fg_wm+=":xprop absent" # ! pas de xprop, pas de wm?!
[ "$ENV_DISPLAY" ] && fg_wm+=":no Display"
[ "$ENV_SSH" ] && fg_wm+=":ssh"
[[ "$wayland" && "$EUID" -eq 0 ]] && fg_wm+=":wayland root"
[[ "$fg_wm" =~ : ]] && return 0 # retourne n/a ...
##
id=$( xprop -root -notype _NET_SUPPORTING_WM_CHECK )
##
# WM
id=$( xprop -root -notype _NET_SUPPORTING_WM_CHECK ) # = xprop -root | grep _NET_SUPPORTING_WM_CHECK
id=${id##* } # suppression plus grande chaîne au début jusqu"à ' '
wm_brut=$( xprop -id "$id" -notype -len 100 -f _NET_WM_NAME 8t )
[ "$debug" ] && echo -e "\n$wm_brut\n"
wm_brut=${wm_brut,,} # minuscules
# wm_brut=$( xprop -id "$id" )
wm_brut=$( xprop -id "$id" -notype -len 100 -f _NET_WM_NAME 8t ) # xprop -id "$id" -notype _NET_WM_NAME
[ "$debug" ] && echo -e "\n$( xprop -id "$id" )\n"
wm_brut=${wm_brut,,} # MINUSCULES
fg_wm=${wm_brut/*_net_wm_name = } # suppression jusqu'à 'name = '
fg_wm=${fg_wm/\"} # suppression premier"
fg_wm=${fg_wm/\"*} # suppression 2e " avec éventuels caractères suivants
@ -3381,27 +3405,51 @@ figet_wm(){ #v 25/11/2017 thanks neofetch
[[ "$fg_wm" =~ "windowmaker" ]] && fg_wm="wmaker"
# Fallback for Wayland wms (sway)
[[ "$fg_wm" == "xwlc" ]] && fg_wm=$( ps -e | grep -m1 -Eo 'sway|orbment|velox|orbital' )
fg_wm=${fg_wm^} # caractère 1 en majuscule
# Compositor, dev en cours, essai version
if [[ "$wm_brut" =~ marco_version ]]; then # Mate, ok
compositor=${wm_brut/*_marco_version = } # suppression jusqu'à ...
compositor=${compositor/\"} # suppression premier"
compositor=${compositor/\"*} # suppression 2e " avec éventuels caractères suivants
compositor="Marco v$compositor"
fg_wm=${fg_wm/ (marco)} # suppression (marco) dans wm
fi
if [[ "$wm_brut" =~ mutter_version ]]; then
compositor=${wm_brut/*_mutter_version = } # suppression jusqu'à ...
compositor=${compositor/\"} # suppression premier"
compositor=${compositor/\"*} # suppression 2e " avec éventuels caractères suivants
compositor="(Mutter v$compositor)"
compositor="Mutter v$compositor"
fi
if [[ "$wm_brut" =~ muffin_version ]]; then # en aveugle, jamais vu d'essai
if [[ "$wm_brut" =~ muffin_version ]]; then # cinnamon, ok
compositor=${wm_brut/*muffin_version = } # suppression jusqu'à ...
compositor=${compositor/\"} # suppression premier"
compositor=${compositor/\"*} # suppression 2e " avec éventuels caractères suivants
compositor="(Muffin v$compositor)"
compositor="Muffin v$compositor"
fg_wm=${fg_wm/ (muffin)} # suppression (muffin) dans wm
fi
if [[ "$wm_brut" =~ marco_version ]]; then
compositor=${wm_brut/*_marco_version = } # suppression jusqu'à ...
compositor=${compositor/\"} # suppression premier"
compositor=${compositor/\"*} # suppression 2e " avec éventuels caractères suivants
compositor="(Marco v$compositor)"
fg_wm=${fg_wm/ (marco)}
fi
[ "$compositor" ] && fg_wm="$fg_wm $compositor"
fg_wm=${fg_wm^} # caractère 1 en majuscule
# Gnome2, Metacity
# XFCE, rien pour Xfwm4
# en aveugle, pour test et adaptations futures
[[ "$wm_brut" =~ compiz ]] && compositor+='compiz'
[[ "$wm_brut" =~ compton ]] && compositor+='compton'
[[ "$wm_brut" =~ dwc ]] && compositor+='dwc'
[[ "$wm_brut" =~ fireplace ]] && compositor+='fireplace'
[[ "$wm_brut" =~ gnome-shell ]] && compositor+='gnome-shell'
[[ "$wm_brut" =~ grefson ]] && compositor+='grefson'
[[ "$wm_brut" =~ kmscon ]] && compositor+='kmscon'
[[ "$wm_brut" =~ kwin ]] && compositor+='kwin'
[[ "$wm_brut" =~ moblin ]] && compositor+='moblin'
[[ "$wm_brut" =~ rustland ]] && compositor+='rustland'
[[ "$wm_brut" =~ sway ]] && compositor+='sway'
[[ "$wm_brut" =~ swc ]] && compositor+='swc'
[[ "$wm_brut" =~ wayhouse ]] && compositor+='wayhouse'
[[ "$wm_brut" =~ westford ]] && compositor+='westford'
[[ "$wm_brut" =~ weston ]] && compositor+='weston'
compositor=${compositor^} # caractère 1 en majuscule
compositor="{$compositor}"
#final
fg_wm="$fg_wm $compositor"
}
# aiguillage export paste
@ -3728,7 +3776,7 @@ function display_menu {
######## début script / initialisation
# logo et définition couleurs
f__affichage
f_affichage
# tests au démarrage
prg_init
@ -3782,6 +3830,7 @@ for j in $options; do
ORIGIN='test'
prg_1 "$*"
echo -n "•"
fi_gpu
fi_system
echo; f_dspl_md "$fileOutput"
exit ;; # test

View File

@ -1,10 +1,19 @@
# changelog getInfo
* f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update
* ! f__requis (debOnly), fscript_install, f__scandir
* ! f__requis (debOnly), f__architecture, fscript_install, f__scandir
## 2.52.0 02/12/2017
* nouveau: figet_wm, ajout compositors
* révision: fi_gpu, recherche server Worg
* révision: fi_system (serverX)
* révision: f__architecture, renommage variable publique
* révision:
* révision:
## 2.51.2 01/12/2017
* nouveau: f_pr, f_di nouveau marquage pour construction rapport MD