New version, tarball. Bug fix for GLX/OpenGL output. There was an unhandled case with

core profile data being null, which in turn triggered a bash oddity, where if the IFS is
\n for an array, and if the value of one element is '', then bash ignores that and does
not simply set an empty array key as you'd expect. The correction was to change the IFS
to ^, which worked fine for empty array values.

However, since this bug will impact anyone with empty opengl core profile data, I recommend
updating inxi.

Also, added support for two smaller wm, Sawfish and Afterstep.

This is a good source for lists of wm:  http://www.xwinman.org/ http://www.xwinman.org/others.php

However, that does not show how to ID it, so i have to do it on a case by case, but I'll
add an issue for showing how to get your wm of choice if it's missing to inxi.
This commit is contained in:
Harald Hope 2017-06-24 18:16:29 -07:00
parent d34e621857
commit 70d659acdf
2 changed files with 47 additions and 12 deletions

33
inxi
View file

@ -1,8 +1,8 @@
#!/usr/bin/env bash
########################################################################
#### Script Name: inxi
#### Version: 2.3.21
#### Date: 2017-06-13
#### Version: 2.3.22
#### Date: 2017-06-24
#### Patch Number: 00
########################################################################
#### SPECIAL THANKS
@ -5282,6 +5282,7 @@ get_desktop_environment()
fi
# a few manual hacks for things that don't id with xprop, these are just good guesses
# note that gawk is going to exit after first occurrence of search string, so no need for extra
# http://www.xwinman.org/ for more possible wm
if [[ -z $desktop_environment ]];then
if [[ -n $( grep -is 'fvwm-crystal' <<< "$Ps_aux_Data" ) ]];then
version=$( get_program_version 'fvwm' '^fvwm' '2' )
@ -5316,6 +5317,12 @@ get_desktop_environment()
elif [[ -n $( grep -Eis '([[:space:]]|/)jwm' <<< "$Ps_aux_Data" ) ]];then
version=$( get_program_version 'jwm' '^jwm' '2' )
desktop_environment='JWM'
elif [[ -n $( grep -is 'sawfish' <<< "$Ps_aux_Data" ) ]];then
version=$( get_program_version 'sawfish' '^sawfish' '3' )
desktop_environment='Sawfish'
elif [[ -n $( grep -is 'afterstep' <<< "$Ps_aux_Data" ) ]];then
version=$( get_program_version 'afterstep' '^afterstep' '3' )
desktop_environment='AfterStep'
fi
fi
fi
@ -6417,12 +6424,10 @@ get_graphics_glx_data()
local a_temp=''
# if [[ $B_SHOW_DISPLAY_DATA == 'true' && $B_ROOT != 'true' ]];then
if [[ $B_SHOW_DISPLAY_DATA == 'true' ]];then
IFS=$'\n'
IFS='^'
# NOTE: glxinfo -B is not always available, unforunately
A_GLX_DATA=( $( eval glxinfo $DISPLAY_OPT 2>/dev/null | gawk -F ': ' '
# the real question here though is why this function is even here, seems
# just to be a complicated way to pack/print a variable, but maybe the
# original idea was to handle > 1 cases of detections I guess
# handle > 1 cases of detections
function join( arr, sep ) {
s=""
i=flag=0
@ -6438,6 +6443,11 @@ get_graphics_glx_data()
BEGIN {
IGNORECASE=1
compatVersion=""
# create empty arrays
split("", a)
split("", b)
split("", c)
split("", d)
}
/opengl renderer/ {
gsub(/'"$BAN_LIST_NORMAL"'/, "", $2)
@ -6467,7 +6477,6 @@ get_graphics_glx_data()
# note: this is going to be off if ever multi opengl versions appear, never seen one
compatVersion=gensub(/^([^ \t]+)[ \t].*/,"\\1","g",$2)
}
/opengl core profile version/ {
gsub(/'"$BAN_LIST_NORMAL"'/, "", $2)
# fglrx started appearing with this extra string, does not appear to communicate anything of value
@ -6488,8 +6497,10 @@ get_graphics_glx_data()
oglr = join( a, ", " )
oglv = join( b, ", " )
oglcpv = join( d, ", " )
# output processing done in print functions
printf( "%s\n%s\n%s\n%s\n%s\n", oglr, oglv, dr, oglcpv, compatVersion )
# output processing done in print functions, important! do not use \n IFS
# because Bash treats an empty value surrounded by \n\n as nothing, not an empty array key!
# this came up re oglcpv being empty and compatVersion being used instead
printf( "%s^%s^%s^%s^%s", oglr, oglv, dr, oglcpv, compatVersion )
}' ) )
IFS="$ORIGINAL_IFS"
@ -13048,7 +13059,7 @@ print_graphics_data()
if [[ -z $glx_renderer ]];then
glx_renderer='N/A'
fi
if [[ -z $glx_version ]];then
if [[ -z $glx_version ]];then
glx_version='N/A'
else
# non free drivers once filtered and cleaned show the same for core and compat
@ -13059,8 +13070,6 @@ print_graphics_data()
glx_version="$glx_version (compat-v$SEP3 $glx_compat_version_nu)"
fi
fi
elif [[ -z $glx_core_version ]];then
glx_version='N/A'
fi
fi

View file

@ -1,3 +1,29 @@
=====================================================================================
Version: 2.3.22
Patch Version: 00
Script Date: 2017-06-24
-----------------------------------
Changes:
-----------------------------------
New version, tarball. Bug fix for GLX/OpenGL output. There was an unhandled case with
core profile data being null, which in turn triggered a bash oddity, where if the IFS is
\n for an array, and if the value of one element is '', then bash ignores that and does
not simply set an empty array key as you'd expect. The correction was to change the IFS
to ^, which worked fine for empty array values.
However, since this bug will impact anyone with empty opengl core profile data, I recommend
updating inxi.
Also, added support for two smaller wm, Sawfish and Afterstep.
This is a good source for lists of wm: http://www.xwinman.org/ http://www.xwinman.org/others.php
However, that does not show how to ID it, so i have to do it on a case by case, but I'll
add an issue for showing how to get your wm of choice if it's missing to inxi.
-----------------------------------
-- Harald Hope - Sat, 24 Jun 2017 18:00:21 -0700
=====================================================================================
Version: 2.3.21
Patch Version: 00