summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-07-28 00:28:10 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2020-07-28 00:28:10 -0400
commit2aaccd5966d7992559ca301719f294394321088a (patch)
tree9599922f4593fcf3089ebc0cb262e89623cdbe4d
parentc1dcb4891456a35c1603d4e44a72200e6ff852b4 (diff)
parente93a1314e417f0085ec225d2855f3a1deecc3678 (diff)
downloadinxi-2aaccd5966d7992559ca301719f294394321088a.tar.bz2
inxi-2aaccd5966d7992559ca301719f294394321088a.tar.xz
inxi-2aaccd5966d7992559ca301719f294394321088a.tar.zst
Update upstream source from tag 'upstream/3.1.05-1'
Update to upstream version '3.1.05-1' with Debian dir f478d0c108791b27d09fd66d143f5c3f7f9588e5
-rwxr-xr-xinxi156
-rw-r--r--inxi.125
-rw-r--r--inxi.changelog63
3 files changed, 207 insertions, 37 deletions
diff --git a/inxi b/inxi
index 1cc37d1..6504654 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-27';
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]";
}
@@ -8732,10 +8742,10 @@ sub create_output {
}
$rows[$j]{main::key($num++,0,2,'size')} = $size;
if ($b_admin && $row{'block-physical'}){
- $rows[$j]{main::key($num++,0,2,'block size')} = '';
- $rows[$j]{main::key($num++,0,2,'physical')} = $row{'block-physical'} . ' B';
- $rows[$j]{main::key($num++,0,2,'logical')} = ($row{'block-logical'}) ? $row{'block-logical'} . ' B' : 'N/A';
- }
+ $rows[$j]{main::key($num++,1,2,'block size')} = '';
+ $rows[$j]{main::key($num++,0,3,'physical')} = $row{'block-physical'} . ' B';
+ $rows[$j]{main::key($num++,0,3,'logical')} = ($row{'block-logical'}) ? $row{'block-logical'} . ' B' : 'N/A';
+ }}
if ($extra > 1 && $row{'speed'}){
if ($row{'sata'}){
$rows[$j]{main::key($num++,0,2,'sata')} = $row{'sata'};
@@ -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..0964f22 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
@@ -1060,6 +1060,14 @@ 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).
Format is \fBhexadecimal (decimal)\fR if greater than 9, otherwise \fBhexadecimal\fR.
@@ -1202,8 +1210,13 @@ Monitor\-1: DVI\-I\-0 res: 1280x1024 hz: 60 dpi: 96
size: 338x270mm (13.3x10.6") diag: 433mm (17")
Monitor\-2: VGA\-0 res: 1280x1024 hz: 60 dpi: 86
size: 376x301mm (14.8x11.9") diag: 482mm (19")
- ....
+ ....\fR
.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
@@ -1235,6 +1248,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,4 +1,67 @@
=====================================================================================
+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
Date: 2020-06-28