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.
This commit is contained in:
Harald Hope 2020-07-26 19:22:59 -07:00
parent 776c788273
commit bbcaed9475
3 changed files with 202 additions and 32 deletions

148
inxi
View file

@ -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){

23
inxi.1
View file

@ -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.

View file

@ -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