screenfetch 与 neofetch 的差异

san*_*lio 2 desktop-environments system-info

在最近安装的 Ubuntu 22 中,我发现输出之间存在细微差异。我只在这里报告有意义的差异:1)软件包数量,2)DE 版本。

$ neofetch 
Packages: 2685 (dpkg), 9 (snap)
DE: GNOME 42.2

$ screenfetch
Packages: 2693
DE: GNOME 41.7
Run Code Online (Sandbox Code Playgroud)

可能的原因是什么?(哪个是正确的?)

编辑:包裹计数有 3 个数字:1. NF-dpkg = 2685,NF-snap = 9,SF = 2693。根据 Artur Meinild 的回答以及我在几个系统中尝试的内容,

  1. dpkg --get-selections | wc -l给出NF-dpkg
  2. dpkg --get-selections | grep "[[:space:]]install" | wc -l可能会给出低于NF-dpkgSF 的数字。

Art*_*ild 5

我在这里猜测一点(因为我没有时间深入研究每个应用程序的源代码)。

我发现 Neofetch 包号与此命令匹配:

dpkg --get-selections | wc -l
Run Code Online (Sandbox Code Playgroud)

但是,在我看来这是错误的,因为这列出了已安装和已卸载的软件包(这不是我想要的)。

因此,我创建了自己的命令来正确列出仍然安装的软件包:

dpkg --get-selections | grep "[[:space:]]install" | wc -l
Run Code Online (Sandbox Code Playgroud)

这仅给出了正确的已安装软件包数量(这明显低于 Neofetch 的默认数量 - 每次安装新内核时该数量都会增加,因为旧内核已被卸载,但 Neofetch 仍会计算在内)。

对于您看到的包编号,事情是这样的:Neofetch 还报告了 snap 包的数量错误(+1,因为我相信他们忘记删除标头 - 可以通过运行进行验证snap list) - 所以您的 snap 包的正确数量如果我没记错的话,安装的是8。

然后我相信 Screenfetch 将debsnap包都计算在同一行中 - 因此如果您安装了 8 个快照,则这会匹配。但deb由于上述原因,软件包仍然很遥远 - 正因为如此,在我看来,这两个数字都不正确(如果您想计算已安装的软件包)。

对于 Gnome 版本号,不同的脚本以不同的方式查找版本号:

  • 屏幕抓取检查$XDG_CURRENT_DESKTOP
  • Neofetch 检查gnome-shell --version

Neofetch 报告的版本应该是“最”正确的版本(感谢 Rinzwind)。

经验证,Ubuntu 22.04 DE 是一个“FrankenGnome”,混合了版本 41 和 42 组件 - 这大概就是它返回这些不同数字的原因。

希望这仍然有帮助。

  • screenfetch 检查“$XDG_CURRENT_DESKTOP”。neofetch 使用“gnome-shell --version”,这应该是正确的(它与“设置”-“关于”中的版本匹配)。有 gnome 的人可以检查这两个,但我不会;-) (2认同)