This repository was archived by the owner on Feb 17, 2024. It is now read-only.
Tags: smxi/inxi
Tags
PACKAGERS! inxi repos are moved to https://codeberg.org/smxi/inxi The repos will mirror to github for a short amount of time, until after 3.3.30 is released, then I am probably going to do some big changes in the structure of the inxi repo. Make sure to update your packaging tools and scripts for this change. -------------------------------------------------------------------------------- Finally, a huge upgrade for Wayland future proofing, and other futures that are maybe coming, by adding EGL API, and Vulkan for good measure. This should handle wayland finally, that's been a stub forever, but finally realized eglinfo was a thing, and that vulkan as well could be a contender to replace OpenGL, at least that's what Mesa says on their site, and they should know. This handles one of the longest standing weak points of inxi graphics, being completely X11-centric, even though wayland support exists fairly extensively, but this glxinfo dependent feature was a niggling annoyance, now it's fairly ambivalent about which api tool you throw at it, the hardest is to give the right message for no data, or incomplete data. Note that eglinfo supplies at least software rendering out of X11 or Wayland, so we can now get some API data in console, including if supported, OpenGL data. Not all of it, but some of it. Also since now all the docs are split and granular, with the Graphics API upgrades, added data sample files from glxinfo, eglinfo, vulkaninfo, and vainfo for good measure, just to have some of the latter. This is one of the first time all the data used to develope a feature, docs for that feature, and the feature itself, are being shared and released at the same time. -------------------------------------------------------------------------------- SPECIAL THANKS: 1a. GRAPHICS: API: Arch user Chrome30 on github for requesting vulkan data, and providing the initial datasamples that made it possible to think about this new API feature. 1b. CheckRecommends: Display packages: mrmazda, a frequent helper, checked and updated OpenSUSE and Fedora vulkan/egl/glx API tool package names. Those have been a bit fluid and many of the names I had were not right. -------------------------------------------------------------------------------- KNOWN ISSUES: 1a. GRAPHICS: nothing is perfect, for sudo/root the detections fail for OpenGL API messages, but fallbacks will make it a bit nicer than it was, with some data, instead of none as before. 1b. GRAPHICS: API: I'm assuming that the greatest EGL version number found is the actual version, and lower versions are what that platform supports. This is an assumption, not a known fact, but finding this stuff clearly documented tends towards near impossibility, or takes forever to determine, so that's the assumption that is being used. Correct via issue and clear explanation with links to resources if this is incorrect. -------------------------------------------------------------------------------- BUGS: 1. Nothing to speak of. -------------------------------------------------------------------------------- FIXES: 1. PARTITIONS: had wekafs as a zfs type fs, it's not, it's more like NAS, cloud. Added to distributed list, and removed from zfs|btrfs|hammer list. I know, I know, will it ever matter? Probably not. But just in case, wouldn't want your local machine to report with petabytes of storage now would we! 2. CheckRecommends: corrected some Fedora, SUSE package names. -------------------------------------------------------------------------------- ENHANCEMENTS: 1a. SYSTEM: DistroData: added Bodhi id method, /etc/bodhi/info file which is similar to /etc/lsb_release, updated system base detection as well. System base comes from /etc/os-release. 1b. SYSTEM: DistroData: Added Nitrux system base (debian). Why they try hide this is beyond me. Maybe because they are not using a real PM, and don't include apt, who knows. 2a. GRAPHICS: new nvidia gpu ids. 2b. Graphics: EGL API data: * Shows eglinfo missing if appropriate, no data messages if appropriate. * -G shows EGL version(s), drivers, active platforms. * -Gx adds active/inactive platforms as sub items of platforms. * -Gxx shows platforms by platform, with egl version, driver. EGL version only shows if there were more than 1 detected, otherwise it shows with EGL v: * -Gxxx shows hw based on driver, if found, like vulkan. To avoid excess verbosity, does not show renderer OpenGL name per platform because it would be way too long and repetetive. And besides, that would show in OpenGL anyway, more or less, unless there are two different GPUs, which is a case that is not fully handled. 2c. GRAPHICS: OpenGL data: * If glxinfo not present, or with null output due to root/no display, and if eglinfo available, and has OpenGL items, will populate most of OpenGL API with data, except for Direct Rendering and GLX version. Shows appropriate messages indicating it's EGL sourced for console, root, no data, or glxinfo missing. * -Gx adds GLX version, if detected. * -Gxx add: ES version, if detected; device-ID, if available. Also adds display-ID, if Display-ID was not found in the Display line (which probably means that xdpyinfo or xrandr were not installed). Does not always show since it already appeared in Display line if it was discovered. * -Ga adds device memory, and unified memory status (yes/no). 2d. GRAPHICS: Vulkan API data: * Shows appropriate messages if vulkaninfo present, but no data found. * -G shows Vulkan version, drivers, and surfaces. * -Gx device counts. * -Gxx adds device by id, type, driver report. * -Gxxx adds layer count; adds device hardware vendor, based on mesa driver. Not for nvidia driver, since that is self evident. Goes away with -Ga if device name exists. * -Ga adds full device report, including per device names, ids, drivers, driver versions, surfaces. 3. UPDATE: Because the smxi.org server no longer accepts TSL 1.1 based HTTP requests, added for extreme legacy systems a new update option, -U 4, which uses direct FTP download from smxi.org ftp server. If system set to default to perl downloader HTTP::Tiny it switches to using a non perl downloader automatically, like wget or curl. 4. CPU: Microarch: got early zen5 possible IDs. Both Intel/AMD may have rough ID working well before they ship in public. CPU stuff has slowed down a lot, the 4,3n nodes are not easy, obviously. 5. DRIVES: Many more drive vendors and drive IDs. 6. RAM: More RAM vendors. Note that it's not unusual for a Drive vendor to also make RAM, and vice versa. -------------------------------------------------------------------------------- CHANGES: 1a. GRAPHICS: For API, show OpenGL mesa-v: x.x.x separate from main API v: string. Also only shows the actual API version with v: now, like v: 4.5. Also shows vendor: nvidia v: 340.23 for nvidia, without mesa. Falls back for unhandled cases or syntaxes to the whole version string for v:. 1b. GRAPHICS: For OpenGL, shows compat-v: always if present, that was a mistake not to show it unless -Gx, since otherwise you'd think you are running a different version. Not a common situation, but on legacy hardware, can happen. -------------------------------------------------------------------------------- DOCUMENTATION: 1a. DOCS: docs/inxi-cpu.txt - reorganized into more coherent sections, like with like, etc. Added better top Sections navigation since there is so much data. 1b. DOCS: docs/inxi-resources.txt - moved last code tricks to docs/tips-tricks.txt. 1c. DOCS: new docs/ files inxi-battery.txt, inxi-debuggers.txt, inxi-devices.txt, inxi-kernel.txt, inxi-machine.txt, inxi-network.txt, inxi-raid-logical.txt, inxi-start-client.txt, inxi-tty.txt, inxi-weather. These new files cleaned out docs/inxi-data.txt and docs/inxi-resources.txt, which are now merely placeholder files, and have no data in them beyond pointers to the actual data files. 1d. DOCS: docs/inxi-custom-recommends.txt updated for SUSE/Fedora packag name fixes and new eglinfo and vulkaninfo items. 2a. DATA: moved more data from non public data to shared. Refactored directories to be better organized, and to follow the overall inxi data structures better. 2b. DATA: added many more eglinfo, glxinfo, vulkaninfo to data/graphics. Also added some clinfo, vainfo just in case decide to support those APIs. 3a. MAN/OPTIONS: updated for new graphics API features, new verbsity features, etc. 3b. MAN/OPTIONS: added -U arguments for man, for some reason I'd left those out. Also removed options references to -U 1, 2, because those should never be used, if those versions of inxi even exist, they are ancient. Added -U 4 option, and explanation of when/why to use it. -------------------------------------------------------------------------------- CODE: 1a. FAKE DATA: updated paths for fake data to reflect data reorganization. 1b. FAKE DATA: Added --fake egl,glx,vulkan for GRAPHICS API. 2. GRAPHICS: Fully refactored opengl_output, moved to gl_data/opengl_output. Added egl_data, egl_output, and vulkan_data, vulkan_output, and some other tools. 3. UPDATE: if downloader is set to 'perl', aka, Tiny::HTTP, and -U 4 is used, which is a direct FTP download of the inxi/pinxi files, tiny is disabled, and the next available downloader (wget/curl/fetch) is used instead. 4. DEBUGGER: added clinfo, eglinfo, es2_info, vainfo, vdpauinfo, vulkaninfo.
Some significant bugs, 1 showstopper for FreeBSD, and one universal o… …ne for USB network devices, and possibly some other USB device types. Also some nice new features. -------------------------------------------------------------------------------- SPECIAL THANKS: 1. SYSTEM: Github user chromer030 in issue #285 - a very nice small enhancement to -Sxxx line, adding kernel clocksource, and with -Sa, adding available clocksources. I wish all issues were this clean and easy to implemment, with such clear benefit. 2. BLUETOOTH: Github user chromer030, issue #286 - extending and adding bluetooth report feature. This required refactors and some cleanup of bad logic to make -E more able to handle new data sources, and also made me fix the docs and add debugger data files to make testing changes for various bluetooth datasources easier. Adding btmgmt turned out to have a lot of long term benefits to the bluetooth feature and internal inxi logic, I hadn't realized how hacked on bluetooth feature was, but code review showed it clearly. 3. SYSTEM: Github user oleg-indeez found a break in FreeBSD compiler data, 2 glitches, one made inxi crash due to is array test on undefined reference, the other maybe a bad copy paste in the past that assigned compiler data to wrong hash. See CODE 3 for details on the ref issue. 4. SWAP: Github user chromer030, again, issue #290 suggested some swap zram/zswap data enhancements, seems good, so thanks. 5. UsbData: Slackware/Linuxquestions.org poster J_W for posting on a device missing in his output as of 3.3.27 inxi. This exposed bug 3, which usually was npt visible since the fallback was catching most of the network matches, but since he had a TP-Link, and it went missing, it triggered the issues, and also exposed the inconsistent upper/lower case use in device type from kernel. 6. NETWORK: Slackware user babydr on linuxquestions.org tripped a bug in network, was not counting correctly to limit IP list. Led to showing limit message on 10th row of network report, not 10th IP of a device. See Bug 4. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. Nothing new. -------------------------------------------------------------------------------- BUGS: 1. BLUETOOTH: with hciconfig, would show wrong LMP/HCI version because either the syntax changed for those strings, or it was wrong always. I think it changed because this worked correctly at one point. Should now show the right hci/lmp versions, and the bluetooth version as expected for hcicconfig/btmgmt. 2. SYSTEM: CPU compiler broke for FreeBSD 13.2, caused by bad test for undefined array in CompilerVersion::version_bsd(), and also, assigned kernel compiler data to %dboot instead of %sysctl hash. Thanks oleg-indeez for spotting that one and figuring it out. 3a. UsbData: Failure to use /i caseinsensitive on regex led to failure to detect USB type using standard defaults, but then a further regex error, subtle, missed a | between two elements of a pattern, led to the last fallback case for network detection failing. This was coupled with a change in the Kernel, which now uses Uppercase first sometimes, and sometimes lowercase first. I think that's a change anyway. This resulted in some usb type hashes failing to load specific devices, network in this case, TP-Link, which was the fallback pattern that broke. 3b. UsbData::assign_usb_type() improper nesting of tests led to failures that should not have happened, like a bluetooth device cascading down to network. 4. NETWORK: IP limit was limiting based on total row count, not the actual count of IPs for that device. Not sure how that slipped up. Now correctly limits the IPs, not the previous total rows in Network report. Thanks babydr / Slackware forums for finding yet more issues. -------------------------------------------------------------------------------- FIXES: 1a. BLUETOOTH: added in switches for fake bluetooth data for all bluetooth data sources. 1b. BLUETOOTH: made --bt-tool load $force{[tool]} to be consistent with rest of logic in inxi for forcing use of specific tools. No idea why I made a standalone one only for Bluetooth. 1c. BLUETOOTH: the HCI/LMP version generators were mixing up bluetooth version string and LMP, leading to wrong results. See BUGS 1. I think this was a syntax change because I would not have generated this originally if the syntax had not worked, at least I don't think I would have. See also DOCS DATA item, added in samples for dev purposes to avoid this type of issue in future. 2. UsbData: Device type from /sys could be upper/lower case first, but inxi was not testing for anything but lower case, which would lead to fallback tests for Bluetooth, Network, at least, maybe others. This goes with BUG 3, which exposed a small torrent of such potential failure cases. The fallback block of regex is really only designed to catch the few that don't get caught by the generic type tests. 3. NETWORK: UsbData::set_network_regex(). Bad regex caused bluetooth device: "Intel Bluetooth wireless interface" to trip an overly loose regex for wireless. See BUG 3b. The real issue was incorrect test nesting which led to a bluetooth device falling down to network regex, which it should not have done. It also failed test the product name for bluetooth, which led to failure as well. 4. SWAP: Was failing to capture some zram syntaxes, regex was too tight. Failed: /run/initramfs/dev/zram0. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. SYSTEM: added kernel current clocksource for -Sxxx, and alternates for -Sa. 2. BLUETOOTH: added btmgmt as first fallback to hciconfig, that one also supplies bt version via lmp version, like hciconfig. Note this tool has very little useful information. 3. Added back in discoverable, active discovery, and pairing status with -Ea. This data is also crudely available from btmgmt but I would not bet on those items actually being right. I'm not totally convinced that's good data, so making it admin for now. Put these in a 'status:' parent container. 4a. SWAP: Added zswap enabled, compressor, max_pool_percent for -ja swap general features line. If no zswap data and Linux, shows 'N/A'. https://www.kernel.org/doc/Documentation/vm/zswap.txt 4b. SWAP: Added zram comp_algorithm max_comp_streams to -j per line report, only for zram, of course. https://docs.kernel.org/admin-guide/blockdev/zram.html -------------------------------------------------------------------------------- CHANGES: 1. None that are obvious. -------------------------------------------------------------------------------- DOCUMENTATION: 1. DATA: Added new data/bluetooth/, with several sample 'btmgmt info' and 'hciconfig -a' outputs for debugging and reference purposes. These work with the revised debuggers and force/fake data switches for bluetooth. Should add some bt-adapter --info samples too to make testing/debugging easier. 2a. DOCS: Made new docs/inxi-bluetooth.txt doc. 2b. DOCS: Moved more data out of inxi-data.txt and inxi-resources.txt, into inxi-bluetooth.txt, tips-tricks.txt, man-pages.txt. While I'm not going to do it all at once, I am trying to move relevant data into granular doc file as I hit that during dev. 2c. DOCS: Updated and organized docs/inxi-tools-mapping.txt more, new mapping tools added. inxi has so many manually updated mapping tools that it's going to get more and more important that this document is accurate, and is updated when required. 3a. MAN/OPTIONS: Added BT tools to --force lists, and updated --bt-tool list. Also added -Ea options, the status: stuff. 3b. MAN/OPTIONS: Made consistent, lower case rpm, both PM type rpm and rpm as rotation were switching between RPM and rpm randomly. 3b. MAN/OPTIONS: Updated for --force ip/ifconfig, --ifconfig. 3c. MAN/OPTIONS: Updated for zswap, zram extra -ja data. -------------------------------------------------------------------------------- CODE: 1. BLUETOOTH: added %force bluetoothctrl, bt-adapter, btmgmt, hciconfig, rfkill, and added checks to enable $fake{'bluetooth'} in the main callers for each type. This makes debugging and development a lot easier. Also removed the force tool block in CheckTools, no idea, again, why I did it that way only for bluetooth. 2. CheckTools: got rid of set_forced_tools(), which was only used for bluetooth tools, and didn't fit with the rest of the core logic. 3. SYSTEM: CompilerVersion: used array refs wrong, or rather, used refs wrong, which led to various errors that were confusing. Corrected to start out with an array ref, then to pass that as is, leaving it the same ref all through, for bsd and linux. This is the method inxi should have always used for passing array/ hash refs around, create as ref, then pass around, and update, without assigning a new ref to it. I had failed to verify that the same ref was being used through the sequence. Unfortunately this error is probably very widespread in inxi, because no consistent rule was created and enforced from the first lines of Perl. 4. UsbData: added source type to --dbg 6 output, and added --dbg 55 to output the per type arrays. 5. NETWORK: IpData:: added --ifconfig/--force [ip|ifconfig], --fake ip-if to allow for basic debugging for -n / -i IP data sources. Not super useful since so much comes from /sys, but there was nothing there at all, which is weird for networking. 6. SWAP: Changed to passing data using scalar references, not returning an array of the items, and got rid of the copies in the swap_data_advanced() tool. It's less readable, but incurs basically very little overhead, and with the new function / method arg lists I'm using more now, it's clear what the references are. 7. IpData: got rid of extra array copies for push, pointless.
Completion of the audio fixes and improvements of 3.3.26. Added less … …common sound servers like EsounD and aRts, and made state reports more accurate for ALSA. Major USB code and data upgrades/refactors. The USB changes prepare inxi for USB 4, and adds lanes and Si/IEC speeds to the report. It is important to determine what USB mode you are running in with 3.x and 4. These changes conform more closely to how the USB consortium wants USB speeds refered to. With more robust USB data, this data now appears in a similar form as pcie: data for Devices, -A, -E, -G, -N, and for -D drives, as usb: plus rev, speed, lanes, mode, with the -xx/-a options, like pcie. This has been a long standing oversight and weakness of inxi USB and Device data, but now the two are fully integrated, including for drives, which was quite tricky to get working. Added netpkg and Zenwalk support to packages and repos. Also added repos support for sbopkg and slpkg, and updated package tools for Slackware. And more distros added to system base feature, and a few more for main ID. Improved --recommends report quite a bit, now it's more granular for missing packages and package manager reports, and also fixed a long standing missing current shell + version issue. Added the final package manager type, pkgtool (Slackware), that will be supported, which makes for 4, which is enough. Note that other package managers can be added following the documentation instructions for packagers, but this is enough for out of the box pm handling. Fixed a long standing oddity with how free / /proc/meminfo report MemTotal vs the actual physical RAM. I believe this issue also showed with GPU assigned RAM, but now for all but short form, shows Memory/RAM: available: ... used: ... -------------------------------------------------------------------------------- SPECIAL THANKS: 1. To the Slackware people at linuxquestions.org forums, who helped, again, on this audio feature, even finding current or not too old systems that use some of the new / old audio servers (EsoundD) running in the wild, which I never expected to see. And also for exposing some weak spots in the USB advanced logic, and helping with the sbopkg and slpkg repo logic and tools reports. 2. To the Manjaro forum users, for providing cases that show where inxi can be improved. The audio server/api issue, the current USB 3/4 upgrade, were initiated by threads pointing to things that could be improved in inxi. So I guess the real thanks are for using inxi enough to trigger cases that show where it's weak or can be better. Note that this requires that I follow roughly their forums, however I only look at threads that seem like they might be of general interest, or which suggest a possible weak spot in inxi, and I don't follow them consistently. More reliable is to file github issues, since I will always see those. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. DesktopData: at one point, BunsenLabs Debian OpenBox had XDG_CURRENT_DESKTOP set to XFCE, which it isn't, but inxi can't work around such hacks, plus I don't even know if Bunsen is around anymore anyway. 2. DesktopData: CODE 1 reminds us that the time to depend on x tools like xprop for anything re desktop/wm detections is fast drawing to a close, true Wayland will not have xprop, unless it's running on xwayland, which is not something that should be relied on. Maybe recheck Moksha/Enlightenment which depend on xprop for version detection. The list of xprop detected wm/desktops in get_env_xprop_misc_data() is almost all X only wm/desktops, so those should be safe unless one of them decides to work on a wayland comositor. 3. BSD: ongoing weaknesses in BSD data sources make maintaining feature parity impossible, but I am trying to get the BSD data as clean and consistent as possible. I wish this were not the case, but the fact is, /sys is expanding and creating excellent and reliable data sources with every major Linux kernel update, and so far nothing comparable has appeared in the BSDs. This is just reality, it's not a condemnation, but something like the /proc then /sys file systems are an excellent idea, well worth emulating. 4. For the RAM available/total clarification, there's a slight issue because free/meminfo show MemAvailable as Free for use RAM, but dmesg shows available meaning what was available to the system during boot, minus the reserved percentage. Since we needed one term, available to System offers the closest in terms of technical precision without being too verbose. Technically available in this context means: total physical minus 'kernel code' minus 'reserved'. -------------------------------------------------------------------------------- BUGS: 1. CheckRecommends: See Fix 6b, more or less a bug, but really just a fix. 2. AUDIO: for USB devices, put extra data into row 0, no matter which row the USB device is. This led to the extra data for USB being assigned to the wrong row. Sigh. 3. OptionsHandler: When show{'ram'} was set, for bsd, set use{'bsd-raid'}, which makes both show raid and ram fail for BSD. Oops. User mode RAM data only seen in OpenBSD so far. This made loading $dboot{'ram'} fail, and any raid as well, sigh, unless -m was also tripped. -------------------------------------------------------------------------------- FIXES: 1. DistroData: typo for Arch base: was ctios, was supposed to be ctlos. 2a. DesktopData: found case where xprop -root not present (Void Linux), so xfce test failed. Split to new function dedicated to xfce detection that doesn't use xprop data. Also, XFCE is working on their Wayland version, which would in theory not even have xprop by default. Also, the base version number test for xfce depended on xprop, but xprop doesn't even have that xfce version data anymore, so just checking if xfce(4|5|)-panel exist and assigning primary version based on that test. 2b. DesktopData: Also see See CODE 1a,1b for further xprop and test fixes that could have led to false positive or negative test conditions for the items that used xprop tests. These tests are all xprop agnostic now, if it's there, they will use it, if not, do the best they can. 3. PackageData: fixed legacy dpkg-query, old version did not support -f shortcut for --showformat. This made dpkg package listing fail. 4a. GRAPHICS: Added legacy XFree86.0.log to X log path detection, that was an oversight. Also added legacy module syntax _drv.o (not _drv.so). This gets X driver data now for very old systems. 4b. GRAPHICS: fixed corner case where no x driver data, running as root, was not supposed to show 'note: X driver n/a' message, that was a holdover from before driver output was cleaned up and driver: N/A shows when no drivers at all found. Just forgot to remove it when doing recent updates in the driver section, maybe? 5. REPOS/PackageData: For netpkg Zenwalk Slackware systems, showed only slackpkg repo data, empty, and showed the Slackware pm, not netpkg for pm. See Enhancements 5, 6. 6. REPOS: removed slapt_get file /etc/slapt-get/pubring.kbx, that's not a repo file. Thanks chrisreturn for pointing that out. 7a. CheckRecommends: See also CODE 6. Fixed case where > 1 package manager is detected on system, now lists them one by one for detected, and shows package install options as well. Before only picked first detected, which could lead to wrong results for Missing Package lists. 7b. CheckRecommends: Fixed glitch, forgot to update the current shell/version when ShellData was refactored, this led to no current shell + version showing up in recommends core tools report. 8. RAM: fixed speed_mapper string match to allow for older syntaxes. This is as far as known OpenBSD only, from dboot data. Matches then converts PC2700 to PC-2700 which then allows for mapping. 9. RAM/PROCESSES/INFO/SHORT: Finally tracked down a long time oddity, where for example: RAM: total: 31.28 GiB does not match 32 GiB physical installed. This is because that is the total available after kernel and system reserved RAM is deducted, and in some cases, GPU allocated RAM. There are also corner cases where the listed amount can be less due to physical RAM damage, but that's uncommon. Added explanation of why it's different, and what available is referring to in man -m/--memory. Changed -m, -tm to show: System RAM: available: 31.28 GiB used 26.23 GiB (83.9%) and -I to show: Memory: available: 31.28 GiB used 26.23 GiB (83.9%) You can get the 'reserved' and 'kernel code' data from dmesg, but since Debian made that root/sudo tool, can't count on being able to parse that out of dmesg, plus you can never count no dmesg anyway since it can get overwritten by kernel oops or wonky device etc. inxi doesn't use dmesg data for Linux for this reason. ... [ 0.000000] Memory: 32784756K/33435864K available (10252K kernel code, 1243K rwdata, 3324K rodata, 1584K init, 2280K bss, 651108K reserved, 0K cma-reserved) Also removed Raspberry Pi video RAM added back in to total now that it's clear it's what is available. This may also make systems with GPU using system RAM more correct. 9. SENSORS: sensors /sys tried to create concatenated string with $unit $value but these are not necessarily defined, that needed to be protected with defined tests. -------------------------------------------------------------------------------- ENHANCEMENTS: 1a. AUDIO: JACK: added helper nsmd (new session manager), and its recommended gui agordejo. That's the drop in replacement for non-session-manager, the dev of which apparently lost interest in that project. But the ID method will work fine for for either, since both ran as nsmd. 1b. AUDIO: PULSE: added pulseaudio-alsa plugin support for helpers. This is like pipewire-alsa plugin, just alsa config file. Only seen in Arch Linux so far, but if others use similar paths for the glob pattern, they will also work fine. Also added pulseaudio-esound-compat plugin, which is easier to detect with /usr/bin/esdcompat. Also added paman, pulseaudio manager. 1c. AUDIO: ESOUND,ARTS: added legacy esd (EsounD aka: Enlightened Sound Daemon) and aRts sound server support, with basic help/tools. These are quite old, but are still occasionally seen in the wild on newer systems, surprisingly enough. 1d. AUDIO: ALSA: added alsactl to alsa tools. Missed that one, it's an /sbin type utility. 1e. AUDIO: ALSA: First try at ALSA compiled in but inactive report, previously depended on active only state of the API. Now uses compiled in SND_ kernel switch using the /boot/config-[kernel] file, which is a big expensive parse but only will activate on Linux kernels with no /proc/asound present. This fallback fails if kernel config file not present: /boot/config-$(uname -r). 1f. AUDIO: OSS: added tool ossctl. 1g. AUDIO: NAS: added helper: audiooss which is an OSS compat layer. 2a. DistroData: added Arch base distros: ArchEX, Bridge Linux, Condres OS, Feliz, LiriOS, Magpie, Namib, Porteus, RevengeOS, SalientOS, VeltOS. None of these are verified. Some don't exist anymore. Source: https://www.slant.co/topics/7603/~arch-linux-based-distributions 2b. DistroData: added ubuntu lunar 23-4 release id. 2c. DistroData: added porteux, added porteux, zenwalk to slackware systembase 3. DesktopData/GRAPHICS: added Smithay Wayland compositor. Not verified. 4a. UsbData/UsbItem: added USB lanes (-Jxx) and mode (-Ja), to add more useful data about USB revision and mode names the USB group has created. Otherwise it's too difficult to try to explain it. Note that -Jxx lanes follows other inxi items that show PCIe lanes as an -xx item to try to keep it consistent. This also consolidates the bsd and linux data sources, see CODE 5. Note modes and lanes are Linux only because the revision number, lanes, and speed used to determine mode are only natively available in Linux as actual internal data values. If this changes BSD support will be added in the future. The BSD rev and speed data is synthesized completely by inxi using some string values, and thus is not reliable, which means that pretending inxi can get this granular with data that is not coming directly from the system itself is probably not a good idea. Following wikipedia mode names: https://en.wikipedia.org/wiki/USB4 These are the known possible combinations: rev: 1.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps rev: 1.1 mode: 1.0 lanes: 1 speed: 1.5 Mbps rev: 1.1 mode: 1.1 lanes: 1 speed: 12 Mbps rev: 2.0 mode: 1.0 lanes: 1 speed: 1.5 Mbps rev: 2.0 mode: 1.1 lanes: 1 speed: 12 Mbps rev: 2.0 mode: 2.0 lanes: 1 speed: 480 Mbps rev: 2.1 mode: 2.0 lanes: 1 speed: 480 Mbps rev: 3.0 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps rev: 3.0 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps rev: 3.1 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps rev: 3.1 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps rev: 3.1 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps [seen this case] rev: 3.2 mode: 3.2 gen-1x1 lanes: 1 speed: 5 Gbps [wrong rev: seen this case] rev: 3.2 mode: 3.2 gen-1x2 lanes: 2 speed: 10 Gbps [wrong rev: possible case] rev: 3.2 mode: 3.2 gen-2x1 lanes: 1 speed: 10 Gbps rev: 3.2 mode: 3.2 gen-2x2 lanes: 2 speed: 20 Gbps rev: 3.2 mode: 4-v1 gen-3x2 lanes: 2 speed: 40 Gbps [not seen, but possible] rev: 4 mode: 4-v1 gen-2x1 lanes; 1 speed: 10 Gbps rev: 4 mode: 4-v1 gen-2x2 lanes: 2 speed: 20 Gbps rev: 4 mode: 4-v1 gen-3x1 lanes: 1 speed: 20 Gbps rev: 4 mode: 4-v2 gen-3x2 lanes: 2 speed: 40 Gbps rev: 4 mode: 4-v2 gen-4x1 lanes: 1 speed: 40 Gbps rev: 4 mode: 4-v2 gen-4x2 lanes: 2 speed: 80 Gbps rev: 4 mode: 4-v2 gen-4x3-asymmetric lanes: 3 up, 1 down speed:120 Gbps I believe 120Gbps takes the 2 lanes of tx/rx and converts 2 rx lanes to tx so the entire lane is dedicated to transmit. and the third lane is dedicated to rx. Includes error message for unknown usb 3/4 rev/speed match combos. These can be bad hardware self reporting or unknown other issues. 4b. USB: Added Si/IEC speeds (base 2, base 10). -Ja triggers extra IEC, base 2 Bytes (xxx [MG]iB/s). -Jx triggers basic standard Si xxx [MG]b/s base 10 bits. 5a. PackageData: added netpkg as package tool. This stores data in same location as slackpkg, but assume if exists directory /var/netpkg, then the system is using netpkg as pm, not slackpkg. 5b. PackageData: added Slackware sbopkg, sboui as tools for pkgtool and netpkg. 6a. REPOS: added netpkg (Zenwalk Slackware based pm) repo report. 6b. REPOS: added sbopkg basic repo report. This handles both value syntax types, as well as the ability of /root config file to overwrite /etc config repo. 6c. REPOS: added slpkg repo report. This handles their old and newer syntax. 7a. CheckRecommends: For Slackware users, added pkgtool missing package name, also will use netpkg so hopefully Zenwalk uses same package names. 7b. CheckRecommends: Added radeon to kernel modules checks. 8. AUDIO/BLUETOOTH/DRIVES/GRAPHICS/NETWORK: For USB, -[ADEGN]xx adds rev, speed, lanes. -[ADEGN]a adds mode. 9. RAM: Updated RAM PC DDR in speed_mapper(), which is as far as I know only used by OpenBSD, which allows for MT/s speeds as non-root user, which is nice. That list hadn't been updated in a long time, so filled out DDR 1-5 PCx-yyyy ids. -------------------------------------------------------------------------------- CHANGES: 1a. USB: For -Jxy1, speed is now a child of rev: parent. This goes along with mode: and lanes: being children of rev:. This follows how USB consortium wants to refer to USB revisions now: by speed, lanes, and modes, the latter being the technical term, the speed being the marketing term. 1b. USB: If no speed data found, show N/A. This should almost never happen except for very old Linux and rarely with BSD. 1c. USB: Device type is lower cased except for abbreviations (type-C, HID). This makes it more consistent as a value. 1d. USB: Show basic Si speed with -Jx, and adds new IEC speed with -Ja. 2. CheckRecommends: See ENHANCEMENT, CODE 6. Now showing row by row package managers and missing packages, by package manager(s). 3. DRIVES: Changed long standing redundant use of 'type': type: USB ... type: HDD to: type: USB ... tech: HDD 'tech:' means the technology used, HDD, SDD, and if we can ever figure out how to detect it, Hybrid Hard Drive (HHD), 4. AUDIO/BLUETOOTH/DRIVES/GRAPHIC/NETWORK: moved 'type: USB' pair to after driver for -A/-E/-G/-N, which allows it to be the parent of the new USB data block. Negative is it moves it a bit further back in the line. For Drives, it moves it from after /dev.. maj-min to after block-size, However, with -D/-Dx, it's last in the line, which is nice. This is the only way I could find to make it more consistent across all possible USB device/drive type reports. 5. INFO/RAM/PROCESSES: Changed -I: Memory: [total] used: to: Memory: available: [total] used: Changed -tm/-m to be consistent: Memory: RAM: total: .. used.. to: Memory: System RAM: available: ... used:.. This corrects a long standing inaccuracy where MemTotal is not actually the full system RAM, but is the RAM minus reserved stuff for system and kernel, and GPU memory in some cases. -------------------------------------------------------------------------------- DOCUMENTATION: 1a. DOCS: docs/inxi-audio.txt: ongoing updates, adding more information, more on helpers, detection methods, etc. 1b. DOCS: New: docs/inxi-usb.txt: USB info, update, added more, a work in progress. 1c. DOCS: docs/inxi-custom-recommends.txt: name in inxi comment did not match, and updated to new comment cleaned up syntax in example. Fixed inxi comment file name. 1d. DOCS: New: docs/inxi-unit-handling.txt: To document how inxi handles size/speed data internally, and ideally, to help integrate all those methods into one big tool one day, not spread across many area. 1e. DOCS: New: docs/inxi-repo-package-manager.txt: To start to document arcana and methods and commands and outputs for package managers. Since this is a late start, will take time to complete, but better late than never. 2a. MAN/OPTIONS: updated for USB -Jx, -Jxx, -Ja, adding lanes, mode, iec speed items. 2b. MAN/OPTIONS: fixed error which had USB speed as -Jxxx instead of -Jxx. Also then changed speed to be -Jx. 2c. MAN/OPTIONS: updated for repos for SBOPKG, SBOUI, SLPKG, and added SLAPT_GET, I'd forgotten that one. 2d. MAN/OPTIONS: updated for -xx[ADEGN] USB rev, speed, lanes; for -a[ADEGN] updated for USB mode. 2e. MAN/OPTIONS: updated for memory available/used changed. 3. MAN: fixed some inconsistent use of short/long form display in extra data options. -------------------------------------------------------------------------------- CODE: 1a. DesktopData: New function for xfce only detections, turns out xprop is not necessarily installed, Void Linux for example had failed ID. Old version required xprop to do the tests, which was not robust and failed in this case. Function: get_env_xfce_data(). Also made xprop data optional for all the xxx_xprop_data desktop tests, not just some of them. This will forward proof the desktops 1b. DesktopData: Fixed bad parens in test cases, was not correctly organized. if (a || b || (c || d) && e) was supposed to be: if (a || b || ((c || d) && e)) Odd how those types of glitches creep in, one fix is also to just make the lines break more reasonably so the conditions are easier to parse visually. 2a. DEBUGGER: Added /etc/X11/XF86Config-4 xorg conf file to debugger. 2b. DEBUGGER: audio_data(): added audio server versions to cover all known ones. 3. MemoryData: changed all $memory to array references, got rid of split : separators, which were clearly legacy items leftover from bash/gawk days. Also changed MemoryData::get('splits') to get('full') to reflect this change. This change should be transparent though it may introduce corner case undefined value situation but that should not happen since array values are defined first. 4. UsbData: Refactor of usb speed, rev, added lanes, mode. Refactored most of the bsd/linux rev/speed logic, merged some of bsd speed/rev into the new version_data() function, which loads all the data based on what is calling it. This helps consolidate the logic across usb data sources. 5a. GLOBAL: made functions/methods use same comment syntax for args: args: 0:...; 1:... always starting with 0, to match array index. Same syntax for return array index values. In some cases simply note a variable is passed by ref: args: $value passed by reference. 5b. GLOBAL: made all sub/functions/methods follow the same spacing syntax. This seems to be a good compromise for space/readability. Note that adding in these new lines added about 400 lines to the total length, plus the line breaks that were already there. Yes, inxi has a lot of sub routines! aka functions and sometimes aka methods. [empty line] [comments] sub [name] { Packages/classes now also all follow the same spacing rules: [empty line] [comments] { package [name]; [empty line] [comments] sub [name] { ... } } Internally, subs generally do not use any empty lines unless it makes sense to do so for some specific reason. 5c: GLOBAL: made start of sub comments be upper case, I have a bad habit of typing comments in lower case, easier to read if it's reads like a normal sentence. 6. CheckRecommends: refactored entire items logic, set global hash for test items. Made support > 1 detected package manager. 7. REPOS: cleaned up comments for package manager/repo blocks. 8. SENSORS: sensors_sys failed to reset to undefined $unit and $value, and also failed to test if they were defined before using them in concatenation.
A small point release, various smaller items, ongoing updates to matc… …hing table features, bug fixes, but nothing major. -------------------------------------------------------------------------------- SPECIAL THANKS: 1. Thanks Umio-Yasuno in github issue #281 for actually being proactive and finding some Intel/AMD gpu device id lists. I wish more issues would be like that. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. DEBUG: --debug-arg and --debug-arg-use must use the full format: --debug-arg="-GS", or else the command line eats the args, even if in quotes. The error handlers will then complain about no data supplied, and it will exit. -------------------------------------------------------------------------------- BUGS: 1. GRAPHICS: An accidental 'and' instead of 'or' test (see Code 1) led to systems without gpu or dri graphics drivers not showing their xorg driver even when present. This was due to a mistake, and also due to how Perl handles || and && in sequence, which made this bug not show up until I tested on a system with xorg graphics driver, but without dri or gpu drivers. Virtually no modern hardware or operating systems would trip this condition, but older hardware and operating systems, which may not have gpu or dri drivers, might. And did, in my case. This is by the way why I try to test on old hardware at least now and then. -------------------------------------------------------------------------------- FIXES: 1. CODE: A poorly done attempt at optimization would have broken case insensitive pre-compiled regex with $pattern = qr/../ because you can't add /$pattern/i to precompiled pattern, but qr/.../i support only added perl 5.014. This should impact almost nobody, but it is/was a glitch. Basically qr/../ can only be used when no /i type modifier is required if supporting Perl less than 5.014. See inxi-perl/docs/optimization.txt section REGEX for more on this. Note that Perl already compares the values in the variable each iteration via a simple equality test, so the only real gain from using qr// is not having to do that equality test each iteration of a loop. 2. OUTPUT: Fixed a few small inner key name failures to use '-' instead of ' ' to separate key terms: 3. REPOS: Called urpm urpmq, which is the query tool, not the actual type. 4. GRAPHICS: Fixed some gpu_id.pl matching rules. Thanks Umio-Yasuno in github issue #281 for noticing that some of the matching rules were either wrong or not loose enough. -------------------------------------------------------------------------------- ENHANCEMENTS: 1a. OPTIONS: Long time oversight, no option to test or do one time change of key: value separator string ':'. This goes along with existing config option SEP2_CONSOLE. Added --separator/--sep {character}. 1b. OPTIONS: Added synonym for --output: --export, and for --output-file: --export-file. 2a. GRAPHICS: New Intel gpu data source, from intel, finally. This let us add a lot more gpu ids. Thanks Umio-Yasuno in github issue #281 for finding these. 2b. GRAPHICS: New AMD data source, from github. This let me fill in some more, albeit not as accurately as previous sources, but added more so fine. Thanks Umio-Yasuno in github issue #281 for finding these. 3. CONFIG: In a first, took a feature from acxi, --config, and imported it into inxi! This shows active current configuration, by file. 4. CPU: updated, fine tuned amd cpu microarch ids. 5. DISKS: More disk vendors added. Not as many as usual, I think the high tech sanctions against China may be slowing the rate of new Chinese SSD/USB vendors. But still some new ones, as always. Not many new IDs for existing ones though, that is noteworthy. A few new data sources to help pinpoint vendor names found too, though those won't in general impact users, but can be used to determine if a string is in fact a company name. -------------------------------------------------------------------------------- CHANGES: 1. OUTPUT: Fix 2, -t 'started by:' key name changed to: started-by: -G 'direct render:' changed to 'direct-render:'. -------------------------------------------------------------------------------- DOCUMENTATION: 1a. MAN: there were a few <...> instead of [...] for required option arguments. Fixed those. 1b. MAN: also added --debug-id [string] since that is in general useful info. 1c. MAN: Added qualifiers about when xwayland: and compositor: items appear for default -Ga output. 1d. MAN: Typo in config path in man page, .conf/ should be .config/. 1e. MAN: for --output json/xml, added pointer to doc page on smxi.org, people being unable to grasp the output is getting tiresome. 1f. MAN: Added synonym for --output, --export. 2a. SMXI.ORG DOCS: added --output json/xml documentation page: https://smxi.org/docs/inxi-json-xml-output.htm - this is also linked to from the github wiki page, though of course nobody is going to read it, as well as from a few pages in smxi.org. 2b. Updated inxi-man,options,changelog.htm files. 3. CHANGELOG: Changed to use same format as acxi.changelog, leading topic id's in upper case, makes it easier to scan read and organize. 4a. DOCS: docs/inxi-cpu.txt - cleaned up, re-arranged a bit, added cpuid data explanation, and updated header on inxi-perl/data/cpu/microarch to better explain the way amd does ext fam / ext model, which are not the same, bizarrrely, very confusing. 4b. DOCS: New: docs/inxi-disks.txt. Split out from inxi-resources.txt, part of the ongoing to documentation modularization, slowly splitting out sub topics from inxi-data.txt and inxi-resources.txt. Note this is in general only done when I'm working on that specific feature. But slowly, surely. -------------------------------------------------------------------------------- CODE: 1. GRAPHICS: Test when no gpu drivers and no dri drivers but x drivers never showed x driver. Was supposed to be all || for tests: if (@$gpu_drivers || $graphics{'dri-drivers'} && @$x_drivers){ https://perldoc.perl.org/perlop. I believe this led to test 1 being false, test 2 being false, and since that left tests 2 and 3 needing to be true for the && logical and to be true. Since only one of the two was true, the last bit was seen as false. 2. GRAPHICS: Connected with 1, noticed that for some weird reason, I'd decided to assign the array ref for drivers like this: @$x_drivers = (a, b, c); when it was supposed to be: $x_drivers = [a,b,c]; This did not cause any issues, since they mean the same thing, but it was silly to write it that way. 3a. DEBUG: Added --debug-arg-use which allows testers to run a specific argument combination that may be causing issues. 3b. DEBUG: Also added more validation, to make sure arg for --debug-arg / --debug-arg-use start with - or -- followed by a letter. 4. START: Removed this code block from set_konvi_data. I had left this in place for a release or two to make sure no need for it was found, but it will never be used since it never worked in the first place. # my $config_cmd = ''; # there's no current kde 5 konvi config tool that we're aware of. Correct if changes. # This part may never have worked, but I don't have legacy data to determine. # The idea was to get inxi.conf files from konvi data stores, but that was never right. # if (main::check_program('kde4-config')){ # $config_cmd = 'kde4-config --path data'; # } # kde5-coinfig never existed, was replaced by $XDG_DATA_HOME in KDE # elsif (main::check_program('kde-config')){ # $config_cmd = 'kde-config --path data'; # } # elsif (main::check_program('qtpaths')){ # $config_cmd = 'qtpaths --paths GenericDataLocation'; # } # The section below is on request of Argonel from the Konversation developer team: # it sources config files like $HOME/.kde/share/apps/konversation/scripts/inxi.conf # if ($config_cmd){ # my @DaTa = main::grabber("$config_cmd 2>/dev/null",':'); # Configs::set(\@DaTa) if @DaTa; # main::log_data('dump',"kde config \@DaTa",\@DaTa) if $b_log; # } 5. OPTIONS: in OptionsHandler::post_process(), reorganized the various run and exit triggers, help, configs, recommends, version, etc. All on top now.
A small point release, mainly to get some bug fixes, and a few minor … …issues, and some ongoing updates to various matching rule features like CPU, Disk Vendors, etc. -------------------------------------------------------------------------------- SPECIAL THANKS: 1. mrmazda, for continuing to poke around and finding oddities on occasion. 2. The various packagers, for continuing to package inxi. 3. Nothing else really comes to mind, so I'm thankful that no real issues popped up, and the ongoing attempt to stabilize and clean up the several year aggressive development cycle of code is proceeding quite well. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. I'm currently getting no data samples from new server type CPU systems, Nvidia Grace, Ampere, both ARM V2 based. The ARM cpu arch logic hasn't been updated in many years since I have gotten no meaningful data, currently Raspberry Pi 4 is the latest ARM generation I've seen data for, and no ARM server type for many years. So support there is really not happening, and won't be until I start getting real datasets on those server systems. Nvidia uses Neoverse V2 ARM core, but I have no information on that yet. Also nothing from the Amazon CPU, new Marvell datacenter type CPUs. But that's not surprising.Also, nothing from the N1 (2019) or V1 Neoverse (2021) ARM CPU family even though those have now been out a while. A lot of the advanced CPU data should 'just work' because of the huge CPU refactor done recently, but some of the more advanced data, particularly cpu_arch type data, isn't going to be available until I get real data sets so I can see what's going on. No idea how CPUID might work for ARM cpus, for example. Objectively many of these datacenter/machine learning focused CPUs will never see a system inxi will run on, though most I suspect will be running GNU/Linux in some form, so inxi can in theory run on them, but those people all know what their systems are doing, so the need isn't particularly pressing of course. With this said, I did used to have more access to cutting edge server stuff, but that has largely dried up, particularly ARM based chips. -------------------------------------------------------------------------------- BUGS: 1. Found while resolving Fix 2, it turns out > 1 X Screens would not have shown correctly due to failing to pass $j row counter by reference. This bug was introduced when the big Monitor updates were done, since you almost never see > 1 X Screens now, I never saw it until testing something for another reason. This led to > 1 Screen showing on the same line as the last monitor of the previous Screen. See also Fixes 2, 3, 4, and Code 1, 2, 3. -------------------------------------------------------------------------------- FIXES: 1. Changed Intel Saphire Rapids release data from 2021+ (what Intel had initially announced) to 2023+ (the actual release date). Not my fault!! They were too optimistic, inxi merely repeated their claims. 2. While trying to figure out extra Screen showing up, found a series of subtle issues with how X Screens are handled. Added in more robust test for if Screen ID has been added by xdpyinfo_data, and other weird corner cases that might cause strange results in Display Screen-x. Created check_screen() to allow for more granular and debugable testing. This forum post helped focus attention on this issue: https://forum.endeavouros.com/t/\ my-second-screen-is-not-working-after-installing-nvidia/33388 3. %monitors was not correctly assigned in xrandr screen fallback. 4. Set number of Screens found if no xdpyinfo or if xrandr found > xdpyinfo number of screens. 5. Added Zhaoxin match to Centaur match, might show up on cpu string. 6. OpenBSD's package manager was listed as pkg_info, but it's slightly more accurate to call it pkg_add. As far as I understand it, OpenBSD doesn't really have a 'package manager' per se, it has a suite of tools to manage packages. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. Added some Zhaoxin/Centaur IDs, unlikely to show up, but you never know. 2. Added m68k to X display driver list. This was just added to kernel as a full drm driver! Very legacy, but has users in vm, qemu, etc. 3. More disk vendors! I skipped updating this last time because, well, collecting the data is really boring, and slightly tedious, and really serves to simply remind that this is not the way towards a better world. Or are cheap SSDs the true path after all? I doubt it, but you never know. 4. New AMD, Nvidia gpu ids. 5. New Intel Cpu Microarch IDs. -------------------------------------------------------------------------------- CHANGES: 1. No changes to speak of, so I won't. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Various ongoing updates to inxi-perl/docs. These are very slowly being pulled into a more useful form. Emphasis on slowly. -------------------------------------------------------------------------------- CODE: 1. In Graphics::xdpyinfo_data() and Graphics::xrandr_data() got rid of extra step, now just assign hash reference directly to push anonymous hash reference into array. Had used intermidiate variable assignement of hash ref, but that is pointless. 2. Added $fake{'xdpyinfo'}, hoping to get some debugger data to test weird extra 'Screen' seen with Endeavor user (see Fix 2, 3, Bug 1). 3. Also, instead of using \%monitors, which creates a reference to the last value of %monitors, used the correct and safer {%monitors}, which creates an anonymous reference of the value %monitors had at that moment. This is a subtle Perl error which is easy to make in cases where the hash or array reference is almsot never > 1 instance, such as > 1 X Screens. This should at least help resolve the repeated 'monitors' rows in the output in Fixes 2, 3, 4. 4. Added 'source' to $graphics{'screens'} to log where each detected screen came from, xdpyinfo or xrandr.
This release fixes another very long standing bug, which I was not su… …re was an inxi or a Konversation bug, which made tracking it down very difficult. Special thanks to argonel of Konversation for helping solve this problem, or at least, for directing my attention towards the likely cause area, and away from wrong ideas. The bug was that inxi simply did not run in Konversation, it would exit with error when run with /cmd or /inxi via symbolic links. This may not seem like a huge deal to many of you, but the actual history of inxi was directly linked to user support in mainly Konversation, so this feature not working I have alwyas found extremely annoying, but I could never figure out why it wasn't workiing, and didn't really know where to start until Argonel helped narrow it down to a specific Konversation function in inxi. At which point tracking down the real bug was fairly easy. Since testing in IRC is always a key test point for inxi features and releases, not working in my main GUI IRC client forced me to use CLI clients like irssi, via /exec -o inxi. There was a secondary cause of failure, which was missing a key qdbus package, which made figuring this one out a two step process. So inxi is once again working in all areas, with no known significant failure areas beyond known issues that have no current solution, or which I don't feel like doing. But possibly more important, a goal I have had for a while now of doing long needed code refactors, bug fixes, without huge new code blocks or features adding new future fixes and bugs, has been slowly happening. This was quite important, because inxi's codebase and logic is so complex and large now that at some point, it required rest and cleanup and corrections, without continuously adding new code and logic, which would then trigger new fixes and bugs. In other words, the code is taking a long needed, and well deserved, breather, to recover after huge increases in the overall LOC and feature sets. -------------------------------------------------------------------------------- KNOWN ISSUES: 1. No known way to detect that the system might be Wayland for the Graphics:.. API: fixes, unless Xwayland is installed if the wayland protocol detections failed, which they often do in console. Not practical to look for all compositor variants on system to determine if it could be Wayland if not X or Xvesa, so that one will just be what it is, which is fine, definitely better than it was before. Note this is only an issue if in Console, no Display. Note that if inxi is run as root, Wayland data also usually fails, even in Display. -------------------------------------------------------------------------------- BUGS: 1. Another corner case monitor position issue, applied fallback primary monitor rule when a primary monitor had already been located. This is corrected via a graphics global $b_primary which once set will disable this fallback feature. Objectively, the fallback feature should just be removed. The test is if that monitor is not primary, and if position is 0x0, then assume primary, without verifying no primary had been located yet. 2. A super old bug, in current konversation, was failing to trip the konvi detections, which then resulted in not stripping off the first two args in @argv, which then resulted in bad args being passed to inxi on konvi start, which then resulted in silent failing. Many thanks to argonel of #konversation for the patience to help me figure out what was going on with this bug. He's been a Konversation developer probably longer than I've been doing inxi. Cause was very tricky and subtle, the ps aux path for konvi had changed slightly, not the path, but the pattern, it used to be: konversation -session [sessin id] but it's changed to: konversation -qwindowtitle Konversation or just plain: konversation as line ending. This led to failure to find konvi running, which then made the konvi ids fail. Also, this would not work if the qdbus-qt5 package was not installed, or other distros might have that packaged differently. Because of these dual causes, I was simply unable to figure out what was going on for many years. I suspect this stopped working with KDE 5/QT 5, but I'm not sure. 3. Used wrong key names for some ZFS tests and fallbacks, those could have led to failures though very difficult to test and verify this. Also see fix 5, which of course also looks like a bug, acts like one, but was actually due to a new use of /dev/disk/by-partuuid for ZFS components in Ubuntu which inxi had not seen before. -------------------------------------------------------------------------------- FIXES: 1. Alternate ps IDs for appimage detection (try appimagelauncher), alternate paths for possible appimage storage locations (also try ~/.appimage/*). File names might be *.appimage or *.AppImage, probably other variants too. 2. Going along with Change 1, made tests more granular for missing graphics API type data. Also updated messages to be more correct and clear, in and out of display. This corrects an issue I'd seen but never resolved, which was on headless systems showing this message: Message: GL data unavailable in console. Try -G --display Now the tests are far more granular, and only show that if glxinfo is installed, and also shows specific messages if glxinfo not installed, but X/Xorg present, or, for Wayland, if Xwayland present. These all get their own specific messages now, and generally will also show which API is being used, or API: N/A if nothing is detected, as in the case of a headless system with no X, Wayland, etc. 3. Github issue #275 on of all things Microsoft WSL environment, has a small glitch with undefined display hz, but otherwise inxi seems to work in that environment, albeit missing many data types! 4. Made tests for konversation more robust, including test for $ENV{'PYTHONPATH'} containing konversation in path, which I believe will work for all new Konversations (KDE 5 and newer), and be much faster. The previous tests are now more robust and less prone to failure, and only activate when PYTHONPATH is not present with konversation string present as well. 5. Fix for ZFS using /dev/disk/by-partuuid for partition id in zfs, which can lead to wrong usable disk total size report, along with failure to show components. Thanks delanym, issue #276 for reporting this problem, which also exposed some harder to trigger bugs in ZFS (Bug 3). 6. Exposed by issue #276, case where line was wrapping value when value was too short visually to value: used: 34.4 GiB (4.5%) due to the 3 or more words trigger to enable wrapping of value, but noticed that if length of line was exactly max-width, not > or <, it might vanish. 7. Case where no X or GPU drivers found, but dri driver detected, was not showing, now does. 8. OpenRC is the init system in some cases, that is: readlink /sbin/init > /sbin/openrc-init, where /proc/1/comm == init. Was showing only as OpenRC rc type, which wasn't actually correct. -------------------------------------------------------------------------------- ENHANCEMENTS: 1. New nvidia gpu product ids for Turing, Ampere, Lovelace, Hopper. New Intel GPU ids. 2. Added Zinc to systembase/distro, needs slightly special handling to get both names right. Also added Tuxedo, which could use existing methods. 3. Added dpkg tool nala, which is sort of a CLI front end for apt, zinc uses it, but it's also in Debian main package pool. Also deb-get, which is another zinc thing for package management. 4. Full support for dinit: version, dinitctl w/status in ServiceData 4. Added initial support for init systems: 31init (31 line C program, no --version), Hummingbird (unknown if -v/--version). 5. A few new CPU arch ids (new Intels). -------------------------------------------------------------------------------- CHANGES: 1. Going somewhat along with the change in Audio to call ALSA a Sound API instead of a sound server, changed key name OpenGL: to API: OpenGL in Graphics. Also for EGL wayland, calling that the api too. https://en.wikipedia.org/wiki/OpenGL This conforms more closely to how these things are defined. Note that once again, a value had been used as a key name, which almost always indicates a failure to understand something about the core tech. 2. Changed wrapping of values from 3 words or more to 3 or more words AND length > 24 characters. Saw example of: .... used: 28.45 GiB (4.5%) which isn't desirable. 3. Changed minimum wrap to 60 columns, the new wrapper features are working so well that if users want output that short, it will usually work fine, except of course for very long word strings like a kernel name or parameter. Note that this does not truncate long 'words' that might be wrapped, or going along with Change 2, long 'sentences' of 2 words, those will always appear on the same line regardless. For 'sentences' of 3 or more words, however, it goes word by word, so it could well wrap after the first word, and so on. Obviously, a 24 or fewer character value will never be wrapped, which was the intended correction of change 2. 4. Going with Fix 8, OpenRc is an init system when it owns /proc/1/comm, had not realized that /proc/1/comm == init can map to dinit, openrc as init. Now will only show OpenRc as rc: type if not init as well. -------------------------------------------------------------------------------- DOCUMENTATION: 1. Updates in man for Change 1. 2. Added to docs/inxi-graphics.txt good quote re EGL/GBM, as well as VBE/GOP for vesa. Trying to find docs where they actually say clearly it's an API is remarkably difficult. 3. Man page, added note about Konversation requiring qdbus-qt5 (Debian+), qt5-qttool (RHEL+/SUSE+), qt-tools (Arch+) for inxi to work inside it. Also updated smxi.org/docs/inxi-usage.txt to note requirements for Konversation use and setup. 4. Man, help, changed min width for -y/--width from 80 to 60. 5. docs/inxi-values.txt updated for --cygwin, --wsl fake OS type switches. Not technically the OS, more the environment, but close enough. 6. docs/inxi-init.txt updated for new init types. -------------------------------------------------------------------------------- CODE: 1. Refactored tools/gpu_ids.pl to correct and enhance some features. 2. Renamed functions and sections to better reflect that the display interface is an API, this makes stuff less odd internally, and makes the function/variable names correspond better to what the stuff really is. 3. Commented out kde konversation data source config collector, that logic looks like it never worked, and couldn't work, since it never actually located inxi.conf files, just paths to the data directories. 4. Expanded release.pl to handle acxi docs as well, makes it all consistent and a lot easier to do long term. 5. Fake --wsl WSL switch, not really used, but in case. 6. Changed $b_cygwin to $windows{'cygwin'} and added $windows{'wsl'}. 7. Added -WSL to debugger string generator once WSL type is detected. 8. Refactored init, runlevel functions get_init_data() (now InitData::get()), get_runlevel_data() (now InitData::get_runlevel()), get_runlevel_default() (now InitData::get_runlevel_default()) into one package/class: InitData. This should have been done a long time ago, to follow the general rule "if > 1 functions for a tool refactor it into a class/package" for when to create a package/class internally. 9. Completed gpu_ids.pl, now outputs the full hash set per item, so entire blocks can be copied/pasted over. Something of a pain to get comments included, which aren't strictly necessary in pinxi itself, but they do help read the hashes for gpu data.
PreviousNext