getInfo 2.43.0

This commit is contained in:
kyodev 2017-11-22 20:33:37 +01:00
parent 52da9ff67e
commit fa21b1e200
2 changed files with 188 additions and 138 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=2.42.3
date="21/11/2017"
version=2.43.0
date="22/11/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getInfo"
@ -372,22 +372,23 @@ f_dspl_alert(){ # 21/11/2017
echo -en "$display\n" >> "$fileOutput" # flush fonction
}
# conversion markdown pour affichage en console, $1 file à parser
# tout en bash pour regex par défaut non-greedy (non gourmand) comme sed ou gawk
# conversion markdown pour affichage en console, $1 file à parser, [$2=marge] margin left 2 espaces
# tout en bash regex par défaut non-greedy (non gourmand) comme sed ou gawk
# contrainte markdown:
# l'italique avec _ ou * n'est pas géré, trop d'interférences potentielles
# liste niveau2: 3 ou 4 caractères, niveau3: 6 ou 8 caractères, puce * ou -
f_dspl_md(){ # 20/11/2017
local display display2 ifs_origin ligne
f_dspl_md(){ # 22/11/2017
local display display2 ifs_origin ligne margin
if [ ! -f "$1" ]; then
f__info "pas de rapport à afficher, vous devez lancer une analyse auparavant:" \
"$GREEN$script -l$BLUE ou afficher l'aide $GREEN$script -h"
return 0
fi
if [ "$(stat -c %s $1)" -gt "100000" ]; then # taille en octets, > 100ko
if [ "$(stat -c %s $1)" -gt "100000" ]; then # si taille en octets > 100ko pager
pager "$1" || less "$1" || more "$1"
return
fi
[ "$2" == "marge" ] && margin=" "
display=$(< $1)
display=${display//\`\`\`/---} # transforme ``` en ---, plus visibles
# traitement par lignes, à là sed, obligatoire pour les titres #
@ -426,7 +427,7 @@ f_dspl_md(){ # 20/11/2017
# puces niveau 3
[[ "$ligne" =~ ^([[:space:]]{6,8})\*(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]}
[[ "$ligne" =~ ^([[:space:]]{6,8})-(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]}
display2+="$ligne\n"
display2+="$margin""$ligne\n"
done <<< "$display"
IFS="$ifs_origin"
echo -e "$display2"
@ -450,64 +451,72 @@ f_dspl_scandir(){ # 21/10/2017
echo -e "$text" >> "$fileOutput" # flush fonction
}
# $1=liste fichier(s) à grepper, [$2]: largeur 1ère colonne &| ' nofile' &| ' novide'
# $1=liste fichier(s) à grepper, [$2]: largeur 1ère colonne &| nofile &| novide &| ligneVide
# si 'nofile' pas d'énumération de fichier greppé, si aucun fichier retour 'nofile',
# concatène les fichiers, induit novide
# si novide pas d'indication vide, ex. cumul option: " 10 novide" bien que '10-novide-nofile' fonctionne
f_grep_file(){ # 19/11/2017
local file var_temp display
## concatène les fichiers, induit novide
# si novide pas d'indication vide,
# ex. cumul option: " 10 novide" '10-novide-nofile' fonctionne
# si ligneVide, pas de suppression des lignes vides
# grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' file|dossier
f_grep_file(){ # 22/11/2017
local file content display
for file in $1; do
var_temp="$(grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' $file)"
content=$( grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' "$file")
[[ ${2,,} =~ lignevide ]] && content=$( grep -Ersv '^[[:blank:]]*#' "$file")
[ -d "$file" ] && file+='/' # si répertoire, ajout / final
var_temp=${var_temp//$file} # pour esthétique, suppression de $file dans les noms de fichiers
[[ "$2" =~ nofile ]] || display+=" $file \n" # nom fichier greppé si $2 ne contient pas 'file'
if [ "$var_temp" ]; then
if [[ "$2" =~ [0-9] ]]; then # si $2 contient des chiffres, largeur, gawk
display+=$(gawk -v "larg=${2//[[:alpha:]]}" '
{ printf "%-"larg"s",$1; $1=""; printf "%s\n",$0 }
' <<< "$var_temp")
display+="\n" #?? pk gawk n'honore pas \n final pour la dernière ligne ?!
else
display+="$var_temp\n"
fi
fi
if [[ ! "$2" =~ file ]]; then
[[ "$2" =~ novide || "$var_temp" ]] && display+=$'\n' || display+=" ‣ vide"$'\n'
content=${content//$file} # joli, suppression de $file dans les noms de fichiers en tête de ligne
if [[ "$2" =~ [0-9] ]]; then # si $2 contient des chiffres, largeur, gawk
content=$(gawk -v "larg=${2//[[:alpha:]]}" '
{ printf "%-"larg"s",$1; $1=""; printf "%s\n",$0 }
' <<< "$content")
fi
echo "***"
#[ -z "$content" ] && unset content
content=${content%%[[:space:]]}
echo -n "$content"
echo "***"
content+=$'\n'
[[ "$2" =~ nofile ]] || display+=" $file \n" # nom fichier greppé si $2 pas 'nofile'
[[ "$2" =~ novide || "$content" ]] && display+="$content"$'\n' || display+=" ‣ vide"$'\n'
done
[ "$display" ] || display="nofile" # display vide, inscription 'nofile'
display=${display::-1}
[ "$display" ] || display="nofile" # si display vide, inscription 'nofile'
echo -en "$display"
}
f_help(){ # 06/11/2017
printf "$BLUE"
cat << 'EOF'
./getInfo : exécution normale, rapport markdown de la configuration
getInfo : exécution normale si script installé dans le système
options:
-c : (catégorie) menu sélection catégorie d'analyse
-cs : catégorie système -cs : catégorie configuration
-cr : catégorie réseau -ca : catégorie analyse
-h : (help) affichage aide
-j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca
-l : (list) afficher le rapport markdown existant
-p : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours
-tn : durée du paste de n jour(s)
-us : upgrade spécial du script (pas de mise à jour auto, maj du script en place)
--ip : affiche ip publique (ipv4/ipv6), infos confidentielles, pas de rapport markdown
--mac : affiche les adresses Mac, infos confidentielles, pas de rapport markdown
--serial : affiche n° série disques, batterie et châssis
--ssid : affiche configurations ssid, infos confidentielles, pas de rapport markdown,
root et NetworkManager requis
-i, --install : installation du script dans le système, root requis
-r, --remove : suppression du script dans le système, root requis
-u, --upgrade : upgrade script installé si maj possible
-v, --version : version du script, en ligne et en cours d'exécution
EOF
echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD"
f_help(){ # 22/11/2017
local toDisplay ligne
toDisplay=(
"$GREEN ./getInfo$BLUE : exécution normale, rapport markdown de la configuration"
"$GREEN getInfo$BLUE : script installé dans le système"
""
"$STD$BOLD options:$STD$BLUE"
" -c : (catégorie) menu sélection catégorie d'analyse"
" -cs : catégorie système -cs : catégorie configuration"
" -cr : catégorie réseau -ca : catégorie analyse"
" -h : (help) affichage aide"
" -j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca"
" -l : (list) afficher le rapport markdown existant"
" -p : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours"
""
" --ip : affiche ip publique (ipv4/ipv6), pas de rapport markdown"
" --mac : affiche les adresses Mac, pas de rapport markdown"
" pas de rapport markdown, $RED ROOT$BLUE requis:"
" --serial : affiche n° série disques, batterie et châssis"
" --ssid : affiche configurations ssid, infos confidentielles,$RED NetworkManager$BLUE requis"
""
" -tn : durée du paste de n jour(s)"
" -us : upgrade spécial du script (pas de mise à jour automatique, maj du script en place)"
""
" -i, --install : installation du script dans le système, root requis"
" -r, --remove : suppression du script dans le système, root requis"
" -u, --upgrade : upgrade script installé si maj possible"
" -v, --version : version du script, en ligne et en cours d'exécution"
)
for ligne in "${toDisplay[@]}"; do
echo -e "$ligne"
done
echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD"
}
fi_batt(){ # 10/11/2017
@ -522,6 +531,39 @@ fi_batt(){ # 10/11/2017
unset text
}
fi_conf(){ # 22/11/2017
local conf toScrut=(
/etc/sysctl.conf
'/etc/sysctl.d/*.conf'
'/etc/hostname' # debian
/etc/sysconfig/network # fedora?
/etc/HOSTNAME # suse
# /etc/os-release # nouveau standard systemd/freedesktop
/etc/vconsole.conf
# /etc/locale.conf # voir fi_locale
'/etc/modules-load.d/*.conf'
'/etc/tmpfiles.d/*.conf'
'/etc/binfmt.d/*.conf'
# /etc/machine-id # voir fi-serial
/etc/machine-info
)
#conf=$( f_grep_file "${toScrut[@]}" )
#f_grep_file "${toScrut[*]}" "nofile novide"
echo "----"
#f_grep_file "/etc/apt/s" "nofile esc"
#f_grep_file "/etc/apt/sources.list.d" "nofile"
f_grep_file "/etc/apt/sources.list /etc/apt/sources.list.d/* /etc/toto" ""
echo "----"
#f_grep_file "/etc/apt/sources.list /etc/apt/sources.list.d/* /etc/toto" "nofile"
#echo "----"
#echo $conf
###
text="## fichiers conf divers \n\n"
f_display "conf" "cmd" "grep "
echo -en "$text\n" >> "$fileOutput"
unset text
}
fi_cpu(){ # 19/11/2017
local cpu_flags text iflag var_temp qte_flags text_flags="" pluriel
cpu_flags=$(sed -n 's/^flags.*: \(.*\)$/\1/p;' /proc/cpuinfo | sed -n '1p'| \
@ -1801,46 +1843,39 @@ fi_reseau(){ # 20/11/2017
unset text
}
fi_serial(){ # 16/11/2017
local file="/tmp/$$-$RANDOM-fi_serial" chassis_serial text
fi_serial(){ #v2 22/11/2017
local chassis_serial machineId text
[ "$fg_nb_disk" ] || figet_disk
[ "$fg_nb_batt" ] || figet_batt
f__sudo "cat /sys/class/dmi/id/chassis_serial 2>/dev/null > $file ; \
chown $user_: $file"
chassis_serial="$(cat $file 2>/dev/null)"
rm "$file"
chassis_serial=$( cat /sys/class/dmi/id/chassis_serial 2>/dev/null )
machineId=$( cat /etc/machine-id 2>/dev/null )
###
text="$BOLD\n N° Série \n\n$STD"
[ "$fg_disk_serial" ] && text+="$GREEN * Disques: \n"
[ "$machineId" ] && text+="\n$BOLD ID MAchine: $BLUE$machineId \n\n$STD"
text+="$BOLD* N° Série: \n\n$STD"
[ "$fg_disk_serial" ] && text+="$GREEN * Disques: \n"
[ "$fg_disk_serial" ] && text+="$BLUE$fg_disk_serial \n\n$STD"
[ "$fg_batt_serial" ] && text+="$GREEN * Batteries \n"
[ "$fg_batt_serial" ] && text+="$GREEN * Batteries \n"
[ "$fg_batt_serial" ] && text+="$BLUE$fg_batt_serial \n\n$STD"
[ "$chassis_serial" ] && text+="$GREEN * Chassis \n"
[ "$chassis_serial" ] && text+="$GREEN * Chassis \n"
[ "$chassis_serial" ] && text+="$BLUE$chassis_serial \n\n$STD"
echo -en "$text\n" >> "$fileOutput"
echo -en "$text"
unset text
}
fi_ssid(){ # 09/11/2017
[ $( f__which nmcli ) ] || f__error "NetworkManager requis"
local nm_ssid file="/tmp/$$-$RANDOM-fi_ssid" text
# nm_ssid="$(grep -Ev '#|^$' /etc/NetworkManager/system-connections/*)"
[ "$EUID" -eq 0 ] || echo
f__sudo "grep -Ev '^[[:blank:]]*#|^[[:blank:]]*$' /etc/NetworkManager/system-connections/* > $file ; \
chown $user_: $file"
if [ "$?" != "0" ]; then
f__info "\n la consultation des connections NetworkManager$RED a échoué$BLUE (droits root requis, échec authentification?)"
return 1
fi
nm_ssid="$(cat $file 2>/dev/null)"
rm "$file"
fi_ssid(){ #v2 22/11/2017
local nm_ssid text
local fileOutput="/tmp/$RANDOM-$RANDOM" # ré-assigne sortie pour f_display
[ "$EUID" -eq 0 ] || f__error "Root requis"
[ $( f__which nmcli ) ] || f__error "NetworkManager requis"
nm_ssid=$( f_grep_file "/etc/NetworkManager/system-connections/*" "ligneVide" )
###
f__info "la$RED clé du réseau wifi étant visible$STD, aucun rapport n'a été créé"
text="$BOLD configuration(s) ssid networkmanager \n\n"
text+="$GREEN""grep -Ehv '#|^$' /etc/NetworkManager/system-connections/*$STD \n\n"
text+="$nm_ssid \n\n"
f__info "$RED""Attention:$BLUE la clé du réseau wifi est visible"
text="## configuration(s) ssid networkmanager \n\n"
f_display "nm_ssid" "cmd" "grep -Ersv '#|^$' /etc/NetworkManager/system-connections/*"
echo -en "$text\n" >> "$fileOutput"
unset text
f_dspl_md "$fileOutput" "marge"
rm "$fileOutput"
}
fi_system_analyse(){ #v 21/11/2017
@ -1915,7 +1950,7 @@ fi_system_analyse(){ #v 21/11/2017
unset text
}
fi_systeme(){ # 21/11/2017
fi_systeme(){ # 22/11/2017
local mbr uname bootImage initDaemon serverX shells lastboot uptime charge pluriel text
local alimentation alim_total ish ifs_origin ligne date_install microcode
local alert_SLiM alert_microcode
@ -1924,7 +1959,7 @@ fi_systeme(){ # 21/11/2017
bootImage="$(gawk '/BOOT_IMAGE/ {print $1}' /proc/cmdline)"
bootImage="$(gawk '{print $1}{i=2; while (i <= NF-1) { print " ",$i; i++}}' /proc/cmdline)"
initDaemon="$(ps -p1 | gawk 'FNR==2 {print $4}')" #? ps -ax | gawk '$1==1' ou ps -p1 | gawk '$1==1'
[ "$initDaemon" == "systemd" ] && initDaemon=$( systemd --version )
[ $( f__which systemd )] && initDaemon=$( systemd --version )
initDaemon=${initDaemon%%[[:space:]]+*}
initDaemon=${initDaemon/systemd/systemd version}
[ "$ENV_SSH" ] && serverX="n/a (ssh)" || serverX="$XDG_SESSION_TYPE" # normalement retourne wayland
@ -2395,7 +2430,7 @@ figet_de(){ #v 21/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 07/11/2017
figet_disk(){ #v2 22/11/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
@ -2427,6 +2462,7 @@ figet_disk(){ #v2 07/11/2017
fi
done
[ "$fg_disk_table" ] && fg_disk_table=${fg_disk_table::-1} # suppression dernier $'\n'
[ "$fg_disk_serial" ] && fg_disk_serial=${fg_disk_serial::-1} # suppression dernier $'\n'
# nb de disques (fixe+amovible), peut servir d'indicateur fonction déja appelée
fg_nb_disk="$(tr ' ' '\n' <<< "$fg_disk_fixe$fg_disk_amov" | grep -c .)"
# séquences partitions fixes, montées (m) et non montées (nm)
@ -3248,6 +3284,57 @@ fscript_update(){ # 06/11/2017
rm -rf "$dirTemp/"
}
prg_init(){ # 22/11/2017
PATH='/usr/sbin:/usr/bin:/sbin:/bin'
TERM=xterm
IFS=$' \t\n'
export PATH TERM IFS
# aucune erreur visible, prévoir option --debug
# exec 2>/dev/null
# exec 2>"$script.log" # à tester
# test bash v4
bashVersion=( $( grep -o 'version 4' <<< $( bash --version ) ) )
[ ${bashVersion[1]} -ge 4 ] || f__error "bash v4 requis" \
"version installée: $( grep -m1 'version' <<< $(bash --version) )"
# test /proc
[ -e /proc/cpuinfo ] || f__error "/proc/cpuinfo non trouvé" "/proc ne doit pas être monté"
# test OS
OS=$(uname -s)
[[ ${OS,,} =~ linux || ${OS,,} =~ gnu ]] && OS="linux"
[[ ${OS,,} =~ bsd || ${OS,,} =~ Bitrig || ${OS,,} =~ DragonFly ]] && OS="bsd"
[[ ${OS,,} =~ cygwin || ${OS,,} =~ msys || ${OS,,} =~ mingw ]] && OS="windows"
[ "$OS" == "bsd" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sur BSD..."
[ "$OS" == "windows" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sous windows..."
[ "$OS" != "linux" ] && f__error "Linux requis"
# recherche wayland
[ "$(ps -ef | grep -c 'wayland')" -gt 1 ] && wayland="wayland"
# essai détection erreur No protocol specified, Can't open display :0 (root Fedora)
if [[ "$wayland" && "$EUID" -eq 0 ]]; then
f__info "Wayland ne permet pas de lancer des applications graphiques en Root" \
"seul l'utilisateur ayant démarré le serveur X peut permettre des connexions à celui-ci" \
"le plus simple est de redémarrer le script en utilisateur pour déterminer certaines propriétés graphiques ou essayer: \n" \
"$GREEN""xhost si:localuser:root$BLUE pour autoriser,$GREEN xhost -si:localuser:root$BLUE pour enlever cette autorisation"
fi
# test SSH
[[ "$SSH_CLIENT" || "$SSH_CLIENT" || "$SSH_CLIENT" ]] && ENV_SSH="ssh"
# détermination user derrière root
f__user
retourFUser="$?"
[ "$retourFUser" -eq 1 ] && f__error "user indéterminé" \
"pour contourner, lancer le script avec:\n$GREEN USER_INSTALL=<user> $0 \n"
if [ "$retourFUser" -eq 2 ]; then
[ "$EUID" -eq 0 ] && user_="root" || f__error "user détecté, mais pas de home: /home/$user_"
f__info "user root"
fi
# requis pour fonctionnement programme
f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils" || exit 1
}
prg_1(){ # début
echo > "$fileOutput"
chown $user_: "$fileOutput" &>/dev/null
@ -3263,7 +3350,7 @@ prg_2(){ # traitements principaux 21/11/2017
$i
done
fi
if [[ "$1" == all || "$1" =~ c ]]; then #configuration #debian, packages -cc
if [[ "$1" == all || "$1" =~ c ]]; then #configuration #debian, packages -cc fi_conf
echo -e "# ▷ Configuration \n\n" >> "$fileOutput"
for i in fi_locale fi_vrms fi_packagers ; do
echo -n "•"
@ -3324,49 +3411,6 @@ function display_menu {
reply="$(sed 's/-call/all/' <<< $reply)"
exec $0 "$reply"
}
prg_init(){ # 21/11/2017
PATH='/usr/sbin:/usr/bin:/sbin:/bin'
TERM=xterm
IFS=$' \t\n'
export PATH TERM IFS
# aucune erreur visible, prévoir option --debug
# exec 2>/dev/null
# exec 2>"$script.log" # à tester
# test bash v4
bashVersion=( $( grep -o 'version 4' <<< $( bash --version ) ) )
[ ${bashVersion[1]} -ge 4 ] || f__error "bash v4 requis" \
"version installée: $( grep -m1 'version' <<< $(bash --version) )"
# test /proc
[ -e /proc/cpuinfo ] || f__error "/proc/cpuinfo non trouvé" "/proc ne doit pas être monté"
# test OS
OS=$(uname -s)
[[ ${OS,,} =~ linux || ${OS,,} =~ gnu ]] && OS="linux"
[[ ${OS,,} =~ bsd || ${OS,,} =~ Bitrig || ${OS,,} =~ DragonFly ]] && OS="bsd"
[[ ${OS,,} =~ cygwin || ${OS,,} =~ msys || ${OS,,} =~ mingw ]] && OS="windows"
[ "$OS" == "bsd" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sur BSD..."
[ "$OS" == "windows" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sous windows..."
[ "$OS" != "linux" ] && f__error "Linux requis"
# recherche wayland
[ "$(ps -ef | grep -c 'wayland')" -gt 1 ] && wayland="wayland"
# essai détection erreur No protocol specified, Can't open display :0 (root Fedora)
if [[ "$wayland" && "$EUID" -eq 0 ]]; then
f__info "Wayland ne permet pas de lancer des applications graphiques en Root" \
"seul l'utilisateur ayant démarré le serveur X peut permettre des connexions à celui-ci" \
"le plus simple est de redémarrer le script en utilisateur pour déterminer certaines propriétés graphiques ou essayer: \n" \
"$GREEN""xhost si:localuser:root$BLUE pour autoriser,$GREEN xhost -si:localuser:root$BLUE pour enlever cette autorisation"
fi
# test SSH
[[ "$SSH_CLIENT" || "$SSH_CLIENT" || "$SSH_CLIENT" ]] && ENV_SSH="ssh"
# détermination user derrière root
f__user
retourFUser="$?"
[ "$retourFUser" -eq 1 ] && f__error "user indéterminé" \
"pour contourner, lancer le script avec:\n$GREEN USER_INSTALL=<user> $0 \n"
if [ "$retourFUser" -eq 2 ]; then
[ "$EUID" -eq 0 ] && user_="root" || f__error "user détecté, mais pas de home: /home/$user_"
f__info "user root"
fi
}
######## début script / initialisation
@ -3375,8 +3419,6 @@ f__affichage
# tests au démarrage
prg_init
# requis pour fonctionnement programme
f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils" || exit 1
options=$@
# traitement option paramètres
@ -3425,8 +3467,8 @@ for j in $options; do
case $j in
-t | --test )
prg_1 "$*"
echo -n "."
fi_graph
echo -n ""
fi_conf
exit ;; # test
-c* | all )
[ "$j" == "-c" ] && exec $0 "menu"

View File

@ -3,9 +3,17 @@
* f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update
* ! f__requis, fscript_install, f__scandir
## 2.43.0 22/11/2017
* nouveau: fi_serial, machine ID si présent
* révision: f_help, nouvelle manière afficher
* fix: fi_serial, fi_ssid, pas d'utilisation fichier MD
* fix: f_grep_file, protection espaces dans nom de fichier (NM!..)
* fix: fi_systeme, erreur sous fedora
## 2.42.3 21/11/2017
* révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo...
* révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo... +70lignes pour ça, environ!
* révision: fi_system, figet_de, fi_graph, figet_screen, fi_system_analyse prise en compte wayland
* révision: figet_wm, + compositor si connu
* révision: fi_log_xorg, + emplacement log sous gdm3 X11 (nouveau sous buster?), cmd et info adaptés