mirror of
https://github.com/smxi/inxi.git
synced 2024-11-16 16:21:39 +00:00
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:
parent
776c788273
commit
bbcaed9475
148
inxi
148
inxi
|
@ -39,8 +39,8 @@ use POSIX qw(uname strftime ttyname);
|
||||||
|
|
||||||
## INXI INFO ##
|
## INXI INFO ##
|
||||||
my $self_name='inxi';
|
my $self_name='inxi';
|
||||||
my $self_version='3.1.04';
|
my $self_version='3.1.05';
|
||||||
my $self_date='2020-06-28';
|
my $self_date='2020-07-26';
|
||||||
my $self_patch='00';
|
my $self_patch='00';
|
||||||
## END INXI INFO ##
|
## END INXI INFO ##
|
||||||
|
|
||||||
|
@ -4659,7 +4659,10 @@ sub show_options {
|
||||||
['0', '', '', $line ],
|
['0', '', '', $line ],
|
||||||
['0', '', '', "Output Control Options:" ],
|
['0', '', '', "Output Control Options:" ],
|
||||||
['1', '-a', '--admin', "Adds advanced sys admin data (only works with
|
['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
|
['2', '-C', '', "If available: CPU socket type, base/boost speeds
|
||||||
(dmidecode+root/sudo required); CPU vulnerabilities (bugs);
|
(dmidecode+root/sudo required); CPU vulnerabilities (bugs);
|
||||||
family, model-id, stepping - format: hex (decimal) if greater
|
family, model-id, stepping - format: hex (decimal) if greater
|
||||||
|
@ -4668,11 +4671,14 @@ sub show_options {
|
||||||
USB drive specifics; SMART report." ],
|
USB drive specifics; SMART report." ],
|
||||||
['2', '-G', '', "If available: Xorg Display ID, Screens total, default Screen,
|
['2', '-G', '', "If available: Xorg Display ID, Screens total, default Screen,
|
||||||
current Screen; per X Screen: resolution, dpi, size, diagonal; per Monitor:
|
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
|
['2', '-I', '', "As well as per package manager counts, also adds total
|
||||||
number of lib files found for each package manager if not -r." ],
|
number of lib files found for each package manager if not -r." ],
|
||||||
['2', '-j,-p,-P', '', "For swap (if available): swappiness and vfs cache
|
['2', '-j,-p,-P', '', "For swap (if available): swappiness and vfs cache
|
||||||
pressure, and if values are default or not." ],
|
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,
|
['2', '-p,-P', '', "If available: raw size of ${partition_string}s,
|
||||||
percent available for user, block size of file system (root required)." ],
|
percent available for user, block size of file system (root required)." ],
|
||||||
['2', '-r', '', "Packages, see -Ia." ],
|
['2', '-r', '', "Packages, see -Ia." ],
|
||||||
|
@ -6259,6 +6265,10 @@ sub card_data {
|
||||||
$rows[$j]{main::key($num++,0,3,'v')} = $version if $version;
|
$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){
|
if ($extra > 0){
|
||||||
$rows[$j]{main::key($num++,0,2,'bus ID')} = (!$row[2] && !$row[3]) ? 'N/A' : "$row[2].$row[3]";
|
$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
|
# 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
|
['(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?
|
# 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
|
['^STEC\b','^STEC\b','STEC',''], # ssd drive, must come before seagate ST test
|
||||||
# real, SSEAGATE Backup+; XP1600HE30002 | 024 HN (spinpoint)
|
# 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',''],
|
['(^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'],
|
['^(PNY|Hook\s?Attache|SSD2SC)','^PNY\s','PNY','','^PNY'],
|
||||||
# note: get rid of: M[DGK] becasue mushkin starts with MK
|
# note: get rid of: M[DGK] becasue mushkin starts with MK
|
||||||
# note: seen: KXG50ZNV512G NVMe TOSHIBA 512GB | THNSN51T02DUK NVMe TOSHIBA 1024GB
|
# 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 ##
|
## 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
|
# unknown: AL25744_12345678; ADP may be usb 2.5" adapter; udisk unknown: Z1E6FTKJ 00AAKS
|
||||||
# SSD2SC240G726A10 MRS020A128GTS25C EHSAJM0016GB
|
# SSD2SC240G726A10 MRS020A128GTS25C EHSAJM0016GB
|
||||||
|
@ -9805,6 +9815,7 @@ sub set_vendors {
|
||||||
['^Fantom','^Fantom( Drive[s]?)?','Fantom Drives',''],
|
['^Fantom','^Fantom( Drive[s]?)?','Fantom Drives',''],
|
||||||
['^Faspeed','^Faspeed','Faspeed',''],
|
['^Faspeed','^Faspeed','Faspeed',''],
|
||||||
['^FASTDISK','^FASTDISK','FASTDISK',''],
|
['^FASTDISK','^FASTDISK','FASTDISK',''],
|
||||||
|
['^Fordisk','^Fordisk','Fordisk',''],
|
||||||
# FK0032CAAZP/FB160C4081 FK or FV can be HP but can be other things
|
# FK0032CAAZP/FB160C4081 FK or FV can be HP but can be other things
|
||||||
['^FORESEE','^FORESEE','Foresee',''],
|
['^FORESEE','^FORESEE','Foresee',''],
|
||||||
['^FOXLINE','^FOXLINE','Foxline',''], # russian vendor?
|
['^FOXLINE','^FOXLINE','Foxline',''], # russian vendor?
|
||||||
|
@ -9842,13 +9853,14 @@ sub set_vendors {
|
||||||
['^Innovera','^Innovera','Innovera',''],
|
['^Innovera','^Innovera','Innovera',''],
|
||||||
['^Intaiel','^Intaiel','Intaiel',''],
|
['^Intaiel','^Intaiel','Intaiel',''],
|
||||||
['^(INM|Integral|V\s?Series)','^Integral(\s?Memory)?','Integral Memory',''],
|
['^(INM|Integral|V\s?Series)','^Integral(\s?Memory)?','Integral Memory',''],
|
||||||
['^(Intenso|(Alu|Basic|Business|Micro|Mobile|Rainbow|Speed|Twister) Line|Rainbow)','^Intenso','Intenso',''],
|
['^(lntenso|Intenso|(Alu|Basic|Business|Micro|Mobile|Rainbow|Speed|Twister) Line|Rainbow)','^Intenso','Intenso',''],
|
||||||
['^(Iomega|ZIP\b)','^Iomega','Iomega',''],
|
['^(Iomega|ZIP\b|Clik!)','^Iomega','Iomega',''],
|
||||||
['^JingX','^JingX','JingX',''], #JingX 120G SSD - not confirmed, but guessing
|
['^JingX','^JingX','JingX',''], #JingX 120G SSD - not confirmed, but guessing
|
||||||
['^Jingyi','^Jingyi','Jingyi',''],
|
['^Jingyi','^Jingyi','Jingyi',''],
|
||||||
# NOTE: ITY2 120GB hard to find
|
# NOTE: ITY2 120GB hard to find
|
||||||
['^JMicron','^JMicron(\s?Tech(nology)?)?','JMicron Tech',''], #JMicron H/W raid
|
['^JMicron','^JMicron(\s?Tech(nology)?)?','JMicron Tech',''], #JMicron H/W raid
|
||||||
['^KimMIDI','^KimMIDI','KimMIDI',''],
|
['^KimMIDI','^KimMIDI','KimMIDI',''],
|
||||||
|
['^Kingchux[\s-]?ing','^Kingchux[\s-]?ing','Kingchuxing',''],
|
||||||
['^KingDian','^KingDian','KingDian',''],
|
['^KingDian','^KingDian','KingDian',''],
|
||||||
['^Kingfast','^Kingfast','Kingfast',''],
|
['^Kingfast','^Kingfast','Kingfast',''],
|
||||||
['^KingMAX','^KingMAX','KingMAX',''],
|
['^KingMAX','^KingMAX','KingMAX',''],
|
||||||
|
@ -9870,6 +9882,7 @@ sub set_vendors {
|
||||||
['^LONDISK','^LONDISK','LONDISK',''],
|
['^LONDISK','^LONDISK','LONDISK',''],
|
||||||
['^M-Systems','^M-Systems','M-Systems',''],
|
['^M-Systems','^M-Systems','M-Systems',''],
|
||||||
['^(Mach\s*Xtreme|MXSSD|MXU)','^Mach\s*Xtreme','Mach Xtreme',''],
|
['^(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
|
['^(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',''],
|
['^(Memorex|TravelDrive|TD\s?Classic)','^Memorex','Memorex',''],
|
||||||
# note: C300/400 can be either micron or crucial, but C400 is M4 from crucial
|
# 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
|
['^PALIT','PALIT','Palit',''], # ssd
|
||||||
['^PERC\b','','Dell PowerEdge RAID Card',''], # ssd
|
['^PERC\b','','Dell PowerEdge RAID Card',''], # ssd
|
||||||
['^(PS[8F]|Patriot)','^Patriot([-\s]?Memory)?','Patriot',''],
|
['^(PS[8F]|Patriot)','^Patriot([-\s]?Memory)?','Patriot',''],
|
||||||
|
['PHISON[\s-]?','PHISON[\s-]?','Phison',''],# E12-256G-PHISON-SSD-B3-BB1
|
||||||
['^Pioneer','Pioneer','Pioneer',''],
|
['^Pioneer','Pioneer','Pioneer',''],
|
||||||
['^PIX[\s]?JR','^PIX[\s]?JR','Disney',''],
|
['^PIX[\s]?JR','^PIX[\s]?JR','Disney',''],
|
||||||
['^(PLEXTOR|PX-)','^PLEXTOR','Plextor',''],
|
['^(PLEXTOR|PX-)','^PLEXTOR','Plextor',''],
|
||||||
|
@ -9966,6 +9980,7 @@ sub set_vendors {
|
||||||
['^USBTech','^USBTech','USBTech',''],
|
['^USBTech','^USBTech','USBTech',''],
|
||||||
['^(UG|Unigen)','^Unigen','Unigen',''],
|
['^(UG|Unigen)','^Unigen','Unigen',''],
|
||||||
['^(OOS[1-9]|Utania)','Utania','Utania',''],
|
['^(OOS[1-9]|Utania)','Utania','Utania',''],
|
||||||
|
['^U-TECH','U-TECH','U-Tech',''],
|
||||||
['^VBOX','','VirtualBox',''],
|
['^VBOX','','VirtualBox',''],
|
||||||
['^(Verbatim|STORE N GO)','^Verbatim','Verbatim',''],
|
['^(Verbatim|STORE N GO)','^Verbatim','Verbatim',''],
|
||||||
['^V-GEN','^V-GEN','V-Gen',''],
|
['^V-GEN','^V-GEN','V-Gen',''],
|
||||||
|
@ -10013,7 +10028,7 @@ sub device_vendor {
|
||||||
$model = 'N/A';
|
$model = 'N/A';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$model =~ s/^[\[\s_-]+|[\s\-_-]+$//g;
|
$model =~ s/^[\/\[\s_-]+|[\/\s_-]+$//g;
|
||||||
$model =~ s/\s\s/ /g;
|
$model =~ s/\s\s/ /g;
|
||||||
@data = ($vendor,$model);
|
@data = ($vendor,$model);
|
||||||
last;
|
last;
|
||||||
|
@ -10268,6 +10283,10 @@ sub card_data {
|
||||||
$version ||= 'N/A';
|
$version ||= 'N/A';
|
||||||
$rows[$j]{main::key($num++,0,3,'v')} = $version;
|
$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){
|
if ($extra > 0){
|
||||||
$rows[$j]{main::key($num++,0,2,'bus ID')} = (!$row[2] && !$row[3]) ? 'N/A' : "$row[2].$row[3]";
|
$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';
|
$version ||= 'N/A';
|
||||||
$rows[$j]{main::key($num++,0,3,'v')} = $version;
|
$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';
|
$row[8] ||= 'N/A';
|
||||||
# as far as I know, wifi has no port, but in case it does in future, use it
|
# 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') );
|
$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-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-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-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";
|
# my $file = "$ENV{'HOME'}/bin/scripts/inxi/data/sensors/sensors-maximus-arch-1.txt";
|
||||||
# @sensors_data = main::reader($file);
|
# @sensors_data = main::reader($file);
|
||||||
# print join ("\n", @sensors_data), "\n";
|
# print join ("\n", @sensors_data), "\n";
|
||||||
|
@ -17734,24 +17758,26 @@ sub get_compiler_version_linux {
|
||||||
# 6 - wm version
|
# 6 - wm version
|
||||||
{
|
{
|
||||||
package DesktopEnvironment;
|
package DesktopEnvironment;
|
||||||
my ($b_gtk,$b_qt,$b_xprop,$desktop_session,$kde_session_version,$xdg_desktop,
|
my ($b_gtk,$b_qt,$b_xprop,$desktop_session,$gdmsession,$kde_session_version,
|
||||||
@desktop,@data,@xprop);
|
$xdg_desktop,@desktop,@data,@xprop);
|
||||||
sub get {
|
sub get {
|
||||||
# NOTE $XDG_CURRENT_DESKTOP envvar is not reliable, but it shows certain desktops better.
|
# 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)
|
# 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'}) : '';
|
$desktop_session = ( $ENV{'DESKTOP_SESSION'} ) ? lc($ENV{'DESKTOP_SESSION'}) : '';
|
||||||
$xdg_desktop = ( $ENV{'XDG_CURRENT_DESKTOP'} ) ? lc($ENV{'XDG_CURRENT_DESKTOP'}) : '';
|
$xdg_desktop = ( $ENV{'XDG_CURRENT_DESKTOP'} ) ? lc($ENV{'XDG_CURRENT_DESKTOP'}) : '';
|
||||||
$kde_session_version = ($ENV{'KDE_SESSION_VERSION'}) ? $ENV{'KDE_SESSION_VERSION'} : '';
|
$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;
|
main::set_ps_gui() if ! $b_ps_gui;
|
||||||
get_kde_trinity_data();
|
get_kde_trinity_data();
|
||||||
if (!@desktop){
|
if (!@desktop){
|
||||||
get_env_de_data();
|
get_env_de_data();
|
||||||
}
|
}
|
||||||
if (!@desktop){
|
if (!@desktop){
|
||||||
get_env_xprop_de_data();
|
get_env_xprop_gnome_based_data();
|
||||||
}
|
}
|
||||||
if (!@desktop && $b_xprop ){
|
if (!@desktop && $b_xprop ){
|
||||||
get_xprop_de_data();
|
get_env_xprop_non_gnome_based_data();
|
||||||
}
|
}
|
||||||
if (!@desktop){
|
if (!@desktop){
|
||||||
get_ps_de_data();
|
get_ps_de_data();
|
||||||
|
@ -17772,7 +17798,6 @@ sub get_kde_trinity_data {
|
||||||
eval $start if $b_log;
|
eval $start if $b_log;
|
||||||
my ($program,@version_data,@version_data2);
|
my ($program,@version_data,@version_data2);
|
||||||
my $kde_full_session = ($ENV{'KDE_FULL_SESSION'}) ? $ENV{'KDE_FULL_SESSION'} : '';
|
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) ){
|
if ($desktop_session eq 'trinity' || $xdg_desktop eq 'trinity' || (grep {/^tde/} @ps_gui) ){
|
||||||
$desktop[0] = 'Trinity';
|
$desktop[0] = 'Trinity';
|
||||||
if ($program = main::check_program('kdesktop')){
|
if ($program = main::check_program('kdesktop')){
|
||||||
|
@ -17894,23 +17919,27 @@ sub get_env_de_data {
|
||||||
}
|
}
|
||||||
eval $end if $b_log;
|
eval $end if $b_log;
|
||||||
}
|
}
|
||||||
sub get_env_xprop_de_data {
|
sub get_env_xprop_gnome_based_data {
|
||||||
eval $start if $b_log;
|
eval $start if $b_log;
|
||||||
my ($program,$value,@version_data);
|
my ($program,$value,@version_data);
|
||||||
# NOTE: Always add to set_prop the search term if you add an item!!
|
# NOTE: Always add to set_prop the search term if you add an item!!
|
||||||
set_xprop();
|
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,
|
# 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
|
# 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
|
# 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.
|
# 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
|
# 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') )){
|
($b_xprop && main::awk(\@xprop,'_muffin') )){
|
||||||
($desktop[0],$desktop[1]) = main::program_data('cinnamon','cinnamon',0);
|
($desktop[0],$desktop[1]) = main::program_data('cinnamon','cinnamon',0);
|
||||||
$b_gtk = 1;
|
$b_gtk = 1;
|
||||||
$desktop[0] ||= 'Cinnamon';
|
$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
|
# NOTE: mate-about and mate-sesssion vary which has the higher number, neither
|
||||||
# consistently corresponds to the actual MATE version, so check both.
|
# consistently corresponds to the actual MATE version, so check both.
|
||||||
my %versions = ('mate-about' => '','mate-session' => '');
|
my %versions = ('mate-about' => '','mate-session' => '');
|
||||||
|
@ -17926,11 +17955,8 @@ sub get_env_xprop_de_data {
|
||||||
# $b_gtk = 1;
|
# $b_gtk = 1;
|
||||||
$desktop[0] ||= 'MATE';
|
$desktop[0] ||= 'MATE';
|
||||||
}
|
}
|
||||||
# note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out
|
# See sub for logic and comments
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=542880.
|
elsif (check_gnome() ){
|
||||||
# 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') ) ){
|
|
||||||
if (main::check_program('gnome-about') ) {
|
if (main::check_program('gnome-about') ) {
|
||||||
($desktop[0],$desktop[1]) = main::program_data('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;
|
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;
|
eval $start if $b_log;
|
||||||
my ($program,@version_data,$version);
|
my ($program,@version_data,$version);
|
||||||
#print join "\n", @xprop, "\n";
|
#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)
|
# 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
|
# 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'
|
# 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
|
# 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
|
# talk to xfce to see what id they will be using for xfce 5
|
||||||
# if (main::awk(\@xprop, 'xfce4')){
|
# if (main::awk(\@xprop, 'xfce4')){
|
||||||
|
@ -17987,15 +18056,16 @@ sub get_xprop_de_data {
|
||||||
$desktop[2] = $data[3];
|
$desktop[2] = $data[3];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( (main::check_program('enlightenment') || main::check_program('moksha') ) &&
|
elsif ( $xdg_desktop eq 'moksha' || $gdmsession eq 'moksha' ||
|
||||||
main::awk(\@xprop,'moksha') ){
|
(main::check_program('enlightenment') || main::check_program('moksha') ) && main::awk(\@xprop,'moksha') ){
|
||||||
# no -v or --version but version is in xprop -root
|
# no -v or --version but version is in xprop -root
|
||||||
# ENLIGHTENMENT_VERSION(STRING) = "Moksha 0.2.0.15989"
|
# ENLIGHTENMENT_VERSION(STRING) = "Moksha 0.2.0.15989"
|
||||||
$desktop[0] = 'Moksha';
|
$desktop[0] = 'Moksha';
|
||||||
$desktop[1] = main::awk(\@xprop,'(enlightenment|moksha)_version',2,'\s+=\s+' );
|
$desktop[1] = main::awk(\@xprop,'(enlightenment|moksha)_version',2,'\s+=\s+' );
|
||||||
$desktop[1] =~ s/"?(Moksha|Enlightenment)\s([^"]+)"?/$2/i if $desktop[1];
|
$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
|
# no -v or --version but version is in xprop -root
|
||||||
# ENLIGHTENMENT_VERSION(STRING) = "Enlightenment 0.16.999.49898"
|
# ENLIGHTENMENT_VERSION(STRING) = "Enlightenment 0.16.999.49898"
|
||||||
$desktop[0] = 'Enlightenment';
|
$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
|
# 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.
|
# detections. get_ps_de_data() and get_wm() will handle alternate wm detections.
|
||||||
if (!$desktop[0]){
|
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 =(
|
my @desktops =(
|
||||||
['icewm','icewm','icewm'],
|
['icewm','icewm','icewm'],
|
||||||
# debian package: i3-wm
|
# debian package: i3-wm
|
||||||
|
@ -18887,7 +18957,23 @@ sub ubuntu_id {
|
||||||
return $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 {
|
sub get_gcc_data {
|
||||||
eval $start if $b_log;
|
eval $start if $b_log;
|
||||||
my ($gcc,@data,@gccs,@temp);
|
my ($gcc,@data,@gccs,@temp);
|
||||||
|
@ -21628,9 +21714,9 @@ sub generate_info_data {
|
||||||
my $compiler = ($b_gcc || $b_clang) ? '': 'N/A';
|
my $compiler = ($b_gcc || $b_clang) ? '': 'N/A';
|
||||||
$data{$data_name}[$index]{main::key($num++,1,1,'Compilers')} = $compiler;
|
$data{$data_name}[$index]{main::key($num++,1,1,'Compilers')} = $compiler;
|
||||||
if ($b_gcc){
|
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){
|
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){
|
if ($b_clang){
|
||||||
|
|
23
inxi.1
23
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
|
.SH NAME
|
||||||
inxi \- Command line system information script for console and IRC
|
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.
|
The \fB\-\-admin\fR option sets \fB\-xxx\fR, and only has to be used once.
|
||||||
It will trigger the following features:
|
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
|
.TP
|
||||||
.B \-a \-C\fR
|
.B \-a \-C\fR
|
||||||
\- Adds CPU family, model\-id, and stepping (replaces \fBrev\fR of \fB\-Cx\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")
|
size: 376x301mm (14.8x11.9") diag: 482mm (19")
|
||||||
....
|
....
|
||||||
.fi
|
.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
|
.TP
|
||||||
.B \-a \-I\fR
|
.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
|
\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
|
.TP
|
||||||
.B \-a \-p\fR,\fB\-a \-P\fR
|
.B \-a \-p\fR,\fB\-a \-P\fR
|
||||||
\- Adds raw partition size, including file system overhead, partition table, e.g.
|
\- Adds raw partition size, including file system overhead, partition table, e.g.
|
||||||
|
|
|
@ -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
|
Version: 3.1.04
|
||||||
Patch: 00
|
Patch: 00
|
||||||
|
|
Loading…
Reference in a new issue