New version, new man. Small new enhancements.

1. Added to -s for ipmi, with -x: voltage 12v,5v,3.3v,vbat; for -xx, dimm/soc p1/p2
voltages
2. enhanced wm: feature, needed more filters and protection against redundant data
3. basic apple osx fixes to keep it from crashing, but I'm not spending any more
time on apple junk unless someone pays me for my time, I can't stand the product or
company, it's the total antitheses of freedom or free software, or even openness.
4. openbsd/bsd fixes: openbsd was failing to get cpu flags due to a small oversight
5. -C now shows bits: for the true bits of cpu, not the kernel bits. This is not
a reliable measurement but should be right about 95+ percent of the time, and
basically all of the time for GNU/Linux on Intel/AMD, most of the time for ARM.
When it doesn't know it does not guess, and shows N/A.
6. bsd fix for usb, was running numeric action on string value
7. fixed stderr tool for program_version, now it's hard-coded in program_values
which removes an unneded regex search for every program version test.
8. Mate detection, switched to using mate-sesssion instead of mate-about, the
latter is not getting updated and has the wrong version number on it.
This commit is contained in:
Harald Hope 2018-04-17 13:28:16 -07:00
parent be157ae62f
commit 824dab4b77
3 changed files with 301 additions and 178 deletions

436
inxi
View file

@ -31,8 +31,8 @@ use POSIX qw(uname strftime ttyname);
## INXI INFO ##
my $self_name='inxi';
my $self_version='3.0.04';
my $self_date='2018-04-14';
my $self_version='3.0.05';
my $self_date='2018-04-17';
my $self_patch='00';
## END INXI INFO ##
@ -56,8 +56,8 @@ my ( %alerts, %client, %colors, %dl, %files, %rows, %system_files, %use );
## Arrays
# ps_aux is full output, ps_cmd is only the last 10 to last
my (@app,@dmesg_boot,@dmi,@gpudata,@ifs,@ifs_bsd,@pci,@ps_aux,@ps_cmd,
@sysctl,@sysctl_battery,@sysctl_sensors,@sysctl_machine,@usb);
my (@app,@dmesg_boot,@dmi,@gpudata,@ifs,@ifs_bsd,@paths,@pci,@ps_aux,@ps_cmd,
@sysctl,@sysctl_battery,@sysctl_sensors,@sysctl_machine,@uname,@usb);
## Disk arrays
my (@dm_boot_disk,@dm_boot_optical,@glabel,@gpart,@labels,@lsblk,@partitions,
@raid,@sysctl_disks,@uuids);
@ -75,8 +75,8 @@ my ($b_sysctl_disk,$b_update,$b_weather) = (1,1,1);
## System
my ($bsd_type,$language,$os) = ('','','');
my ($cpu_sleep,$dl_timeout,$limit,$ps_count,$usb_level) = (0.35,4,10,5,0);
my @paths = qw(/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /usr/X11R6/bin);
my $sensors_cpu_nu = 0;
my ($bits_sys);
## Tools
my ($display,$ftp_alt,$tty_session);
@ -355,9 +355,16 @@ sub set_display_width {
}
# NOTE: most tests internally are against !$bsd_type
sub set_os {
my @uname = uname();
@uname = uname();
$os = lc($uname[0]);
$b_arm = 1 if $uname[-1] =~ /arm|aarch/i;
my $type = lc($uname[-1]);
$b_arm = 1 if $type =~ /arm|aarch/;
if ($type =~ /(armv[1-7]|aarch32|sparc_v9)/){
$bits_sys = 32;
}
elsif ($type =~ /(alpha|64)/){
$bits_sys = 64;
}
if ( $os =~ /(bsd|dragonfly|darwin)/ ){
if ( $os =~ /openbsd/ ){
$os = 'openbsd';
@ -379,6 +386,7 @@ sub set_os {
sub set_path {
# Extra path variable to make execute failures less likely, merged below
my (@path);
@paths = qw(/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin /usr/X11R6/bin);
@path = split /:/, $ENV{'PATH'} if $ENV{'PATH'};
# print "paths: @paths\nPATH: $ENV{'PATH'}\n";
# Create a difference of $PATH and $extra_paths and add that to $PATH:
@ -2876,95 +2884,97 @@ sub joiner {
# returns array of:
# 0 - match string; 1 - search number; 2 - version string; 3 - Print name
# 4 - console 0/1; 5 - 0/1 exit version loop at first iteration
# 4 - console 0/1; 5 - 0/1 exit version loop at first iteration;
# 6 - 0/1 write to stderr
# arg: 1 - program lower case name
sub program_values {
my ($app) = @_;
my (@client_data);
my %data = (
## Clients
'bitchx' => ['bitchx',2,'','BitchX',1,0],# special
'finch' => ['finch',2,'-v','Finch',1,1],
'gaim' => ['[0-9.]+',2,'-v','Gaim',0,1],
'ircii' => ['[0-9.]+',3,'-v','ircII',1,1],
'irssi' => ['irssi',2,'-v','Irssi',1,1],
'irssi-text' => ['irssi',2,'-v','Irssi',1,1],
'konversation' => ['konversation',2,'-v','Konversation',0,0],
'kopete' => ['Kopete',2,'-v','Kopete',0,0],
'kvirc' => ['[0-9.]+',2,'-v','KVIrc',0,0], # special
'pidgin' => ['[0-9.]+',2,'-v','Pidgin',0,1],
'quassel' => ['',1,'-v','Quassel [M]',0,0], # special
'quasselclient' => ['',1,'-v','Quassel',0,0],# special
'quasselcore' => ['',1,'-v','Quassel (core)',0,0],# special
'gribble' => ['^Supybot',2,'--version','Gribble',1,0],# special
'limnoria' => ['^Supybot',2,'--version','Limnoria',1,0],# special
'supybot' => ['^Supybot',2,'--version','Supybot',1,0],# special
'weechat' => ['[0-9.]+',1,'-v','WeeChat',1,0],
'weechat-curses' => ['[0-9.]+',1,'-v','WeeChat',1,0],
'xchat-gnome' => ['[0-9.]+',2,'-v','X-Chat-Gnome',1,1],
'xchat' => ['[0-9.]+',2,'-v','X-Chat',1,1],
'bitchx' => ['bitchx',2,'','BitchX',1,0,0],# special
'finch' => ['finch',2,'-v','Finch',1,1,0],
'gaim' => ['[0-9.]+',2,'-v','Gaim',0,1,0],
'ircii' => ['[0-9.]+',3,'-v','ircII',1,1,0],
'irssi' => ['irssi',2,'-v','Irssi',1,1,0],
'irssi-text' => ['irssi',2,'-v','Irssi',1,1,0],
'konversation' => ['konversation',2,'-v','Konversation',0,0,0],
'kopete' => ['Kopete',2,'-v','Kopete',0,0,0],
'kvirc' => ['[0-9.]+',2,'-v','KVIrc',0,0,1], # special
'pidgin' => ['[0-9.]+',2,'-v','Pidgin',0,1,0],
'quassel' => ['',1,'-v','Quassel [M]',0,0,0], # special
'quasselclient' => ['',1,'-v','Quassel',0,0,0],# special
'quasselcore' => ['',1,'-v','Quassel (core)',0,0,0],# special
'gribble' => ['^Supybot',2,'--version','Gribble',1,0,0],# special
'limnoria' => ['^Supybot',2,'--version','Limnoria',1,0,0],# special
'supybot' => ['^Supybot',2,'--version','Supybot',1,0,0],# special
'weechat' => ['[0-9.]+',1,'-v','WeeChat',1,0,0],
'weechat-curses' => ['[0-9.]+',1,'-v','WeeChat',1,0,0],
'xchat-gnome' => ['[0-9.]+',2,'-v','X-Chat-Gnome',1,1,0],
'xchat' => ['[0-9.]+',2,'-v','X-Chat',1,1,0],
## Desktops
'afterstep' => ['^afterstep',3,'--version','AfterStep',0,1],
'awesome' => ['^awesome',2,'--version','Awesome',0,1],
'blackbox' => ['^Blackbox',2,'--version','Blackbox',0,1],
'budgie' => ['^budgie-desktop',2,'--version','Budgie',0,1],
'cinnamon' => ['^cinnamon',2,'--version','Cinnamon',0,1],
'dwm' => ['^dwm',1,'-v','dwm',0,1],
'fluxbox' => ['^fluxbox',2,'--version','Fluxbox',0,1],
'fvwm' => ['^fvwm',2,'--version','FVWM',0,0],
'afterstep' => ['^afterstep',3,'--version','AfterStep',0,1,0],
'awesome' => ['^awesome',2,'--version','Awesome',0,1,0],
'blackbox' => ['^Blackbox',2,'--version','Blackbox',0,1,0],
'budgie' => ['^budgie-desktop',2,'--version','Budgie',0,1,0],
'cinnamon' => ['^cinnamon',2,'--version','Cinnamon',0,1,0],
'dwm' => ['^dwm',1,'-v','dwm',0,1,1],
'fluxbox' => ['^fluxbox',2,'--version','Fluxbox',0,1,0],
'fvwm' => ['^fvwm',2,'--version','FVWM',0,0,1],
# command: fvwm
'fvwm-crystal' => ['^fvwm',2,'--version','FVWM-Crystal',0,0],
'gnome-about' => ['gnome',3,'--version','Gnome',0,1],
'gnome-shell' => ['gnome',3,'--version','Gnome',0,1],
'herbstluftwm' => ['^herbstluftwm',-1,'--version','herbstluftwm',0,1],
'jwm' => ['^jwm',2,'--version','JWM',0,1],
'fvwm-crystal' => ['^fvwm',2,'--version','FVWM-Crystal',0,0,0],
'gnome-about' => ['gnome',3,'--version','Gnome',0,1,0],
'gnome-shell' => ['gnome',3,'--version','Gnome',0,1,0],
'herbstluftwm' => ['^herbstluftwm',-1,'--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],
'icewm' => ['^icewm',2,'--version','IceWM',0,1],
'kded' => ['^KDE Development Platform:',4,'--version','KDE',0,1],
'kded1' => ['^KDE Development Platform:',4,'--version','KDE',0,1],
'kded2' => ['^KDE Development Platform:',4,'--version','KDE',0,1],
'kded3' => ['^KDE Development Platform:',4,'--version','KDE',0,1],
'kded4' => ['^KDE Development Platform:',4,'--version','KDE',0,1],
'i3' => ['^i3',3,'--version','i3',0,1,0],
'icewm' => ['^icewm',2,'--version','IceWM',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],
# command: lxqt-about
'lxqt' => ['^lxqt-about',2,'--version','LXQT',0,1],
'mate-about' => ['^MATE[[:space:]]DESKTOP',-1,'--version','MATE',0,1],
'mate-session' => ['^mate-session',-1,'--version','MATE',0,1],
'openbox' => ['^openboxt',2,'--version','Openbox',0,1],
'pekwm' => ['^pekwm',3,'--version','pekwm',0,1],
'plasmashell' => ['^plasmashell',2,'--version','KDE Plasma',0,1],
'qtdiag' => ['^qt',2,'--version','Qt',0,1],
'sawfish' => ['^sawfish',3,'--version','Sawfish',0,1],
'scrotwm' => ['^welcome.*scrotwm',4,'-v','Scrotwm',0,1],
'spectrwm' => ['^spectrwm.*welcome.*spectrwm',5,'-v','Spectrwm',0,1],
'unity' => ['^unity',2,'--version','Unity',0,1],
'wm2' => ['^wm2',-1,'--version','WM2',0,1],
'wmaker' => ['^Window[[:space:]]*Maker',-1,'--version','WindowMaker',0,1],
'wmii' => ['^wmii',1,'--version','wmii',0,1], # note: in debian, wmii is wmii3
'wmii2' => ['^wmii2',1,'--version','wmii2',0,1],
'xfce4-panel' => ['^xfce4-panel',2,'--version','Xfce',0,1],
'xfce5-panel' => ['^xfce5-panel',2,'--version','Xfce',0,1],
'xfdesktop' => ['xfdesktop[[:space:]]version',5,'--version','Xfce',0,1],
'lxqt' => ['^lxqt-about',2,'--version','LXQT',0,1,0],
'mate-about' => ['^MATE[[:space:]]DESKTOP',-1,'--version','MATE',0,1,0],
# note, mate-session when launched with full path returns full path in version string
'mate-session' => ['mate-session',-1,'--version','MATE',0,1,0],
'openbox' => ['^openboxt',2,'--version','Openbox',0,1,0],
'pekwm' => ['^pekwm',3,'--version','pekwm',0,1,0],
'plasmashell' => ['^plasmashell',2,'--version','KDE Plasma',0,1,0],
'qtdiag' => ['^qt',2,'--version','Qt',0,1,0],
'sawfish' => ['^sawfish',3,'--version','Sawfish',0,1,0],
'scrotwm' => ['^welcome.*scrotwm',4,'-v','Scrotwm',0,1,1],
'spectrwm' => ['^spectrwm.*welcome.*spectrwm',5,'-v','Spectrwm',0,1,0],
'unity' => ['^unity',2,'--version','Unity',0,1,0],
'wm2' => ['^wm2',-1,'--version','WM2',0,1,0],
'wmaker' => ['^Window[[:space:]]*Maker',-1,'--version','WindowMaker',0,1,0],
'wmii' => ['^wmii',1,'--version','wmii',0,1,0], # note: in debian, wmii is wmii3
'wmii2' => ['^wmii2',1,'--version','wmii2',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],
# command: xfdesktop
'xfdesktop-toolkit' => ['Built[[:space:]]with[[:space:]]GTK',4,'--version','Gtk',0,1],
'xfdesktop-toolkit' => ['Built[[:space:]]with[[:space:]]GTK',4,'--version','Gtk',0,1,0],
## Shells
'bash' => ['^GNU[[:space:]]bash,[[:space:]]version',4,'--version','Bash',1,0],
'csh' => ['^tcsh',2,'--version','csh',1,0],
'dash' => ['dash',3,'--version','Dash',1,0], # no version, uses dpkg query, sigh
'bash' => ['^GNU[[:space:]]bash,[[:space:]]version',4,'--version','Bash',1,0,0],
'csh' => ['^tcsh',2,'--version','csh',1,0,0],
'dash' => ['dash',3,'--version','Dash',1,0,0], # no version, uses dpkg query, sigh
# ksh/lksh/mksh/pdksh can't be handled with version but we'll use the search string to
# trigger version return and tests
'ksh' => ['ksh',5,'-v','ksh',1,0],
'lksh' => ['ksh',5,'-v','lksh',1,0],
'loksh' => ['ksh',5,'-v','lksh',1,0],
'mksh' => ['ksh',5,'-v','mksh',1,0],
'pdksh' => ['ksh',5,'-v','pdksh',1,0],
'tcsh' => ['^tcsh',2,'--version','tcsh',1,0],
'zsh' => ['^zsh',2,'--version','zsh',1,0],
'ksh' => ['ksh',5,'-v','ksh',1,0,0],
'lksh' => ['ksh',5,'-v','lksh',1,0,0],
'loksh' => ['ksh',5,'-v','lksh',1,0,0],
'mksh' => ['ksh',5,'-v','mksh',1,0,0],
'pdksh' => ['ksh',5,'-v','pdksh',1,0,0],
'tcsh' => ['^tcsh',2,'--version','tcsh',1,0,0],
'zsh' => ['^zsh',2,'--version','zsh',1,0,0],
## Tools
'clang' => ['clang',3,'--version','Clang',1,0],
'gcc' => ['^gcc',3,'--version','GCC',1,0],
'gcc-apple' => ['Apple[[:space:]]LLVM',2,'--version','LLVM',1,0],
'sudo' => ['^Sudo',3,'--version','Sudo',1,0],
'clang' => ['clang',3,'--version','Clang',1,0,0],
'gcc' => ['^gcc',3,'--version','GCC',1,0,0],
'gcc-apple' => ['Apple[[:space:]]LLVM',2,'--version','LLVM',1,0,0],
'sudo' => ['^Sudo',3,'--version','Sudo',1,0,0],
);
if ( defined $data{$app} ){
my $ref = $data{$app};
@ -2976,19 +2986,17 @@ sub program_values {
}
# args: 1 - desktop/app command for --version; 2 - search string;
# 3 - space print number; 4 - [optional] version arg: -v, version, etc
# 5 - [optional] exit first find 0/1; 6 - [optional] 0/1 stderr output
sub program_version {
eval $start if $b_log;
my ($app, $search, $num,$version,$exit) = @_;
my ($app, $search, $num,$version,$exit,$b_stderr) = @_;
my ($cmd,$line,$output);
my $version_nu = '';
my $count = 0;
$exit ||= 100; # basically don't exit ever
$version ||= '--version';
# adjust to array index, not human readable
$num-- if (defined $num && $num > 0);
# ksh: Version JM 93t+ 2010--03-05
# mksh: @(#)MIRBSD KSH R56 2018/03/09
# loksh: @(#)PD KSH v5.2.14 99/07/13.2
@ -3017,7 +3025,7 @@ sub program_version {
}
}
# note, some wm/apps send version info to stderr instead of stdout
if ( $app =~ /\/(dwm|fvwm|kvirc|scrotwm)$/ ) {
if ( $b_stderr ) {
$cmd = "$app $version 2>&1";
}
# elsif ( $app eq 'csh' ){
@ -3637,7 +3645,7 @@ sub get_options{
$b_arm = 1 },
'bsd:s' => sub {
my ($opt,$arg) = @_;
if ($arg =~ /^dragonfly|freebsd|openbsd|netbsd$/i){
if ($arg =~ /^(darwin|dragonfly|freebsd|openbsd|netbsd)$/i){
$bsd_type = lc($arg);
}
else {
@ -4008,6 +4016,7 @@ sub show_options {
['2', '-R', '', "md-raid: second RAID Info line with extra data:
blocks, chunk size, bitmap (if present). Resync line, shows blocks
synced/total blocks." ],
['2', '-s', '', "Basic voltages (ipmi only): 12v, 5v, 3.3v, vbat." ],
['2', '-S', '', "Desktop toolkit, if available (GNOME/Xfce/KDE only);
Kernel gcc version" ],
['2', '-t', '', "Adds memory use output to CPU (-xt c), and CPU use to
@ -4024,7 +4033,7 @@ sub show_options {
['1', '-xx', '--extra 2', "Show extra, extra data (only works with verbose
or line output, not short form):" ],
['2', '-A', '', "Chip vendor:product ID for each audio device." ],
['2', '-B', '', "Serial number, voltage (if available)." ],
['2', '-B', '', "Serial number, voltage now/minimum (if available)." ],
['2', '-C', '', "Minimum CPU speed, if available." ],
['2', '-D', '', "Disk serial number." ],
['2', '-G', '', "Chip vendor:product ID for each video card; OpenGL
@ -4037,6 +4046,7 @@ sub show_options {
['2', '-N', '', "Chip vendor:product ID for each NIC." ],
['2', '-R', '', "md-raid: Superblock (if present), algorithm. If resync,
shows progress bar." ],
['2', '-s', '', "DIMM/SOC voltages (ipmi only)." ],
['2', '-S', '', "Display manager (dm) in desktop output if in X (e.g. kdm,
gdm3, lightdm)." ],
['2', '--slots', '', "Slot length." ],
@ -4331,7 +4341,7 @@ sub get_client_version {
my (@data,@working,$string);
if (@app){
$string = ($client{'name'} =~ /^gribble|limnoria|supybot$/) ? 'supybot' : $client{'name'};
$client{'version'} = main::program_version($string,$app[0],$app[1],$app[2]);
$client{'version'} = main::program_version($string,$app[0],$app[1],$app[2],$app[4],$app[5],$app[6]);
$client{'name-print'} = $app[3];
$client{'console-irc'} = $app[4];
}
@ -4395,7 +4405,7 @@ sub get_client_version {
# (KSirc sucks anyway ;)
foreach (@cmdline){
if ( $_ =~ /dsirc/ ){
$client{'version'} = main::program_version('ksirc','KSirc:',2,'-v',0);
$client{'version'} = main::program_version('ksirc','KSirc:',2,'-v',0,0);
$client{'name'} = 'ksirc';
$client{'name-print'} = 'KSirc';
}
@ -4446,7 +4456,7 @@ sub perl_python_client {
# main::print_line("konvi: " . scalar grep { $_ =~ /konversation/ } @ps_cmd);
if ( $b_display && main::check_program('konversation') && ( scalar grep { $_ =~ /konversation/ } @ps_cmd ) > 0){
@app = main::program_values('konversation');
$client{'version'} = main::program_version('konversation',$app[0],$app[1],$app[2]);
$client{'version'} = main::program_version('konversation',$app[0],$app[1],$app[2],$app[5],$app[6]);
$client{'name'} = 'konversation';
$client{'name-print'} = $app[3];
$client{'console-irc'} = $app[4];
@ -4457,7 +4467,7 @@ sub perl_python_client {
(main::check_program('supybot') || main::check_program('gribble') || main::check_program('limnoria')) &&
( scalar grep { $_ =~ /supybot/ } @ps_cmd ) > 0 ){
@app = main::program_values('supybot');
$client{'version'} = main::program_version('supybot',$app[0],$app[1],$app[2]);
$client{'version'} = main::program_version('supybot',$app[0],$app[1],$app[2],$app[5],$app[6]);
if ($client{'version'}){
if ( ( scalar grep { $_ =~ /gribble/ } @ps_cmd ) > 0){
$client{'name'} = 'gribble';
@ -4509,7 +4519,7 @@ sub check_modern_konvi {
@app = main::program_values('konversation');
if ($konvi){
@app = main::program_values('konversation');
$konvi_version = main::program_version($konvi,$app[0],$app[1],$app[2]);
$konvi_version = main::program_version($konvi,$app[0],$app[1],$app[2],$app[5],$app[6]);
@temp = split /\./, $konvi_version;
$client{'console-irc'} = $app[4];
$client{'konvi'} = 3;
@ -4743,6 +4753,7 @@ sub row_defaults {
'battery-data' => "No battery data found. Is one present?",
'battery-data-sys' => "No /sys data found. Old system?",
'cpu-model-null' => "Model N/A",
'darwin-feature' => "Feature not supported iu Darwin/OSX.",
'disk-data-bsd' => "No disk data found for this BSD system.",
'disk-data' => "No Disk data was found.",
'disk-size-0' => "Total N/A",
@ -5600,7 +5611,7 @@ sub create_output {
$volts = "$battery{$key}{'voltage_now'}/$battery{$key}{'voltage_min_design'}";
}
$volts ||= 'N/A';
$rows[$j]{main::key($num++,'volts now/min')} = $volts;
$rows[$j]{main::key($num++,'volts')} = $volts;
}
if ($battery{$key}{'manufacturer'} || $battery{$key}{'model_name'}) {
if ($battery{$key}{'manufacturer'} && $battery{$key}{'model_name'}){
@ -5844,7 +5855,6 @@ sub create_output_full {
my $ref = $cpu{'processors'};
my @processors = @$ref;
my @speeds = cpu_speeds(@processors);
my $j = scalar @rows;
$cpu{'model_name'} ||= 'N/A';
@data = ({
@ -5852,14 +5862,17 @@ sub create_output_full {
main::key($num++,'model') => $cpu{'model_name'},
},);
@rows = (@rows,@data);
#if ($extra > 1){
$properties{'bits-sys'} ||= 'N/A';
$rows[$j]{main::key($num++,'bits')} = $properties{'bits-sys'};
#}
if ($type){
$rows[$j]{main::key($num++,'type')} = $type;
}
if ($extra > 0){
my $arch = $cpu{'arch'};
$arch ||= 'N/A';
$rows[$j]{main::key($num++,'arch')} = $arch;
if ( $arch ne 'N/A' && $cpu{'rev'} ){
$cpu{'arch'} ||= 'N/A';
$rows[$j]{main::key($num++,'arch')} = $cpu{'arch'};
if ( $cpu{'arch'} ne 'N/A' && $cpu{'rev'} ){
$rows[$j]{main::key($num++,'rev')} = $cpu{'rev'};
}
}
@ -6618,7 +6631,11 @@ sub cpu_properties {
$speed = "$cpu{'cur-freq'} MHz";
}
if ( !$bits_sys && !$b_arm && $cpu{'flags'} ){
$bits_sys = ($cpu{'flags'} =~ /\blm\b/) ? 64 : 32;
}
my %cpu_properties = (
'bits-sys' => $bits_sys,
'cpu-layout' => $cpu_layout,
'cpu-type' => $cpu_type,
'min-max-key' => $min_max_key,
@ -6738,14 +6755,13 @@ sub cpu_flags_bsd {
my ($flags,$sep) = ('','');
# this will be null if it was not readable
my $file = main::system_files('dmesg-boot');
if ( $file && ! -r $file ){
$flags = main::row_defaults('dmesg-boot-permissions');
}
else {
foreach (@dmesg_boot){
if ( /Features/ || ( $bsd_type eq "openbsd" && /^cpu0.*\s[a-z][a-z][a-z](\s|,)[a-z][a-z][a-z](\s|,)/ ) ) {
my @line = split /:/, $_;
if ( /Features/ || ( $bsd_type eq "openbsd" && /^cpu0:\s*[a-z0-9]{2,3}(\s|,)[a-z0-9]{2,3}(\s|,)/i ) ) {
my @line = split /:\s*/, lc($_);
# free bsd has to have weird syntax: <....<b23>,<b34>>
# Features2=0x1e98220b<SSE3,PCLMULQDQ,MON,SSSE3,CX16,SSE4.1,SSE4.2,POPCNT,AESNI,XSAVE,OSXSAVE,AVX>
$line[1] =~ s/^[^<]*<|>[^>]*$//g;
@ -6753,7 +6769,8 @@ sub cpu_flags_bsd {
$line[1] =~ s/<[^>]+>//g;
# and replace commas with spaces
$line[1] =~ s/,/ /g;
$flags .= ' ' . $line[1];
$flags .= $sep . $line[1];
$sep = ' ';
}
elsif (/real mem/){
last;
@ -8326,8 +8343,7 @@ sub create_output {
# foreach my $key (keys %data){
# print "$key: $data{$key}\n";
# }
if (!$data{'sys_vendor'} ||
($data{'sys_vendor'} && $data{'board_vendor'} &&
if (!$data{'sys_vendor'} || ($data{'board_vendor'} &&
$data{'sys_vendor'} eq $data{'board_vendor'} && !$data{'product_name'} &&
!$data{'product_version'} && !$data{'product_serial'})){
$b_skip_system = 1;
@ -9679,9 +9695,11 @@ sub get {
eval $start if $b_log;
my (@rows,$key1,$val1);
my $num = 0;
partition_data() if !$b_partitions;;
partition_data() if !$b_partitions;
if (!@partitions) {
$key1 = 'Message';
#$val1 = ($bsd_type && $bsd_type eq 'darwin') ?
# main::row_defaults('darwin-feature') : main::row_defaults('partition-data');
$val1 = main::row_defaults('partition-data');
@rows = ({main::key($num++,$key1) => $val1,});
}
@ -9763,8 +9781,10 @@ sub create_output {
sub partition_data {
eval $start if $b_log;
#return if $bsd_type && $bsd_type eq 'darwin'; # darwin has muated output, of course
my (@data,@rows,@mapper,@mount,@partitions_working);
my ($b_fs,$b_load,$cols,$roots) = (1,0,6,0);
my ($b_fake_map,$b_fs,$b_load,$cols,$roots) = (0,1,0,6,0);
my ($back_size,$back_used) = (4,3);
my ($dev_base,$fs,$id,$label,$percent_used,$size,$type,$uuid,$used);
$b_partitions = 1;
set_lsblk() if !$bsd_type && !$b_lsblk;
@ -9779,12 +9799,20 @@ sub partition_data {
}
}
else {
@partitions_working = main::grabber("df -T -k 2>/dev/null");
# this is missing the file system data
if ($bsd_type ne 'darwin'){
$cols = 5;
@partitions_working = main::grabber("df -T -k 2>/dev/null");
}
#Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on
else {
$cols = 8;
$b_fake_map = 1;
($back_size,$back_used) = (7,6);
}
if (!@partitions_working){
@partitions_working = main::grabber("df -k 2>/dev/null");
$b_fs = 0;
$cols = 5;
if (my $path = main::check_program('mount')){
@mount = main::grabber("$path 2>/dev/null");
}
@ -9805,6 +9833,8 @@ sub partition_data {
$filters .= 'fdescfs|iso9660|linprocfs|none|procfs|\/run(\/.*)?|run|squashfs|sys|\/sys\/.*|sysfs|';
$filters .= 'tmpfs|type|udev|unionfs|vartmp)$';
foreach (@partitions_working){
# stupid apple bullshit
$_ =~ s/^map\s+([\S]+)/map:\/$1/ if $b_fake_map;
my @row = split /\s+/, $_;
if ($row[0] =~ /$filters/ || $row[0] =~ /^ROOT/i){
next;
@ -9870,8 +9900,8 @@ sub partition_data {
$fs = ($b_fs) ? $row[1]: get_bsd_fs($row[0],@mount);
$id = join ' ', @row[$cols .. $#row];
$id =~ s/\/home\/[^\/]+\/(.*)/\/home\/$filter_string\/$1/ if $show{'filter'};
$size = $row[$cols - 4];
$used = $row[$cols - 3];
$size = $row[$cols - $back_size];
$used = $row[$cols - $back_used];
$percent_used = sprintf( "%.1f", ( $used/$size )*100 ) if ($size);
@data = ({
'id' => $id,
@ -9960,6 +9990,7 @@ sub swap_data {
sub get_bsd_fs {
eval $start if $b_log;
my ($item,@mount) = @_;
$item =~ s/map:\/(\S+)/map $1/ if $bsd_type eq 'darwin';
return 'N/A' if ! @mount;
my ($fs) = ('');
# linux: /dev/sdb6 on /var/www/m type ext4 (rw,relatime,data=ordered)
@ -12196,6 +12227,26 @@ sub create_output {
}
}
}
if ($extra > 0 && $source eq 'ipmi'){
$j = scalar @rows;
$sensors{'volts-12'} ||= 'N/A';
$sensors{'volts-5'} ||= 'N/A';
$sensors{'volts-3.3'} ||= 'N/A';
$sensors{'volts-dimm-p1'} ||= 'N/A';
$sensors{'volts-dimm-p2'} ||= 'N/A';
$sensors{'volts-vbat'} ||= 'N/A';
$rows[$j]{main::key($num++,'Voltages')} = $data_source;
$rows[$j]{main::key($num++,'12v')} = $sensors{'volts-12'};
$rows[$j]{main::key($num++,'5v')} = $sensors{'volts-5'};
$rows[$j]{main::key($num++,'3.3v')} = $sensors{'volts-3.3'};
$rows[$j]{main::key($num++,'vbat')} = $sensors{'volts-vbat'};
if ($extra > 1){
$rows[$j]{main::key($num++,'dimm-p1')} = $sensors{'volts-dimm-p1'} if $sensors{'volts-dimm-p1'};
$rows[$j]{main::key($num++,'dimm-p2')} = $sensors{'volts-dimm-p2'} if $sensors{'volts-dimm-p2'};
$rows[$j]{main::key($num++,'soc-p1')} = $sensors{'volts-soc-p1'} if $sensors{'volts-soc-p1'};
$rows[$j]{main::key($num++,'soc-p2')} = $sensors{'volts-soc-p2'} if $sensors{'volts-soc-p2'};
}
}
eval $end if $b_log;
return @rows;
}
@ -12299,6 +12350,33 @@ sub ipmi_data {
}
}
}
if ($extra > 0){
if ($row[$i_key] =~ /^12V$/i) {
$sensors{'volts-12'} = $row[$i_value];
}
elsif ($row[$i_key] =~ /^(P5V|5VCC)$/i) {
$sensors{'volts-5'} = $row[$i_value];
}
elsif ($row[$i_key] =~ /^(P3V3|3.3VCC)$/i) {
$sensors{'volts-3.3'} = $row[$i_value];
}
elsif ($row[$i_key] =~ /^VBAT$/i) {
$sensors{'volts-vbat'} = $row[$i_value];
}
# NOTE: VDimmP1ABC VDimmP1DEF
elsif (!$sensors{'volts-dimm-p1'} && $row[$i_key] =~ /^(P1_VMEM|VDimmP1)/i) {
$sensors{'volts-dimm-p1'} = $row[$i_value];
}
elsif (! $sensors{'volts-dimm-p2'} && $row[$i_key] =~ /^(P2_VMEM|VDimmP2)/i) {
$sensors{'volts-dimm-p2'} = $row[$i_value];
}
elsif (!$sensors{'volts-soc-p1'} && $row[$i_key] =~ /^(P1_SOC_RUN$)/i) {
$sensors{'volts-soc-p1'} = $row[$i_value];
}
elsif (! $sensors{'volts-soc-p2'} && $row[$i_key] =~ /^(P2_SOC_RUN$)/i) {
$sensors{'volts-soc-p2'} = $row[$i_value];
}
}
}
# print Data::Dumper::Dumper \%sensors;
@ -12706,22 +12784,23 @@ sub data_processor {
%sensors = ();
}
else {
my ($psu_temp,$sodimm_temp);
if ( $sensors{'psu-temp'} ){
$psu_temp = $sensors{'psu-temp'};
}
my ($psu_temp,$sodimm_temp,$v_12,$v_5,$v_3_3,$v_dimm_p1,$v_dimm_p2,$v_soc_p1,$v_soc_p2,$v_vbat);
$psu_temp = $sensors{'psu-temp'} if $sensors{'psu-temp'};
# sodimm fan is fan_main[4]
if ( $sensors{'sodimm-temp'} ){
$sodimm_temp = $sensors{'sodimm-temp'};
}
if ( $sensors{'cpu2-temp'} ){
$cpu2_temp = $sensors{'cpu2-temp'};
}
if ( $sensors{'cpu3-temp'} ){
$cpu3_temp = $sensors{'cpu3-temp'};
}
if ( $sensors{'cpu4-temp'} ){
$cpu4_temp = $sensors{'cpu4-temp'};
$sodimm_temp = $sensors{'sodimm-temp'} if $sensors{'sodimm-temp'};
$cpu2_temp = $sensors{'cpu2-temp'} if $sensors{'cpu2-temp'};
$cpu3_temp = $sensors{'cpu3-temp'} if $sensors{'cpu3-temp'};
$cpu4_temp = $sensors{'cpu4-temp'} if $sensors{'cpu4-temp'};
# so far only for ipmi, sensors data is junk for volts
if ($extra > 0 && $sensors{'volts-12'} ){
$v_12 = $sensors{'volts-12'} if $sensors{'volts-12'};
$v_5 = $sensors{'volts-5'} if $sensors{'volts-5'};
$v_3_3 = $sensors{'volts-3.3'} if $sensors{'volts-3.3'};
$v_vbat = $sensors{'volts-vbat'} if $sensors{'volts-vbat'};
$v_dimm_p1 = $sensors{'volts-dimm-p1'} if $sensors{'volts-dimm-p1'};
$v_dimm_p2 = $sensors{'volts-dimm-p2'} if $sensors{'volts-dimm-p2'};
$v_soc_p1 = $sensors{'volts-soc-p1'} if $sensors{'volts-soc-p1'};
$v_soc_p2 = $sensors{'volts-soc-p2'} if $sensors{'volts-soc-p2'};
}
%sensors = (
'cpu-temp' => $cpu_temp,
@ -12740,6 +12819,16 @@ sub data_processor {
if ($sodimm_temp){
$sensors{'sodimm-temp'} = $sodimm_temp;
}
if ($extra > 0 && ($v_12 || $v_5 || $v_3_3) ){
$sensors{'volts-12'} = $v_12;
$sensors{'volts-5'} = $v_5;
$sensors{'volts-3.3'} = $v_3_3;
$sensors{'volts-vbat'} = $v_vbat;
$sensors{'volts-dimm-p1'} = $v_dimm_p1;
$sensors{'volts-dimm-p2'} = $v_dimm_p2;
$sensors{'volts-soc-p1'} = $v_soc_p1;
$sensors{'volts-soc-p2'} = $v_soc_p2;
}
}
eval $end if $b_log;
return %sensors;
@ -13200,7 +13289,7 @@ sub usb_data {
@row = split /:/, $line;
next if ! defined $row[0];
if ($row[0] eq 'bcdUSB' && defined $row[1]){
$speed = sprintf("%1.1f",$row[1]);
$speed = ($row[1] =~ /^[0-9,\.]+$/) ? sprintf("%1.1f",$row[1]) : $row[1];
}
elsif ($row[0] eq '~bInterfaceProtocol' && $row[2] ){
$protocol = $row[2];
@ -13722,7 +13811,7 @@ sub get_kde_data {
@data = main::program_values("kded$kde_session_version");
if (@data){
$desktop[0] = $data[3];
$desktop[1] = main::program_version("kded$kde_session_version",$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version("kded$kde_session_version",$data[0],$data[1],$data[2],$data[5],$data[6]);
# kded exists, so we can now get the qt data string as well
if ($desktop[1] && ($program = main::check_program("kded$kde_session_version")) ){
@version_data = main::grabber("$program --version 2>/dev/null");
@ -13782,20 +13871,20 @@ sub get_env_de_data {
@data = main::program_values('unity');
$desktop[0] = $data[3];
$desktop[0] ||= 'Unity';
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5],$data[6]);
set_gtk_data() if $extra > 0;
}
elsif ( $xdg_desktop =~ /budgie/ ){
@data = main::program_values('budgie');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('budgie-desktop',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('budgie-desktop',$data[0],$data[1],$data[2],$data[5],$data[6]);
set_gtk_data() if $extra > 0;
}
elsif ( $xdg_desktop eq 'lxqt' ){
@data = main::program_values('lxqt');
$desktop[0] = $data[3];
$desktop[0] ||= 'LXQT';
$desktop[1] = main::program_version('lxqt-about',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('lxqt-about',$data[0],$data[1],$data[2],$data[5],$data[6]);
if ( $extra > 0 ){
if ($program = main::check_program("kded$kde_session_version") ){
@version_data = main::grabber("$program --version 2>/dev/null");
@ -13804,7 +13893,7 @@ sub get_env_de_data {
}
elsif ($program = main::check_program("qtdiag") ){
@data = main::program_values('qtdiag');
$desktop[3] = main::program_version($program,$data[0],$data[1],$data[2],$data[5]);
$desktop[3] = main::program_version($program,$data[0],$data[1],$data[2],$data[5],$data[6]);
$desktop[2] = $data[3];
}
}
@ -13814,7 +13903,7 @@ sub get_env_de_data {
elsif ( $xdg_desktop =~ /cinnamon/ ){
@data = main::program_values('cinnamon');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5],$data[6]);
set_gtk_data() if $extra > 0;
}
eval $end if $b_log;
@ -13833,22 +13922,22 @@ sub get_env_xprop_de_data {
($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]);
$desktop[1] = main::program_version('cinnamon',$data[0],$data[1],$data[2],$data[5],$data[6]);
set_gtk_data() if $extra > 0;
$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 (!$program && ($program = main::check_program('mate-about') ) ) {
if ($program = main::check_program('mate-session') ) {
$value = 'mate-session';
}
elsif ($program = main::check_program('mate-about')) {
$value = 'mate-about';
# }
}
if ($value){
@data = main::program_values($value);
$desktop[0] = $data[3];
$desktop[1] = main::program_version($value,$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version($program,$data[0],$data[1],$data[2],$data[5],$data[6]);
}
set_gtk_data() if $extra > 0;
$desktop[0] ||= 'MATE';
@ -13860,11 +13949,11 @@ sub get_env_xprop_de_data {
(main::check_program('gnome-shell') && $b_xprop && main::awk(\@xprop,'^_gnome') ) ){
if ($program = main::check_program('gnome-about') ) {
@data = main::program_values('gnome-about');
$desktop[1] = main::program_version('gnome-about',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('gnome-about',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif ($program = main::check_program('gnome-shell') ) {
@data = main::program_values('gnome-shell');
$desktop[1] = main::program_version('gnome-shell',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('gnome-shell',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
set_gtk_data() if $extra > 0;
$desktop[0] = ( $data[3] ) ? $data[3] : 'Gnome';
@ -13895,13 +13984,13 @@ sub get_xprop_de_data {
@version_data = main::grabber('xfdesktop --version 2>/dev/null');
# out of x, this error goes to stderr, so it's an empty result
$desktop[1] = main::awk(\@version_data,$data[0],$data[1],'\s+');
#$desktop[1] = main::program_version('xfdesktop',$data[0],$data[1],$data[2],$data[5]);
#$desktop[1] = main::program_version('xfdesktop',$data[0],$data[1],$data[2],$data[5],$data[6]);
if ( !$desktop[1] ){
@data = main::program_values("xfce${version}-panel");
# print Data::Dumper::Dumper \@data;
# this returns an error message to stdout in x, which breaks the version
# xfce4-panel --version out of x fails to get display, so no data
$desktop[1] = main::program_version("xfce${version}-panel",$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version("xfce${version}-panel",$data[0],$data[1],$data[2],$data[5],$data[6]);
# out of x this kicks out an error: xfce4-panel: Cannot open display
$desktop[1] = '' if $desktop[1] !~ /[0-9]\./;
}
@ -13909,7 +13998,7 @@ sub get_xprop_de_data {
$desktop[1] ||= 4;
if ($extra > 0){
@data = main::program_values('xfdesktop-toolkit');
#$desktop[3] = main::program_version('xfdesktop',$data[0],$data[1],$data[2],$data[5]);
#$desktop[3] = main::program_version('xfdesktop',$data[0],$data[1],$data[2],$data[5],$data[6]);
$desktop[3] = main::awk(\@version_data,$data[0],$data[1],'\s+');
$desktop[2] = $data[3];
}
@ -13918,12 +14007,12 @@ sub get_xprop_de_data {
if (grep {/fluxbox/} @ps_cmd){
@data = main::program_values('fluxbox');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('fluxbox',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('fluxbox',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
else {
@data = main::program_values('blackbox');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('blackbox',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('blackbox',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
}
# debian package: lxde-core
@ -13931,7 +14020,7 @@ sub get_xprop_de_data {
main::check_program('razor-session')) && main::awk(\@xprop,'openbox_pid' )){
# note: openbox-lxde --version may be present, but returns openbox data
@data = main::program_values('openbox');
$desktop[1] = main::program_version('openbox',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('openbox',$data[0],$data[1],$data[2],$data[5],$data[6]);
if ($xdg_desktop eq 'lxde' || main::awk(\@ps_cmd, 'lxsession')){
$desktop[1] = "(Openbox $desktop[1])" if $desktop[1];
$desktop[0] = 'LXDE';
@ -13955,7 +14044,7 @@ sub get_xprop_de_data {
elsif (main::check_program('icewm') && main::awk(\@xprop,'icewm' )){
@data = main::program_values('icewm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('icewm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('icewm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('enlightenment') && main::awk(\@xprop,'enlightenment' )){
$desktop[0] = 'Enlightenment';
@ -13969,23 +14058,23 @@ sub get_xprop_de_data {
elsif (main::check_program('i3') && main::awk(\@xprop,'^i3_' )){
@data = main::program_values('i3');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('i3',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('i3',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
# debian package name: wmaker
elsif (main::check_program('WindowMaker') && main::awk(\@xprop,'^windowmaker' )){
@data = main::program_values('wmaker');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('wmaker',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('wmaker',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('wm2') && main::awk(\@xprop,'^_wm2' )){
@data = main::program_values('wm2');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('wm2',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('wm2',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('herbstluftwm') && main::awk(\@xprop,'herbstluftwm' )){
@data = main::program_values('herbstluftwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('herbstluftwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('herbstluftwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
# need to check starts line because it's so short
eval $end if $b_log;
@ -13996,33 +14085,33 @@ sub get_ps_de_data {
if ( main::check_program('fvwm-crystal') && main::awk(\@ps_cmd,'fvwm-crystal' )){
@data = main::program_values('fvwm-crystal');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('fvwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('fvwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif ((main::check_program('fvwm2') || main::check_program('fvwm')) && main::awk(\@ps_cmd,'fvwm' )){
@data = main::program_values('fvwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('fvwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('fvwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('pekwm') && main::awk(\@ps_cmd,'pekwm' )){
@data = main::program_values('pekwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('pekwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('pekwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('awesome') && main::awk(\@ps_cmd,'awesome' )){
@data = main::program_values('awesome');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('awesome',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('awesome',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
# not in debian apt
elsif (main::check_program('scrotwm') && main::awk(\@ps_cmd,'scrotwm' )){
@data = main::program_values('scrotwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('scrotwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('scrotwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('spectrwm') && main::awk(\@ps_cmd,'spectrwm' )){
@data = main::program_values('spectrwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('spectrwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('spectrwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('twm') && main::awk(\@ps_cmd,'(\s|\/)twm' )){
# no version
@ -14032,33 +14121,33 @@ sub get_ps_de_data {
elsif (main::check_program('dwm') && main::awk(\@ps_cmd,'(\s|\/)dwm' )){
@data = main::program_values('dwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('dwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('dwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
# not in debian apt, current is wmii, version 3
elsif (main::check_program('wmii2') && main::awk(\@ps_cmd,'wmii2' )){
@data = main::program_values('wmii2');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('wmii2',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('wmii2',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('wmii') && main::awk(\@ps_cmd,'wmii' )){
@data = main::program_values('wmii');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('wmii',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('wmii',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('jwm') && main::awk(\@ps_cmd,'(\s|\/)jwm' )){
@data = main::program_values('jwm');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('jwm',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('jwm',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif (main::check_program('sawfish') && main::awk(\@ps_cmd,'sawfish' )){
@data = main::program_values('sawfish');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('sawfish',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('sawfish',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
elsif ( main::check_program('afterstep') && grep {/afterstep/} @ps_cmd){
@data = main::program_values('afterstep');
$desktop[0] = $data[3];
$desktop[1] = main::program_version('afterstep',$data[0],$data[1],$data[2],$data[5]);
$desktop[1] = main::program_version('afterstep',$data[0],$data[1],$data[2],$data[5],$data[6]);
}
eval $end if $b_log;
}
@ -14069,6 +14158,11 @@ sub get_wm {
my $cmd = "$program -m 2>/dev/null";
my @data = main::grabber($cmd,'','strip');
$desktop[5] = main::awk(\@data,'^Name',2,'\s*:\s*');
if ($desktop[5]){
# IceWM 1.3.8 (Linux 3.2.0-4-amd64/i686)
$desktop[5] =~ s/[0-9]+\.[0-9][\S]+|[\[\(].*[\)\]]//g;
$desktop[5] = main::trimmer($desktop[5]);
}
}
eval $end if $b_log;
}
@ -14250,7 +14344,6 @@ sub get_bsd_os {
}
}
else {
my @uname = POSIX::uname();
$distro = "$uname[0] $uname[2]";
}
eval $end if $b_log;
@ -14634,7 +14727,6 @@ sub get_kernel_data {
my ($kernel,$ksplice) = ('','');
# Linux; yawn; 4.9.0-3.1-liquorix-686-pae; #1 ZEN SMP PREEMPT liquorix 4.9-4 (2017-01-14); i686
# FreeBSD; siwi.pair.com; 8.2-STABLE; FreeBSD 8.2-STABLE #0: Tue May 31 14:36:14 EDT 2016 erik5@iddhi.pair.com:/usr/obj/usr/src/sys/82PAIRx-AMD64; amd64
my @uname = uname();
if (@uname){
$kernel = $uname[2];
if (check_program('uptrack-uname') && $kernel){
@ -14642,10 +14734,9 @@ sub get_kernel_data {
$ksplice = trimmer($ksplice);
$kernel = ($ksplice) ? $ksplice . ' (ksplice)' : $kernel;
}
$kernel .= ' ' . $uname[scalar @uname - 1];
$kernel .= ' ' . $uname[-1];
$kernel = ($bsd_type) ? $uname[0] . ' ' . $kernel : $kernel;
}
$kernel ||= 'N/A';
log_data('data',"kernel: $kernel ksplice: $ksplice") if $b_log;
eval $end if $b_log;
@ -14654,9 +14745,8 @@ sub get_kernel_data {
sub get_kernel_bits {
eval $start if $b_log;
my $bits = '';
my @uname = uname();
if (@uname){
$bits = $uname[scalar @uname - 1];
$bits = $uname[-1];
$bits = ($bits =~ /64/ ) ? 64 : 32;
}
$bits ||= 'N/A';
@ -14922,7 +15012,7 @@ sub get_shell_data {
if ( $shell ne 'sh' ) {
@app = main::program_values(lc($shell));
if ($app[0]){
$client{'version'} = main::program_version($shell,$app[0],$app[1],$app[2]);
$client{'version'} = main::program_version($shell,$app[0],$app[1],$app[2],$app[5],$app[6]);
}
# guess that it's two and --version
else {
@ -16316,7 +16406,7 @@ sub generate_system_data {
$desktop_info = $desktop_data[4];
}
# don't print the desktop if it's a wm and the same
if ($desktop_data[5] && (!$desktop_data[0] || lc($desktop_data[0]) ne lc($desktop_data[5]))){
if ($desktop_data[5] && (!$desktop_data[0] || index(lc($desktop_data[5]),lc($desktop_data[0])) == -1 )){
$wm = $desktop_data[5];
}
}

14
inxi.1
View file

@ -1,4 +1,4 @@
.TH INXI 1 "2018\-04\-12" inxi "inxi manual"
.TH INXI 1 "2018\-04\-17" inxi "inxi manual"
.SH NAME
inxi \- Command line system information script for console and IRC
.SH SYNOPSIS
@ -78,8 +78,6 @@ capacity, and then this figure as a percentage of original capacity available in
\fBcondition: 22.2/36.4 Wh (61%)\fR
The \fBvolts\fR item shows the current voltage / minimum voltage.
.TP
.B \-c\fR,\fB \-\-color\fR \fR[\fB0\fR\-\fB42\fR]
Set color scheme. If no scheme number is supplied, 0 is assumed.
@ -560,6 +558,9 @@ generate one.
\- md\-raid: Adds second RAID Info line with extra data: blocks, chunk size,
bitmap (if present). Resync line, shows blocks synced/total blocks.
.TP
.B \-xx \-s\fR
\- Adds basic voltages: 12v, 5v, 3.3v, vbat (\fBipmi\fR only).
.TP
.B \-x \-S\fR
\- Adds desktop toolkit (\fBtk\fR), if available (GNOME/Xfce/KDE only).
.TP
@ -584,7 +585,7 @@ bitmap (if present). Resync line, shows blocks synced/total blocks.
.TP
.B \-xx \-B\fR
\- Adds serial number, voltage (if available). Note that \fBvolts\fR shows the
data (if available) as the voltage now / minimum design voltage (\fBnow/min\fR).
data (if available) as the voltage now / minimum design voltage.
.TP
.B \-xx \-D\fR
\- Adds disk serial number.
@ -640,8 +641,11 @@ ROM size if using \fBdmidecode\fR.
\- md\-raid: Adds superblock (if present) and algorithm. If resync,
shows progress bar.
.TP
.B \-xx \-s\fR
\- Adds DIMM/SOC voltages, if present (\fBipmi\fR only).
.TP
.B \-xx \-S\fR
\- Adds, if run in X, display manager (\fBdm\fR) type, if present.
\- Adds, if run in X, display manager (\fBdm\fR) type, if present.q
If none, shows N/A. Supports most known display managers, including gdm, gdm3,
idm, kdm, lightdm, lxdm, mdm, nodm, sddm, slim, tint, wdm, and xdm.
.TP

View file

@ -1,3 +1,32 @@
=====================================================================================
Version: 3.0.05
Patch Version: 00
Script Date: 2018-04-17
-----------------------------------
Changes:
-----------------------------------
New version, new man. Small new enhancements.
1. Added to -s for ipmi, with -x: voltage 12v,5v,3.3v,vbat; for -xx, dimm/soc p1/p2
voltages
2. enhanced wm: feature, needed more filters and protection against redundant data
3. basic apple osx fixes to keep it from crashing, but I'm not spending any more
time on apple junk unless someone pays me for my time, I can't stand the product or
company, it's the total antitheses of freedom or free software, or even openness.
4. openbsd/bsd fixes: openbsd was failing to get cpu flags due to a small oversight
5. -C now shows bits: for the true bits of cpu, not the kernel bits. This is not
a reliable measurement but should be right about 95+ percent of the time, and
basically all of the time for GNU/Linux on Intel/AMD, most of the time for ARM.
When it doesn't know it does not guess, and shows N/A.
6. bsd fix for usb, was running numeric action on string value
7. fixed stderr tool for program_version, now it's hard-coded in program_values
which removes an unneded regex search for every program version test.
8. Mate detection, switched to using mate-sesssion instead of mate-about, the
latter is not getting updated and has the wrong version number on it.
-----------------------------------
-- Harald Hope - Tue, 17 Apr 2018 13:17:14 -0700
=====================================================================================
Version: 3.0.04
Patch Version: 00