mirror of
https://github.com/smxi/inxi.git
synced 2024-11-16 08:11:39 +00:00
New version, man page. Bug fixes, enhancements.
Bugs: 1. A long standing bug was finally identified and fixed. -n/-i would fail to match a Device to the right IF in cases where they had the same chip / vendor IDs. Added busID for non Soc type devices to fix that. I hope. This fix has been tested on a machine that had this bug, and it is now corrected. Thanks skynet for the dataset. 2. deepin-wm was failing to get listed correctly with new fixes, this is corrected. Fixes: 1. mate version was depending on two tools, mate-about and mate-session, which somewhat randomly vary in which has the actual highest version number. Fix was to run both in MATE for version, and run those through a new version compare tool. Thanks mint/gm10 for reporting that bug. 2. -Gxx compositors: added some missing ones that were being checked for in- correctly. 3. For distro id, fixed a glitch in the parser for files, now correctly removes empty () with or without spaces in it. 4. Got rid of ' SOC?' part of no data for ram or slots, that also triggers in non SOC cases, so best to not guess if I can't get it right. Enhancements: 1. More disk vendor ID matches, also, somehow missed QEMU as vendor, thanks to linux hardware database (linuxlite) for great samples of vendor/product strings. 2. Added a bunch of compositors, found a new source that listed a lot inxi did not have already. 3. Added version v: for some compositors in -Gxxx. 4. New program_data() tool provides an easier to use simple program version/print name generator, including extra level tests, to get rid of some code that repeats. 5. Found some useful QEMU virtual machines for ARM, MIPS, PPC, and SPARC, so made initial debugging for each type, so basic working error free support is well on its way for all 4 architectures, which was unexpected. More fine tunings to all of them to avoid bugs, and to catch more devices, as well. Note that QEMU images are hard to make, and they were not complete in terms of what you would see on physical hardware, so I don't know what features will work or not work, there may be further variants in audio/network/graphics IDs that remain unhandled, new datasets always welcome for such platforms! 6. Found yet another desktop! Added Manokwari support, which is at this point a reworking of gnome, but it was identifiable, minus a version number. 7. Added deepin and blankon to system base supported list, these hide their debian roots, so I had to use the manual method to provide system base.
This commit is contained in:
parent
cd5f450e63
commit
b0392e23ff
429
inxi
429
inxi
|
@ -31,8 +31,8 @@ use POSIX qw(uname strftime ttyname);
|
|||
|
||||
## INXI INFO ##
|
||||
my $self_name='inxi';
|
||||
my $self_version='3.0.21';
|
||||
my $self_date='2018-08-17';
|
||||
my $self_version='3.0.22';
|
||||
my $self_date='2018-08-28';
|
||||
my $self_patch='00';
|
||||
## END INXI INFO ##
|
||||
|
||||
|
@ -70,9 +70,9 @@ $b_display,$b_dmesg_boot_check,
|
|||
$b_dmi,$b_dmidecode_force,$b_fake_bsd,$b_fake_dboot,$b_fake_pciconf,
|
||||
$b_fake_sysctl,$b_fake_usbdevs,$b_force_display,$b_gpudata,$b_irc,
|
||||
$b_log,$b_log_colors,$b_log_full,$b_man,$b_mem,$b_mips,$b_pci,$b_pci_tool,
|
||||
$b_proc_debug,$b_ps_gui,$b_root,$b_running_in_display,$b_slot_tool,
|
||||
$b_soc_audio,$b_soc_gfx,$b_soc_net,$b_sudo,$b_sysctl,$b_usb,$b_usb_check,
|
||||
$b_usb_sys,$b_usb_tool,$b_wmctrl);
|
||||
$b_ppc,$b_proc_debug,$b_ps_gui,$b_root,$b_running_in_display,$b_slot_tool,
|
||||
$b_soc_audio,$b_soc_gfx,$b_soc_net,$b_sparc,$b_sudo,$b_sys_debug,$b_sysctl,
|
||||
$b_usb,$b_usb_check,$b_usb_sys,$b_usb_tool,$b_wmctrl);
|
||||
## Disk checks
|
||||
my ($b_dm_boot_disk,$b_dm_boot_optical,$b_glabel,$b_hardware_raid,
|
||||
$b_label_uuid,$b_lsblk,$b_partitions,$b_raid);
|
||||
|
@ -415,6 +415,8 @@ sub set_os {
|
|||
$cpu_arch = lc($uname[-1]);
|
||||
if ($cpu_arch =~ /arm|aarch/){$b_arm = 1}
|
||||
elsif ($cpu_arch =~ /mips/) {$b_mips = 1}
|
||||
elsif ($cpu_arch =~ /power|ppc/) {$b_ppc = 1}
|
||||
elsif ($cpu_arch =~ /sparc/) {$b_sparc = 1}
|
||||
# aarch32 mips32 intel/amd handled in cpu
|
||||
if ($cpu_arch =~ /(armv[1-7]|32|sparc_v9)/){
|
||||
$bits_sys = 32;
|
||||
|
@ -1313,7 +1315,8 @@ sub run_debugger {
|
|||
if (!$b_debug){
|
||||
if ( -d '/sys' && main::count_dir_files('/sys') ){
|
||||
build_tree('sys');
|
||||
sys_traverse_data();
|
||||
# kernel crash, not sure what creates it, for ppc, as root
|
||||
sys_traverse_data() if (!$b_root || !$b_ppc || $b_sys_debug) ;
|
||||
}
|
||||
else {
|
||||
print "Skipping /sys data collection. /sys not present, or empty.\n";
|
||||
|
@ -1358,6 +1361,8 @@ sub create_debug_directory {
|
|||
$bsd_string = "-BSD-$bsd_type" if $bsd_type;
|
||||
if ($b_arm ){$alt_string = '-ARM'}
|
||||
elsif ($b_mips) {$alt_string = '-MIPS'}
|
||||
elsif ($b_ppc) {$alt_string = '-PPC'}
|
||||
elsif ($b_sparc) {$alt_string = '-SPARC'}
|
||||
$debug_dir = "$self_name$alt_string$bsd_string-$host-$today$root_string-$self_version";
|
||||
$debug_gz = "$debug_dir.tar.gz";
|
||||
$data_dir = "$user_data_dir/$debug_dir";
|
||||
|
@ -2025,7 +2030,7 @@ sub wanted {
|
|||
# not use it. Also do not need . files or __ starting files
|
||||
# print $File::Find::name . "\n";
|
||||
# block maybe: cfgroup\/
|
||||
return if $File::Find::name =~ /\/(\.[a-z]|kernel\/|parameters\/|debug\/)/;
|
||||
return if $File::Find::name =~ /\/(\.[a-z]|kernel\/|trace\/|parameters\/|debug\/)/;
|
||||
# comment this one out if you experience hangs or if
|
||||
# we discover syntax of foreign language characters
|
||||
# Must be ascii like. This is questionable and might require further
|
||||
|
@ -3019,6 +3024,25 @@ sub cleanup {
|
|||
}
|
||||
}
|
||||
|
||||
# args: $1, $2, version numbers to compare by turning them to strings
|
||||
# note that the structure of the two numbers is expected to be fairly
|
||||
# similar, otherwise it may not work perfectly.
|
||||
sub compare_versions {
|
||||
my ($one,$two) = @_;
|
||||
if ($one && !$two){return $one;}
|
||||
elsif ($two && !$one){return $two;}
|
||||
elsif (!$one && !$two){return}
|
||||
my ($pad1,$pad2) = ('','');
|
||||
my (@temp1) = split /[\.\-_]/, $one;
|
||||
my (@temp2) = split /[\.\-_]/, $two;
|
||||
@temp1 = map {$_ = sprintf("%04s", $_);$_ } @temp1;
|
||||
@temp2 = map {$_ = sprintf("%04s", $_);$_ } @temp2;
|
||||
$pad1 = join '', @temp1;
|
||||
$pad2 = join '', @temp2;
|
||||
# print "p1:$pad1 p2:$pad2\n";
|
||||
if ($pad1 ge $pad2){return $one}
|
||||
elsif ($pad2 gt $pad1){return $two}
|
||||
}
|
||||
# returns count of files in directory, if 0, dir is empty
|
||||
sub count_dir_files {
|
||||
return unless -d $_[0];
|
||||
|
@ -3101,6 +3125,30 @@ sub joiner {
|
|||
return $string;
|
||||
}
|
||||
|
||||
# returns array of: 0: program print name 1: program version
|
||||
# args: 1: program values id 2: program version string
|
||||
# 3: extra level. Note that StartClient runs BEFORE -x levels are set!
|
||||
# Only use this function when you only need the name/version data returned
|
||||
# Important: all tests that use this must explicitly have program_values
|
||||
# set for each item tested for!!
|
||||
sub program_data {
|
||||
eval $start if $b_log;
|
||||
my ($values_id,$version_id,$level) = @_;
|
||||
my (@data,$path,@program_data);
|
||||
$level = 0 if ! $level;
|
||||
#print "val_id: $values_id ver_id:$version_id lev:$level ex:$extra\n";
|
||||
$version_id = $values_id if ! $version_id;
|
||||
@data = main::program_values($values_id);
|
||||
$program_data[0] = $data[3];
|
||||
# programs that have no version method return 0 0 for index 1 and 2
|
||||
if ( $extra >= $level && $data[1] && $data[2]){
|
||||
$program_data[1] = main::program_version($version_id,$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
}
|
||||
$program_data[1] = '' if ! defined $program_data[1];
|
||||
eval $end if $b_log;
|
||||
return @program_data;
|
||||
}
|
||||
|
||||
# returns array of:
|
||||
# 0 - match string; 1 - search number; 2 - version string [alt: file];
|
||||
# 3 - Print name; 4 - console 0/1;
|
||||
|
@ -3138,43 +3186,60 @@ sub program_values {
|
|||
'9wm' => ['^9wm',3,'-version','9wm',0,1,0],
|
||||
'afterstep' => ['^afterstep',3,'--version','AfterStep',0,1,0],
|
||||
'amiwm' => ['^amiwm',0,'0','AmiWM',0,1,0],
|
||||
'asc' => ['^asc',0,'0','asc',0,1,0],
|
||||
'awesome' => ['^awesome',2,'--version','Awesome',0,1,0],
|
||||
'blackbox' => ['^Blackbox',2,'--version','Blackbox',0,1,0],
|
||||
'bspwm' => ['^\S',1,'-v','bspwm',0,1,0],
|
||||
'budgie' => ['^budgie-desktop',2,'--version','Budgie',0,1,0],
|
||||
'budgie-wm' => ['^budgie',0,'0','budgie-wm',0,1,0],
|
||||
'cinnamon' => ['^cinnamon',2,'--version','Cinnamon',0,1,0],
|
||||
'compiz' => ['^compiz',2,'--version','Compiz',0,1,0],
|
||||
'compton' => ['^\d',1,'--version','Compton',0,1,0],
|
||||
'dcompmgr' => ['^dcompmgr',0,'0','dcompmgr',0,1,0],
|
||||
'deepin' => ['^Version',2,'file','Deepin',0,'=','/etc/deepin-version'],
|
||||
'deepin-metacity' => ['^metacity',2,'--version','Deepin-Metacity',0,1,0],
|
||||
'deepin-mutter' => ['^mutter',2,'--version','Deepin-Mutter',0,1,0],
|
||||
'deepin-wm' => ['^gala',0,'0','DeepinWM',0,1,0],
|
||||
'dwc' => ['^dwc',0,'0','dwc',0,1,0],
|
||||
'dwm' => ['^dwm',1,'-v','dwm',0,1,1],
|
||||
# only listed here for compositor values, version data comes from xprop
|
||||
'enlightenment' => ['^enlightenment',0,'0','enlightenment',0,1,0],
|
||||
'fireplace' => ['^fireplace',0,'0','fireplace',0,1,0],
|
||||
'fluxbox' => ['^fluxbox',2,'-v','Fluxbox',0,1,0],
|
||||
'flwm' => ['^flwm',0,'0','FLWM',0,0,1],
|
||||
'fvwm' => ['^fvwm',2,'--version','FVWM',0,0,1],
|
||||
'fvwm2' => ['^fvwm',2,'--version','FVWM2',0,0,1],
|
||||
# command: fvwm
|
||||
'fvwm-crystal' => ['^fvwm',2,'--version','FVWM-Crystal',0,0,0],
|
||||
'gala' => ['^gala',2,'--version','gala',0,1,0], # super slow result
|
||||
'gala' => ['^gala',0,'0','gala',0,1,0], # super slow result, but 2, '--version' works?
|
||||
'gnome-about' => ['gnome',3,'--version','Gnome',0,1,0],
|
||||
'gnome-shell' => ['gnome',3,'--version','Gnome',0,1,0],
|
||||
'grefson' => ['^grefson',0,'0','grefson',0,1,0],
|
||||
# note, herbstluftwm when launched with full path returns full path in version string
|
||||
'herbstluftwm' => ['herbstluftwm',2,'--version','herbstluftwm',0,1,0],
|
||||
'jwm' => ['^jwm',2,'--version','JWM',0,1,0],
|
||||
# i3 version 4.13 (2016-11-08) © 2009 Michael Stapelberg and contributors
|
||||
'i3' => ['^i3',3,'--version','i3',0,1,0],
|
||||
'icewm' => ['^icewm',2,'--version','IceWM',0,1,0],
|
||||
'ion' => ['^ion',0,'0','Ion',0,1,0],
|
||||
'kded' => ['^KDE Development Platform:',4,'--version','KDE',0,1,0],
|
||||
'kded1' => ['^KDE Development Platform:',4,'--version','KDE',0,1,0],
|
||||
'kded2' => ['^KDE Development Platform:',4,'--version','KDE',0,1,0],
|
||||
'kded3' => ['^KDE Development Platform:',4,'--version','KDE',0,1,0],
|
||||
'kded4' => ['^KDE Development Platform:',4,'--version','KDE',0,1,0],
|
||||
'ksmcon' => ['^ksmcon',0,'0','ksmcon',0,1,0],
|
||||
'kwin' => ['^kwin',0,'0','kwin',0,1,0],
|
||||
'kwin_wayland' => ['^kwin_wayland',0,'0','kwin_wayland',0,1,0],
|
||||
'kwin_x11' => ['^kwin_x11',0,'0','kwin_x11',0,1,0],
|
||||
'liri' => ['^liri',0,'0','liri',0,1,0],
|
||||
'lumina' => ['^\S',1,'--version','Lumina',0,1,1],
|
||||
'lwm' => ['^lwm',0,'0','lwm',0,1,0],
|
||||
'lxde' => ['^lxpanel',2,'--version','LXDE',0,1,0],
|
||||
# command: lxqt-panel
|
||||
'lxqt' => ['^lxqt-panel',2,'--version','LXQt',0,1,0],
|
||||
'lxqt-variant' => ['^lxqt-panel',0,'0','LXQt-Variant',0,1,0],
|
||||
'lxsession' => ['^lxsession',0,'0','lxsession',0,1,0],
|
||||
'manokwari' => ['^manokwari',0,'0','Manokwari',0,1,0],
|
||||
'marco' => ['^marco',2,'--version','marco',0,1,0],
|
||||
'matchbox' => ['^matchbox',0,'0','Matchbox',0,1,0],
|
||||
'matchbox-window-manager' => ['^matchbox',2,'--help','Matchbox',0,0,0],
|
||||
|
@ -3182,28 +3247,50 @@ sub program_values {
|
|||
# note, mate-session when launched with full path returns full path in version string
|
||||
'mate-session' => ['mate-session',-1,'--version','MATE',0,1,0],
|
||||
'metacity' => ['^metacity',2,'--version','Metacity',0,1,0],
|
||||
'metisse' => ['^metisse',0,'0','metisse',0,1,0],
|
||||
'mir' => ['^mir',0,'0','mir',0,1,0],
|
||||
'motorcar' => ['^motorcar',0,'0','motorcar',0,1,0],
|
||||
'muffin' => ['^muffin',2,'--version','muffin',0,1,0],
|
||||
'moblin' => ['^moblin',0,'0','moblin',0,1,0],
|
||||
'mutter' => ['^mutter',2,'--version','mutter',0,1,0],
|
||||
'mwm' => ['^mwm',0,'0','mwm',0,1,0],
|
||||
'nawm' => ['^nawm',0,'0','nawm',0,1,0],
|
||||
'notion' => ['^.',1,'--version','notion',0,1,0],
|
||||
'openbox' => ['^openbox',2,'--version','Openbox',0,1,0],
|
||||
'orbital' => ['^orbital',0,'0','orbital',0,1,0],
|
||||
'pantheon' => ['^pantheon',0,'0','Pantheon',0,1,0],
|
||||
'papyros' => ['^papyros',0,'0','papyros',0,1,0],
|
||||
'pekwm' => ['^pekwm',3,'--version','PekWM',0,1,0],
|
||||
'perceptia' => ['^perceptia',0,'0','perceptia',0,1,0],
|
||||
'plasmashell' => ['^plasmashell',2,'--version','KDE Plasma',0,1,0],
|
||||
'qtdiag' => ['^qt',2,'--version','Qt',0,1,0],
|
||||
'qtile' => ['^qtile',0,'0','Qtile',0,0,1],
|
||||
'razor' => ['^razor',0,'0','Razor-Qt',0,1,0],
|
||||
'ratpoison' => ['^ratpoison',2,'--version','Ratpoison',0,1,0],
|
||||
'rustland' => ['^rustland',0,'0','rustland',0,1,0],
|
||||
'sawfish' => ['^sawfish',3,'--version','Sawfish',0,1,0],
|
||||
'scrotwm' => ['^scrotwm.*welcome.*',5,'-v','Scrotwm',0,1,1],
|
||||
'sommelier' => ['^sommelier',0,'0','sommelier',0,1,0],
|
||||
'spectrwm' => ['^spectrwm.*welcome.*wm',5,'-v','Spectrwm',0,1,1],
|
||||
'sway' => ['^sway',0,'0','sway',0,1,0],
|
||||
'swc' => ['^swc',0,'0','swc',0,1,0],
|
||||
'tvtwm' => ['^tvtwm',0,'0','tvtwm',0,1,0],
|
||||
'twin' => ['^Twin:',2,'--version','Twin',0,0,0],
|
||||
'twm' => ['^twm',0,'0','twm',0,1,0],
|
||||
'unagi' => ['^unagi',0,'0','unagi',0,1,0],
|
||||
'unity' => ['^unity',2,'--version','Unity',0,1,0],
|
||||
'wavy' => ['^wavy',0,'0','wavy',0,1,0],
|
||||
'way-cooler' => ['^way',0,'0','way-cooler',0,1,0],
|
||||
'wayhouse' => ['^wayhouse',0,'0','wayhouse',0,1,0],
|
||||
'westford' => ['^westford',0,'0','westford',0,1,0],
|
||||
'weston' => ['^weston',0,'0','weston',0,1,0],
|
||||
'windowlab' => ['^windowlab',2,'-about','WindowLab',0,1,0],
|
||||
'wm2' => ['^wm2',0,'0','wm2',0,1,0],
|
||||
'wmaker' => ['^Window[[:space:]]*Maker',-1,'--version','WindowMaker',0,1,0],
|
||||
'wmii' => ['^wmii',0,'0','wmii',0,1,0], # note: in debian, wmii is wmii3
|
||||
'wmii2' => ['^wmii2',1,'--version','wmii2',0,1,0],
|
||||
'wmx' => ['^wmx',0,'0','wmx',0,1,0],
|
||||
'xcompmgr' => ['^xcompmgr',0,'0','xcompmgr',0,1,0],
|
||||
'xfce4-panel' => ['^xfce4-panel',2,'--version','Xfce',0,1,0],
|
||||
'xfce5-panel' => ['^xfce5-panel',2,'--version','Xfce',0,1,0],
|
||||
'xfdesktop' => ['xfdesktop[[:space:]]version',5,'--version','Xfce',0,1,0],
|
||||
|
@ -3211,10 +3298,21 @@ sub program_values {
|
|||
'xfdesktop-toolkit' => ['Built[[:space:]]with[[:space:]]GTK',4,'--version','Gtk',0,1,0],
|
||||
'xmonad' => ['^xmonad',2,'--version','XMonad',0,1,0],
|
||||
## display managers (dm)
|
||||
'gdm' => ['^gdm',2,'--version','gdm',0,1,0],
|
||||
'gdm3' => ['^gdm',2,'--version','gdm3',0,1,0],
|
||||
'lightdm' => ['^lightdm',2,'--version','lightdm',0,1,1],
|
||||
'slim' => ['slim version',3,'-v','slim',0,1,0],
|
||||
'entrance' => ['^entrance',0,'0','Entrance',0,1,0],
|
||||
'gdm' => ['^gdm',2,'--version','GDM',0,1,0],
|
||||
'gdm3' => ['^gdm',2,'--version','GDM3',0,1,0],
|
||||
'kdm' => ['^kdm',0,'0','KDM',0,1,0],
|
||||
'ldm' => ['^ldm',0,'0','LDM',0,1,0],
|
||||
'lightdm' => ['^lightdm',2,'--version','LightDM',0,1,1],
|
||||
'lxdm' => ['^lxdm',0,'0','LXDM',0,1,0],
|
||||
'mdm' => ['^mdm',0,'0','MDM',0,1,0],
|
||||
'nodm' => ['^nodm',0,'0','nodm',0,1,0],
|
||||
'pcdm' => ['^pcdm',0,'0','PCDM',0,1,0],
|
||||
'sddm' => ['^sddm',0,'0','SDDM',0,1,0],
|
||||
'slim' => ['slim version',3,'-v','SLiM',0,1,0],
|
||||
'wdm' => ['^wdm',0,'0','WINGs DM',0,1,0],
|
||||
'xdm' => ['^xdm',0,'0','XDM',0,1,0],
|
||||
'xenodm' => ['^xenodm',0,'0','xenodm',0,1,0],
|
||||
## Shells
|
||||
'bash' => ['^GNU[[:space:]]bash,[[:space:]]version',4,'--version','Bash',1,0,0],
|
||||
'csh' => ['^tcsh',2,'--version','csh',1,0,0],
|
||||
|
@ -3389,7 +3487,6 @@ sub uniq {
|
|||
grep !$seen{$_}++, @_;
|
||||
}
|
||||
|
||||
|
||||
# arg: 1 file full path to write to; 2 - arrayof data to write.
|
||||
# note: turning off strict refs so we can pass it a scalar or an array reference.
|
||||
sub writer {
|
||||
|
@ -4036,6 +4133,8 @@ sub get_options{
|
|||
$b_irc = 1; },
|
||||
'man' => sub {
|
||||
$b_use_man = 1; },
|
||||
'mips' => sub {
|
||||
$b_mips = 1 },
|
||||
'output:s' => sub {
|
||||
my ($opt,$arg) = @_;
|
||||
if ($arg =~ /^(json|screen|xml)$/){
|
||||
|
@ -4068,10 +4167,16 @@ sub get_options{
|
|||
else {
|
||||
error_handler('bad-arg', $opt, $arg);
|
||||
}},
|
||||
'ppc' => sub {
|
||||
$b_ppc = 1 },
|
||||
'proc' => sub {
|
||||
$b_proc_debug = 1; },
|
||||
'recommends' => sub {
|
||||
$b_recommends = 1; },
|
||||
'sparc' => sub {
|
||||
$b_sparc = 1; },
|
||||
'sys' => sub {
|
||||
$b_sys_debug = 1; },
|
||||
'U|update:s' => sub { # 1,2,3 OR http://myserver/path/inxi
|
||||
my ($opt,$arg) = @_;
|
||||
$b_downloader = 1;
|
||||
|
@ -4386,7 +4491,8 @@ sub show_options {
|
|||
['2', '-C', '', "CPU boost (turbo) enabled/disabled, if present." ],
|
||||
['2', '-D', '', "Firmware rev. if available; partition scheme, in some cases; disk
|
||||
rotation speed (if detected)." ],
|
||||
['2', '-G', '', "Specific vendor/product information (if relevant)." ],
|
||||
['2', '-G', '', "Specific vendor/product information (if relevant); compositor
|
||||
version (if detectable)." ],
|
||||
['2', '-I', '', "For 'Shell:' adds ([su|sudo|login]) to shell name if present;
|
||||
for 'running in:' adds (SSH) if SSH session." ],
|
||||
['2', '-m', '', "Width of memory bus, data and total (if present and greater
|
||||
|
@ -4396,7 +4502,7 @@ sub show_options {
|
|||
['2', '-R', '', "zfs-raid: portion allocated (used) by RAID devices/arrays.
|
||||
md-raid: system md-raid support types (kernel support, read ahead, RAID events).
|
||||
Hardware RAID rev, ports, specific vendor/product information." ],
|
||||
['2', '-S', '', "Panel/tray/bar info in desktop output, if in X (like lxpanel,
|
||||
['2', '-S', '', "Panel/tray/bar/dock info in desktop output, if in X (like lxpanel,
|
||||
xfce4-panel, mate-panel); (if available) dm version number, window manager
|
||||
version number." ],
|
||||
['2', '--usb', '', "For devices: serial number (if present), interface count." ],
|
||||
|
@ -4959,10 +5065,11 @@ sub clean_characters {
|
|||
# etc/issue often has junk stuff like (\l) \n \l
|
||||
return if ! $data;
|
||||
$data =~ s/[:\47]|\\[a-z]|\n|,|\"|\*|\||\+|\[\s\]|n\/a|\s\s+/ /g;
|
||||
$data =~ s/\(\)//;
|
||||
$data =~ s/\(\s*\)//;
|
||||
$data =~ s/^\s+|\s+$//g;
|
||||
return $data;
|
||||
}
|
||||
|
||||
sub cleaner {
|
||||
my ($item) = @_;
|
||||
return $item if !$item;# handle cases where it was 0 or ''
|
||||
|
@ -5175,9 +5282,9 @@ sub row_defaults {
|
|||
'partition-data' => "No Partition data was found.",
|
||||
'pci-advanced-data' => 'bus/chip ids unavailable',
|
||||
'pci-card-data' => "No PCI card data found.",
|
||||
'pci-slot-data' => "No PCI slot data found. SBC?",
|
||||
'pci-slot-data' => "No PCI slot data found.",
|
||||
'raid-data' => "No RAID data was found.",
|
||||
'ram-data' => "No RAM data was found. SBC?",
|
||||
'ram-data' => "No RAM data was found.",
|
||||
'root-required' => "<root required>",
|
||||
'sensors-data-ipmi' => "No ipmi sensors data was found.",
|
||||
'sensors-data-linux' => "No sensors data was found. Is sensors configured?",
|
||||
|
@ -6342,12 +6449,12 @@ sub create_output_full {
|
|||
main::key($num++,'model') => $cpu{'model_name'},
|
||||
},);
|
||||
@rows = (@rows,@data);
|
||||
if ($cpu{'arm-cpus'}){
|
||||
my $ref = $cpu{'arm-cpus'};
|
||||
my %arm_cpus = %$ref;
|
||||
if ($cpu{'system-cpus'}){
|
||||
my $ref = $cpu{'system-cpus'};
|
||||
my %system_cpus = %$ref;
|
||||
my $i = 1;
|
||||
my $counter = ( %arm_cpus && scalar keys %arm_cpus > 1 ) ? '-' : '';
|
||||
foreach my $key (keys %arm_cpus){
|
||||
my $counter = ( %system_cpus && scalar keys %system_cpus > 1 ) ? '-' : '';
|
||||
foreach my $key (keys %system_cpus){
|
||||
$counter = '-' . $i++ if $counter;
|
||||
$rows[$j]{main::key($num++,'variant'.$counter)} = $key;
|
||||
}
|
||||
|
@ -6580,7 +6687,8 @@ sub data_cpuinfo {
|
|||
# $file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/intel/2-1-core-xeon-vm-vs2017.txt";
|
||||
# $file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/intel/4-1-core-xeon-vps-frodo1.txt";
|
||||
# $file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/intel/4-6-core-xeon-no-mt-lathander.txt";
|
||||
#$file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/mips/mips-mainusg-cpuinfo.txt";
|
||||
# $file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/mips/mips-mainusg-cpuinfo.txt";
|
||||
# $file = "$ENV{'HOME'}/bin/scripts/inxi/data/cpu/ppc/ppc-debian-ppc64-cpuinfo.txt";
|
||||
my %speeds = set_cpu_speeds_sys();
|
||||
my @cpuinfo = main::reader($file);
|
||||
my @phys_cpus = (0);# start with 1 always
|
||||
|
@ -6659,11 +6767,15 @@ sub data_cpuinfo {
|
|||
$cpu{'arch'} = $line[1];
|
||||
}
|
||||
}
|
||||
elsif (!$cpu{'rev'} && ($line[0] eq 'stepping' || $line[0] eq 'cpu revision' )){
|
||||
elsif (!$cpu{'rev'} && ($line[0] eq 'stepping' || $line[0] eq 'cpu revision')){
|
||||
$cpu{'rev'} = uc(sprintf("%x", $line[1]));
|
||||
}
|
||||
# ppc
|
||||
elsif (!$cpu{'rev'} && $line[0] eq 'revision'){
|
||||
$cpu{'rev'} = $line[1];
|
||||
}
|
||||
# this is hex so uc for cpu arch id
|
||||
elsif (!$cpu{'model_id'} && $line[0] eq 'model' ){
|
||||
elsif (!$cpu{'model_id'} && (!$b_ppc && $line[0] eq 'model') ){
|
||||
$cpu{'model_id'} = uc(sprintf("%x", $line[1]));
|
||||
}
|
||||
elsif (!$cpu{'model_id'} && $line[0] eq 'cpu variant' ){
|
||||
|
@ -6692,7 +6804,7 @@ sub data_cpuinfo {
|
|||
$cpu{'type'} = 'mips';
|
||||
}
|
||||
}
|
||||
elsif ( $line[0] eq 'cpu mhz' ){
|
||||
elsif ( $line[0] eq 'cpu mhz' || $line[0] eq 'clock' ){
|
||||
$speed = speed_cleaner($line[1]);
|
||||
$cpu{'processors'}[$proc_count-1] = $speed;
|
||||
#$ids[$phys_id][$die_id] = ([($speed)]);
|
||||
|
@ -6777,22 +6889,23 @@ sub data_cpuinfo {
|
|||
}
|
||||
$cpu{'phys'} = scalar @phys_cpus;
|
||||
$cpu{'dies'} = $die_id++; # count starts at 0, all cpus have 1 die at least
|
||||
if ($b_arm){
|
||||
if ($b_arm || $b_mips){
|
||||
if ($cpu{'dies'} <= 1){
|
||||
my $arm_dies = cpu_dies_sys();
|
||||
# case were 4 core arm returned 4 sibling lists, obviously wrong
|
||||
$cpu{'dies'} = $arm_dies if $arm_dies && $proc_count != $arm_dies;
|
||||
}
|
||||
$cpu{'type'} = 'arm' if !$cpu{'type'};
|
||||
$cpu{'type'} = ($b_arm) ? 'arm' : 'mips' if !$cpu{'type'};
|
||||
if (!$bsd_type){
|
||||
my %arm_cpus = arm_cpu_name();
|
||||
$cpu{'arm-cpus'} = \%arm_cpus if %arm_cpus;
|
||||
my %system_cpus = system_cpu_name();
|
||||
$cpu{'system-cpus'} = \%system_cpus if %system_cpus;
|
||||
}
|
||||
}
|
||||
$cpu{'ids'} = (\@ids);
|
||||
if ( $extra > 0 && !$cpu{'arch'} && $type ne 'short' ){
|
||||
$cpu{'arch'} = cpu_arch($cpu{'type'},$cpu{'family'},$cpu{'model_id'});
|
||||
$cpu{'arch'} = $cpu_arch if (!$cpu{'arch'} && $cpu_arch && ($b_mips || $b_arm))
|
||||
# cpu_arch comes from set_os()
|
||||
$cpu{'arch'} = $cpu_arch if (!$cpu{'arch'} && $cpu_arch && ($b_mips || $b_arm || $b_ppc));
|
||||
#print "$cpu{'type'},$cpu{'family'},$cpu{'model_id'},$cpu{'arch'}\n";
|
||||
}
|
||||
if (!$speeds{'cur-freq'}){
|
||||
|
@ -7369,7 +7482,7 @@ sub get_boost_status {
|
|||
eval $end if $b_log;
|
||||
return $boost;
|
||||
}
|
||||
sub arm_cpu_name {
|
||||
sub system_cpu_name {
|
||||
eval $start if $b_log;
|
||||
my (%cpus,$compat,@working);
|
||||
if (@working = main::globber('/sys/firmware/devicetree/base/cpus/cpu@*/compatible')){
|
||||
|
@ -7467,6 +7580,9 @@ sub cpu_arch {
|
|||
if ($family ne ''){$arch="ARMv$family";}
|
||||
else {$arch='ARM';}
|
||||
}
|
||||
# elsif ( $type eq 'ppc'){
|
||||
# $arch='PPC';
|
||||
# }
|
||||
# aka VIA
|
||||
elsif ( $type eq 'centaur'){
|
||||
if ($family eq '5'){
|
||||
|
@ -8288,11 +8404,12 @@ sub device_vendor {
|
|||
# must come before samsung MU. NOTE: toshiba can have: TOSHIBA_MK6475GSX: mush: MKNSSDCR120GB_
|
||||
['(^MKN|Mushkin)','Mushkin','Mushkin',''], # MKNS
|
||||
# MU = Multiple_Flash_Reader too risky: |M[UZ][^L]
|
||||
['(SAMSUNG|^MCG[0-9]+GC)','SAMSUNG','Samsung',''], # maybe ^SM
|
||||
['(SanDisk|^SDS[S]?[DQ]|^SL([0-9]+)G|^AFGCE|ULTRA\sFIT|Cruzer)','SanDisk','SanDisk',''],
|
||||
['(SAMSUNG|^MCG[0-9]+GC|^G2 Portable)','SAMSUNG','Samsung',''], # maybe ^SM
|
||||
['(SanDisk|^SDS[S]?[DQ]|^SL([0-9]+)G|^AFGCE|ULTRA\sFIT|Clip Sport|Cruzer)','SanDisk','SanDisk',''],
|
||||
['^STEC\b','^STEC\b','STEC',''], # ssd drive, must come before seagate ST test
|
||||
# real, SSEAGATE Backup+; XP1600HE30002
|
||||
['(^ST[^T]|[S]?SEAGATE|^X[AFP]|^BUP|Expansion Desk)','[S]?SEAGATE','Seagate',''],
|
||||
['^(WD|Western Digital|My (Book|Passport)|00LPCX|Elements|M000)','(^WDC|Western Digital)','Western Digital',''],
|
||||
['(^ST[^T]|[S]?SEAGATE|^X[AFP]|^BUP|Expansion Desk|GoFlex)','[S]?SEAGATE','Seagate',''],
|
||||
['^(WD|Western Digital|My (Book|Passport)|\d*LPCX|Elements|M000|EARX|EFRX|\d*EAVS)','(^WDC|Western Digital)','Western Digital',''],
|
||||
## Then better known ones ##
|
||||
['^(A-DATA|ADATA|AXN)','^(A-DATA|ADATA)','A-Data',''],
|
||||
['^ADTRON','^(ADTRON)','Adtron',''],
|
||||
|
@ -8323,6 +8440,7 @@ sub device_vendor {
|
|||
['^BUFFALO','^BUFFALO','Buffalo',''],
|
||||
['^CHN\b','','Zheino',''],
|
||||
['^Colorful\b','^Colorful','Colorful',''],
|
||||
['^DGM','^DGM\b','DGM',''],
|
||||
['^DREVO\b','^DREVO','Drevo',''],
|
||||
['^(Eaget|V8$)','^Eaget','Eaget',''],
|
||||
['^EXCELSTOR','^EXCELSTOR( TECHNO(LOGY)?)?','Excelstor',''],
|
||||
|
@ -8337,11 +8455,12 @@ sub device_vendor {
|
|||
['^(G[\.]?SKILL)','^G[\.]?SKILL','G.SKILL',''],
|
||||
['^HUAWEI','^HUAWEI','Huawei',''],
|
||||
['^(IBM|DT)','^IBM','IBM',''],
|
||||
['^Imation','^Imation(\sImation)?','Imation',''], # Imation_ImationFlashDrive
|
||||
['^Imation','^Imation(\sImation)?','Imation',''], # Imation_ImationFlashDrive; TF20 is imation/tdk
|
||||
['^(InnoDisk|Innolite)','^InnoDisk( Corp.)?','InnoDisk',''],
|
||||
['^Innostor','^Innostor','Innostor',''],
|
||||
['^(Intenso|Rainbow Line)','^Intenso','Intenso',''],
|
||||
['^(Intenso|(Rainbow|Speed) Line)','^Intenso','Intenso',''],
|
||||
['^KingDian','^KingDian','KingDian',''],
|
||||
['^Kingfast','^Kingfast','Kingfast',''],
|
||||
['^KingMAX','^KingMAX','KingMAX',''],
|
||||
['^KINGSHARE','^KINGSHARE','KingShare',''],
|
||||
['^(LITE[\-]?ON[\s\-]?IT)','^LITE[\-]?ON[\s\-]?IT','LITE-ON IT',''], # LITEONIT_LSS-24L6G
|
||||
|
@ -8356,6 +8475,7 @@ sub device_vendor {
|
|||
['^(PS[8F]|Patriot)','^Patriot','Patriot',''],
|
||||
['^PIX[\s]?JR','^PIX[\s]?JR','Disney',''],
|
||||
['^(PLEXTOR|PX-)','^PLEXTOR','Plextor',''],
|
||||
['QEMU','^[0-9]*QEMU( QEMU)?','QEMU',''], # 0QUEMU QEMU HARDDISK
|
||||
['(^Quantum|Fireball)','^Quantum','Quantum',''],
|
||||
['^QUMO','^QUMO','Qumo',''],
|
||||
['^R3','','AMD Radeon',''], # ssd
|
||||
|
@ -8376,6 +8496,7 @@ sub device_vendor {
|
|||
['^(SF|Swissbit)','^Swissbit','Swissbit',''],
|
||||
# ['^(SUPERSPEED)','^SUPERSPEED','SuperSpeed',''], # superspeed is a generic term
|
||||
['^TANDBERG','^TANDBERG','Tanberg',''],
|
||||
['^TCSUNBOW','^TCSUNBOW','TCSunBow',''],
|
||||
['^TEAC','^TEAC','TEAC',''],
|
||||
['^TEAM','^TEAM( Group)?','Team',''],
|
||||
['^(TS|Transcend|JetFlash)','^Transcend','Transcend',''],
|
||||
|
@ -8575,6 +8696,7 @@ sub get {
|
|||
eval $end if $b_log;
|
||||
return @rows;
|
||||
}
|
||||
# @pci:
|
||||
# 0 type
|
||||
# 1 type_id
|
||||
# 2 bus_id
|
||||
|
@ -8672,6 +8794,10 @@ sub display_data(){
|
|||
# initial tests, if wayland, it is certainly a compositor
|
||||
$protocol = lc($protocol) if $protocol;
|
||||
$graphics{'compositor'} = display_compositor($protocol);
|
||||
# gnome-shell is incredibly slow to return version
|
||||
if ($extra > 2 && $graphics{'compositor'} && (!$show{'system'} || $graphics{'compositor'} ne 'gnome-shell' ) ){
|
||||
$graphics{'compositor-version'} = (main::program_data($graphics{'compositor'},$graphics{'compositor'},3))[1];
|
||||
}
|
||||
}
|
||||
if ( $b_display){
|
||||
# X vendor and version detection.
|
||||
|
@ -8817,6 +8943,9 @@ sub display_data(){
|
|||
}
|
||||
if ($graphics{'compositor'}){
|
||||
$row[0]{main::key($num++,'compositor')} = $graphics{'compositor'};
|
||||
if ($graphics{'compositor-version'}){
|
||||
$row[0]{main::key($num++,'v')} = $graphics{'compositor-version'};
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($resolution){
|
||||
|
@ -9112,7 +9241,10 @@ sub display_compositor {
|
|||
if (@ps_gui){
|
||||
# 1 check program; 2 search; 3 unused version; 4 print
|
||||
my @compositors = (
|
||||
['asc','asc','','asc'],
|
||||
['budgie-wm','budgie-wm','','budgie-wm'],
|
||||
# owned by: compiz-core in debian
|
||||
['compiz','compiz','','compiz'],
|
||||
['compton','compton','','compton'],
|
||||
# as of version 20 is wayland compositor
|
||||
['enlightenment','enlightenment','','enlightenment'],
|
||||
|
@ -9124,21 +9256,28 @@ sub display_compositor {
|
|||
['muffin','muffin','','muffin'],
|
||||
['mutter','mutter','','mutter'],
|
||||
['weston','weston','','weston'],
|
||||
# owned by: compiz-core in debian
|
||||
['compiz','compiz','','compiz'],
|
||||
# did not find follwing in debian apt
|
||||
# these are more obscure, so check for them last
|
||||
['3dwm','3dwm','','3dwm'],
|
||||
['dcompmgr','dcompmgr','','dcompmgr'],
|
||||
['dwc','dwc','','dwc'],
|
||||
['fireplace','fireplace','','fireplace'],
|
||||
['grefson','grefson','','grefson'],
|
||||
['ireplace','ireplace','','ireplace'],
|
||||
['kmscon','kmscon','','kmscon'],
|
||||
['liri','liri','','liri'],
|
||||
['metisse','metisse','','metisse'],
|
||||
['mir','mir','','mir'],
|
||||
['moblin','moblin','','moblin'],
|
||||
['motorcar','motorcar','','motorcar'],
|
||||
['orbital','orbital','','orbital'],
|
||||
['papyros','papyros','','papyros'],
|
||||
['perceptia','perceptia','','perceptia'],
|
||||
['rustland','rustland','','rustland'],
|
||||
['sommelier','sommelier','','sommelier'],
|
||||
['sway','sway','','sway'],
|
||||
['swc','swc','','swc'],
|
||||
['unagi','unagi','','unagi'],
|
||||
['way-cooler','way-cooler','','way-cooler'],
|
||||
['wavy','wavy','','wavy'],
|
||||
['wayhouse','wayhouse','','wayhouse'],
|
||||
['westford','westford','','westford'],
|
||||
['xcompmgr','xcompmgr','','xcompmgr'],
|
||||
|
@ -9198,7 +9337,7 @@ sub get {
|
|||
}
|
||||
elsif (!$bsd_type) {
|
||||
# this uses /proc/cpuinfo so only GNU/Linux
|
||||
if ($b_arm || $b_mips){
|
||||
if ($b_arm || $b_mips || $b_ppc){
|
||||
%soc_machine = machine_data_soc();
|
||||
@data = create_output_soc(%soc_machine) if %soc_machine;
|
||||
}
|
||||
|
@ -9347,15 +9486,17 @@ sub create_output {
|
|||
return @rows;
|
||||
}
|
||||
sub create_output_soc {
|
||||
my (%data,@row,@rows);
|
||||
my (%soc_machine) = @_;
|
||||
my ($key,%data,@row,@rows);
|
||||
my $num = 0;
|
||||
my $j = 0;
|
||||
#print Data::Dumper::Dumper \%soc_machine;
|
||||
# this is sketchy, /proc/device-tree/model may be similar to Hardware value from /proc/cpuinfo
|
||||
# raspi: Hardware : BCM2835 model: Raspberry Pi Model B Rev 2
|
||||
if ($soc_machine{'device'} || $soc_machine{'model'}){
|
||||
my $key = ($b_arm) ? 'ARM Device': 'MIPS Device';
|
||||
if ($b_arm){$key = 'ARM Device'}
|
||||
elsif ($b_mips){$key = 'MIPS Device'}
|
||||
elsif ($b_ppc){$key = 'PowerPC Device'}
|
||||
$rows[$j]{main::key($num++,'Type')} = $key;
|
||||
my $system = 'System';
|
||||
if (defined $soc_machine{'model'}){
|
||||
|
@ -9818,7 +9959,7 @@ sub get {
|
|||
# shift @ifs_found;
|
||||
# pop @ifs_found;
|
||||
if (!$bsd_type){
|
||||
@data = advanced_data_sys('check','',0,'','');
|
||||
@data = advanced_data_sys('check','',0,'','','');
|
||||
@rows = (@rows,@data) if @data;
|
||||
}
|
||||
else {
|
||||
|
@ -9854,7 +9995,7 @@ sub card_data {
|
|||
#print "$row[0] $row[3]\n";
|
||||
# NOTE: class 06 subclass 80
|
||||
# https://www-s.acm.illinois.edu/sigops/2007/roll_your_own/7.c.1.html
|
||||
if (($row[0] && $row[0] =~ /^(eth|ethernet|ethernet-phy|network|wifi|wlan)$/ )|| ($row[1] && $row[1] eq '0680' ) ){
|
||||
if (($row[0] && $row[0] =~ /^(eth|ethernet|ethernet-phy|lan|l-lan|network|wifi|wlan)$/ )|| ($row[1] && $row[1] eq '0680' ) ){
|
||||
#print "$row[0] $row[3]\n";
|
||||
$j = scalar @rows;
|
||||
my $driver = $row[9];
|
||||
|
@ -9884,6 +10025,12 @@ sub card_data {
|
|||
$rows[$j]{main::key($num++,'type')} = 'network bridge';
|
||||
}
|
||||
$rows[$j]{main::key($num++,'driver')} = $driver;
|
||||
my $bus_id = 'N/A';
|
||||
# note: for arm/mips we want to see the single item bus id, why not?
|
||||
# note: we can have bus id: 0002 / 0 which is valid, but 0 / 0 is invalid
|
||||
if (defined $row[2] && $row[2] ne '0' && defined $row[3]){$bus_id = "$row[2].$row[3]"}
|
||||
elsif (defined $row[2] && $row[2] ne '0'){$bus_id = $row[2]}
|
||||
elsif (defined $row[3] && $row[3] ne '0'){$bus_id = $row[3]}
|
||||
if ($extra > 0){
|
||||
if ($row[9] && !$bsd_type){
|
||||
my $version = main::get_module_version($row[9]);
|
||||
|
@ -9893,11 +10040,6 @@ sub card_data {
|
|||
$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++,'port')} = $row[8] if (!$b_wifi || ( $b_wifi && $row[8] ne 'N/A') );
|
||||
my $bus_id = 'N/A';
|
||||
# note: for arm/mips we want to see the single item bus id, why not?
|
||||
if ($row[2] && $row[3]){$bus_id = "$row[2].$row[3]"}
|
||||
elsif ($row[2]){$bus_id = $row[2]}
|
||||
elsif ($row[3]){$bus_id = $row[3]}
|
||||
$rows[$j]{main::key($num++,'bus ID')} = $bus_id;
|
||||
}
|
||||
if ($extra > 1){
|
||||
|
@ -9905,7 +10047,7 @@ sub card_data {
|
|||
}
|
||||
if ($show{'network-advanced'}){
|
||||
if (!$bsd_type){
|
||||
@data = advanced_data_sys($row[5],$row[6],$holder{$chip_id},$b_wifi,'');
|
||||
@data = advanced_data_sys($row[5],$row[6],$holder{$chip_id},$b_wifi,'',$bus_id);
|
||||
}
|
||||
else {
|
||||
@data = advanced_data_bsd("$row[9]$row[11]",$b_wifi);
|
||||
|
@ -9971,7 +10113,7 @@ sub usb_data {
|
|||
my (@temp,$vendor,$chip);
|
||||
@temp = split (/:/, $row[7]) if $row[7];
|
||||
($vendor,$chip) = ($temp[0],$temp[1]) if @temp;
|
||||
@data = advanced_data_sys($vendor,$chip,0,$b_wifi,$path);
|
||||
@data = advanced_data_sys($vendor,$chip,0,$b_wifi,$path,'');
|
||||
}
|
||||
# NOTE: we need the driver.number, like wlp0 to get a match, and
|
||||
# we can't get that from usb data, so we have to let it fall back down
|
||||
|
@ -9991,7 +10133,7 @@ sub usb_data {
|
|||
sub advanced_data_sys {
|
||||
eval $start if $b_log;
|
||||
return if ! -d '/sys/class/net';
|
||||
my ($vendor,$chip,$count,$b_wifi,$path_usb) = @_;
|
||||
my ($vendor,$chip,$count,$b_wifi,$path_usb,$bus_id) = @_;
|
||||
my $num = 0;
|
||||
my $key = 'IF';
|
||||
my ($b_check,$b_usb,$if,$path,@paths,@row,@rows);
|
||||
|
@ -10018,7 +10160,7 @@ sub advanced_data_sys {
|
|||
my ($data1,$data2,$duplex,$mac,$speed,$state);
|
||||
# for usb, we already know where we are
|
||||
if (!$b_usb){
|
||||
if (!$b_arm || $b_pci_tool ){
|
||||
if (( !$b_arm && !$b_ppc) || $b_pci_tool ){
|
||||
$path = "$_/device/vendor";
|
||||
$data1 = (main::reader($path))[0] if -e $path;
|
||||
$data1 =~ s/^0x// if $data1;
|
||||
|
@ -10028,7 +10170,7 @@ sub advanced_data_sys {
|
|||
# this is a fix for a redhat bug in virtio
|
||||
$data2 = (defined $data2 && $data2 eq '0001' && defined $chip && $chip eq '1000') ? '1000' : $data2;
|
||||
}
|
||||
elsif ($b_arm) {
|
||||
elsif ($b_arm || $b_ppc) {
|
||||
$path = Cwd::abs_path($_);
|
||||
$path =~ /($chip)/;
|
||||
if ($1){
|
||||
|
@ -10037,8 +10179,10 @@ sub advanced_data_sys {
|
|||
}
|
||||
}
|
||||
}
|
||||
#print "d1:$data1 v:$vendor d2:$data2 c:$chip\n";
|
||||
if ( $b_usb || $b_check || ( $data1 && $data2 && $data1 eq $vendor && $data2 eq $chip )) {
|
||||
# print "d1:$data1 v:$vendor d2:$data2 c:$chip bus_id: $bus_id\n";
|
||||
# print Cwd::abs_path($_), "\n" if $bus_id;
|
||||
if ( $b_usb || $b_check || ( $data1 && $data2 && $data1 eq $vendor && $data2 eq $chip &&
|
||||
( ($b_arm || $b_mips || $b_ppc || $b_sparc) || $bus_id && Cwd::abs_path($_) =~ /$bus_id\// ) )) {
|
||||
$if = $_;
|
||||
$if =~ s/^\/.+\///;
|
||||
# print "top: if: $if ifs: @ifs_found\n";
|
||||
|
@ -15254,10 +15398,11 @@ sub get_env_de_data {
|
|||
# note, X-Cinnamon value strikes me as highly likely to change, so just
|
||||
# search for the last part
|
||||
[0,'cinnamon','cinnamon','cinnamon',0,0],
|
||||
# these two so far have no cli version data
|
||||
# these so far have no cli version data
|
||||
[1,'deepin','deepin','dde-desktop',0,1], # version comes from file read
|
||||
[1,'pantheon','pantheon','pantheon',0,0],
|
||||
[1,'lumina','lumina','lumina-desktop',0,1],
|
||||
[1,'deepin','deepin','dde-desktop',0,1],
|
||||
[0,'manokwari','manokwari','manokwari',1,0],
|
||||
);
|
||||
foreach my $ref (@desktops){
|
||||
my @item = @$ref;
|
||||
|
@ -15287,25 +15432,28 @@ sub get_env_xprop_de_data {
|
|||
# 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 'muffinr' but that's not part of cinnom
|
||||
# NOTE: was checking for 'muffin' but that's not part of cinnamon
|
||||
if ( (main::check_program('muffin') || main::check_program('cinnamon-session') ) &&
|
||||
($b_xprop && main::awk(\@xprop,'_muffin') )){
|
||||
@data = main::program_values('cinnamon');
|
||||
$desktop[0] = $data[3];
|
||||
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
@data = main::program_data('cinnamon','cinnamon',0);
|
||||
$desktop[0] = $data[0];
|
||||
$desktop[1] = $data[1];
|
||||
# $b_gtk = 1;
|
||||
$desktop[0] ||= 'Cinnamon';
|
||||
}
|
||||
elsif ($xdg_desktop eq 'mate' || ( $b_xprop && main::awk(\@xprop,'_marco') )){
|
||||
# NOTE: mate-about reported wrong version, 1.18.0 when actual was 1.18.2
|
||||
if ($program = main::check_program('mate-session') ) {
|
||||
$value = 'mate-session';
|
||||
}
|
||||
if ($value){
|
||||
@data = main::program_values($value);
|
||||
$desktop[0] = $data[3];
|
||||
$desktop[1] = main::program_version($program,$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
# 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' => '');
|
||||
foreach my $key (keys %versions){
|
||||
if ($program = main::check_program($key) ) {
|
||||
@data = main::program_data($key,$program,0);
|
||||
$desktop[0] = $data[0];
|
||||
$versions{$key} = $data[1];
|
||||
}
|
||||
}
|
||||
# no consistent rule about which version is higher, so just compare them and take highest
|
||||
$desktop[1] = main::compare_versions($versions{'mate-about'},$versions{'mate-session'});
|
||||
# $b_gtk = 1;
|
||||
$desktop[0] ||= 'MATE';
|
||||
}
|
||||
|
@ -15410,11 +15558,9 @@ sub get_xprop_de_data {
|
|||
my @item = @$ref;
|
||||
if (main::check_program($item[0]) && main::awk(\@xprop,$item[1]) &&
|
||||
(!$item[4] || (@ps_gui && (grep {/$item[4]/} @ps_gui ))) ){
|
||||
@data = main::program_values($item[2]);
|
||||
$desktop[0] = $data[3];
|
||||
if ($data[1] && $data[2]){
|
||||
$desktop[1] = main::program_version($item[3],$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
}
|
||||
@data = main::program_data($item[2],$item[3],0);
|
||||
$desktop[0] = $data[0];
|
||||
$desktop[1] = $data[1];
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
@ -15448,11 +15594,17 @@ sub get_ps_de_data {
|
|||
['wmii','wmii','wmii','wmii'],
|
||||
['9wm','9wm','9wm','9wm'],
|
||||
['amiwm','amiwm','amiwm','amiwm'],
|
||||
['fireplace','fireplace','fireplace','fireplace'],
|
||||
['flwm','flwm','flwm','flwm'],
|
||||
['flwm','flwm_topside','flwm','flwm'],
|
||||
['ion','ion','ion','ion'],
|
||||
['jwm','jwm','jwm','jwm'],
|
||||
['lwm','lwm','lwm','lwm'],
|
||||
['mwm','mwm','mwm','mwm'],
|
||||
['nawm','nawm','nawm','nawm'],
|
||||
['notion','notion','notion','notion'],
|
||||
['orbital','orbital','orbital','orbital'],
|
||||
['perceptia','perceptia','perceptia','perceptia'],
|
||||
['qtile','qtile','qtile','qtile'],
|
||||
['ratpoison','ratpoison','ratpoison','ratpoison'],
|
||||
['sawfish','sawfish','sawfish','sawfish'],
|
||||
|
@ -15460,8 +15612,10 @@ sub get_ps_de_data {
|
|||
'matchbox-window-manager','matchbox-window-manager'],
|
||||
['afterstep','afterstep','afterstep','afterstep'],
|
||||
['bspwm','bspwm','bspwm','bspwm'],
|
||||
['tvtwm','tvtwm','tvtwm','tvtwm'],
|
||||
['WindowMaker','WindowMaker','wmaker','wmaker'],
|
||||
['windowlab','windowlab','windowlab','windowlab'],
|
||||
['wmx','wmx','wmx','wmx'],
|
||||
['xmonad','xmonad','xmonad','xmonad'],
|
||||
);
|
||||
foreach my $ref (@desktops){
|
||||
|
@ -15469,11 +15623,9 @@ sub get_ps_de_data {
|
|||
# no need to use check program with short list of ps_gui
|
||||
# if ( main::check_program($item[0]) && (grep {/^$item[1]$/} @ps_gui)){
|
||||
if (grep {/^$item[1]$/} @ps_gui){
|
||||
@data = main::program_values($item[2]);
|
||||
$desktop[0] = $data[3];
|
||||
if ($data[1] && $data[2]){
|
||||
$desktop[1] = main::program_version($item[3],$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
}
|
||||
@data = main::program_data($item[2],$item[3],0);
|
||||
$desktop[0] = $data[0];
|
||||
$desktop[1] = $data[1];
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
@ -15549,11 +15701,11 @@ sub get_wm_main {
|
|||
main::set_ps_gui() if ! $b_ps_gui;
|
||||
# order matters, see above logic
|
||||
$wms = '9wm|afterstep|amiwm|awesome|bspwm|budgie-wm|compiz|fluxbox|blackbox|';
|
||||
$wms .= 'deepin-wm|dwm|flwm|fvwm-crystal|fvwm2|fvwm|gala|gnome-shell|i3|jwm|';
|
||||
$wms .= 'twin|kwin_wayland|kwin_x11|kwin|matchbox-window-manager|marco|';
|
||||
$wms .= 'deepin-wm|dwm|fireplace|flwm|fvwm-crystal|fvwm2|fvwm|gala|gnome-shell|i3|ion|jwm|';
|
||||
$wms .= 'twin|kwin_wayland|kwin_x11|kwin|lwm|matchbox-window-manager|marco|';
|
||||
$wms .= 'muffin|deepin-mutter|mutter|deepin-metacity|metacity|mwm|';
|
||||
$wms .= 'notion|openbox|qtile|ratpoison|sawfish|scrotwm|spectrwm|';
|
||||
$wms .= 'twm|windowlab|WindowMaker|wm2|wmii2|wmii|xfwm4|xfwm5|xmonad';
|
||||
$wms .= 'nawm|notion|openbox|orbital|perceptia|qtile|ratpoison|sawfish|scrotwm|spectrwm|';
|
||||
$wms .= 'tvtwm|twm|windowlab|WindowMaker|wm2|wmii2|wmii|wmx|xfwm4|xfwm5|xmonad';
|
||||
foreach (@ps_gui){
|
||||
if (/^($wms)$/){
|
||||
$working = $1;
|
||||
|
@ -15598,15 +15750,11 @@ sub get_wm_version {
|
|||
$temp = (split /\s+/, $temp)[0];
|
||||
$temp = lc($temp);
|
||||
$temp = 'wmaker' if $temp eq 'windowmaker';
|
||||
my @data = main::program_values($temp);
|
||||
return if !@data;
|
||||
my @data = main::program_data($temp,$temp,3);
|
||||
return if !$data[0];
|
||||
# print Data::Dumper::Dumper \@data;
|
||||
$desktop[5] = $data[3] if $type eq 'manual';
|
||||
# note: if values returns 0 for 1 and 2, it doesn't support versioning
|
||||
if ($extra > 2 && $data[1] && $data[2]){
|
||||
my $version = main::program_version($temp,$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
$desktop[6] = $version if $version;
|
||||
}
|
||||
$desktop[5] = $data[0] if $type eq 'manual';
|
||||
$desktop[6] = $data[1] if $data[1];
|
||||
}
|
||||
eval $end if $b_log;
|
||||
}
|
||||
|
@ -15616,12 +15764,13 @@ sub get_wm_version {
|
|||
sub set_info_data {
|
||||
eval $start if $b_log;
|
||||
my (@data,@info,$item);
|
||||
my $pattern = 'awn|bar|bmpanel|bmpanel2|budgie-panel|cairo-dock|';
|
||||
$pattern .= 'dde-dock|dmenu|dockbarx|docky|dzen|dzen2|';
|
||||
$pattern .= 'fbpanel|fspanel|gnome-panel|hpanel|i3bar|icewmtray|kicker|';
|
||||
$pattern .= 'lemonbar|ltpanel|lxpanel|lxqt-panel|matchbox-panel|';
|
||||
$pattern .= 'mate-panel|plank|plasma-desktop|plasma-netbook|polybar|pypanel|';
|
||||
$pattern .= 'razor-panel|razorqt-panel|tint2|';
|
||||
my $pattern = 'alltray|awn|bar|bmpanel|bmpanel2|budgie-panel|cairo-dock|';
|
||||
$pattern .= 'dde-dock|dmenu|dockbarx|docker|docky|dzen|dzen2|';
|
||||
$pattern .= 'fbpanel|fspanel|glx-dock|gnome-panel|hpanel|i3bar|icewmtray|';
|
||||
$pattern .= 'kdocker|kicker|';
|
||||
$pattern .= 'latte|lemonbar|ltpanel|lxpanel|lxqt-panel|matchbox-panel|mate-panel|';
|
||||
$pattern .= 'ourico|perlpanel|plank|plasma-desktop|plasma-netbook|polybar|pypanel|';
|
||||
$pattern .= 'razor-panel|razorqt-panel|stalonetray|taskbar|tint2|trayer|';
|
||||
$pattern .= 'vala-panel|wbar|wharf|wingpanel|witray|';
|
||||
$pattern .= 'xfce4-panel|xfce5-panel|xmobar|yabar';
|
||||
if (@data = grep {/^($pattern)$/} @ps_gui ) {
|
||||
|
@ -15634,7 +15783,10 @@ sub set_info_data {
|
|||
}
|
||||
}
|
||||
}
|
||||
$desktop[4] = join (', ', @info) if @info;
|
||||
if (@info){
|
||||
@info = main::uniq(@info);
|
||||
$desktop[4] = join (', ', @info);
|
||||
}
|
||||
eval $end if $b_log;
|
||||
}
|
||||
|
||||
|
@ -15662,13 +15814,13 @@ sub set_xprop {
|
|||
|
||||
sub get_display_manager {
|
||||
eval $start if $b_log;
|
||||
my (@data,@found,$temp,$working,$b_run,$b_vrun,$b_vrunrc);
|
||||
my (@data,@found,$path,$working,$b_run,$b_vrun,$b_vrunrc);
|
||||
# ldm - LTSP display manager. Note that sddm does not appear to have a .pid
|
||||
# extension in Arch note: to avoid positives with directories, test for -f
|
||||
# explicitly, not -e
|
||||
my @dms = qw(entranced.pid gdm.pid gdm3.pid kdm.pid ldm.pid
|
||||
lightdm.pid lxdm.pid mdm.pid nodm.pid pcdm.pid sddm.pid slim.lock
|
||||
tint2.pid wdm.pid xdm.pid xenodm.pid);
|
||||
lightdm.pid lxdm.pid mdm.pid nodm.pid pcdm.pid sddm.pid slim.lock
|
||||
wdm.pid xdm.pid xenodm.pid);
|
||||
# these are the only one I know of so far that have version info
|
||||
my @dms_version = qw(gdm gdm3 lightdm slim);
|
||||
$b_run = 1 if -d "/run";
|
||||
|
@ -15691,11 +15843,12 @@ sub get_display_manager {
|
|||
( $b_vrun && ( -f "/var/run/$id" || -d "/var/run/$working" ) ) ||
|
||||
( $b_vrunrc && ( -f "/var/run/rc.d/$working" || -d "/var/run/rc.d/$id" ) ) ) &&
|
||||
! grep {/$working/} @found ){
|
||||
if ($extra > 2 && awk( \@dms_version, $working) && (my $path = main::check_program($working)) ){
|
||||
@data = main::program_values($working);
|
||||
$temp = main::program_version($path,$data[0],$data[1],$data[2],$data[5],$data[6]);
|
||||
$working .= ' ' . $temp if $temp;
|
||||
}
|
||||
if ($extra > 2 && awk( \@dms_version, $working) && ($path = main::check_program($working)) ){}
|
||||
else {$path = $working;}
|
||||
# print "$path $extra\n";
|
||||
@data = main::program_data($working,$path,3);
|
||||
$working = $data[0];
|
||||
$working .= ' ' . $data[1] if $data[1];
|
||||
push @found, $working;
|
||||
}
|
||||
}
|
||||
|
@ -15939,7 +16092,7 @@ sub get_linux_distro {
|
|||
if ($extra > 0){
|
||||
my $base_default = 'antix-version|mx-version'; # osr has base ids
|
||||
my $base_issue = 'bunsen'; # base only found in issue
|
||||
my $base_manual = 'kali'; # synthesize, no direct data available
|
||||
my $base_manual = 'blankon|deepin|kali'; # synthesize, no direct data available
|
||||
my $base_osr = 'aptosid|grml|siduction|bodhi'; # osr base, distro id in list of distro files
|
||||
my $base_osr_issue = 'grml|linux lite'; # osr base, distro id in issue
|
||||
my $base_osr_ubuntu = 'mint|neon|zorin'; # osr has distro name but has ubuntu ID_LIKE/UBUNTU_CODENAME
|
||||
|
@ -15985,6 +16138,8 @@ sub get_linux_distro {
|
|||
if (!$system_base && $lc_issue && $lc_issue =~ /($base_manual)/){
|
||||
my $id = $1;
|
||||
my %manual = (
|
||||
'blankon' => 'Debian unstable',
|
||||
'deepin' => 'Debian unstable',
|
||||
'kali' => 'Debian testing',
|
||||
);
|
||||
$system_base = $manual{$id};
|
||||
|
@ -17129,7 +17284,7 @@ sub set_pci_data {
|
|||
# ! -d '/proc/bus/pci'
|
||||
# this is sketchy, a sbc won't have pci, but a non sbc arm may have it, so
|
||||
# build up both and see what happens
|
||||
if ($b_arm || $b_mips){
|
||||
if ($b_arm || $b_mips || $b_ppc || $b_sparc){
|
||||
set_soc_data();
|
||||
}
|
||||
}
|
||||
|
@ -17346,6 +17501,8 @@ sub set_pciconf_data {
|
|||
# /sys/devices/wlan.26/uevent [from pine64]
|
||||
## 9
|
||||
# sys/devices/platform/audio/uevent:["DRIVER=bcm2835_AUD0", "OF_NAME=audio"
|
||||
## 10
|
||||
# /sys/devices/vio/71000002/uevent:["DRIVER=ibmveth", "OF_NAME=l-lan"
|
||||
sub set_soc_data {
|
||||
eval $start if $b_log;
|
||||
my ($content,@files,@temp2,@temp3,@working);
|
||||
|
@ -17364,9 +17521,12 @@ sub set_soc_data {
|
|||
}
|
||||
@temp2 = globber('/sys/devices/*/uevent'); # see case 8
|
||||
@files = (@files,@temp2) if @temp2;
|
||||
@temp2 = globber('/sys/devices/*/*/uevent'); # see case 10
|
||||
@files = (@files,@temp2) if @temp2;
|
||||
@temp2 = undef;
|
||||
# not sure why, but even as root/sudo, /subsystem|driver/uevent are unreadable with -r test true
|
||||
@files = grep {!/\/(subsystem|driver)\//} @files if @files;
|
||||
@files = uniq(@files);
|
||||
foreach my $file (@files){
|
||||
next if -z $file;
|
||||
my ($busid,$busid_nu,$chip_id,$device,$driver,$modules,$port,$rev,
|
||||
|
@ -17374,9 +17534,10 @@ sub set_soc_data {
|
|||
$chip_id = $file;
|
||||
# variants: /soc/20100000.ethernet /soc/soc:audio /soc:/ /soc@0/
|
||||
# mips: /sys/devices/soc.0/1180000001800.mdio/8001180000001800:07/
|
||||
$chip_id =~ /\/sys\/devices\/(platform\/)?(soc[^\/]*\/)?([^\/]+\/)?([^\/]+\/)?([^\/]+)[\.:]([^\/]+)\/uevent$/;
|
||||
# ppc: /sys/devices/vio/71000002/
|
||||
$chip_id =~ /\/sys\/devices\/(platform\/)?(soc[^\/]*\/)?([^\/]+\/)?([^\/]+\/)?([^\/\.:]+)([\.:])?([^\/]+)?\/uevent$/;
|
||||
$chip_id = $5;
|
||||
$temp = $6;
|
||||
$temp = $7;
|
||||
@working = reader($file, 'strip') if -r $file;
|
||||
foreach my $data (@working){
|
||||
@temp2 = split /=/, $data;
|
||||
|
@ -17395,6 +17556,8 @@ sub set_soc_data {
|
|||
}
|
||||
# it's worthless, we can't use it
|
||||
next if ! defined $type;
|
||||
$chip_id = '' if ! defined $chip_id;
|
||||
$vendor_id = '' if ! defined $vendor_id;
|
||||
$driver = '' if ! defined $driver;
|
||||
$busid = (defined $temp && is_int($temp)) ? $temp: 0;
|
||||
$busid_nu = 0;
|
||||
|
@ -17405,7 +17568,7 @@ sub set_soc_data {
|
|||
# note: use these for main Card match for -AGN
|
||||
$b_soc_audio = 1 if $type =~ /^(audio|daudio|hdmi|hdmi-audio|multimedia)$/;
|
||||
$b_soc_gfx = 1 if $type =~ /^(vga|disp|display|display-port-controller|3d|fb|gpu|hdmi|mali)$/;
|
||||
$b_soc_net = 1 if $type =~ /^(eth|ethernet|ethernet-phy|network|wifi|wlan)$/;
|
||||
$b_soc_net = 1 if $type =~ /^(eth|ethernet|ethernet-phy|lan|l-lan|network|wifi|wlan)$/;
|
||||
@temp3 = ($type,$type_id,$busid,$busid_nu,$device,$vendor_id,$chip_id,$rev,$port,$driver,$modules);
|
||||
@pci = (@pci,[@temp3]);
|
||||
}
|
||||
|
@ -17454,10 +17617,10 @@ sub set_ps_gui {
|
|||
tdelauncher tdeinit_phase1);
|
||||
@match = (@match,@temp);
|
||||
@temp=qw(3dwm 9wm afterstep amiwm awesome blackbox bspwm
|
||||
dwm fluxbox flwm flwm_topside fvwm.*-crystal fvwm2 fvwm i3 jwm
|
||||
matchbox-window-manager mwm openbox notion pekwm qtile ratpoison
|
||||
sawfish scrotwm spectrwm twm
|
||||
windowlab WindowMaker wm2 wmii2 wmii xmonad);
|
||||
dwm fluxbox flwm flwm_topside fvwm.*-crystal fvwm2 fvwm i3 ion jwm lwm
|
||||
matchbox-window-manager mwm nawm openbox notion orbital pekwm perceptia
|
||||
qtile ratpoison sawfish scrotwm spectrwm tvtwm twm
|
||||
windowlab WindowMaker wm2 wmii2 wmii wmx xmonad);
|
||||
@match = (@match,@temp);
|
||||
}
|
||||
# wm:
|
||||
|
@ -17468,23 +17631,25 @@ sub set_ps_gui {
|
|||
xfwm4 xfwm5);
|
||||
@match = (@match,@temp);
|
||||
}
|
||||
# info:
|
||||
# info: NOTE: glx-dock is cairo-dock
|
||||
if ($show{'system'} && $extra > 2){
|
||||
@temp=qw(awn bar bmpanel bmpanel2 budgie-panel cairo-dock
|
||||
dde-dock dmenu dockbarx docky dzen dzen2
|
||||
fbpanel fspanel gnome-panel hpanel
|
||||
i3bar icewmtray kicker lemonbar ltpanel lxpanel lxqt-panel
|
||||
matchbox-panel mate-panel
|
||||
@temp=qw(alltray awn bar bmpanel bmpanel2 budgie-panel
|
||||
cairo-dock dde-dock dmenu dockbarx docker docky dzen dzen2
|
||||
fbpanel fspanel glx-dock gnome-panel hpanel i3bar icewmtray
|
||||
kdocker kicker latte lemonbar ltpanel lxpanel lxqt-panel
|
||||
matchbox-panel mate-panel ourico
|
||||
perlpanel plank plasma-desktop plasma-netbook polybar pypanel
|
||||
razor-panel razorqt-panel tint2 vala-panel wbar wharf wingpanel witray
|
||||
xfce4-panel xfce5-panel xmobar yabar);
|
||||
razor-panel razorqt-panel stalonetray taskbar tint2 trayer vala-panel
|
||||
wbar wharf wingpanel witray xfce4-panel xfce5-panel xmobar yabar);
|
||||
@match = (@match,@temp);
|
||||
}
|
||||
# compositors (for wayland these are also the server, note
|
||||
if ($show{'graphic'} && $extra > 1){
|
||||
@temp=qw(budgie-wm compiz compton dwc dcompmgr enlightenment
|
||||
grefson ireplace kmscon kwin_wayland kwin_x11 metisse mir moblin
|
||||
rustland sway swc unagi wayhouse westford weston xcompmgr);
|
||||
@temp=qw(3dwm asc budgie-wm compiz compton deepin-wm dwc dcompmgr
|
||||
enlightenment fireplace gnome-shell grefson kmscon kwin_wayland kwin_x11
|
||||
liri marco metisse mir moblin motorcar muffin mutter
|
||||
orbital papyros perceptia rustland sommelier sway swc unagi
|
||||
wavy way-cooler wayhouse westford weston xcompmgr);
|
||||
@match = (@match,@temp);
|
||||
}
|
||||
@match = uniq(@match);
|
||||
|
@ -18421,7 +18586,7 @@ sub generate_system_data {
|
|||
}
|
||||
# don't print the desktop if it's a wm and the same
|
||||
if ($extra > 1 && $desktop_data[5] &&
|
||||
(!$desktop_data[0] || $desktop_data[5] =~ /^(deepin-.*|gnome[\s\-_]shell|budgie-.*)$/i ||
|
||||
(!$desktop_data[0] || $desktop_data[5] =~ /^(deepin.+|gnome[\s\-_]shell|budgie.+)$/i ||
|
||||
index(lc($desktop_data[5]),lc($desktop_data[0])) == -1 )){
|
||||
$wm = $desktop_data[5];
|
||||
$wm .= ' ' . $desktop_data[6] if $extra > 2 && $desktop_data[6];
|
||||
|
|
9
inxi.1
9
inxi.1
|
@ -1,4 +1,4 @@
|
|||
.TH INXI 1 "2018\-08\-17" inxi "inxi manual"
|
||||
.TH INXI 1 "2018\-08\-28" inxi "inxi manual"
|
||||
.SH NAME
|
||||
inxi \- Command line system information script for console and IRC
|
||||
.SH SYNOPSIS
|
||||
|
@ -752,6 +752,7 @@ no data will show.
|
|||
.B \-xxx \-G\fR
|
||||
\- Adds (if available and/or relevant) \fBvendor:\fR item, which shows
|
||||
specific vendor [product] information.
|
||||
\- Adds (if available) \fBcompositor:\fR version \fBv:\fR.
|
||||
.TP
|
||||
.B \-xxx \-I\fR
|
||||
\- For \fBShell:\fR adds \fB(su|sudo|login)\fR to shell name if present.
|
||||
|
@ -784,9 +785,9 @@ data available.
|
|||
\fBvendor:\fR item, which shows specific vendor [product] information.
|
||||
.TP
|
||||
.B \-xxx \-S\fR
|
||||
\- Adds, if run in X and present, bar/panel type (\fBinfo\fR).
|
||||
If none, shows nothing. Supports some current desktop extras like gnome\-panel,
|
||||
lxpanel, xfce4\-panel, lxqt\-panel, and others.
|
||||
\- Adds, if in X, or with \fB--display\fR, bar/dock/panel/tray items
|
||||
(\fBinfo\fR). If none found, shows nothing. Supports desktop items like gnome\-panel,
|
||||
lxpanel, xfce4\-panel, lxqt\-panel, tint2, cairo-dock, trayer, and many others.
|
||||
|
||||
\- Adds (if present), window manager (\fBwm\fR) version number.
|
||||
|
||||
|
|
|
@ -1,3 +1,57 @@
|
|||
=====================================================================================
|
||||
Version: 3.0.22
|
||||
Patch Version: 00
|
||||
Script Date: 2018-08-28
|
||||
-----------------------------------
|
||||
Changes:
|
||||
-----------------------------------
|
||||
|
||||
New version, man page. Bug fixes, enhancements.
|
||||
|
||||
Bugs:
|
||||
1. A long standing bug was finally identified and fixed. -n/-i would fail to match
|
||||
a Device to the right IF in cases where they had the same chip / vendor IDs. Added
|
||||
busID for non Soc type devices to fix that. I hope. This fix has been tested on a
|
||||
machine that had this bug, and it is now corrected. Thanks skynet for the dataset.
|
||||
2. deepin-wm was failing to get listed correctly with new fixes, this is corrected.
|
||||
|
||||
Fixes:
|
||||
1. mate version was depending on two tools, mate-about and mate-session, which
|
||||
somewhat randomly vary in which has the actual highest version number. Fix was to
|
||||
run both in MATE for version, and run those through a new version compare tool.
|
||||
Thanks mint/gm10 for reporting that bug.
|
||||
2. -Gxx compositors: added some missing ones that were being checked for in-
|
||||
correctly.
|
||||
3. For distro id, fixed a glitch in the parser for files, now correctly removes
|
||||
empty () with or without spaces in it.
|
||||
4. Got rid of ' SOC?' part of no data for ram or slots, that also triggers in non
|
||||
SOC cases, so best to not guess if I can't get it right.
|
||||
|
||||
Enhancements:
|
||||
1. More disk vendor ID matches, also, somehow missed QEMU as vendor, thanks to
|
||||
linux hardware database (linuxlite) for great samples of vendor/product strings.
|
||||
2. Added a bunch of compositors, found a new source that listed a lot inxi did not
|
||||
have already.
|
||||
3. Added version v: for some compositors in -Gxxx.
|
||||
4. New program_data() tool provides an easier to use simple program version/print
|
||||
name generator, including extra level tests, to get rid of some code that repeats.
|
||||
5. Found some useful QEMU virtual machines for ARM, MIPS, PPC, and SPARC, so
|
||||
made initial debugging for each type, so basic working error free support is well
|
||||
on its way for all 4 architectures, which was unexpected. More fine tunings to
|
||||
all of them to avoid bugs, and to catch more devices, as well.
|
||||
Note that QEMU images are hard to make, and they were not complete in terms of
|
||||
what you would see on physical hardware, so I don't know what features will work
|
||||
or not work, there may be further variants in audio/network/graphics IDs that
|
||||
remain unhandled, new datasets always welcome for such platforms!
|
||||
6. Found yet another desktop! Added Manokwari support, which is at this point
|
||||
a reworking of gnome, but it was identifiable, minus a version number.
|
||||
7. Added deepin and blankon to system base supported list, these hide their debian
|
||||
roots, so I had to use the manual method to provide system base.
|
||||
|
||||
|
||||
-----------------------------------
|
||||
-- Harald Hope - Tue, 28 Aug 2018 15:08:16 -0700
|
||||
|
||||
=====================================================================================
|
||||
Version: 3.0.21
|
||||
Patch Version: 00
|
||||
|
|
Loading…
Reference in a new issue