diff --git a/inxi b/inxi index fc01a6e..4f3dc5f 100755 --- a/inxi +++ b/inxi @@ -191,6 +191,7 @@ A_CPU_TYPE_PCNT_CCNT='' A_DEBUG_BUFFER='' A_GFX_CARD_DATA='' A_GLX_DATA='' +A_GRAPHIC_DRIVERS='' A_HDD_DATA='' A_INTERFACES_DATA='' A_NETWORK_DATA='' @@ -3218,10 +3219,11 @@ get_graphics_driver() # list is from sgfxi plus non-free drivers local driver_list='apm ark ati chips cirrus cyrix fbdev fglrx glint i128 i740 intel i810 imstt mach64 mga neomagic nsc nv nvidia openchrome nouveau radeon radeonhd rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng unichrome vesa vga via voodoo vmware v4l' - local driver='' driver_string='' spacer='' xorg_log_data='' status='' + local driver='' driver_string='' xorg_log_data='' status='' if [[ $B_XORG_LOG == 'true' ]];then xorg_log_data="$( cat $FILE_XORG_LOG )" + A_GRAPHIC_DRIVERS=( $( for driver in $driver_list do # note there appears to be different unload/failed syntax, so using simple conservative one @@ -3232,14 +3234,15 @@ get_graphics_driver() else status='failed' fi - driver_string="$driver_string$driver->$status$spacer" - spacer=' ' + driver_string="$driver,$status" + echo $driver_string fi done + ) ) xorg_log_data='' # dump from ram, does it matter? fi - - echo $driver_string + log_function_data "A_GRAPHIC_DRIVERS: ${A_GRAPHIC_DRIVERS[@]}" + eval $LOGFE } @@ -5426,6 +5429,7 @@ print_gfx_data() local screen_resolution="$( get_graphics_res_data )" local b_is_mesa='false' display_full_string='' gfx_bus_id='' gfx_card_data='' local res_tty='Res' xorg_data='' x_vendor_string='' x_driver_string='' x_driver_plural='' + local spacer='' # set A_GFX_CARD_DATA get_graphics_card_data # set A_X_DATA @@ -5439,11 +5443,27 @@ print_gfx_data() # this can contain a long No case debugging message, so it's being sliced off # note: using grep -ioE '(No|Yes)' <<< ${A_GLX_DATA[2]} did not work in Arch, no idea why local glx_direct_render=$( gawk '{print $1}' <<< "${A_GLX_DATA[2]}" ) - local x_driver=$( get_graphics_driver ) - if [[ -z $x_driver ]];then + # set A_GRAPHIC_DRIVERS + get_graphics_driver + local x_driver='' + + if [[ ${#A_GRAPHIC_DRIVERS[@]} -eq 0 ]];then x_driver='N/A' - elif [[ $( wc -w <<< $x_driver ) -gt 1 ]];then + else + for (( i=0; i < ${#A_GRAPHIC_DRIVERS[@]}; i++ )) + do + IFS="," + a_gfx_working=( ${A_GRAPHIC_DRIVERS[i]} ) + IFS="$ORIGINAL_IFS" + x_driver="$x_driver$spacer${a_gfx_working[0]}" + if [[ -n ${a_gfx_working[1]} ]];then + x_driver="$x_driver (${a_gfx_working[1]})" + fi + spacer=' ' + done + fi + if [[ ${#A_GRAPHIC_DRIVERS[@]} -gt 1 ]];then x_driver_plural='s' fi x_driver_string="${C1}driver$x_driver_plural${C2} $x_driver "