diff -Nru inxi-3.3.33-1/README.txt inxi-3.3.34-1/README.txt --- inxi-3.3.33-1/README.txt 2024-02-07 03:38:03.000000000 +0000 +++ inxi-3.3.34-1/README.txt 2024-04-14 02:49:33.000000000 +0000 @@ -2,8 +2,8 @@ README for inxi - a command line system information tool ================================================================================ FILE: README.txt -VERSION: 6.0 -DATE: 2024-01-14 +VERSION: 6.1 +DATE: 2024-03-28 The new faster, more powerful Perl inxi is here! File all issue reports with the master branch. All support for versions prior to 3.0 is ended. @@ -26,14 +26,8 @@ master > https://codeberg.org/smxi/inxi master tarballs > https://codeberg.org/smxi/inxi-tarballs master -inxi-perl branch has been rebuilt and now only contains the pinxi, pinxi.1 -files, plus a minimal README.txt for github users. docs and tarballs have been -deleted. The inxi-perl branch should not be used, and exists only so that -current pinxi users can update from there to get the new version with new URLs. - -inxi master will be mirrored to github until most packagers have switched to -using codeberg. inxi-perl/pinxi no longer gets updates, and exists only to let -users update to a version with the new self updater codeberg URLs. +No syncing to github smxi repos has been done since December, 2023. Github +versions are out of date. The inxi repo only contains master, plus the one, two branches, which are obsolete. diff -Nru inxi-3.3.33-1/debian/changelog inxi-3.3.34-1/debian/changelog --- inxi-3.3.33-1/debian/changelog 2024-02-08 08:18:01.000000000 +0000 +++ inxi-3.3.34-1/debian/changelog 2024-04-16 06:55:09.000000000 +0000 @@ -1,3 +1,10 @@ +inxi (3.3.34-1-1) unstable; urgency=medium + + * New upstream version 3.3.34-1. + * d/copyright: Bump years. + + -- Unit 193 Tue, 16 Apr 2024 02:55:09 -0400 + inxi (3.3.33-1-1) unstable; urgency=medium * New upstream version 3.3.33-1. diff -Nru inxi-3.3.33-1/debian/copyright inxi-3.3.34-1/debian/copyright --- inxi-3.3.33-1/debian/copyright 2023-09-18 05:11:52.000000000 +0000 +++ inxi-3.3.34-1/debian/copyright 2024-04-16 06:54:56.000000000 +0000 @@ -5,7 +5,7 @@ Files: * Copyright: 2005-2007, Michiel de Boer 2008-2017, Scott Rogers - 2008-2023, Harold Hope + 2008-2024, Harold Hope License: GPL-3+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -25,7 +25,7 @@ Files: debian/* -Copyright: 2013-2023, Unit 193 +Copyright: 2013-2024, Unit 193 License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff -Nru inxi-3.3.33-1/inxi inxi-3.3.34-1/inxi --- inxi-3.3.33-1/inxi 2024-02-07 03:38:03.000000000 +0000 +++ inxi-3.3.34-1/inxi 2024-04-14 02:49:33.000000000 +0000 @@ -49,8 +49,8 @@ ## INXI INFO ## my $self_name='inxi'; -my $self_version='3.3.33'; -my $self_date='2024-02-06'; +my $self_version='3.3.34'; +my $self_date='2024-04-13'; my $self_patch='00'; ## END INXI INFO ## @@ -422,9 +422,13 @@ $ENV{'LC_ALL'}='C'; # remember, perl uses the opposite t/f return as shell!!! # some versions of busybox do not have tty, like openwrt - $b_irc = (check_program('tty') && system('tty >/dev/null')) ? 1 : 0; + $b_irc = 1 if (check_program('tty') && system('tty >/dev/null')); # print "birc: $b_irc\n"; - $b_display = ($ENV{'DISPLAY'}) ? 1 : 0; + # with X, DISPLAY sets, then check Wayland, other DE/WM sessions + if ($ENV{'DISPLAY'} || $ENV{'WAYLAND_DISPLAY'} || + $ENV{'XDG_CURRENT_DESKTOP'} || $ENV{'DESKTOP_SESSION'}){ + $b_display = 1; + } $b_root = $< == 0; # root UID 0, all others > 0 $dl{'dl'} = 'curl'; $dl{'curl'} = 1; @@ -6012,13 +6016,13 @@ sub set { eval $start if $b_log; - PsData::set_cmd() if !$loaded{'ps-cmd'}; # $b_irc = 1; # for testing, like cli konvi start which shows as tty if (!$b_irc){ # we'll run ShellData::set() for -I, but only then } else { $use{'filter'} = 1; + PsData::set() if !$loaded{'ps-data'}; get_client_name(); if ($client{'konvi'} == 1 || $client{'konvi'} == 3){ set_konvi_data(); @@ -11504,7 +11508,8 @@ $gen = '5'; $process = 'TSMC n3 (3nm)'; # turin could be 4nm, need more data $year = '2023+';} - elsif ($model =~ /^(20|40)$/){ + # Strix Point; Granite Ridge; Krackan Point; Strix Halo + elsif ($model =~ /^(10|20|40|60|70)$/){ $arch = 'Zen 5'; $gen = '5'; $process = 'TSMC n3 (3nm)'; # desktop, granite ridge, confirm 2024 @@ -13917,7 +13922,7 @@ # HM320II HM320II HM ['(SAMSUNG|^(AWMB|[BC]DS20|[BC]WB|BJ[NT]|[BC]GND|CJ[NT]|CKT|CUT|[DG]3 Station|DUO\b|DUT|EB\dMW|E[CS]\d[A-Z]\d|FD\d[A-Z]\dGE4S5|[GS]2 Portable|GN|HD\d{3}[A-Z]{2}$|(HM|SP)\d{2}|HS\d|M[AB]G\d[FG]|MCC|MCBOE|MCG\d+GC|[CD]JN|MZ|^G[CD][1-9][QS]|P[BM]\d|(SSD\s?)?SM\s?841)|^SSD\s?[89]\d{2}\s(DCT|PRO|QVD|\d+[GT]B)|\bEVO\b|SV\d|[BE][A-Z][1-9]QT|YP\b|[CH]N-M|MMC[QR]E)','SAMSUNG','Samsung',''], # maybe ^SM, ^HM # Android UMS Composite?U1 - ['(SanDisk|0781|^(A[BCD]LC[DE]|AFGCE|D[AB]4|DX[1-9]|Extreme|Firebird|S[CD]\d{2}G|SC\d{3,4}|SD(CF|S[S]?[ADQ]|SL\d+G|SU\d|U\d|\sUltra)|SDW[1-9]|SE\d{2}|SEM\d{2}|\d[STU]|U(3\b|1\d0))|Clip Sport|Cruzer|iXpand|SN(\d+G|128|256)|SSD (Plus|U1[01]0) [1-9]|ULTRA\s(FIT|trek|II)|X[1-6]\d{2})','(SanDisk|0781)','SanDisk',''], + ['(SanDisk|0781|^(A[BCD]LC[DE]|AFGCE|D[AB]4|DX[1-9]|Extreme|Firebird|S[CD]\d{2}G|SC\d{3,4}|SD(CF|S[S]?[ADQ]|SL\d+G|SU\d|U\d|\sUltra)|SDW[1-9]|SE\d{2}|SEM\d{2}|\d[STU]|U(3\b|1\d0))|Clip Sport|Cruzer|iXpand|SN(\d+G|128|256)|SSD (Plus|U1[01]0) [1-9]|ULTRA\s(FIT|trek|II)|^X[1-6]\d{2})','(SanDisk|0781)','SanDisk',''], # these are HP/Sandisk cobranded. DX110064A5xnNMRI ids as HP and Sandisc ['(^DX[1-9])','^(HP\b|SANDDISK)','Sandisk/HP',''], # ssd drive, must come before seagate ST test # real, SSEAGATE Backup+; XP1600HE30002 | 024 HN (spinpoint) ; possible usb: 24AS @@ -14526,6 +14531,7 @@ # Data URLs: inxi-resources.txt Section: DriveItem device_vendor() # $model = 'H10 HBRPEKNX0202A NVMe INTEL 512GB'; # $model = 'SD Ultra 3D 1TB'; + # $model = 'ST8000DM004-2CX188_WCT193ZX'; set_disk_vendors() if !$vendors; # prefilter this one, some usb enclosurs and wrong master/slave hdd show default $model =~ s/^Initio[\s_]//i; @@ -17579,7 +17585,7 @@ chips cirrus cyrix etnaviv fbdev fbturbo fglrx geode glide glint i128 i740 i810-dec100 i810e i810 i815 i830 i845 i855 i865 i915 i945 i965 iftv igs imstt intel ipaq ivtv mach64 mesa mga m68k modesetting neomagic - newport nouveau nsc nvidia nv openchrome r128 radeonhd radeon rendition + newport nouveau nova nsc nvidia nv openchrome r128 radeonhd radeon rendition s3virge s3 savage siliconmotion sisimedia sisusb sis sis530 sunbw2 suncg14 suncg3 suncg6 sunffb sunleo suntcx tdfx tga trident trio ts300 tseng unichrome v4l vboxvideo vesa vga via vmware vmwgfx voodoo)); @@ -17685,6 +17691,7 @@ 'iris' => 'intel', 'lima' => 'mali', 'nouveau' => 'nvidia', + 'nova' => 'nvidia', 'panfrost' => 'mali/bifrost', 'r200' => 'amd', 'r300' => 'amd', @@ -18026,8 +18033,8 @@ 'years' => '2013', }, {'arch' => 'Gen-7', - 'ids' => '0152|0155|0156|0157|015a|015e|0162|0166|016a|0172|0176|0f31|0f32|' . - '0f33', + 'ids' => '0152|0155|0156|0157|015a|015e|0162|0166|016a|0172|0176|0f30|0f31|' . + '0f32|0f33', 'code' => '', 'process' => 'Intel 22nm', 'years' => '2012-13', @@ -18075,7 +18082,8 @@ }, {'arch' => 'Gen-12.2', 'ids' => '4626|4628|462a|4636|4638|463a|4682|4688|468a|468b|4690|4692|4693|' . - '46a3|46a6|46a8|46aa|46b0|46b1|46b3|46b6|46b8|46ba|46c1|46c3|46d0|46d1|46d2', + '46a3|46a6|46a8|46aa|46b0|46b1|46b3|46b6|46b8|46ba|46c1|46c3|46d0|46d1|46d2|' . + '46d3|46d4', 'code' => '', 'process' => 'Intel 10nm', 'years' => '2021-22+', @@ -18090,7 +18098,7 @@ {'arch' => 'Gen-12.7', 'ids' => '4f80|4f81|4f82|4f83|4f84|4f85|4f86|4f87|4f88|5690|5691|5692|5693|' . '5694|5695|5696|5697|5698|56a0|56a1|56a3|56a4|56a5|56a6|56a7|56a8|56a9|56b0|' . - '56b1|56b2|56b3|56ba|56bb|56bc|56bd', + '56b1|56b2|56b3|56ba|56bb|56bc|56bd|56be|56bf', 'code' => 'Alchemist', 'process' => 'TSMC n6 (7nm)', 'years' => '2022+', @@ -18102,24 +18110,30 @@ 'years' => '2022+', }, {'arch' => 'Gen-13', - 'ids' => 'a720|a721|a74d|a780|a781|a782|a783|a788|a789|a78a|a78b|a7a0|a7a1|' . - 'a7a8|a7a9|a7aa|a7ab|a7ac|a7ad', + 'ids' => 'a70d|a720|a721|a74d|a780|a781|a782|a783|a788|a789|a78a|a78b|a7a0|' . + 'a7a1|a7a8|a7a9|a7aa|a7ab|a7ac|a7ad', 'code' => '', 'process' => 'Intel 7 (10nm)', 'years' => '2022+', }, - {'arch' => 'Gen-14', + {'arch' => 'Gen-13', 'ids' => '7d40|7d45|7d55|7d60|7dd5', 'code' => '', 'process' => 'Intel 4 (7nm+)', 'years' => '2023+', }, - {'arch' => 'Gen-15', - 'ids' => '7d51|7d67|7dd1', + {'arch' => 'Gen-14', + 'ids' => '6420|64a0|64b0', 'code' => '', 'process' => 'TSMC 3nm', 'years' => '2024+', }, + {'arch' => 'Gen-15', + 'ids' => '7d41|7d51|7d67|7dd1', + 'code' => '', + 'process' => 'TSMC 3nm?', + 'years' => '2025+', + }, ]; } @@ -18380,13 +18394,14 @@ '1f07|1f08|1f0a|1f0b|1f10|1f11|1f12|1f14|1f15|1f36|1f42|1f47|1f50|1f51|1f54|' . '1f55|1f76|1f82|1f83|1f91|1f95|1f96|1f97|1f98|1f99|1f9c|1f9d|1f9f|1fa0|1fb0|' . '1fb1|1fb2|1fb6|1fb7|1fb8|1fb9|1fba|1fbb|1fbc|1fdd|1ff0|1ff2|1ff9|2182|2184|' . - '2187|2188|2189|2191|2192|21c4|21d1|25a6|25a7|25a9|25aa|25ad|25ed|28b8|28f8', + '2187|2188|2189|2191|2192|21c4|21d1|25a6|25a7|25a9|25aa|25ad|25ed|28b0|28b8|' . + '28f8', 'code' => 'TUxxx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC 12nm FF', 'release' => '', - 'series' => '545.xx+', + 'series' => '550.xx+', 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', 'years' => '2018-2022', @@ -18396,21 +18411,21 @@ '2204|2206|2207|2208|220a|220d|2216|2230|2231|2232|2233|2235|2236|2237|2238|' . '2414|2420|2438|2460|2482|2484|2486|2487|2488|2489|248a|249c|249d|24a0|24b0|' . '24b1|24b6|24b7|24b8|24b9|24ba|24bb|24c7|24c9|24dc|24dd|24e0|24fa|2503|2504|' . - '2507|2508|2520|2521|2523|2531|2544|2560|2563|2571|2582|25a0|25a2|25a5|25ab|' . - '25ac|25b6|25b8|25b9|25ba|25bb|25bc|25bd|25e0|25e2|25e5|25ec|25f9|25fa|25fb|' . - '2838', + '2507|2508|2520|2521|2523|2531|2544|2560|2563|2571|2582|2584|25a0|25a2|25a5|' . + '25ab|25ac|25b6|25b8|25b9|25ba|25bb|25bc|25bd|25e0|25e2|25e5|25ec|25f9|25fa|' . + '25fb|2838', 'code' => 'GAxxx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC n7 (7nm)', 'release' => '', - 'series' => '545.xx+', + 'series' => '550.xx+', 'status' => main::message('nv-current-eol',$date,'2026-12-xx'), 'xorg' => '', 'years' => '2020-2023', }, {'arch' => 'Hopper', - 'ids' => '2321|2322|2324|2330|2331|2339|233a|2342', + 'ids' => '2321|2322|2324|2329|2330|2331|2339|233a|2342', 'code' => 'GH1xx', 'kernel' => '', 'legacy' => 0, @@ -18422,15 +18437,15 @@ 'years' => '2022+', }, {'arch' => 'Lovelace', - 'ids' => '2684|2685|26b1|26b2|26b3|26b5|26b9|26ba|2704|2705|2717|2730|2757|' . - '2770|2782|2783|2786|27a0|27b0|27b1|27b2|27b6|27b8|27ba|27bb|27e0|27fb|2803|' . - '2805|2820|2860|2882|28a0|28a1|28e0|28e1', + 'ids' => '2684|2685|26b1|26b2|26b3|26b5|26b9|26ba|2702|2704|2705|2709|2717|' . + '2730|2757|2770|2782|2783|2786|2788|27a0|27b0|27b1|27b2|27b6|27b8|27ba|27bb|' . + '27e0|27fb|2803|2805|2808|2820|2860|2882|28a0|28a1|28b9|28ba|28bb|28e0|28e1', 'code' => 'AD1xx', 'kernel' => '', 'legacy' => 0, 'process' => 'TSMC n4 (5nm)', 'release' => '', - 'series' => '545.xx+', + 'series' => '550.xx+', 'status' => $status_current, 'xorg' => '', 'years' => '2022+', @@ -20751,7 +20766,6 @@ my $j = scalar @$rows; my $num = 0; my $services; - PsData::set_cmd() if !$loaded{'ps-cmd'}; PsData::set_network(); if (@{$ps_data{'network-services'}}){ main::make_list_value($ps_data{'network-services'},\$services,',','sort'); @@ -20759,7 +20773,6 @@ else { $services = main::message('network-services'); } - push(@$rows,{ main::key($num++,1,1,'Info') => '', main::key($num++,0,2,'services') => $services, @@ -21372,6 +21385,7 @@ # $file = "$fake_data_dir/block-devices/df/df-kT-wrapped-1.txt"; # @partitions_working = main::reader($file); } + # NOTE: add push(@partitions_working,'data') here to emulate item; match unmounted # print Data::Dumper::Dumper \@partitions_working; # Determine positions if (@partitions_working){ @@ -21459,6 +21473,7 @@ ($b_fs && ($row[2] == 0 || $row[1] =~ /^(autofs|devtmpfs|iso9660|tmpfs)$/))){ next; } + # print "row 0:", $row[0],"\n"; # cygwin C:\cygwin passes this test so has to be handled later if ($row[0] =~ /^\/dev\/|:\/|\/\//){ # this could point to by-label or by-uuid so get that first. In theory, abs_path should @@ -21480,6 +21495,15 @@ $temp =~ s|^/.*/||; $dev_mapped = $dmmapper{$temp}; } + elsif ($bsd_type && $row[0] =~ m|^/dev/gpt[^/]*/|){ + my $temp1 = $row[0]; + $temp1 =~ s|^/dev/||; + my $temp2 = GlabelData::get($temp1); + if ($temp2 && $temp2 ne $temp1){ + $dev_mapped = $row[0]; + $row[0] = $temp2; + } + } $dev_base = $row[0]; $dev_base =~ s|^/.*/||; $part = LsblkData::get($dev_base) if @lsblk; @@ -21664,7 +21688,7 @@ } else { if ($path = main::check_program('swapctl')){ - # output in in KB blocks + # output in in KB blocks$mount @working = main::grabber("$path -l -k 2>/dev/null"); } ($size_id,$used_id) = (1,2); @@ -21674,16 +21698,16 @@ # now add the swap partition data, don't want to show swap files, just partitions, # though this can include /dev/ramzswap0. Note: you can also use /proc/swaps for this # data, it's the same exact output as swapon -s - foreach (@working){ + foreach my $line (@working){ #next if ! /^\/dev/ || /^\/dev\/(ramzwap|zram)/; - next if /^(Device|Filename|no swap)/; + next if $line =~ /^(Device|Filename|no swap)/; ($block_size,$dev_base,$dev_mapped,$dev_type,$label,$maj_min,$mount, $swap_type,$uuid) = ('','','','','','','','partition',''); ($priority,$zram_comp_avail,$zram_comp,$zram_mcs) = (); - @data = split(/\s+/, $_); + @data = split(/\s+/, $line); # /dev/zramX; ramzswapX == compcache, legacy version of zram. # /run/initramfs/dev/zram0; /dev/ramzswap0 - if (/^\/(dev|run).*?\/((compcache|ramzwap|zram)\d+)/i){ + if ($line =~ /^\/(dev|run).*?\/((compcache|ramzwap|zram)\d+)/i){ $dev_base = $2; $swap_type = 'zram'; $dev_type = 'dev'; @@ -21694,7 +21718,7 @@ elsif ($data[1] && $data[1] eq 'ram'){ $swap_type = 'ram'; } - elsif (m|^/dev|){ + elsif ($line =~ m|^/dev|){ $swap_type = 'partition'; $dev_base = $data[0]; $dev_base =~ s|^/dev/||; @@ -21710,8 +21734,17 @@ } } else { + my $part_id = $dev_base; + if ($dev_base =~ m|^gpt[^/]*/|){ + my $temp = GlabelData::get($dev_base); + if ($temp && $temp ne $dev_base){ + $dev_mapped = '/dev/' . $dev_base; + $part_id = $dev_base = $temp; + $mount = '/dev/' . $temp; + } + } if ($show{'label'} || $show{'uuid'}){ - my $temp = DiskDataBSD::get($data[0]); + my $temp = DiskDataBSD::get($part_id); $block_size = $temp->{'logical-block-size'}; $label = $temp->{'label'}; $uuid = $temp->{'uuid'}; @@ -21727,7 +21760,7 @@ # swpaon -s: /dev/sdb1 partition 16383996 109608 -2 # swapctl -l -k: /dev/label/swap0.eli 524284 154092 # users could have space in swapfile name - if (/^($pattern2)\s+($pattern1)\s+/){ + if (!$mount && $line =~ /^($pattern2)\s+($pattern1)\s+/){ $mount = main::trimmer($1); } $size = $data[$size_id]; @@ -23233,50 +23266,50 @@ sub zfs_data { eval $start if $b_log; my ($zpool) = @_; - my (@components,@zfs); + my (@data,@zfs); my ($allocated,$free,$size,$size_holder,$status,$zfs_used,$zfs_avail, - $zfs_size,@working); + $zfs_size); my $b_v = 1; my ($i,$j,$k) = (0,0,0); if ($fake{'raid-zfs'}){ - # my $file; + my $file; # $file = "$fake_data_dir/raid-logical/zfs/zpool-list-1-mirror-main-solestar.txt"; # $file = "$fake_data_dir/raid-logical/zfs/zpool-list-2-mirror-main-solestar.txt"; # $file = "$fake_data_dir/raid-logical/zfs/zpool-list-v-tank-1.txt"; # $file = "$fake_data_dir/raid-logical/zfs/zpool-list-v-gojev-1.txt"; # $file = "$fake_data_dir/raid-logical/zfs/zpool-list-v-w-spares-1.txt"; - #@working = main::reader($file);$zpool = ''; + $file = "$fake_data_dir/raid-logical/zfs/zpool-list-v-freebsd-linear-1.txt"; + @data = main::reader($file);$zpool = ''; } else { - @working = main::grabber("$zpool list -v 2>/dev/null"); + @data = main::grabber("$zpool list -v 2>/dev/null"); } # bsd sed does not support inserting a true \n so use this trick # some zfs does not have -v - if (!@working){ - @working = main::grabber("$zpool list 2>/dev/null"); + if (!@data){ + @data = main::grabber("$zpool list 2>/dev/null"); $b_v = 0; } my $zfs_path = main::check_program('zfs'); - # print Data::Dumper::Dumper \@working; - main::log_data('dump','@working',\@working) if $b_log; - if (!@working){ + # print 'zpool @data: ', Data::Dumper::Dumper \@data; + main::log_data('dump','@data',\@data) if $b_log; + if (!@data){ main::log_data('data','no zpool list data') if $b_log; eval $end if $b_log; return (); } my ($status_i) = (0); # NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT - my $test = shift @working; # get rid of first header line + my $test = shift @data; # get rid of first header line if ($test){ foreach (split(/\s+/, $test)){ last if $_ eq 'HEALTH'; $status_i++; } } - foreach (@working){ + foreach (@data){ my @row = split(/\s+/, $_); if (/^[\S]+/){ - @components = (); $i = 0; $size = ($row[1] && $row[1] ne '-') ? main::translate_size($row[1]): ''; $allocated = ($row[2] && $row[2] ne '-')? main::translate_size($row[2]): ''; @@ -23332,6 +23365,8 @@ # A single device not in an array: # ada0s2 25.9G 14.6G 11.3G - 0% 56% # gptid/3838f796-5c46-11e6-a931-d05099ac4dc2 - - - - - - + # A single device not in an array: + # ada0p4 5G 3.88G 633M - - 49% 86.3% - ONLINE # Using /dev/disk/by-id: # ata-VBOX_HARDDISK_VB5b6350cd-06618d58 # Using /dev/disk/by-partuuid: @@ -23340,29 +23375,41 @@ # /home/fred/zvol/hdd-2-3 - - - - - - - - INUSE elsif ($row[1] =~ /^(sd[a-z]+|[a-z0-9]+[0-9]+|([\S]+)\/.*|(ata|mmc|nvme|pci|scsi|wwn)-\S+|[a-f0-9]{4,}(-[a-f0-9]{4,}){3,})$/ && ($row[2] eq '-' || $row[2] =~ /^[0-9\.]+[MGTPE]$/)){ + shift @row if !$row[0]; # get rid of empty first column + # print Data::Dumper::Dumper \@row; + # print 'status-i: ', $row[$status_i], ' row0: ', $row[0], "\n"; + my ($maj_min,$real,$part_size,$state,$working); #print "r1:$row[1]",' :: ', Cwd::abs_path('/dev/disk/by-id/'.$row[1]), "\n"; - $row[1] =~ /^(sd[a-z]+|[a-z0-9]+[0-9]+|([\S]+)\/.*|(ata|mmc|nvme|pci|scsi|wwn)-\S+|[a-f0-9]{4,}(-[a-f0-9]{4,}){3,})\s.*?(DEGRADED|FAULTED|INUSE|OFFLINE)?$/; - #my $working = ''; - my $working = ($1) ? $1 : ''; # note: the negative case can never happen - my $state = ($4) ? $4 : ''; - my ($maj_min,$real,$part_size); - if ($bsd_type && $working =~ /[\S]+\//){ - $working = GlabelData::get($working); - } - elsif (!$bsd_type && $row[1] =~ /^(ata|mmc|nvme|scsi|wwn)-/ && - -e "/dev/disk/by-id/$row[1]" && ($real = Cwd::abs_path('/dev/disk/by-id/'.$row[1]))){ - $real =~ s|/dev/||; - $working = $real; - } - elsif (!$bsd_type && $row[1] =~ /^(pci)-/ && - -e "/dev/disk/by-path/$row[1]" && ($real = Cwd::abs_path('/dev/disk/by-path/'.$row[1]))){ - $real =~ s|/dev/||; - $working = $real; - } - elsif (!$bsd_type && $row[1] =~ /^[a-f0-9]{4,}(-[a-f0-9]{4,}){3,}$/ && - -e "/dev/disk/by-partuuid/$row[1]" && ($real = Cwd::abs_path('/dev/disk/by-partuuid/'.$row[1]))){ - $real =~ s|/dev/||; - $working = $real; + if ($row[0] =~ /^(sd[a-z]+|[a-z0-9]+[0-9]+|([\S]+)\/.*|(ata|mmc|nvme|pci|scsi|wwn)-\S+|[a-f0-9]{4,}(-[a-f0-9]{4,}){3,})$/){ + $working = $1; # note: the negative case can never happen + } + # We only care about non ONLINE states for components + if ($status_i && $row[$status_i] && + $row[$status_i] =~ /^(DEGRADED|FAULTED|INUSE|OFFLINE)$/){ + $state = $1; + } + if ($bsd_type){ + if ($working =~ /[\S]+\//){ + my $temp = GlabelData::get($working); + $working = $temp if $temp; + } + } + elsif (!$bsd_type){ + if ($row[0] =~ /^(ata|mmc|nvme|scsi|wwn)-/ && + -e "/dev/disk/by-id/$row[0]" && ($real = Cwd::abs_path('/dev/disk/by-id/'.$row[0]))){ + $real =~ s|/dev/||; + $working = $real; + } + elsif ($row[0] =~ /^(pci)-/ && + -e "/dev/disk/by-path/$row[0]" && ($real = Cwd::abs_path('/dev/disk/by-path/'.$row[0]))){ + $real =~ s|/dev/||; + $working = $real; + } + elsif ($row[0] =~ /^[a-f0-9]{4,}(-[a-f0-9]{4,}){3,}$/ && + -e "/dev/disk/by-partuuid/$row[0]" && ($real = Cwd::abs_path('/dev/disk/by-partuuid/'.$row[0]))){ + $real =~ s|/dev/||; + $working = $real; + } } # kind of a hack, things like cache may not show size/free # data since they have no array row, but they might show it in @@ -23370,18 +23417,18 @@ # ada0s2 25.9G 19.6G 6.25G - 0% 75% # ec399377-c03c-e844-a876-8c8b044124b8 1.88G 397M 1.49G - - 0% 20.7% - ONLINE # keys were size/allocated/free but those keys don't exist, assume failed to add raw- - if (!$zfs[$j]->{'raw-size'} && $row[2] && $row[2] ne '-'){ - $size = ($row[2]) ? main::translate_size($row[2]): ''; + if (!$zfs[$j]->{'raw-size'} && $row[1] && $row[1] ne '-'){ + $size = ($row[1]) ? main::translate_size($row[1]): ''; $size_holder = 0; $zfs[$j]->{'arrays'}[$k]{'raw-size'} = $size; $raw_logical[0] += $size if $size; } - if (!$zfs[$j]->{'raw-allocated'} && $row[3] && $row[3] ne '-'){ - $allocated = ($row[3]) ? main::translate_size($row[3]) : ''; + if (!$zfs[$j]->{'raw-allocated'} && $row[2] && $row[2] ne '-'){ + $allocated = ($row[2]) ? main::translate_size($row[2]) : ''; $zfs[$j]->{'arrays'}[$k]{'raw-allocated'} = $allocated; } - if (!$zfs[$j]->{'raw-free'} && $row[4] && $row[4] ne '-'){ - $free = ($row[4]) ? main::translate_size($row[4]) : ''; + if (!$zfs[$j]->{'raw-free'} && $row[3] && $row[3] ne '-'){ + $free = ($row[3]) ? main::translate_size($row[3]) : ''; $zfs[$j]->{'arrays'}[$k]{'raw-free'} = $free; } if ((!$maj_min || !$part_size) && $working && @proc_partitions){ @@ -23400,6 +23447,10 @@ my $temp = DiskDataBSD::get($working); $part_size = $temp->{'size'} if $temp->{'size'}; } + # with linear zfs, can show full partition size data + if (!$part_size && $working && $row[1] && $row[1] ne '-'){ + $part_size = main::translate_size($row[1]); + } $raw_logical[1] += $part_size if $part_size; $zfs[$j]->{'arrays'}[$k]{'components'}[$i] = [$working,$part_size,$maj_min,$state]; $i++; @@ -26837,7 +26888,7 @@ $type = 'network'; } # put last just in case some other sensor type above had intel in name - elsif ($adapter =~ /^(amdgpu|intel|nouveau|radeon)-/){ + elsif ($adapter =~ /^(amdgpu|intel|nova|nouveau|radeon)-/){ $type = 'gpu'; } elsif ($adapter =~ /^(acpitz)-/ && $adapter !~ /^(acpitz-virtual)-/ ){ @@ -26937,7 +26988,7 @@ $type = 'network'; } # put last just in case some other sensor type above had intel in name - elsif ($name =~ /^(amdgpu|intel|nouveau|radeon)/){ + elsif ($name =~ /^(amdgpu|intel|nova|nouveau|radeon)/){ $type = 'gpu'; } # not confirmed in /sys that name will be acpitz-virtual, verify @@ -27459,7 +27510,7 @@ foreach my $adapter (keys %{$sensors_raw->{'gpu'}}){ $j = scalar @$gpu_data; $gpu_data->[$j]{'type'} = $adapter; - $gpu_data->[$j]{'type'} =~ s/^(amdgpu|intel|nouveau|radeon)-.*/$1/; + $gpu_data->[$j]{'type'} =~ s/^(amdgpu|intel|nouveau|nova|radeon)-.*/$1/; # print "ad: $adapter\n"; foreach (@{$sensors_raw->{'gpu'}{$adapter}}){ # print "val: $_\n"; @@ -27899,7 +27950,9 @@ $rows->[$j]{main::key($num++,0,3,'max-streams')} = $row->{'zram-max-comp-streams'}; } } - $row->{'mount'} =~ s|/home/[^/]+/(.*)|/home/$filter_string/$1| if $row->{'mount'} && $use{'filter'}; + if ($row->{'mount'} && $use{'filter'}){ + $row->{'mount'} =~ s|/home/[^/]+/(.*)|/home/$filter_string/$1|; + } $rows->[$j]{main::key($num++,1,2,$dev)} = ($row->{'mount'}) ? $row->{'mount'} : 'N/A'; if ($b_admin && $row->{'maj-min'}){ $rows->[$j]{main::key($num++,0,3,'maj-min')} = $row->{'maj-min'}; @@ -28053,6 +28106,7 @@ PartitionItem::set_partitions() if !$loaded{'set-partitions'}; RaidItem::raid_data() if !$loaded{'raid'}; my $mounted = get_mounted(); + # NOTE: add push(@$mounted,'data') here to emulate item, match partition data # print join("\n",(@filters,@$mounted)),"\n"; foreach my $row (@proc_partitions){ ($dev_mapped,$fs,$label,$maj_min,$uuid,$size) = ('','','','','',''); @@ -28069,13 +28123,16 @@ # remove from list. this only works for sdxx drives, but is better than no fix # This logic may also end up working for btrfs partitions, and maybe hammer? # In arm/android seen /dev/block/mmcblk0p12 + # @filters test separate since it contains regex list, @$mounted can contain + # regex special characters like GDRIVE{6Cm8i}: # print "mount: $row->[-1]\n"; if ($row->[-1] !~ /^(nvme[0-9]+n|mmcblk|mtdblk|mtdblock)[0-9]+$/ && $row->[-1] =~ /[a-z][0-9]+$|dm-[0-9]+$/ && $row->[-1] !~ /\bloop/ && - !(grep {$row->[-1] =~ /$_$/} (@filters,@$mounted)) && + !(grep {$row->[-1] =~ /$_$/} @filters) && + !(grep {$row->[-1] =~ /\Q$_\E$/} @$mounted) && !(grep {$_ =~ /(block\/)?$row->[-1]$/} @$mounted) && - !(grep {$_ =~ /^sd[a-z]+$/ && $row->[-1] =~ /^$_[0-9]+/} @$mounted)){ + !(grep {$_ =~ /^sd[a-z]+$/ && $row->[-1] =~ /^\Q$_\E[0-9]+/} @$mounted)){ $dev_mapped = $dmmapper{$row->[-1]} if $dmmapper{$row->[-1]}; if (@lsblk){ my $id = ($dev_mapped) ? $dev_mapped: $row->[-1]; @@ -31124,7 +31181,7 @@ } } } - print Data::Dumper::Dumper \%disks_bsd if $dbg[34]; + print 'dboot disk: ', Data::Dumper::Dumper \%disks_bsd if $dbg[34]; main::log_data('dump','%disks_bsd',\%disks_bsd) if $b_log; eval $end if $b_log; } @@ -31216,7 +31273,7 @@ } } } - print Data::Dumper::Dumper \%disks_bsd if $dbg[34]; + print 'disklabel: ', Data::Dumper::Dumper \%disks_bsd if $dbg[34]; main::log_data('dump', '%disks_bsd', \%disks_bsd) if $b_log; eval $end if $b_log; } @@ -31311,7 +31368,7 @@ } } } - print Data::Dumper::Dumper \%disks_bsd if $dbg[34]; + print 'gpart: ', Data::Dumper::Dumper \%disks_bsd if $dbg[34]; main::log_data('dump', '%disks_bsd', \%disks_bsd) if $b_log; eval $end if $b_log; } @@ -31888,8 +31945,8 @@ $base_distro_arch .= '|talkingarch|theshell|ubos|velt|xero'; my $base_file_debian_version = 'sidux'; # detect debian steamos before arch steamos - my $base_osr_debian_version = '\belive|lmde|neptune|nitrux|parrot|pureos|'; - $base_osr_debian_version .= 'rescatux|septor|sparky|steamos|tails'; + my $base_osr_debian_version = '\belive|blankon|lmde|neptune|nitrux|parrot|'; + $base_osr_debian_version .= 'pureos|rescatux|septor|solyd|sparky|steamos|tails'; my $base_osr_devuan_version = 'crowz|dowse|etertics|\bexe\b|fluxuan|gnuinos|'; $base_osr_devuan_version .= 'gobmis|heads|miyo|refracta|\bstar\b|virage'; # osr has base ids @@ -31897,7 +31954,7 @@ # base only found in issue my $base_issue = 'bunsen'; # synthesize, no direct data available - my $base_manual = 'blankon|deepin|kali'; + my $base_manual = 'deepin|kali'; # osr base, distro id in list of distro files my $base_osr = 'aptosid|bodhi|grml|q4os|siduction|slax|zenwalk'; # osr base, distro id in issue @@ -31984,7 +32041,7 @@ if (!$distro->{'base'} && $lc_issue && $lc_issue =~ /($base_manual)/){ my $id = $1; my %manual = ( - 'blankon' => 'Debian unstable', + # 'blankon' => 'Debian unstable', # use /etc/debian_version 'deepin' => 'Debian unstable', 'kali' => 'Debian testing', ); @@ -32517,18 +32574,19 @@ return $modules; } -## GlabelData: public methods: set(), get() -# Used only to get RAID ZFS gptid path standard name, like ada0p1 +## GlabelData: public methods: get() +# Used to partitions, swap, RAID ZFS gptid path standard name, like ada0p1 { package GlabelData; # gptid/c5e940f1-5ce2-11e6-9eeb-d05099ac4dc2 N/A ada0p1 +# gpt/efiesp N/A ada0p2 sub get { eval $start if $b_log; - my ($gptid) = @_; + my $gptid = $_[0]; set() if !$loaded{'glabel'}; return if !@glabel || !$gptid; - my ($dev_id) = (''); + my $dev_id = ''; foreach (@glabel){ my @temp = split(/\s+/, $_); my $gptid_trimmed = $gptid; @@ -32548,7 +32606,7 @@ eval $start if $b_log; $loaded{'glabel'} = 1; if (my $path = main::check_program('glabel')){ - @glabel = main::grabber("$path status 2>/dev/null"); + @glabel = main::grabber("$path status 2>/dev/null",'','strip'); } main::log_data('dump','@glabel:with Headers',\@glabel) if $b_log; # get rid of first header line @@ -35186,6 +35244,8 @@ 'dawn' => ['^dawn',1,'-v','dawn',0,1,1,'^dawn-',''], # to stderr, not verified 'dcompmgr' => ['^dcompmgr',0,'0','dcompmgr',0,1,0,'',''], # unverified 'deepin' => ['^Version',2,'file','Deepin',0,100,'=','','/etc/deepin-version'], # special + 'deepin-kwin_wayland' => ['^deepin-kwin',2,'--version','deepin-kwin_wayland',0,1,0,'',''],# + 'deepin-kwin_x11' => ['^deepin-kwin',2,'--version','deepin-kwin_x11',0,1,0,'',''],# '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,'',''], # no version @@ -35193,7 +35253,7 @@ 'dusk' => ['^dusk',1,'-v','dusk',0,1,1,'^dusk-',''], # to stderr, not verified 'dtwm' => ['^dtwm',0,'0','dtwm',0,1,0,'',''],# no version 'dwc' => ['^dwc',0,'0','dwc',0,1,0,'',''], # unverified - 'dwl' => ['^dwl',0,'0','dwl',0,1,0,'',''], # unverified + 'dwl' => ['^dwl',1,'-v','dwl',0,1,0,'^dwl-',''], # assume same as dwm 'dwm' => ['^dwm',1,'-v','dwm',0,1,1,'^dwm-',''], 'echinus' => ['^echinus',1,'-v','echinus',0,1,1,'',''], # echinus-0.4.9 (c)... # only listed here for compositor values, version data comes from xprop @@ -35264,7 +35324,7 @@ 'lxqt-session' => ['^lxqt-session',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,'',''], - 'mahogany' => ['^mahogany',0,'0','Mahogany',0,1,0,'',''], # unverified + 'mahogany' => ['^mahogany',0,'0','Mahogany',0,1,0,'',''], # unverified, from stumpwm 'manokwari' => ['^manokwari',0,'0','Manokwari',0,1,0,'',''], 'marina' => ['^marina',0,'0','Marina',0,1,0,'',''], # unverified 'marco' => ['^marco',2,'--version','marco',0,1,0,'',''], @@ -35667,17 +35727,18 @@ ## PsData # public methods: -# set_cmd(): sets @ps_aux, @ps_cmd +# set(): sets @ps_aux, @ps_cmd # set_dm(): sets $ps_data{'dm-active'} # set_de_wm(): sets -S/-G de/wm/comp/tools items +# set_network(): sets -na network services # set_power(): sets -I $ps_data{'power-services'} { package PsData; -sub set_cmd { +sub set { eval $start if $b_log; my ($b_busybox,$header,$ps,@temp); - $loaded{'ps-cmd'} = 1; + $loaded{'ps-data'} = 1; my $args = 'wwaux'; my $path = main::check_program('ps'); my $link = readlink($path); @@ -35699,11 +35760,15 @@ } $ps_data{'header'}->[0] = $#temp; # the indexes, not the scalar count for (my $i = 0; $i <= $#temp; $i++){ - if ($temp[$i] eq 'PID'){$ps_data{'header'}->[1] = $i;} - elsif ($temp[$i] eq '%CPU'){$ps_data{'header'}->[2] = $i;} + if ($temp[$i] eq 'PID'){ + $ps_data{'header'}->[1] = $i;} + elsif ($temp[$i] eq '%CPU'){ + $ps_data{'header'}->[2] = $i;} # note: %mem is percent used - elsif ($temp[$i] eq '%MEM'){$ps_data{'header'}->[3] = $i;} - elsif ($temp[$i] eq 'RSS'){$ps_data{'header'}->[4] = $i;} + elsif ($temp[$i] eq '%MEM'){ + $ps_data{'header'}->[3] = $i;} + elsif ($temp[$i] eq 'RSS'){ + $ps_data{'header'}->[4] = $i;} } # we want more data from ps busybox, to get TinyX screen res my $cols_use = ($b_busybox) ? 7 : 2; @@ -35725,6 +35790,8 @@ # should NOT be happening, except on busybox ps, which has no ww. next if !defined $split[$ps_data{'header'}->[0]]; # we don't want zombie/system/kernel processes, or servers, browsers. + # but we do want network kernel process servers [nfsd] + $split[$ps_data{'header'}->[0]] =~ s/^\[(mld|nfsd)\]/$1/; if ($split[$ps_data{'header'}->[0]] !~ /^([\[\(]|(\S+\/|)($pattern))/i){ push(@ps_cmd,join(' ', @split[$ps_data{'header'}->[0] .. $final])); } @@ -35786,9 +35853,9 @@ } if ($b_de_wm_comp){ process_items(\@{$ps_data{'de-wm-compositors'}},join('|',qw(budgie-wm compiz - deepin-wm enlightenment gala gnome-shell twin kwin_wayland kwin_x11 kwinft kwin - marco deepin-metacity metacity metisse mir moksha muffin deepin-mutter mutter - ukwm xfwm[345]?))); + deepin-kwin_wayland deepin-kwin_x11 deepin-wm enlightenment gala gnome-shell + twin kwin_wayland kwin_x11 kwinft kwin marco deepin-metacity metacity + metisse mir moksha muffin deepin-mutter mutter ukwm xfwm[345]?))); } if ($b_wm_comp){ # x11: 3dwm, qtile [originally], rest wayland @@ -35823,8 +35890,9 @@ # Generate tools: power manager daemons, then screensavers/lockers. # Note that many lockers may not be services @{$ps_data{'tools-test'}}=qw(away boinc-screensaver budgie-screensaver - cinnamon-screensaver gnome-screensaver gsd-screensaver-proxy gtklock i3lock - kscreenlocker light-locker lockscreen lxlock mate-screensaver nwg-lock + cinnamon-screensaver gnome-screensaver gsd-screensaver-proxy gtklock + hyprlock i3lock kscreenlocker light-locker lockscreen lxlock + mate-screensaver nwg-lock physlock rss-glx slock swayidle swaylock ukui-screensaver unicode-screensaver xautolock xfce4-screensaver xlock xlockmore xscreensaver xscreensaver-systemd xsecurelock xss-lock xtrlock); @@ -35848,7 +35916,7 @@ eval $start if $b_log; process_items(\@{$ps_data{'network-services'}},join('|', qw(apache\d? cC]onn[mM]and? dhcpd dhcpleased fingerd ftpd gated httpd inetd ircd iwd - [mM]odem[mM]nager named networkd-dispatcher [nN]etwork[mM]anager nfsd nginx + mld [mM]odem[mM]nager named networkd-dispatcher [nN]etwork[mM]anager nfsd nginx ntpd proftpd routed smbd sshd systemd-networkd systemd-timesyncd tftpd wicd wpa_supplicant xinetd xntpd))); print '$ps_data{network-daemons}: ', Data::Dumper::Dumper $ps_data{'network-services'} if $dbg[5]; @@ -37734,13 +37802,12 @@ sub generate { eval $start if $b_log; my ($item,%checks); - PsData::set_cmd() if !$loaded{'ps-cmd'}; + PsData::set() if !$loaded{'ps-data'}; main::set_sysctl_data() if $use{'sysctl'}; main::set_dboot_data() if $bsd_type && !$loaded{'dboot'}; # note: ps aux loads before logging starts, so create debugger data here if ($b_log){ # With logging, we already get ps wwwaux so no need to get it again here - # main::log_data('dump','@ps_aux',\@ps_aux); main::log_data('dump','@ps_cmd',\@ps_cmd); } print Data::Dumper::Dumper \@ps_cmd if $dbg[61]; diff -Nru inxi-3.3.33-1/inxi.1 inxi-3.3.34-1/inxi.1 --- inxi-3.3.33-1/inxi.1 2024-02-07 03:38:03.000000000 +0000 +++ inxi-3.3.34-1/inxi.1 2024-04-14 02:49:33.000000000 +0000 @@ -15,7 +15,7 @@ .\" with this program; if not, write to the Free Software Foundation, Inc., .\" 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. .\" -.TH INXI 1 "2024\-02-06"inxi" "inxi manual" +.TH INXI 1 "2024\-04-13"inxi" "inxi manual" .SH NAME inxi \- Command line system information script for console and IRC diff -Nru inxi-3.3.33-1/inxi.changelog inxi-3.3.34-1/inxi.changelog --- inxi-3.3.33-1/inxi.changelog 2024-02-07 03:38:03.000000000 +0000 +++ inxi-3.3.34-1/inxi.changelog 2024-04-14 02:49:33.000000000 +0000 @@ -1,4 +1,163 @@ ================================================================================ +Version: 3.3.34 +Patch: 00 +Date: 2024-04-13 +-------------------------------------------------------------------------------- +RELEASE NOTES: +-------------------------------------------------------------------------------- + +This is a nice point release that corrects and updates numerous smaller, and +larger, features. Most pressing in terms of numbers affected was the failure +to detect in display, non console, for Wayland without Xwayland running. But +updates will impact a fairly wide range of systems, though mostly are corner +case issues, but inxi is all about handling corner cases to make the handliing +of core stuff more robust and less prone to failure or error. + +-------------------------------------------------------------------------------- +SPECIAL THANKS: + +1. RAID: Codeberg issue #301 from olegStreejak helped expose a long standing set +of ZFS components bugs. This was superficially exposed by an unexpected +undefined value error in -o/--unmounted. + +2. PARTITIONS/SWAP: again raised in issue #301, partitions failed to handle +/dev/gpt/[gpt-lable] syntax, leading to undetected mounted partitions showwing +in unmounted, and label/uuid not working. + +3. UNMOUNTED: codeberg user kysh in issue #302 found a corner case that exposed +bug 2, using raw data as regex pattern, without protecting it. But most +important, he took the time to report it. + +-------------------------------------------------------------------------------- +KNOWN ISSUES: + +1. GRAPHICS/CPU: Intel data is really hard to track, and getting solid lists +of their gpu vs cpu generations is almost impossible, so these are just going +to lag a year or two fairly consistently. They also keep jumbling marketing +names up with physical hardware, making it even more difficult. + +-------------------------------------------------------------------------------- +BUGS: + +1. RAID: zfs_data(): a series of small glitches led to certain cases of BSD +RAID ZFS component data generating undefined value errors in unexpected places. + +The bug and fixes required some careful corrections since there were more than +1 present, a bad regex pattern. + +2. UNMOUNTED: weak regex fails when mount line item contains regex special +characters in its string, like: GDRIVE{**6Cm8i**}. Thanks codeberg issue poster +#302 for reporting this failure. This was already handled correctly in +partitions, so this was just an oversight. + +Solution was to pull apart some combined test arrays, and then use \Q$_\E +wrappers in the regex. Obviously using raw system data in a regex when you don't +know what it can contain was always a mistake, but this one just slipped by +since that syntax is not common. + +-------------------------------------------------------------------------------- +FIXES: + +1. DRIVES: DiskItem::disk_vendor(): Fixed an overly loose SanDisk vendor ID that +led to a Seagate ST8000DM004-2CX188_WCT193ZX being ID'ed as a SanDisk. The +culprit was forgetting the 'starts with ^ in: +^X[1-6]\d{2} +Thanks Codebergy issue poster thatso in issue #299 for pointing this out. + +2. NETWORK: services: was missing nfsd because it's a kernel process, that's +corrected. Showed as: [nfsd] + +3. MAIN: primary DISPLAY test fails to check for WAYLAND_DISPLAY and other +desktop session environmental variables only present if X/Wayland are running +current display. This led to $b_display not getting set when for example Wayland +in Sway without Xwayland, so no $DISPLAY set. + +4. GlabelData: glabel status will right align column 1, which is not obvious +unless you have something like this: + gpt/bootfs N/A ada0p1 +gptid/67d1a56b-7fb2-11ee-a7ba-002590ec5bf2 N/A ada0p1 + gpt/efiesp N/A ada0p2 + +This led to the expected splits being off by one. Fix is using 'strip' in +main::grabber. + +5. BSD: PARTITIONS/SWAP: failed to get mapped gpt data, which led to more false +unmounted issues. These were exposed in codeberg issue #301. Added explicit +detections for /dev/gtp[^\]*/ which means relying on that literal path to be +present. Note that can be gpt or gptid, the latter if it's a UUID type string. + +This also led to failures for UUID and LABEL for partitions and swap. + +6. SYSTEM: DistroData: changed blankon to use system base from debian_version +file version. Had as manual before, but when install gets old, that's deceptive +since it will be an ancient Debian sid. Better to call it what it is in the +actual install. + +-------------------------------------------------------------------------------- +ENHANCEMENTS: + +1a. SYSTEM: DesktopData: Added support for yet another Deepin window manager, +deepin-kwin_x11. Also for deepin-kwin_wayland. + +1b. SYSTEM: DesktopData: Added support for hyprlock, hyprland's screenlocker. + +1c. SYSTEM: DistroData: Added support for SolyD system base Debian detection. + +2. NETWORK: services: added mld. As with nfsd, it's a kernel process: [mld] + +3a. GRAPHICS: GPU DATA: added more gpu ids for nvidia, amd, intel. + +3b. GRAPHICS: Xorg drivers: added possible future rust nvidia nova driver. Not +in kernel yet but may be. Also added in various filter lists just in case. +Search for'nouveau' to find occurances. + +4. CPU: Added more AMD, Intel CPU Ids. The Intel stuff is getting really +difficult to track, they refuse to adopt sane family updates, keeping it always +at 6, and thus cram more and more into finite 2 hexadecimal numbers, leaving +marketing terms in place of actual die process engineering. There's only so much +I can do to work around this, so if you find errors, do the research, and submit +corrections, keeping in mind these things are super fuzzy. + +5. DRIVES: More disk vendors, the endless list. Unhandled list grows slowly, +maybe one day someone will step in and figure out what more of them are, +assuming they have a unique name string of course. + +-------------------------------------------------------------------------------- +CHANGES: + +1. No Changes. + +-------------------------------------------------------------------------------- +DOCUMENTATION: + +1a. DOCS: inxi-network.txt: added notes for nfsd, mld + +1b. DOCS: inxi-desktop.txt: added de wm deepin-kwin_x11, deepin-kwin_wayland. + +1c. DOCS: inxi-power.txt: added hyperlock. + +2. DATA: data/machine/elbrus/sets: added bootdata/fruid sets. These are from a +while back but were not labeled consistently, so sorted them into what are +hopefully actual pairs of data files. + +-------------------------------------------------------------------------------- +CODE: + +1. PsData: Changed set_cmd() to set(), since all ps data is being set, not just +@ps_cmd. Changed $loaded{'ps-cmd'} to $loaded{'ps-data'} for same reason. Also +removed redundant check for loaded, and moved first load to IRC test, if not IRC +type scenario, then loads right before building the items. + +2. RAID: zfs_data(): cleaned up to make more debuggable ZFS component data. Some +of the items would never have worked due to bad regex, and also simplified by +shifting empty index 0 from @row to make values same as top sections for main +ZFS Array data. The regex was simply too convoluted to work reliably, so it +failed under certain cases, FreeBSD Linear ZFS mode for example. + +-------------------------------------------------------------------------------- +-- Harald Hope - Sat, 13 March 2024 19:00:08 -0800 + +================================================================================ Version: 3.3.33 Patch: 00 Date: 2024-02-06