From bbcaed9475ea5c4eadf88bdbb2e03460d5cdf815 Mon Sep 17 00:00:00 2001 From: Harald Hope Date: Sun, 26 Jul 2020 19:22:59 -0700 Subject: [PATCH] Bug fixes!!! New Features!! Why wait!!! Bugs: 1. Issue #220 on github: inxi misidentified XFCE as Gnome. This was a kind of core issue, and pointed to some logic that needed updating, and some inadequate assumptions made, and some too loose cascade of tests. Hopefully now xfce will almost never get misidentified, and the other primary desktops ID'ed either from $ENV or from xrop -root will be slightly more accurately identified as well. Note that this fix creates a possibility for obscure misconfigured desktops to be ID'ed wrong, but in this case, that will be technically a bug for them, but with the new fixes, that situation will be cleaner to handle internally in the desktop ID logic. Also tightened the final Gnome fallback detection to not trigger a possible false positive, it was testing for ^_GNOME but that is not adequate, because some gnome programs will trigger these values in xprop -root even if GNOME is not running. Should be safer now, hopefully no new bugs will be triggered by these changes. Fixes: 1. Missed an indentation level for -y1, gcc alt should have been indented in one more level, now it is. 2. In disk vendors/family, didn't clean items starting with '/', this is now corrected. Yes, some do, don't ask me why. Might be cases like: Crucial/Micron maybe, where the first ID is grabbed, not sure. Enhancements: 1. New Disk vendors, vendor IDs!!! The list never ends!!! We've finally found infinity, and it is the unceasing wave of tiny and not so tiny disks and their Ids. 2. New feature: for -Aa, -Na/-na/-ia, -Ga, now will add the modules the kernel could support if they were available on the Device-x lines of those items. This was made an -a option because it really makes no sense, if it's a regular option, users might think that for example an nvidia card had a nouveua driver when it didn't, when in fact, all the kernel is saying is that it knows those listed modules 'couid' be used or present. This corresponds to the Display: item in -Ga, that lists 'alternate:' drivers that Xorg knows about that could likewise be used, if they were on the system. In other words these are --admin options because otherwise users might get confused, so this is one where you want to know the man explanation before you ask for it. It is useful however if you're not sure what your choices are for kernel modules. When the alternate driver is the same as the active driver, or if none is found, it does not show the alternate: item to avoid spamming. --- inxi | 148 ++++++++++++++++++++++++++++++++++++++----------- inxi.1 | 23 +++++++- inxi.changelog | 63 +++++++++++++++++++++ 3 files changed, 202 insertions(+), 32 deletions(-) diff --git a/inxi b/inxi index 1cc37d1..cf0ca91 100755 --- a/inxi +++ b/inxi @@ -39,8 +39,8 @@ use POSIX qw(uname strftime ttyname); ## INXI INFO ## my $self_name='inxi'; -my $self_version='3.1.04'; -my $self_date='2020-06-28'; +my $self_version='3.1.05'; +my $self_date='2020-07-26'; my $self_patch='00'; ## END INXI INFO ## @@ -4659,7 +4659,10 @@ sub show_options { ['0', '', '', $line ], ['0', '', '', "Output Control Options:" ], ['1', '-a', '--admin', "Adds advanced sys admin data (only works with - verbose or line output, not short form), sets --extra=3:" ], + verbose or line output, not short form); check man page for explanations!; + also sets --extra=3:" ], + ['2', '-A', '', "If available: list of alternate kernel modules/drivers + for device(s)." ], ['2', '-C', '', "If available: CPU socket type, base/boost speeds (dmidecode+root/sudo required); CPU vulnerabilities (bugs); family, model-id, stepping - format: hex (decimal) if greater @@ -4668,11 +4671,14 @@ sub show_options { USB drive specifics; SMART report." ], ['2', '-G', '', "If available: Xorg Display ID, Screens total, default Screen, current Screen; per X Screen: resolution, dpi, size, diagonal; per Monitor: - resolution; hz; dpi; size; diagonal. See man for explanations." ], + resolution; hz; dpi; size; diagonal; list of alternate kernel modules/drivers + for device(s)." ], ['2', '-I', '', "As well as per package manager counts, also adds total number of lib files found for each package manager if not -r." ], ['2', '-j,-p,-P', '', "For swap (if available): swappiness and vfs cache pressure, and if values are default or not." ], + ['2', '-n,-N', '', "If available: list of alternate kernel modules/drivers + for device(s)." ], ['2', '-p,-P', '', "If available: raw size of ${partition_string}s, percent available for user, block size of file system (root required)." ], ['2', '-r', '', "Packages, see -Ia." ], @@ -6259,6 +6265,10 @@ sub card_data { $rows[$j]{main::key($num++,0,3,'v')} = $version if $version; } } + if ($b_admin && $row[10]){ + $row[10] = main::get_driver_modules($row[9],$row[10]); + $rows[$j]{main::key($num++,0,3,'alternate')} = $row[10] if $row[10]; + } if ($extra > 0){ $rows[$j]{main::key($num++,0,2,'bus ID')} = (!$row[2] && !$row[3]) ? 'N/A' : "$row[2].$row[3]"; } @@ -9708,7 +9718,7 @@ sub set_vendors { # HM320II HM320II ['(SAMSUNG|^MCG[0-9]+GC|^MCC|^MCBOE|^[GS]2 Portable|^[DG]3 Station|^DUO\b|^P3|^BGN|^BJ[NT]|^BWB|^(HM|SP)[0-9]{2}|^MZMPC|^HD[0-9]{3}[A-Z]{2}$)','SAMSUNG','Samsung',''], # maybe ^SM, ^HM # Android UMS Composite? - ['(SanDisk|^SDS[S]?[DQ]|^SL([0-9]+)G|^AFGCE|^U3\b|ULTRA\sFIT|Clip Sport|Cruzer|^Extreme)','SanDisk','SanDisk',''], + ['(SanDisk|^SDS[S]?[DQ]|^SL([0-9]+)G|^AFGCE|^ABLCD|^SDW[1-9]|^U3\b|ULTRA\sFIT|Clip Sport|Cruzer|^Extreme)','SanDisk','SanDisk',''], ['^STEC\b','^STEC\b','STEC',''], # ssd drive, must come before seagate ST test # real, SSEAGATE Backup+; XP1600HE30002 | 024 HN (spinpoint) ['(^ST[^T]|[S]?SEAGATE|^X[AFP]|^5AS|^BUP|Expansion Desk|^Expansion|FreeAgent|GoFlex|Backup(\+|\s?Plus)\s?(Hub)?|OneTouch)','[S]?SEAGATE','Seagate',''], @@ -9737,7 +9747,7 @@ sub set_vendors { ['^(PNY|Hook\s?Attache|SSD2SC)','^PNY\s','PNY','','^PNY'], # note: get rid of: M[DGK] becasue mushkin starts with MK # note: seen: KXG50ZNV512G NVMe TOSHIBA 512GB | THNSN51T02DUK NVMe TOSHIBA 1024GB - ['(^[S]?TOS|^THN|TOSHIBA|TransMemory|^M[GKQ][0-9])','[S]?TOSHIBA','Toshiba',''], # scsi-STOSHIBA_STOR.E_EDITION_ + ['(^[S]?TOS|^THN|TOSHIBA|TransMemory|^M[GKQ][0-9]|KBG4)','[S]?TOSHIBA','Toshiba',''], # scsi-STOSHIBA_STOR.E_EDITION_ ## These go last because they are short and could lead to false ID, or are unlikely ## # unknown: AL25744_12345678; ADP may be usb 2.5" adapter; udisk unknown: Z1E6FTKJ 00AAKS # SSD2SC240G726A10 MRS020A128GTS25C EHSAJM0016GB @@ -9805,6 +9815,7 @@ sub set_vendors { ['^Fantom','^Fantom( Drive[s]?)?','Fantom Drives',''], ['^Faspeed','^Faspeed','Faspeed',''], ['^FASTDISK','^FASTDISK','FASTDISK',''], + ['^Fordisk','^Fordisk','Fordisk',''], # FK0032CAAZP/FB160C4081 FK or FV can be HP but can be other things ['^FORESEE','^FORESEE','Foresee',''], ['^FOXLINE','^FOXLINE','Foxline',''], # russian vendor? @@ -9842,13 +9853,14 @@ sub set_vendors { ['^Innovera','^Innovera','Innovera',''], ['^Intaiel','^Intaiel','Intaiel',''], ['^(INM|Integral|V\s?Series)','^Integral(\s?Memory)?','Integral Memory',''], - ['^(Intenso|(Alu|Basic|Business|Micro|Mobile|Rainbow|Speed|Twister) Line|Rainbow)','^Intenso','Intenso',''], - ['^(Iomega|ZIP\b)','^Iomega','Iomega',''], + ['^(lntenso|Intenso|(Alu|Basic|Business|Micro|Mobile|Rainbow|Speed|Twister) Line|Rainbow)','^Intenso','Intenso',''], + ['^(Iomega|ZIP\b|Clik!)','^Iomega','Iomega',''], ['^JingX','^JingX','JingX',''], #JingX 120G SSD - not confirmed, but guessing ['^Jingyi','^Jingyi','Jingyi',''], # NOTE: ITY2 120GB hard to find ['^JMicron','^JMicron(\s?Tech(nology)?)?','JMicron Tech',''], #JMicron H/W raid ['^KimMIDI','^KimMIDI','KimMIDI',''], + ['^Kingchux[\s-]?ing','^Kingchux[\s-]?ing','Kingchuxing',''], ['^KingDian','^KingDian','KingDian',''], ['^Kingfast','^Kingfast','Kingfast',''], ['^KingMAX','^KingMAX','KingMAX',''], @@ -9870,6 +9882,7 @@ sub set_vendors { ['^LONDISK','^LONDISK','LONDISK',''], ['^M-Systems','^M-Systems','M-Systems',''], ['^(Mach\s*Xtreme|MXSSD|MXU)','^Mach\s*Xtreme','Mach Xtreme',''], + ['^Maximus','^Maximus','Maximus',''], ['^(MAXTOR|Atlas|TM[0-9]{4})','^MAXTOR','Maxtor',''], # note M2 M3 is usually maxtor, but can be samsung ['^(Memorex|TravelDrive|TD\s?Classic)','^Memorex','Memorex',''], # note: C300/400 can be either micron or crucial, but C400 is M4 from crucial @@ -9903,6 +9916,7 @@ sub set_vendors { ['^PALIT','PALIT','Palit',''], # ssd ['^PERC\b','','Dell PowerEdge RAID Card',''], # ssd ['^(PS[8F]|Patriot)','^Patriot([-\s]?Memory)?','Patriot',''], + ['PHISON[\s-]?','PHISON[\s-]?','Phison',''],# E12-256G-PHISON-SSD-B3-BB1 ['^Pioneer','Pioneer','Pioneer',''], ['^PIX[\s]?JR','^PIX[\s]?JR','Disney',''], ['^(PLEXTOR|PX-)','^PLEXTOR','Plextor',''], @@ -9966,6 +9980,7 @@ sub set_vendors { ['^USBTech','^USBTech','USBTech',''], ['^(UG|Unigen)','^Unigen','Unigen',''], ['^(OOS[1-9]|Utania)','Utania','Utania',''], + ['^U-TECH','U-TECH','U-Tech',''], ['^VBOX','','VirtualBox',''], ['^(Verbatim|STORE N GO)','^Verbatim','Verbatim',''], ['^V-GEN','^V-GEN','V-Gen',''], @@ -10013,7 +10028,7 @@ sub device_vendor { $model = 'N/A'; } } - $model =~ s/^[\[\s_-]+|[\s\-_-]+$//g; + $model =~ s/^[\/\[\s_-]+|[\/\s_-]+$//g; $model =~ s/\s\s/ /g; @data = ($vendor,$model); last; @@ -10268,6 +10283,10 @@ sub card_data { $version ||= 'N/A'; $rows[$j]{main::key($num++,0,3,'v')} = $version; } + if ($b_admin && $row[10]){ + $row[10] = main::get_driver_modules($row[9],$row[10]); + $rows[$j]{main::key($num++,0,3,'alternate')} = $row[10] if $row[10]; + } if ($extra > 0){ $rows[$j]{main::key($num++,0,2,'bus ID')} = (!$row[2] && !$row[3]) ? 'N/A' : "$row[2].$row[3]"; } @@ -11884,6 +11903,10 @@ sub card_data { $version ||= 'N/A'; $rows[$j]{main::key($num++,0,3,'v')} = $version; } + if ($b_admin && $row[10]){ + $row[10] = main::get_driver_modules($row[9],$row[10]); + $rows[$j]{main::key($num++,0,3,'modules')} = $row[10] if $row[10]; + } $row[8] ||= 'N/A'; # as far as I know, wifi has no port, but in case it does in future, use it $rows[$j]{main::key($num++,0,2,'port')} = $row[8] if (!$b_wifi || ( $b_wifi && $row[8] ne 'N/A') ); @@ -15936,6 +15959,7 @@ sub lm_sensors_data { #my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-asus-chassis-1.txt"; #my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-devnull-1.txt"; #my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-jammin1.txt"; + #my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-mx-incorrect-1.txt"; # my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-maximus-arch-1.txt"; # @sensors_data = main::reader($file); # print join ("\n", @sensors_data), "\n"; @@ -17734,24 +17758,26 @@ sub get_compiler_version_linux { # 6 - wm version { package DesktopEnvironment; -my ($b_gtk,$b_qt,$b_xprop,$desktop_session,$kde_session_version,$xdg_desktop, -@desktop,@data,@xprop); +my ($b_gtk,$b_qt,$b_xprop,$desktop_session,$gdmsession,$kde_session_version, +$xdg_desktop,@desktop,@data,@xprop); sub get { # NOTE $XDG_CURRENT_DESKTOP envvar is not reliable, but it shows certain desktops better. # most desktops are not using it as of 2014-01-13 (KDE, UNITY, LXDE. Not Gnome) $desktop_session = ( $ENV{'DESKTOP_SESSION'} ) ? lc($ENV{'DESKTOP_SESSION'}) : ''; $xdg_desktop = ( $ENV{'XDG_CURRENT_DESKTOP'} ) ? lc($ENV{'XDG_CURRENT_DESKTOP'}) : ''; $kde_session_version = ($ENV{'KDE_SESSION_VERSION'}) ? $ENV{'KDE_SESSION_VERSION'} : ''; + # for fallback to fallback protections re false gnome id + $gdmsession = ( $ENV{'GDMSESSION'} ) ? lc($ENV{'GDMSESSION'}) : ''; main::set_ps_gui() if ! $b_ps_gui; get_kde_trinity_data(); if (!@desktop){ get_env_de_data(); } if (!@desktop){ - get_env_xprop_de_data(); + get_env_xprop_gnome_based_data(); } if (!@desktop && $b_xprop ){ - get_xprop_de_data(); + get_env_xprop_non_gnome_based_data(); } if (!@desktop){ get_ps_de_data(); @@ -17772,7 +17798,6 @@ sub get_kde_trinity_data { eval $start if $b_log; my ($program,@version_data,@version_data2); my $kde_full_session = ($ENV{'KDE_FULL_SESSION'}) ? $ENV{'KDE_FULL_SESSION'} : ''; - if ($desktop_session eq 'trinity' || $xdg_desktop eq 'trinity' || (grep {/^tde/} @ps_gui) ){ $desktop[0] = 'Trinity'; if ($program = main::check_program('kdesktop')){ @@ -17894,23 +17919,27 @@ sub get_env_de_data { } eval $end if $b_log; } -sub get_env_xprop_de_data { +sub get_env_xprop_gnome_based_data { eval $start if $b_log; my ($program,$value,@version_data); # NOTE: Always add to set_prop the search term if you add an item!! set_xprop(); + # add more as discovered + return if $xdg_desktop eq 'xfce' || $gdmsession eq 'xfce'; # note that cinnamon split from gnome, and and can now be id'ed via xprop, # but it will still trigger the next gnome true case, so this needs to go # before gnome test eventually this needs to be better organized so all the # xprop tests are in the same section, but this is good enough for now. # NOTE: was checking for 'muffin' but that's not part of cinnamon - if ( (main::check_program('muffin') || main::check_program('cinnamon-session') ) && + if ( $xdg_desktop eq 'cinnamon' || $gdmsession eq 'cinnamon' || + (main::check_program('muffin') || main::check_program('cinnamon-session') ) && ($b_xprop && main::awk(\@xprop,'_muffin') )){ ($desktop[0],$desktop[1]) = main::program_data('cinnamon','cinnamon',0); $b_gtk = 1; $desktop[0] ||= 'Cinnamon'; } - elsif ($xdg_desktop eq 'mate' || ( $b_xprop && main::awk(\@xprop,'_marco') )){ + elsif ($xdg_desktop eq 'mate' || $gdmsession eq 'mate' || + ( $b_xprop && main::awk(\@xprop,'_marco') )){ # NOTE: mate-about and mate-sesssion vary which has the higher number, neither # consistently corresponds to the actual MATE version, so check both. my %versions = ('mate-about' => '','mate-session' => ''); @@ -17926,11 +17955,8 @@ sub get_env_xprop_de_data { # $b_gtk = 1; $desktop[0] ||= 'MATE'; } - # note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out - # https://bugzilla.gnome.org/show_bug.cgi?id=542880. - # NOTE: manjaro is leaving XDG data null, which forces the manual check for gnome, sigh... - elsif ($xdg_desktop eq 'gnome' || $ENV{'GNOME_DESKTOP_SESSION_ID'} || - (main::check_program('gnome-shell') && $b_xprop && main::awk(\@xprop,'^_gnome') ) ){ + # See sub for logic and comments + elsif (check_gnome() ){ if (main::check_program('gnome-about') ) { ($desktop[0],$desktop[1]) = main::program_data('gnome-about'); } @@ -17942,7 +17968,49 @@ sub get_env_xprop_de_data { } eval $end if $b_log; } -sub get_xprop_de_data { +# note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out +# https://bugzilla.gnome.org/show_bug.cgi?id=542880. +# NOTE: manjaro is leaving XDG data null, which forces the manual check for gnome, sigh... +# some gnome programs can trigger a false xprop gnome ID +# _GNOME_BACKGROUND_REPRESENTATIVE_COLORS(STRING) = "rgb(23,31,35)" +sub check_gnome { + eval $start if $b_log; + my ($b_gnome,$detection) = (0,''); + if ($xdg_desktop && $xdg_desktop eq 'gnome'){ + $detection = 'xdg_current_desktop'; + $b_gnome = 1; + } + elsif ($xdg_desktop && $xdg_desktop ne 'gnome'){ + $detection = 'xdg_current_desktop'; + } + # possible values: lightdm-xsession, only positive match tests will work + elsif ($gdmsession && $gdmsession eq 'gnome'){ + $detection = 'gdmsession'; + $b_gnome = 1; + } + # risky: Debian: $DESKTOP_SESSION = lightdm-xsession; Manjaro/Arch = xfce + # note that mate/cinnamon would already have been caught so no need to add + # explicit tests for them + elsif ($desktop_session && $desktop_session eq 'gnome'){ + $detection = 'desktop_session'; + $b_gnome = 1; + } + # possible value: this-is-deprecated, but I believe only gnome based desktops + # set this variable, so it doesn't matter what it contains + elsif ($ENV{'GNOME_DESKTOP_SESSION_ID'}){ + $detection = 'gnome_destkop_session_id'; + $b_gnome = 1; + } + # maybe use ^_gnome_session instead? try it for a while + elsif ($b_xprop && main::check_program('gnome-shell') && main::awk(\@xprop,'^_gnome_session')){ + $detection = 'xprop-root'; + $b_gnome = 1; + } + main::log_data('data','$detection:$b_gnome',$detection . ":$b_gnome") if $b_log; + return $b_gnome; + eval $end if $b_log; +} +sub get_env_xprop_non_gnome_based_data { eval $start if $b_log; my ($program,@version_data,$version); #print join "\n", @xprop, "\n"; @@ -17950,7 +18018,8 @@ sub get_xprop_de_data { # alternate: xfce4-about --version > xfce4-about 4.10.0 (Xfce 4.10) # note: some distros/wm (e.g. bunsen) set xdg to xfce to solve some other # issues so don't test for that. $xdg_desktop eq 'xfce' - if ((main::check_program('xfdesktop')) && main::awk(\@xprop,'^(xfdesktop|xfce)' )){ + if ($xdg_desktop eq 'xfce' || $gdmsession eq 'xfce' || + (main::check_program('xfdesktop')) && main::awk(\@xprop,'^(xfdesktop|xfce)' )){ # this is a very expensive test that doesn't usually result in a find # talk to xfce to see what id they will be using for xfce 5 # if (main::awk(\@xprop, 'xfce4')){ @@ -17987,15 +18056,16 @@ sub get_xprop_de_data { $desktop[2] = $data[3]; } } - elsif ( (main::check_program('enlightenment') || main::check_program('moksha') ) && - main::awk(\@xprop,'moksha') ){ + elsif ( $xdg_desktop eq 'moksha' || $gdmsession eq 'moksha' || + (main::check_program('enlightenment') || main::check_program('moksha') ) && main::awk(\@xprop,'moksha') ){ # no -v or --version but version is in xprop -root # ENLIGHTENMENT_VERSION(STRING) = "Moksha 0.2.0.15989" $desktop[0] = 'Moksha'; $desktop[1] = main::awk(\@xprop,'(enlightenment|moksha)_version',2,'\s+=\s+' ); $desktop[1] =~ s/"?(Moksha|Enlightenment)\s([^"]+)"?/$2/i if $desktop[1]; } - elsif ( main::check_program('enlightenment') && main::awk(\@xprop,'enlightenment' ) ){ + elsif ( $xdg_desktop eq 'enlightenment' || $gdmsession eq 'enlightenment' || + (main::check_program('enlightenment') && main::awk(\@xprop,'enlightenment' ) ) ){ # no -v or --version but version is in xprop -root # ENLIGHTENMENT_VERSION(STRING) = "Enlightenment 0.16.999.49898" $desktop[0] = 'Enlightenment'; @@ -18006,7 +18076,7 @@ sub get_xprop_de_data { # wm, so we want to get the main controlling desktop first, then fall back to the wm # detections. get_ps_de_data() and get_wm() will handle alternate wm detections. if (!$desktop[0]){ - # 0 check program; 1 xprop search; 23: data; 3 - optional: ps_gui search + # 0 check program; 1 xprop search; 2: data; 3 - optional: ps_gui search my @desktops =( ['icewm','icewm','icewm'], # debian package: i3-wm @@ -18887,7 +18957,23 @@ sub ubuntu_id { return $id; } } - +# return all device modules not including driver +sub get_driver_modules { + eval $start if $b_log; + my ($driver,$modules) = @_; + return if ! $modules; + my @mods = split /,\s+/, $modules; + if ($driver){ + @mods = grep {!/^$driver$/} @mods; + $modules = join ',', @mods; + } + log_data('data','$modules',$modules) if $b_log; + eval $end if $b_log; + return $modules; +} +# 1: driver; 2: modules, comma separated, return only modules +# which do not equal the driver string itself. Sometimes the module +# name is different from the driver name, even though it's the same thing. sub get_gcc_data { eval $start if $b_log; my ($gcc,@data,@gccs,@temp); @@ -21628,9 +21714,9 @@ sub generate_info_data { my $compiler = ($b_gcc || $b_clang) ? '': 'N/A'; $data{$data_name}[$index]{main::key($num++,1,1,'Compilers')} = $compiler; if ($b_gcc){ - $data{$data_name}[$index]{main::key($num++,0,2,'gcc')} = $gcc; + $data{$data_name}[$index]{main::key($num++,1,2,'gcc')} = $gcc; if ( $extra > 1 && $gcc_alt){ - $data{$data_name}[$index]{main::key($num++,0,2,'alt')} = $gcc_alt; + $data{$data_name}[$index]{main::key($num++,0,3,'alt')} = $gcc_alt; } } if ($b_clang){ diff --git a/inxi.1 b/inxi.1 index f02e59e..c3bf47f 100644 --- a/inxi.1 +++ b/inxi.1 @@ -1,4 +1,4 @@ -.TH INXI 1 "2020\-06\-28" inxi "inxi manual" +.TH INXI 1 "2020\-07\-26" inxi "inxi manual" .SH NAME inxi \- Command line system information script for console and IRC @@ -1059,6 +1059,14 @@ administrators or other machine admins. The \fB\-\-admin\fR option sets \fB\-xxx\fR, and only has to be used once. It will trigger the following features: +.TP +.B \-a \-A\fR +\- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving +each \fBDevice\-x\fR (not including the current \fBdriver:\fR). If no non\-driver +modules found, shows nothing. NOTE: just because it lists a module does NOT mean it is +available in the system, it's just something the kernel knows could possibly be used +instead. + .TP .B \-a \-C\fR \- Adds CPU family, model\-id, and stepping (replaces \fBrev\fR of \fB\-Cx\fR). @@ -1204,6 +1212,11 @@ Monitor\-2: VGA\-0 res: 1280x1024 hz: 60 dpi: 86 size: 376x301mm (14.8x11.9") diag: 482mm (19") .... .fi +\- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving +each \fBDevice\-x\fR (not including the current \fBdriver:\fR). If no non\-driver +modules found, shows nothing. NOTE: just because it lists a module does NOT mean it is +available in the system, it's just something the kernel knows could possibly be used +instead. .TP .B \-a \-I\fR @@ -1234,6 +1247,14 @@ For \fB\-j\fR row 1 output: \fBKernel: swappiness: 60 (default) cache pressure: 90 (default 100)\fR +.TP +.B \-a \-n\fR, \fB\-a \-N\fR, \fB\-a \-i\fR +\- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving +each \fBDevice\-x\fR (not including the current \fBdriver:\fR). If no non\-driver +modules found, shows nothing. NOTE: just because it lists a module does NOT mean it is +available in the system, it's just something the kernel knows could possibly be used +instead. + .TP .B \-a \-p\fR,\fB\-a \-P\fR \- Adds raw partition size, including file system overhead, partition table, e.g. diff --git a/inxi.changelog b/inxi.changelog index dce63fc..83b7cbe 100644 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,3 +1,66 @@ +===================================================================================== +Version: 3.1.05 +Patch: 00 +Date: 2020-07-26 +----------------------------------- +Changes: +----------------------------------- + +Bug fixes!!! New Features!! Why wait!!! + +Bugs: +1. Issue #220 on github: inxi misidentified XFCE as Gnome. This was a kind of core +issue, and pointed to some logic that needed updating, and some inadequate +assumptions made, and some too loose cascade of tests. Hopefully now xfce will +almost never get misidentified, and the other primary desktops ID'ed either from +$ENV or from xrop -root will be slightly more accurately identified as well. + +Note that this fix creates a possibility for obscure misconfigured desktops to +be ID'ed wrong, but in this case, that will be technically a bug for them, but +with the new fixes, that situation will be cleaner to handle internally in the +desktop ID logic. + +Also tightened the final Gnome fallback detection to not trigger a possible +false positive, it was testing for ^_GNOME but that is not adequate, because +some gnome programs will trigger these values in xprop -root even if GNOME +is not running. Should be safer now, hopefully no new bugs will be triggered +by these changes. + +Fixes: +1. Missed an indentation level for -y1, gcc alt should have been indented in +one more level, now it is. + +2. In disk vendors/family, didn't clean items starting with '/', this is +now corrected. Yes, some do, don't ask me why. Might be cases like: +Crucial/Micron maybe, where the first ID is grabbed, not sure. + + +Enhancements: +1. New Disk vendors, vendor IDs!!! The list never ends!!! We've finally found +infinity, and it is the unceasing wave of tiny and not so tiny disks and their +Ids. + +2. New feature: for -Aa, -Na/-na/-ia, -Ga, now will add the modules the kernel +could support if they were available on the Device-x lines of those items. +This was made an -a option because it really makes no sense, if it's a regular +option, users might think that for example an nvidia card had a nouveua driver +when it didn't, when in fact, all the kernel is saying is that it knows those +listed modules 'couid' be used or present. This corresponds to the Display: +item in -Ga, that lists 'alternate:' drivers that Xorg knows about that could +likewise be used, if they were on the system. + +In other words these are --admin options because otherwise users might get confused, +so this is one where you want to know the man explanation before you ask for it. + +It is useful however if you're not sure what your choices are for kernel modules. + +When the alternate driver is the same as the active driver, or if none is found, +it does not show the alternate: item to avoid spamming. + + +----------------------------------- +-- Harald Hope - Sun, 26 Jul 2020 19:10:21 -0700 + ===================================================================================== Version: 3.1.04 Patch: 00