diff options
Diffstat (limited to 'inxi.changelog')
| -rw-r--r-- | inxi.changelog | 797 |
1 files changed, 797 insertions, 0 deletions
diff --git a/inxi.changelog b/inxi.changelog index 57f7612..08f21c4 100644 --- a/inxi.changelog +++ b/inxi.changelog @@ -1,4 +1,801 @@ ================================================================================ +Version: 3.3.32 +Patch: 00 +Date: 2024-01-30 +-------------------------------------------------------------------------------- +RELEASE NOTES: +-------------------------------------------------------------------------------- + +PACKAGERS: The code repo for inxi is codeberg.org/smxi/inxi. If you have not yet +changed your packaging source url, you will need to do that. I have extended for +a few months the mirror of codeberg inxi to github, but I will turn that mirror +off fairly soon. The pinxi inxi-perl branch mirror is already turned off. + +-------------------------------------------------------------------------------- + +This is a massive upgrade, featuring many core tool refactors, leading to +significantly enhanced abilities to debug and add support for various features, +particularly desktop type data, but any software type version reports as well. + +Many parts of the core logic have been touched, and the testing has been the +most vigorous in recent memory, thanks to antiX and Slackware, and mrmazda, in +particular for their significant help making these new features and upgrades +far less buggy out of the box than would have otherwise been possible. + +* Finally, a reasonable quality RAM report for Linux with dmi table RAM data, +without needing dmidecode or root! Uses udevadm, which despite some fairly +significant weak poinots, is ok, except for issues like module voltage, which +are stuck at a false value of 1. Also multi memory array system boards have poor +to no native handling, so inxi tries to work around that failing. + +* A big improvement in ability to match xrandr X port ID to DRM port IDs, using +a stable value found in each. This has been a long standing weak spot for multi +monitor display IDs. + +* Power data, for suspend/hibernate, screensavers, closes a recent issue #292 +from chromer030. This also extended to running power daemons, and in -S, Desktop +report, added screensaver and lockers in tools:. + +* A huge upgrade to all core Desktop/wm data, including new data types, complete +internal refactoring, including of all program version data, ps based data, etc. +This will massively reduce the risk of errors, bugs, etc, in the future, and +also makes debugging and adding support for new de/wm far easier. + +* Note this change: Desktop info: has been repurposed to the new advanced DE +info report (KDE Frameworks only currently), and the old info:, which was never +well named, now is called with:, because it's a report on the various parts, or +components, that make up the de/wm. Also the order was changed in the Desktop +line: Desktop: v: [tk: [v:]] [info: v:] [wm: [v:]] [with:] [tools:] [dm:/lm:]. + +* A big upgrade in the TinyX logic, which should work now to get resolutions for +TinyCore and possibly other tiny x using distros. That includes detections for +all known TinyX servers, not just Xvesa. + +* With TinyX fixes, now has full support for Slitaz, package manager, distro id, +repos. And Alpine Linux was enhanced and upgraded re support as well with these +fixes. + +OPTIONS REMOVAL/DEPRECATION: +To free up upper case single letter options, merged -W with -w and removed -W, +which now trips a removed option error. To prepare for -V being removed, that +shows a deprecated message then the full version. + +Note that if you really care and want -V retained, file an issue, or contact +inxi and say so. It will only really take one person who has a preference to +retain -V to keep it. That will be decided next inxi, if nobody cared, then -V +will be removed. Ideally say why you care, and why typing --vf is too much. + +The use of -W was always an error, forced I think by some options handling +limits of bash. -V was just to have a single letter --version, but I think given +-v is verbosity, -V is actually slightly confusing. Also, single letter options +are in short supply now, and there's no point in wasting them on stuff where +it's not really needed to get fast easy output for features. + +Also removed the long since deprecated --gpu, --nvidia, --nv, were removed, and +will show option removed message. + +-------------------------------------------------------------------------------- +SPECIAL THANKS: + +1. GRAPHICS: Android compositor: Thanks codeberg.org/smxi/inxi issue poster +Mhowser for providing an Android data set from a rooted FxTec Pro1-X phone, +which gave enough info to polish up and add some more Android support. But only +on rooted devices, but Android doesn't let you learn much if the device is not +rooted. That issue is lost because it was put on pinxi issues, before pinxi +was switched to use inxi issues to avoid confusion. + +2. DOCS: data/audio/audio-datasets: mrmazda provided his large collection of +audio data debuggers, which have alsa, systemctl, pulse, etc, debugging data. + +3. ONGOING: mrmazda, for finding and forwarding subtle to not so subtle issues. +See Bugs 4, Fixes 6b. In this case pointed me to the relevant forum posting that +exposed the error, which was enough to track it down. + +4. SYSTEM: DesktopData: The people over at antiX forums were really helpful +finding/testing the new desktop/wm etc logic. Many glitches, errors, bugs, etc, +found and corrected thanks to the excellent testing. ile and abc-nix in +particular found some significant issues that were finally resolved. Also thanks +to Brian Masinick, rokytnji, anticapitalista for helping making antiX for all +these years. + +https://www.antixforum.com/forums/topic/testing-pinxi-next-inxi-user-ram-\ +report-no-root-sudo-and-much-more/ + +5. RAM: The new udevadm was significantly improved and corrected thanks to the +Slackware forums people. As is often the case, when it comes to having complex +non-standard hardware, they came though, and exposed some key problems which let +this new feature come out the door in much better shape than it would otherwise +have done. + +https://www.linuxquestions.org/questions/slackware-14/new-inxi-pinxi-\ +features-user-ram-reports-and-much-more-testers-4175732843/ + +-------------------------------------------------------------------------------- +KNOWN ISSUES: + +1a. SYSTEM: DistroData: no obvious way to detect edubuntu, bunsenlabs, sorry. + +1b. SYSTEM: CompilerVersion::version_proc(): the /proc/version string is far +too unreliable because distros keep making up new syntaxes, which makes regex +parsing fail consistently over time. Ubuntu was the latest culprit. Need a +better data source, ideally from /sys. Latest breaks handled with much looser +regex, but only matter of time before a new string pattern breaks it. + +2. GRAPHICS: No API type data so far for non Xvesa TinyX servers. They don't +seem to support the -list option like Xvesa does. + +3a. CORE: very old busybox ps did not accept any arguments, so will always fail. +However, this is not important since new busybox has supported that for a long +time. + +3b. CORE: in some cases, ps -wwjp $pppid truncates long command names, like +io.elementary.t[erminal]. No idea why since -ww is supposed to make it not +truncate. + +4. CPU: for at least AMD Threadripper 2950x 16 core, 2 die, core counts are +wrong, but since I never got the required data, and can't guess, that will +remain wrong until I get data from a comparable CPU to debug it using the CPU +data pairs required to figure it out. Why people file issues that only their +system data can resolve, then refuse to supply that data, is beyond me, I was +hoping to get away from this type of problem by going to codeberg, but +apparently it's a universal issue. My guess is that for the Zen+ only series, > +1 die, the core numbers were per die, not per physical CPU as with all other +AMDs and Intels. Just a guess though, not going to act on it because fix is very +hard if that's the case, and I won't work on it without the real data. + +5. RAM: udevadm data: + +* For some reason, voltages are reported as 1, for all types, or not at all. +This is almost certainly a bug with udevadm or the way it collects data, so inxi +shows note: check when they are all equal to 1. + +* Unfortunately the udevadm authors neglected to provide RAM array and matching +device handles so we can easily match array to device, and they also totally +neglected reporting on actual arrays found, for systems with > 1 array, they +list only the specs for the one array. inxi has to do the work to actually try +to generate the array capacities etc. This relies on a weak hack, assume that +Node [x] refers to the array, which so far has been the case, but very weak, and +very poor execution by udevadm ram feature authors, sad to say. + +* As far as we can tell, udevadm does not support: +udevadm info -p /devices/virtual/dmi/id +option until somewhere between v245 (no support) and v249 (supported). This +means that some distros that ship a pre 249 version will not get user RAM data. +Known is Slackware 15.0 (but is in Current), TinyCore 14, and probably other +tiny distros. Many LTS type frozen pool distros will probably not support it. + +-------------------------------------------------------------------------------- +BUGS: + +1. SYSTEM: kernel gcc version: see FIXES 4a. While this is not a bug per se, +since who can predict when a distro will change format to /proc/version, users +might see it as one. This impacted various distros. + +2. INFO: init detection for busybox /sbin/init hung forever on slitaz, now +works, and adds the busybox version as well. This was exposed by slitaz. Also +was showing sysvinit for TinyCore, the slitaz fix also fixed the failure to ID +BusyBox init on TC. + +3. CORE: see Fix 7b, inxi used wrong path for its .d config locations, never +spotted it since I never use those, showed up in codeberg issue #295 when that +did not work. + +4. GRAPHICS: EGL: see Fix 6b. Was missing one error message type, leading to +undefined value print error. + +5. CPU: vascom in issue #297 reported an unset value error in disabled smt +cpu speeds, see CODE 8. This required a CPU debugger data upgrade to handle +more cleanly. It appears that a Perl behavior has changed, it was returning '' +for undefined read, now seems to be returning the correct undefined. Or could +be kernel that changed that, can't say, but creates buggy looking output with +Perl errors. No actual data bugs though. + +-------------------------------------------------------------------------------- +FIXES: + +1. DOWNLOADER: Small error in assignment could lead to onscreen error output. +Not worth a new release fix. Added to inxi master as 3.3.31-2. + +2. SENSORS: corner case with undefined value where it's almost always defined +for load_sys_data(). Shows undefined on screen output. Never seen this until +today, but that's how it goes. Also added to inxi master as 3.3.31-2. + +3a. PARTITIONS: added possible filter path: /dev/(block/)?loop[0-9]+, saw that +on Android. + +3b. PARTITIONS: added vboxsf, not a typo, that's a client mounted host fs for +vbox, works like nfs/smb re filters etc. Never seen that one before, probably +because I almost never use the host > guest shared folder feature of vbox. + +4a. SYSTEM: CompilerData: kernel gcc version: found _more_ syntaxes for the gcc +string in /proc/version. The randomness of this string generation forced a redo +of the regex, which should now catch almost any gcc/clang version number no +matter how weird the syntax is. The new regex is much looser and handles all +known variants. + +4b. SYSTEM: DesktopData: + +* Fixed broken fvwm-crystal ID, that one is tricky, and it got broken by +accident a while back. + +* Fixed broken echinus hackedbox mvwm detections, had neglected to add those in +PsData::set_gui() for some weird reason. Also had forgotten to add some of those +to ProgramData::set_values(). Also note that TinyCore ships with hacked box, but +their -version is broken, shows v: 2001 because they forgot to add in the actual +version in the string. Forgetting to update all the locations of those string +lists was a big reason that the ps handler was fully refactored, and all uses of +its data, too hard to maintain when having to update in multiple locations the +same value. + +* Fixed broken KDE 4 version, qt data. That has been broken for a while. + +* Fixed corner case where wm is detected, and is the same as de/wm parent, and +is rejected, but then since wm is not populated, it runs wmctrl anyway, which +can result in wrong results, like showing wm: wlroots wm [a generic term] for +Hyprland wayland wm. + +* Fixed broken Muffin (Cinnamon wm) detection. + +* Added tk: GTK for Budgie, Pantheon. Added tk: Qt for lxqt variants. These +often worked before, but now are more robust. + +* Fixed bad JWM wm version, was using --version, -v is right. + +* Fixed xfwm, was not showing xfwm4 etc, just xfwm. + +* Fixed spectrwm version detection, the old verbose string was simplified to: +spectrwm x.y.z Build: a.b.c. Used filter method to dump the old verbose part. + +5. RECOMMENDS: wrong package name for pacman eglinfo, glxinfo. + +6a. GRAPHICS: gl_data(): + +* fixed use of undefined $platform, missed some, those can and did spew out +errors in some cases due to trying to use undefined hash key name. + +* fixed case where EGL version was not fully numeric: 1.4 (DRI2) + +6b. GRAPHICS: API data: see Bug 4. Was missing one api data error message type. +This led to output of undefined value print errors. The real cause however was +inconsistent naming of the gfx api message types, which is the main fix, along +with adding the missing one. Now they all match and are easy to scan. Making +things consistent internally has been a main goal of the 3.3.32 release. + +7a. CORE: See CODE 7b, fixed corner cases ps failures for older or more stripped +down busybox ps. Now should handle all cases automatically. + +7b. CORE: Configs::set() had the wrong paths for all the .d directories, making +those fail. Was missing the .conf part of the path, just showed inxi.d/. Oops. + +7c. CORE: main::set_basics(): found case where $ENV{'HOME'} undefined, which +trips undefined concat errors. Attempt to set it manually with whoami and paths. + +8. PROCESSES: Long standing error, probably imported from original bash inxi, +with -tm showed broken throttled message even though no throttling occured. This +only happened with -tm, not -tc or -tcm. + +9. INFO: GCC versions: switched to ProgramData::full(). Fixed regex to allow the +primary version number (12.2,9,4.8, etc)) for alt, we don't care about sub-sub +versions there, but we do care about sub versions. Sort numeric for results, +which corrects the odd order created by alpha sorts before. Fixed broken filter +to exclude default gcc version from alt list. + +This fix also exposed alt gcc version detection failure on FreeBSD, different +path, and different executable name syntax (/usr/bin/gcc-9 vs +/usr/local/bin/gcc9 as well as an odd legacy numbering format for 4.8, 4.9 +(gcc48,gcc49). + +10. MACHINE: Fixed some BSD sysctl machine field name assignments that may have +resulted in those fields never showing in output. Added some conditional tests +as well. Also fixed and normalized some dmidecode mobo/chassis field names. + +11a. RAM: In some cases, module locator is only DIMM 1, without the channel. If +Channel [A-Z]] is found in branch locator, prepend that to DIMM X to make actual +location more obvious. + +11b. RAM: In cases of > 1 RAM array, failed to reset the slots active counter +in each array. This led to silly looking active slots totals for the arrays. + +12. REPOS/INFO: PackageData for cases where distro uses a package manager non +natively, like AltLinux with apt-get, but no dpkg, so can't get package counts. +Now detects pm and uses right command to get package list and show tools. + +-------------------------------------------------------------------------------- +ENHANCEMENTS: + +1a. SYSTEM: DistroData: + +* Adding initial support for Ubuntu internal spins, like Kubuntu, Lubuntu, +Xubuntu. Shows project name for distro, and adds base: Ubuntu for -Sx. + +* Forcing os-release use for Fedora, that captures spins like Onyx +automatically. Was using redhat-release, which had the Fedora version string, +but best to use os-release explicitly. Too bad we can't default everything to +use os-release, but that's not reality. + +* Added in Fedora system base for variety of Fedora based distros. This corrects +many from IDing as RHEL 39 etc, now shows Fedora. As with all derived distros, +these ids are not all tested, but often work. Confirmed: Nobara, risiOS, +Ultramarine. Not all are identifiable. + +* Added Devuan system base distros: crowz, dowse, etertics, exe, fluxuan, +gnuinos gobmis, heads, miyo, refracta, star, virage. This should in many cases +automatically cover the specific derived distro ID as well since those usually +are in the 'PRETTY_NAME' field of /etc/os-release. Not exe, not star, I believe. + +* Added in Debian/Devuan system base support for Peppermint, that requires +custom rule since the base can be either. Selection based on presence/absence of +/etc/devuan_version. + +* Added special distro id where distro id is from distro-version file, but ID is +only numeric. Slitaz does this for example. Takes file, slices off +{-version,release}, then concatenates the distro name and number. This is +uncommon, but should anyone else do it that way, easy to add now. + +1b. SYSTEM: DesktopData: + +* Added screensaver/locker (tools:) to -Sxxx/-Sa. -Sxxx shows running tools, and +-Sa adds avail: for any installed, but not running. That's because many of these +tools are not daemons, but are triggered by a daemon. + +* Added wm dawn, dusk. Those are dwm forks so assuming -v works the same for +version (to stderr). Added wms w9wm, x9wm - assuming -version info same as for +9wm, which is what they were forked from I believe. + +* Added CDE and dtwm, because, well, why not? No version for either. And NsCDE, +which uses FVWM2 for wm. + +* Added Draco (a Lumina spin) support. + +* For -a and KDE, added advanced data info: frameworks v: x.y.z. Other desktops +with comparable and detectable advanced data will be added as we find them. Note +that this repurposed the previous use of the info: field name, which is now +with:. + +* For qtile, spectrwm, and maybe others, they give wmctrl a false wm id, for +some reason, now inxi gets rid of that since it's a fictional result, done +deliberately, but is not the wm. + +* Item: info: added more bars, panels, menus, launchers. + +* Added --dbg 63 user debugger so we can track down how de/wm/tk detections +happen, their data sources, etc. See CODE 4c. Much easier to say add --dbg 63 +than to say all the stuff to echo etc. antiX testers showed how useful this +could be right away, as did dev vm testing for de/wm. + +* Added ELF toolkit data (Enlightenment, Moksha). The elf-version tool is not +always there, but if it is, tk is easy to get. + +1c. SYSTEM/GRAPHICS: Added bismuth, maynard, orbment, polonium, swayfs +compositors. + +1d. SYSTEM: DmData: + +* Added lm: (login mamager) type fallback, if no dm detected. Added seatd, +elogind, greetd to the fallback lm. Some of those were in the main dm block +before, but now they are detected as login managers in case where no dm was +detected. This handles de, wm, wayland compositors using seatd, elogind, etc. + +* Added lemurs display manager. Not verified, don't know if --version info. + +2a. GRAPHICS: tentatively trying for Android Surfaceflinger, and other display +data. + +2b. GRAPHICS: a long standing weakness, fuzzy mapping of X.org port IDs to +DRM port IDs may be finally resulved, assuming xrandr --prop and drm device in +/sys. Now matching connector_id to CONNECTOR_ID, which is an absolute match +using an integer value ID. This now precedes all other mapping tests in the +port ID mapper. + +2c. GRAPHICS: added support for all known tiny X display servers: + +Xchips Xfbdev Xi810 Xigs Xipaq Xmach64 Xmga Xmodesetting Xneomagic Xsavage +Xsis530 Xtrident Xtrio Xts300 Xvesa + +I had no idea anything other than Xvesa existed, but apparently there's a bunch! +Found this when testing TinyCore Pure64, which uses Xfbdev. I did not know that +Xvesa only supports 32 bit either. This was exposed when testing on TinyCore +Pure64. + +Also changed to dynamic detection using ps data, which then allows for sometimes +getting the screen resolution as well from ps for TinyX servers. Also avoids +cases where > 1 were installed but only 1 is running, of course. + +2d. GRAPHICS: Xfbdev may expose the virtual_size of screen assuming +/sys/devices/platform/*/graphics/*/virtual_size exists. +In test system, that's: +/sys/devices/platform/vesa-framebuffer.0/graphics/fb0/virtual_size + +This allows showing resolution for at least Xfbdev TinyX systems, like TinyCore +Pure64. No idea if this is a general thing or I just happened to find a case +where it works. + +This goes along with adding the resolution from ps start string if present. + +2e. GRAPHICS: gfx vendor ID updates: AMD, Intel, Nvidia. This finally saw more +IDs generated for their latest generation gpus, which had been sparse before. + +3a. INFO/REPOS: PackageData: added pm tools: + +* pacman: added baph, pacseek. + +* deb/apt: added muon. + +3b. INFO/REPOS: PackageData/RepoItem: added tazpkg (slitaz pm). + +3a. INFO: Power: added to wakeups, and created Power: type that turns on with +-Ixxx: +* uptime +* states - suspend/hibernate types supported +* suspend: active type + * other available types [-Ia] + * wakeups +* hibernate: active type + * other available types [-Ia] + * hibernate image size [-Ia] + +-Ia: Adds Power daemons running. + +This closes issue #292 for adding power state report. + +3b. INFO: Compiler: added tentative support for zigcc. Also extended to support +clang alt versions, along with BSD alt paths for clang, gcc alt locations. This +adds support also for BSD type /usr/local/bin alt gcc/clang paths, so that data +will suddenly appear for the inxi BSD users out there. + +4. VERSION: Along with deprecating -V, added --vf (--version shortcut), which +goes along with --vs / --version-short to maybe easier to remember? + +5. WEATHER: Added --wu as short-cut for --weather-unit, no idea why that wasn't +done already. + +6. REPOS: Added tazpkg (slitaz). + +7. CORE: Added /usr/etc, /usr/etc/inxi.conf.d, /usr/local/etc, +/usr/local/etc/inxi.conf.d as possible default paths for inxi.conf files. +Apparently IBM-Redhat is pushing for that change, which will ship first in +Fedora. Also, the /usr/local/etc paths would let BSDs, that use /usr/local for +non core, to put the inxi config in there instead, if they wanted. Though as far +as I know, none of the BSDs is actively packaging inxi. + +8a. MACHINE: For -Mxx, show board part number (part-nu) if available. This +usually comes from /sys product_sku or SKU Number in dmidecode, but can be +sourced on other systems from different data sources. + +8b. MACHINE: Add (if detectable, bad data sources) device type for Elbrus. + +8c. MACHINE: Show board UUID with -Mxxx, if available. Filtered with --zu. + +9a. RAM: Added udevadm as possible non root RAM array/module data source. + +9b. RAM: Added for case of > 1 RAM system board array a Report: line for totals +of arrays, capacity, used capacity, slots, used slots, eec, module type. + +10. CPU: more CPU microarch CPUID product IDs, for some future cpus as well. + +11. RECOMMENDS: Added wayland-info to display recommends now that it finally hit +the repos. + +12. DRIVES: More disk vendors, new ID matches! Yes, it never ends, like the Way, +like a river flowing from the mountains, like the sun and the moon... + +-------------------------------------------------------------------------------- +CHANGES: + +1. DOCS: data/audio: renamed and removed some stray gz files. + +2a. INFO: split into up to 3 separate primary lines, Memory, Power/Process/Init, +Packages, depending on verbosity levels. This really cleans up something that +has gotten increasingly messy and random over the years as features were added. + +2b. INFO: -Ixx triggers wakeups, instead of -Ixxx. Also, -Ixx triggers the +parent Power: item that contains uptime:, wakeups:, and all the other power +items from -Ixx and higher verbosity levels. + +2c. INFO: Compilers: changed order of detected compilers to be alphabetic +(clang, gcc, zigcc), now that zigcc added might as well make it not gcc-centric +as in past. + +3a. OPTIONS: -W/--weather-location are removed, and location is merged into -w +[location], thus freeing up a redundant use of a primary single letter for a +feature. Also, upper case letters were supposed to be used mainly for core, +unique, features, not just a secondary feature of a secondary feature. Lower +case only is what should have been used, like with -s. I am guessing that in +inxi bash/gawk, I could not handle optional args, and thus had to use +lower/upper, one for no arg, one for arg. + +3b. OPTIONS: -V is deprecated, and will show message. --vf/--version will +activate full version info, along with --vs/--version-short for the 1 liner +special short version. + +Also done to reclaim an upper case primary letter. If nobody complains, will +remove -V next release, if someone complains, will keep -V / --version and +remove deprecation message. + +-V is removed from help/man however so new users won't guess to use it, meaning +eventually we can get rid of that -V and free it for better use. + +3c. OPTIONS: --gpu, --nvidia, --nv are removed. Those were replaced by -Ga a +while ago. They were only temporary options used when the feature was first +created, when it was not sure to remain. + +4a. SYSTEM: Display Manager (dm:) now is dynamically assigned, in cases where no +dm but a login/seat manager like seatd, elogind running, which is more common +with Wayland starts, now shows lm: (login manager) instead if one was found. +Goes with CODE 3c refactor. + +4b. SYSTEM: changed Desktop info: to with: (for bars, docks, menu, panels, +trays), which is more accurate, and switched info: to advanced de data, like KDE +frameworks. + +4c. SYSTEM: changed output order, put wm: after de tk: info: and before with:. +This turns it into a sentence: DE: + tk: + info: + wm: + with: + tools: + dm/lm: + +5. CORE: Configs::set() had wrong paths testing for config files, missing the +.conf in inxi.conf.d. The old version was an accident. Just on off chance anyone +actually used the wrong path, leaving those in the config path tests, but +removed from man/options etc. + +-------------------------------------------------------------------------------- +DOCUMENTATION: + +1a. DOCS: docs/inxi-graphics.txt: added ANDROID DATA, following some new +information and research re Android display/compositors. Also refactored the doc +file, and added more and better navigation and organization, particularly for +DISPLAY SERVER DATA and MONITOR DATA. Moved COMPOSiTOR DATA to +inxi-desktop-wms.txt. + +1b. DOCS: docs/inxi-distros.txt: updated for more distros and system base info. + +1c. DOCS: docs/inxi-power.txt: power state, screensaver/locker data. + +1d. DOCS: docs/inxi-tools-mapping.txt: added POWER section for screensaver/ +lockers. + +1e. DOCS: docs/inxi-values.txt: reorganized, improved navigation and +organization. Ongoing updates to values for new features and debuggers. + +1f. DOCS: docs/inxi-init.txt: added BusyBox init, updated Upstart with warnings +about pre-tests required. + +1g. DOCS: docs/inxi-desktop-wm.txt: These upgrades were done in conjunction with +the related refactors, particularly of PsData and ProgramData. + +*added DISPLAY/LOGIN MANAGERS section, and documented all the dm/lm used. This +goes with refactor into DmData of CODE 3c. + +* Added COMPOSITOR DATA (moved from inxi-graphics.txt) to make easier to match +up wm/compositor data. + +* Added DESKTOP/WM INFO TOOLS itemized bars, docks, launchers, panels, menus, +trays. + +2. DATA: data/audio: added huge collection of audio datasets from mrmazda. +Thanks! + +3a. MAN/OPTIONS: Updates for power data for -Sxxx/-Sa, -Ixx/-Ixxx/-Ia. + +3b. MAN/OPTIONS: Removed references to -V, -W options, merged -W with -w. + +3c. MAN/OPTIONS: Edits, fixes, proofreading corrections of issues that have +crept in over time. + +3d. MAN/OPTIONS: Removed --gpu, --nvidia, --nv, which were merged into -Ga a +while ago. + +3e. MAN/OPTIONS: Changed gcc specific compiler to compiler generics, since now +the old gcc\-centric compiler data supports clang alt versions, and zigcc. + +3f. MAN/OPTIONS: Updated -m for new udevadm DMI RAM data source. + +4. OPTIONS: Fixed some indentation errors. + +-------------------------------------------------------------------------------- +CODE: + +1. Fixes 1, 2 were both due to some undefined values being improperly handled. 2 +was odd because it's literally never shown up before (using regex on undefined +hash key), but it was a mistake in 3.3.31, just a Perl language thing that +didn't do what I thought it would do.. + +2a. GRAPHICS: xrandr_data(): switched to direct qx() for xrandr data, this +allows checking for error return, which allows using --prop, which was not +supported until xrandr 1.2 (~2009). Debian Etch had 1.1, for example. Also +switched to array data since it's local to function. This is to get +connector-id. + +2b. GRAPHICS: map_monitor_ids() now first tries to map via connector ID, and +only falls back to the less reliable mapper tests if a match failed. + +2c. GRAPHICS: abstracted away from Xvesa only tests to TinyX X server tests. +Note that so far only Xvesa appears to have an API via -list command. + +2d. GRAPHICS: failed to set empty array ref to $x_drivers when --force wayland +is used, which made the @$x_drivers tests fail. Only devs would ever see this. + +3a. SYSTEM: DistroData: made debian_id() also support devuan ID via switch. +Added redundancy testers for os_release codename append as well, using same +logic. This refactor also removed some tests that would never have been true. + +3b. SYSTEM: main::get_display_manager(), had a silly error with creating +globbing pattern that could have made it fail in the case, > 1 directories used +to glob; refactored get_display_manager into DmData, which now also handles +Display Managers and Login Managers, like greetd, seatd, elogind. + +3c. SYSTEM: DesktopData: +* Changed DesktopEnvironment to DesktopData, to be more consistent. + +* Reordered, renamed subs, organized entire package to be more maintainable and +consistent with newer inxi style. + +* DesktopData::wm_ps_xprop_data(). Reversed order, first now does ps tests, then +xprop, was getting false detections for blackbox. + +* DesktopData::de_wm_debugger(). See 4c. + +* DesktopData: improved methods for getting gtk/qt desktop data, using new +ProgramData::full version data return coupled with item_from_version(), avoids +extra subshells to get the same data we already collected, but threw away. + +* DesktoppData::item_from_version(). Works with new ProgramData::full() option to get +full version data ref returned, this avoids making multiple subshell calls to +get two bits of data from same thing. Used for GTK and Qt data currently. + +* DesktoppData::set_xprop(): Fully refactored all xprop data to be more +maintainable and clean. + +3d. SYSTEM: changed CompilerVersion which is for kernel compiler to the more +obvious KernelCompiler, then moved it with the other kernel data tools. + +4a. DEBUGGING: SystemDebugger: + +* display_data(): added in xrandr --prop/--verbose to match upgraded xrandr data +parsing. + +* system_data(): added fruid_print, udevadm commands. + +* system_files(): added/proc/bootdata. + +4b. DEBUGGING: added @dbg switches: + +* --dbg 58: $power data. + +* --dbg 59: $desktop data array (long overdue, no idea why that was left off). + +* --dbg 60: display_mamager $found]. + +* --dbg 61: PsData::set_cmd(), print out @ps_cmd result working ps data. + +* --dbg 62: $compilers main::get_compiler_data(). + +* --dbg 63: DesktopData::de_wm_debugger() for ps wm/comp/de output, and for +DesktopData step by step results, so we know what detected what and how. + +* --dbg 64: ProgramData::version() print out full version data block. + +5. ERROR HANDLER: Added option-deprecated, option-removed items, for -V, -W, +--gpu/--nvidia/--nv type change/remove scenario. + +6a. CORE: fixed two stray redeclares of $start in OpticalItem::get() and +RepoItem::get() which Perl 5.008.0 correctly notes is redeclaring it, but for +some reason all newer Perl's accept. Funny things that show up testing on +ancient systems, in this case, I'd say the original Perl was right and the new +one is allowing something to happen it should not. Also changed $start in +PartitionItem::set_filters to $begin to avoid that pussible clash. + +6b. CORE: Added filter type to main::filter, that way it can be used for other +filters, like filter-uuid for non partitions. + +6c. CORE: Full ps logic refactor: PsData package created, merged in old +set_ps_aux, set_ps_gui and changed them to methods set_cmd and set_de_wm. +Refactored set_cmd to be much more robust and handle busybox automatically. + +* Changed global $load{'ps-aux'} to $load{'ps-cmd'} which makes more sense since +that is what it was loading. + +* Old busybox failed if you supplied it with standard ps args, but new busybox +accepts and ignores them. Now inxi checks if busybox ps, then dumps the args, +and sets a busybox switch to allow for more ps data for busybox ps, which will +be used to detect TinyX screen dimensions. + +* Got rid of global $b_busybox_ps and test for that, it is not used anymore. +Added switch for busybox to use more columns of ps to try to trap -screen +resolution for TinyX servers. Only some show that in ps. + +* Optimized subsequent uses of @ps_cmd by dumping stuff inxi will never need, +like browsers, various servers, etc. Also run uniq() on result since we only +nned one instance of each command for subsequent tests. + +* Switched to using full %ps_data, including for header position counts, which +helps make much more robust odd ps types that might have CPU or RSS or MEM +but not in the expected order, or incomplete. Before relied on hoping it would +work and be consistent, which is not the case for BusyBox ps. Now all the hard +coded indexes are dynamically set, using the header positions grabbed in +PsData::set_cmd(). Specific detections added: info-active, tools-active, +tools-test to avoid duplicating test arrays globally. + +* Got rid of @ps_gui global, replaced fully with granular de/wm/comp $ps_data +hash arrays, which are then assembled as needed in each section, desktop and +compositor, that might use them. This allowed, finally, for getting rid of all +those redundant wm/comp items, now the wm/comp/de ids are set in only one place, +PsData::set_gui(). This had been a long standing problem because I would forget +to update one set of wm/comp, and had to do loops over and over when all that is +required now is the initial searches through @ps_cmd, which is also much +shorter, containing only the stuff inxi will need to check. + +Now to add a detection, wm, comp, tool, info, dm item, just need to add it in +one place, ps_gui, and there are also no repetitions in there, which there were +before. I expect this will make it much easier and less error prone to add new +items to the various lists. + +* Added PsData::set_dm() to handle fallback dm detection, when none found in +/run type directories. Only fires when nothing else found. + +* Added PsData::set_power() to handle power daemon detections. + +* Added --dbg 61 to print out @ps_cmd in output section, where it's also logged. +Leaving it out was an oversight. + +6d. CORE: Program data refactor into package: ProgramData + +* Converted program_{data,values,version} and related subs into package +ProgramData with public methods full(), values(), version(). + +* Moved the entire package code block into the Items Data generator section. + +* Moved more program version that used hardcoded values in the caller to use +full() and set_values() data instead, wherever practical. + +* Made version() use array refs from start to finish, and dumped the old method +of using open on the text block from file or program version command result. Not +clear why I ever did it that way, probably I did not understand refs when that +was originally translated. + +* Added version data array ref return option, useful to avoid having to make +double calls when getting stuff like toolkit version. Used for example in +DesktopData::item_from_version(). + +6e. CORE: Corrected paths for development fake data files, I'd forgotten to use +$fake_data_dir global in many places, now all fake data paths use that single +source, which can be changed using config or --fake-data-dir option. + +6f. CORE: main::grabber(): made sure all commands for this include the proper +redirect, usually 2>/dev/null, several were missing that, which could in theory +have led to visible error output on the screen. + +7a. INFO: InitData: got rid of redundant readlink /sbin/init, that's now read +at first to $link, which is then what is tested in all following tests. + +7b. INFO: Refactored get_gcc_data() into get_compiler_data, which now supports +gcc and clang to do FIX 9. Cleaned up, switched to ProgramData::full(), fixed +weak globbing pattern, fixed broken compiler alt version exclude default +installed compiler version. + +8a. CPU: Refactored, now all cpu fake data files are set in +CpuItem::set_fake_data(), makes it easier to manage. + +8b. CPU: a change in either kernel /sys or Perl made Perl return udefined value +where before it returned '' in cpuinfo data() (now cpuinfo_speed_sys()) speeds. + +8c. CPU: split out cpuinfo_speed_sys() from cpuinfo_data(). + +9a. RAM: refactored dmidecode_data module data into separate functions so they +can be used by udevadm_data_process as well. Made process_locator, +process_manufacturer. + +9b. RAM: refactored the speed logic, now uses raw numeric plus units, so they +can be worked with then reassembled more readily. + +9c. RAM: refactored speed_mapper, BSD matching table, to avoid loading entire +mapping table each time. Brings logic closer to Linux logic. + +9d. RAM: refactored ram_output, split out arrays_output, which now handles +--memory-short/--ms, and case of > 1 array detected, same format for both. + +-------------------------------------------------------------------------------- +-- Harald Hope - Tue, 30 Jan 2024 18:47:20 -0700 + +================================================================================ Version: 3.3.31 Patch: 00 Date: 2023-10-31 |
