Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package bottom for openSUSE:Factory checked 
in at 2025-08-16 20:39:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bottom (Old)
 and      /work/SRC/openSUSE:Factory/.bottom.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bottom"

Sat Aug 16 20:39:19 2025 rev:26 rq:1299863 version:0.11.1~0

Changes:
--------
--- /work/SRC/openSUSE:Factory/bottom/bottom.changes    2025-08-10 
22:21:06.200476522 +0200
+++ /work/SRC/openSUSE:Factory/.bottom.new.1085/bottom.changes  2025-08-16 
20:44:14.180314641 +0200
@@ -1,0 +2,11 @@
+Fri Aug 15 20:37:17 UTC 2025 - Jan-Luca Kiok <opensuse-packa...@jlk.one>
+
+- Update to version 0.11.1:
+  * Bug Fixes
+    * Fix disk.columns being incorrectly interpreted as blank.
+    * Fix issue with battery widget time and small widths.
+  * Other
+    * Speed up time between startup and displaying data.
+
+
+-------------------------------------------------------------------

Old:
----
  bottom-0.11.0~0.tar.zst

New:
----
  bottom-0.11.1~0.tar.zst

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bottom.spec ++++++
--- /var/tmp/diff_new_pack.43I53t/_old  2025-08-16 20:44:19.836549198 +0200
+++ /var/tmp/diff_new_pack.43I53t/_new  2025-08-16 20:44:19.836549198 +0200
@@ -18,7 +18,7 @@
 
 
 Name:           bottom
-Version:        0.11.0~0
+Version:        0.11.1~0
 Release:        0
 Summary:        Yet another graphical process/system monitor
 License:        Apache-2.0 AND MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.43I53t/_old  2025-08-16 20:44:19.880551023 +0200
+++ /var/tmp/diff_new_pack.43I53t/_new  2025-08-16 20:44:19.884551190 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/ClementTsang/bottom.git</param>
     <param name="versionformat">@PARENT_TAG@~@TAG_OFFSET@</param>
     <param name="scm">git</param>
-    <param name="revision">0.11.0</param>
+    <param name="revision">0.11.1</param>
     <param name="match-tag">*</param>
     <param name="versionrewrite-pattern">(\d+\.\d+\.\d+)</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.43I53t/_old  2025-08-16 20:44:19.908552184 +0200
+++ /var/tmp/diff_new_pack.43I53t/_new  2025-08-16 20:44:19.912552350 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/ClementTsang/bottom.git</param>
-              <param 
name="changesrevision">566502347eeb61819a33a2222faf3621583430a9</param></service></servicedata>
+              <param 
name="changesrevision">2578f20ce542047e3906ef87334ce15fbb53c15a</param></service></servicedata>
 (No newline at EOF)
 

++++++ bottom-0.11.0~0.tar.zst -> bottom-0.11.1~0.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bottom-0.11.0~0/.github/ISSUE_TEMPLATE/bug_report.yml 
new/bottom-0.11.1~0/.github/ISSUE_TEMPLATE/bug_report.yml
--- old/bottom-0.11.0~0/.github/ISSUE_TEMPLATE/bug_report.yml   2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/.github/ISSUE_TEMPLATE/bug_report.yml   2025-08-15 
05:56:41.000000000 +0200
@@ -81,7 +81,7 @@
 
         It would also be helpful if you are not running [the latest 
version](https://github.com/ClementTsang/bottom/releases/latest)
         to try that as well to see if the issue has already been resolved.
-      placeholder: 0.11.0
+      placeholder: 0.11.1
 
   - type: textarea
     id: install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/.github/ISSUE_TEMPLATE/packaging.yml 
new/bottom-0.11.1~0/.github/ISSUE_TEMPLATE/packaging.yml
--- old/bottom-0.11.0~0/.github/ISSUE_TEMPLATE/packaging.yml    2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/.github/ISSUE_TEMPLATE/packaging.yml    2025-08-15 
05:56:41.000000000 +0200
@@ -21,10 +21,10 @@
 
         For any other distribution channel, please first try to contact the 
package maintainers where appropriate
         to get help regarding distribution-specific issues (e.g. the package 
has issues installing, the package
-        is outdated, etc.) before reaching out here. This is as while I am 
happy to help where possible, I do not
-        personally use many of the various ways people distribute bottom. As 
such, unless specified, I might lack the
-        platform-specific context, knowledge, or tools to be able to help you 
at all regarding the distribution method,
-        and the best I can do is just point you to the package maintainer.
+        is outdated, etc.) before reaching out here. While I am happy to help 
where possible, I do not
+        personally use many of the various ways people distribute bottom. As 
such, I might lack the
+        platform-specific context, knowledge, or tools to be able to help you 
at all regarding the
+        distribution method, and the best I can do is just point you to the 
package maintainer.
 
   - type: checkboxes
     id: acknowledgements
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/.github/workflows/build_releases.yml 
new/bottom-0.11.1~0/.github/workflows/build_releases.yml
--- old/bottom-0.11.0~0/.github/workflows/build_releases.yml    2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/.github/workflows/build_releases.yml    2025-08-15 
05:56:41.000000000 +0200
@@ -469,9 +469,9 @@
         env:
           BTM_GENERATE: true
         run: |
-          cargo install cargo-deb --version 2.5.1 --locked
+          cargo install cargo-deb --version 3.5.0 --locked
           cargo deb --no-build --target ${{ matrix.info.target }}
-          cp ./target/${{ matrix.info.target }}/debian/bottom_*.deb .
+          cp ./target/debian/bottom_*.deb .
 
       - name: Build Debian release (ARM)
         if: startsWith(matrix.info.target, 'x86_64') != true
@@ -480,7 +480,7 @@
         run: |
           docker pull ${{ matrix.info.container }}
           docker run -t --rm --mount type=bind,source="$(pwd)",target=/volume 
${{ matrix.info.container }} "--no-build --variant ${{ matrix.info.dpkg }} 
--target ${{ matrix.info.target }}" "/volume"
-          cp ./target/${{ matrix.info.target }}/debian/bottom-*.deb .
+          cp ./target/debian/bottom-*.deb .
           TMP_NAME=$(find bottom-*.deb)
           VERSION=${{ matrix.info.dpkg }}
           mv $TMP_NAME $(echo $TMP_NAME | sed "s/-$VERSION//")
@@ -502,8 +502,8 @@
 
       - name: Delete generated Debian folder
         run: |
-          sudo chown $USER ./target/${{ matrix.info.target }}/debian/ 
2>/dev/null || true
-          rm -r ./target/${{ matrix.info.target }}/debian/
+          sudo chown $USER ./target/debian/ 2>/dev/null || true
+          rm -r ./target/debian/
 
       - name: Generate artifact attestation for file
         uses: 
actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # 
v1.4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/.github/workflows/post_release.yml 
new/bottom-0.11.1~0/.github/workflows/post_release.yml
--- old/bottom-0.11.0~0/.github/workflows/post_release.yml      2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/.github/workflows/post_release.yml      2025-08-15 
05:56:41.000000000 +0200
@@ -1,7 +1,6 @@
 # Actions to run after releasing a version, like:
 # - Generating documentation via mkdocs
 # - Notifying packaging repos
-# - Automatically creating winget packages
 
 name: post-release
 
@@ -101,25 +100,3 @@
           -H 'Accept: application/vnd.github.everest-preview+json' \
           -u ${{ secrets.BOTTOM_PACKAGE_DEPLOYMENT }} \
           --data '{ "event_type": "update", "client_payload": { "version": 
"'"$RELEASE_VERSION"'" } }'
-
-  winget:
-    needs: [initialize]
-    runs-on: windows-latest
-    steps:
-      - name: Set release version
-        shell: bash
-        run: |
-          echo "RELEASE_VERSION=${{ needs.initialize.outputs.version }}" >> 
$GITHUB_ENV
-
-      - name: Validate release version
-        run: |
-          echo "Release version: ${{ env.RELEASE_VERSION }}"
-
-      - name: Automatically create PR for winget repos
-        uses: 
vedantmgoyal2009/winget-releaser@4ffc7888bffd451b357355dc214d43bb9f23917e
-        with:
-          identifier: Clement.bottom
-          installers-regex: '^bottom_x86_64_installer\.msi$'
-          version: ${{ env.RELEASE_VERSION }}
-          release-tag: ${{ env.RELEASE_VERSION }}
-          token: ${{ secrets.WINGET_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/CHANGELOG.md 
new/bottom-0.11.1~0/CHANGELOG.md
--- old/bottom-0.11.0~0/CHANGELOG.md    2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/CHANGELOG.md    2025-08-15 05:56:41.000000000 +0200
@@ -20,12 +20,23 @@
 
 ---
 
+## [0.11.1] - 2025-08-15
+
+### Bug Fixes
+
+- [#1776](https://github.com/ClementTsang/bottom/pull/1776): Fix 
`disk.columns` being incorrectly interpreted as blank.
+- [#1787](https://github.com/ClementTsang/bottom/pull/1787): Fix issue with 
battery widget time and small widths.
+
+### Other
+
+- [#1779](https://github.com/ClementTsang/bottom/pull/1779), 
[#1788](https://github.com/ClementTsang/bottom/pull/1788): Speed up time 
between startup and displaying data.
+
 ## [0.11.0] - 2025-08-05
 
 ### Features
 
 - [#1625](https://github.com/ClementTsang/bottom/pull/1625): Add the ability 
to configure the disk widget's table columns.
-- [#1641](https://github.com/ClementTsang/bottom/pull/1641): Support AMD GPU 
data collection on Linux.
+- [#1641](https://github.com/ClementTsang/bottom/pull/1641) + 
[#1692](https://github.com/ClementTsang/bottom/pull/1692): Support AMD GPU data 
collection on Linux.
 - [#1642](https://github.com/ClementTsang/bottom/pull/1642): Support changing 
the widget borders.
 - [#1717](https://github.com/ClementTsang/bottom/pull/1717): Support delete 
key (fn + delete on macOS) to kill processes.
 - [#1306](https://github.com/ClementTsang/bottom/pull/1306): Support using 
left/right key to collapse/expand process trees respectively.
@@ -36,12 +47,14 @@
 
 - [#1551](https://github.com/ClementTsang/bottom/pull/1551): Fix missing 
parent section names in default config.
 - [#1552](https://github.com/ClementTsang/bottom/pull/1552): Fix typo in 
default config.
+- [#1565](https://github.com/ClementTsang/bottom/pull/1565): Fix issue where 
CPU usage in basic mode looks weird if core count isn't divisible by four.
 - [#1578](https://github.com/ClementTsang/bottom/pull/1578): Fix missing 
selected text background colour in `default-light` theme.
 - [#1593](https://github.com/ClementTsang/bottom/pull/1593): Fix using 
`"none"` for chart legend position in configs.
 - [#1594](https://github.com/ClementTsang/bottom/pull/1594): Fix incorrect 
default config definitions for chart legends.
 - [#1596](https://github.com/ClementTsang/bottom/pull/1596): Fix support for 
nilfs2 file system.
 - [#1660](https://github.com/ClementTsang/bottom/pull/1660): Fix properly 
cleaning up the terminal if the program is terminated due to an `Err` bubbling 
to the top.
 - [#1663](https://github.com/ClementTsang/bottom/pull/1663): Fix network 
graphs using log scaling having broken lines when a point was 0.
+- [#1667](https://github.com/ClementTsang/bottom/pull/1667): Fix for ARC/SWAP 
not being hidden in basic mode after refactor.
 - [#1683](https://github.com/ClementTsang/bottom/pull/1683): Fix graph lines 
potentially showing up behind legends.
 - [#1701](https://github.com/ClementTsang/bottom/pull/1701): Fix process kill 
dialog occasionally causing panics.
 - [#1755](https://github.com/ClementTsang/bottom/pull/1755): Fix missing 
stats/incorrect mount name for certain entries in the disk widget.
@@ -53,11 +66,15 @@
 - [#1570](https://github.com/ClementTsang/bottom/pull/1570): Consider 
`$XDG_CONFIG_HOME` on macOS when looking for a default config path in a 
backwards-compatible fashion.
 - [#1686](https://github.com/ClementTsang/bottom/pull/1686): Allow hyphenated 
arguments to work as well (e.g. `--autohide-time`).
 - [#1701](https://github.com/ClementTsang/bottom/pull/1701): Redesign process 
kill dialog.
+- [#1706](https://github.com/ClementTsang/bottom/pull/1706): Disable mouse 
capture when `disable_click` is set.
 - [#1769](https://github.com/ClementTsang/bottom/pull/1769): Change how we 
calculate swap usage in Windows.
 
 ### Other
 
+- [#1655](https://github.com/ClementTsang/bottom/pull/1655): Better handle 
NVIDIA GPUs on Linux with only libnvidia-ml.so.1.
+- [#1658](https://github.com/ClementTsang/bottom/pull/1658): Make it possible 
to override completion/manpage generation output directory via env.
 - [#1663](https://github.com/ClementTsang/bottom/pull/1663): Rework how data 
is stored internally, reducing memory usage a bit.
+- [#1749](https://github.com/ClementTsang/bottom/pull/1749): Fix invalid 
desktop file values.
 
 ## [0.10.2] - 2024-08-05
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/Cargo.lock 
new/bottom-0.11.1~0/Cargo.lock
--- old/bottom-0.11.0~0/Cargo.lock      2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/Cargo.lock      2025-08-15 05:56:41.000000000 +0200
@@ -34,9 +34,9 @@
 
 [[package]]
 name = "anstream"
-version = "0.6.19"
+version = "0.6.20"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
+checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -64,29 +64,29 @@
 
 [[package]]
 name = "anstyle-query"
-version = "1.1.3"
+version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
+checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
 dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.9"
+version = "3.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
+checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
 dependencies = [
  "anstyle",
  "once_cell_polyfill",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
 name = "anyhow"
-version = "1.0.98"
+version = "1.0.99"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
+checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100"
 
 [[package]]
 name = "assert_cmd"
@@ -145,7 +145,7 @@
 
 [[package]]
 name = "bottom"
-version = "0.11.0"
+version = "0.11.1"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -177,12 +177,12 @@
  "predicates",
  "ratatui",
  "regex",
- "rustix 1.0.7",
+ "rustix 1.0.8",
  "schemars",
  "serde",
  "serde_json",
  "starship-battery",
- "strum 0.27.1",
+ "strum 0.27.2",
  "sysctl",
  "sysinfo",
  "tempfile",
@@ -226,9 +226,9 @@
 
 [[package]]
 name = "castaway"
-version = "0.2.3"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
 dependencies = [
  "rustversion",
 ]
@@ -253,9 +253,9 @@
 
 [[package]]
 name = "clap"
-version = "4.5.40"
+version = "4.5.45"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"
+checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -263,9 +263,9 @@
 
 [[package]]
 name = "clap_builder"
-version = "4.5.40"
+version = "4.5.44"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"
+checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8"
 dependencies = [
  "anstream",
  "anstyle",
@@ -276,9 +276,9 @@
 
 [[package]]
 name = "clap_complete"
-version = "4.5.54"
+version = "4.5.57"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677"
+checksum = "4d9501bd3f5f09f7bbee01da9a511073ed30a80cd7a509f1214bb74eadea71ad"
 dependencies = [
  "clap",
 ]
@@ -295,9 +295,9 @@
 
 [[package]]
 name = "clap_complete_nushell"
-version = "4.5.7"
+version = "4.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "cdb8335b398d197fb3176efe9400c6c053a41733c26794316c73423d212b2f3d"
+checksum = "0a0c951694691e65bf9d421d597d68416c22de9632e884c28412cb8cd8b73dce"
 dependencies = [
  "clap",
  "clap_complete",
@@ -305,9 +305,9 @@
 
 [[package]]
 name = "clap_derive"
-version = "4.5.40"
+version = "4.5.45"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"
+checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -323,9 +323,9 @@
 
 [[package]]
 name = "clap_mangen"
-version = "0.2.27"
+version = "0.2.29"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "fc33c849748320656a90832f54a5eeecaa598e92557fb5dedebc3355746d31e4"
+checksum = "27b4c3c54b30f0d9adcb47f25f61fcce35c4dd8916638c6b82fbd5f4fb4179e2"
 dependencies = [
  "clap",
  "roff",
@@ -410,7 +410,7 @@
  "document-features",
  "mio",
  "parking_lot",
- "rustix 1.0.7",
+ "rustix 1.0.8",
  "signal-hook",
  "signal-hook-mio",
  "winapi",
@@ -524,7 +524,7 @@
  "libc",
  "option-ext",
  "redox_users",
- "windows-sys 0.60.2",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -550,9 +550,9 @@
 
 [[package]]
 name = "dyn-clone"
-version = "1.0.19"
+version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005"
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
 
 [[package]]
 name = "either"
@@ -585,7 +585,7 @@
 checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys 0.60.2",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -654,9 +654,9 @@
 
 [[package]]
 name = "hashbrown"
-version = "0.15.4"
+version = "0.15.5"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
 dependencies = [
  "allocator-api2",
  "equivalent",
@@ -699,9 +699,9 @@
 
 [[package]]
 name = "instability"
-version = "0.3.7"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d"
+checksum = "435d80800b936787d62688c927b6490e887c7ef5ff9ce922c6c6050fca75eb9a"
 dependencies = [
  "darling",
  "indoc",
@@ -754,9 +754,9 @@
 
 [[package]]
 name = "libc"
-version = "0.2.174"
+version = "0.2.175"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
 
 [[package]]
 name = "libloading"
@@ -765,14 +765,14 @@
 checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
 dependencies = [
  "cfg-if",
- "windows-targets 0.53.2",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
 name = "libredox"
-version = "0.1.4"
+version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
+checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
 dependencies = [
  "bitflags 2.9.1",
  "libc",
@@ -792,9 +792,9 @@
 
 [[package]]
 name = "litrs"
-version = "0.4.1"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5"
+checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed"
 
 [[package]]
 name = "lock_api"
@@ -1020,9 +1020,9 @@
 
 [[package]]
 name = "plist"
-version = "1.7.3"
+version = "1.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "546b279bf0638ee811d9e47de2ca5b66575a543035d79fdf83959dd2f5c3b4c3"
+checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1"
 dependencies = [
  "base64",
  "indexmap",
@@ -1090,18 +1090,18 @@
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.95"
+version = "1.0.97"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+checksum = "d61789d7719defeb74ea5fe81f2fdfdbd28a803847077cecce2ff14e1472f6f1"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quick-xml"
-version = "0.37.5"
+version = "0.38.1"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
+checksum = "9845d9dccf565065824e69f9f235fafba1587031eda353c1f1561cd6a6be78f4"
 dependencies = [
  "memchr",
 ]
@@ -1138,22 +1138,22 @@
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.13"
+version = "0.5.17"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6"
+checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
 dependencies = [
  "bitflags 2.9.1",
 ]
 
 [[package]]
 name = "redox_users"
-version = "0.5.0"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
 dependencies = [
  "getrandom",
  "libredox",
- "thiserror 2.0.12",
+ "thiserror 2.0.14",
 ]
 
 [[package]]
@@ -1213,9 +1213,9 @@
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.25"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
+checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
 
 [[package]]
 name = "rustix"
@@ -1232,9 +1232,9 @@
 
 [[package]]
 name = "rustix"
-version = "1.0.7"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
 dependencies = [
  "bitflags 2.9.1",
  "errno",
@@ -1245,9 +1245,9 @@
 
 [[package]]
 name = "rustversion"
-version = "1.0.21"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
 
 [[package]]
 name = "ryu"
@@ -1328,9 +1328,9 @@
 
 [[package]]
 name = "serde_json"
-version = "1.0.140"
+version = "1.0.142"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7"
 dependencies = [
  "itoa",
  "memchr",
@@ -1349,9 +1349,9 @@
 
 [[package]]
 name = "serial2"
-version = "0.2.29"
+version = "0.2.31"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c7d1d08630509d69f90eff4afcd02c3bd974d979225cbd815ff5942351b14375"
+checksum = "26e1e5956803a69ddd72ce2de337b577898801528749565def03515f82bad5bb"
 dependencies = [
  "cfg-if",
  "libc",
@@ -1397,9 +1397,9 @@
 
 [[package]]
 name = "signal-hook-registry"
-version = "1.4.5"
+version = "1.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
+checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
 dependencies = [
  "libc",
 ]
@@ -1451,11 +1451,11 @@
 
 [[package]]
 name = "strum"
-version = "0.27.1"
+version = "0.27.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32"
+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
 dependencies = [
- "strum_macros 0.27.1",
+ "strum_macros 0.27.2",
 ]
 
 [[package]]
@@ -1473,22 +1473,21 @@
 
 [[package]]
 name = "strum_macros"
-version = "0.27.1"
+version = "0.27.2"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8"
+checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
- "rustversion",
  "syn",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.104"
+version = "2.0.105"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
+checksum = "7bc3fcb250e53458e712715cf74285c1f889686520d79294a9ef3bd7aa1fc619"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1511,9 +1510,9 @@
 
 [[package]]
 name = "sysinfo"
-version = "0.36.1"
+version = "0.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d"
+checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
 dependencies = [
  "libc",
  "memchr",
@@ -1531,18 +1530,18 @@
 dependencies = [
  "fastrand",
  "once_cell",
- "rustix 1.0.7",
+ "rustix 1.0.8",
  "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "terminal_size"
-version = "0.4.2"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed"
+checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0"
 dependencies = [
- "rustix 1.0.7",
- "windows-sys 0.59.0",
+ "rustix 1.0.8",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -1562,11 +1561,11 @@
 
 [[package]]
 name = "thiserror"
-version = "2.0.12"
+version = "2.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
+checksum = "0b0949c3a6c842cbde3f1686d6eea5a010516deb7085f79db747562d4102f41e"
 dependencies = [
- "thiserror-impl 2.0.12",
+ "thiserror-impl 2.0.14",
 ]
 
 [[package]]
@@ -1582,9 +1581,9 @@
 
 [[package]]
 name = "thiserror-impl"
-version = "2.0.12"
+version = "2.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
+checksum = "cc5b44b4ab9c2fdd0e0512e6bece8388e214c0749f5862b114cc5b7a25daf227"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1899,7 +1898,7 @@
 source = "registry+https://github.com/rust-lang/crates.io-index";
 checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
 dependencies = [
- "windows-targets 0.53.2",
+ "windows-targets 0.53.3",
 ]
 
 [[package]]
@@ -1920,10 +1919,11 @@
 
 [[package]]
 name = "windows-targets"
-version = "0.53.2"
+version = "0.53.3"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
+checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
 dependencies = [
+ "windows-link",
  "windows_aarch64_gnullvm 0.53.0",
  "windows_aarch64_msvc 0.53.0",
  "windows_i686_gnu 0.53.0",
@@ -2041,9 +2041,9 @@
 
 [[package]]
 name = "winnow"
-version = "0.7.11"
+version = "0.7.12"
 source = "registry+https://github.com/rust-lang/crates.io-index";
-checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd"
+checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
 dependencies = [
  "memchr",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/Cargo.toml 
new/bottom-0.11.1~0/Cargo.toml
--- old/bottom-0.11.0~0/Cargo.toml      2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/Cargo.toml      2025-08-15 05:56:41.000000000 +0200
@@ -1,6 +1,6 @@
 [package]
 name = "bottom"
-version = "0.11.0"
+version = "0.11.1"
 repository = "https://github.com/ClementTsang/bottom";
 license = "MIT"
 description = "A customizable cross-platform graphical process/system monitor 
for the terminal. Supports Linux, macOS, and Windows."
@@ -72,10 +72,10 @@
 generate_schema = ["schemars", "serde_json", "strum"]
 
 [dependencies]
-anyhow = "1.0.98"
+anyhow = "1.0.99"
 backtrace = "0.3.75"
 cfg-if = "1.0.1"
-clap = { version = "4.5.40", features = [
+clap = { version = "4.5.45", features = [
     "default",
     "cargo",
     "wrap_help",
@@ -85,7 +85,7 @@
 crossterm = "0.29.0"
 ctrlc = { version = "3.4.7", features = ["termination"] }
 dirs = "6.0.0"
-hashbrown = "0.15.4"
+hashbrown = "0.15.5"
 humantime = "2.2.0"
 indexmap = "2.10.0"
 indoc = "2.0.6"
@@ -96,7 +96,7 @@
 regex = "1.11.1"
 serde = { version = "1.0.219", features = ["derive"] }
 starship-battery = { version = "0.10.2", optional = true }
-sysinfo = "=0.36.1"
+sysinfo = "=0.37.0"
 timeless = "0.0.14-alpha"
 toml_edit = { version = "0.22.27", features = ["serde"] }
 tui = { version = "0.29.0", package = "ratatui", features = [
@@ -117,14 +117,14 @@
 
 # These are just used for JSON schema generation.
 schemars = { version = "0.9.0", optional = true }
-serde_json = { version = "1.0.140", optional = true }
-strum = { version = "0.27.1", features = ["derive"], optional = true }
+serde_json = { version = "1.0.142", optional = true }
+strum = { version = "0.27.2", features = ["derive"], optional = true }
 
 [target.'cfg(unix)'.dependencies]
-libc = "0.2.174"
+libc = "0.2.175"
 
 [target.'cfg(target_os = "linux")'.dependencies]
-rustix = { version = "1.0.7", features = ["fs", "param"] }
+rustix = { version = "1.0.8", features = ["fs", "param"] }
 
 [target.'cfg(target_os = "macos")'.dependencies]
 core-foundation = "0.10.1"
@@ -142,7 +142,7 @@
 ] }
 
 [target.'cfg(target_os = "freebsd")'.dependencies]
-serde_json = { version = "1.0.140" }
+serde_json = { version = "1.0.142" }
 sysctl = { version = "0.6.0" }
 filedescriptor = "0.8.3"
 
@@ -158,16 +158,16 @@
 portable-pty = "0.9.0"
 
 [build-dependencies]
-clap = { version = "4.5.40", features = [
+clap = { version = "4.5.45", features = [
     "default",
     "cargo",
     "wrap_help",
     "derive",
 ] }
-clap_complete = "4.5.54"
-clap_complete_nushell = "4.5.7"
+clap_complete = "4.5.57"
+clap_complete_nushell = "4.5.8"
 clap_complete_fig = "4.5.2"
-clap_mangen = "0.2.27"
+clap_mangen = "0.2.29"
 indoc = "2.0.6"
 
 # Compile dependencies with optimizations enabled, even in debug mode.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/README.md 
new/bottom-0.11.1~0/README.md
--- old/bottom-0.11.0~0/README.md       2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/README.md       2025-08-15 05:56:41.000000000 +0200
@@ -162,8 +162,8 @@
 rustup update stable
 
 # Option 1 - Download an archive from releases and install
-curl -LO https://github.com/ClementTsang/bottom/archive/0.11.0.tar.gz
-tar -xzvf 0.11.0.tar.gz
+curl -LO https://github.com/ClementTsang/bottom/archive/0.11.1.tar.gz
+tar -xzvf 0.11.1.tar.gz
 cargo install --path . --locked
 
 # Option 2 - Manually clone the repo and install
@@ -215,20 +215,20 @@
 
 ```bash
 # x86-64
-curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.0/bottom_0.11.0-1_amd64.deb
-sudo dpkg -i bottom_0.11.0-1_amd64.deb
+curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_amd64.deb
+sudo dpkg -i bottom_0.11.1-1_amd64.deb
 
 # ARM64
-curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.0/bottom_0.11.0-1_arm64.deb
-sudo dpkg -i bottom_0.11.0-1_arm64.deb
+curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_arm64.deb
+sudo dpkg -i bottom_0.11.1-1_arm64.deb
 
 # ARM
-curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.0/bottom_0.11.0-1_armhf.deb
-sudo dpkg -i bottom_0.11.0-1_armhf.deb
+curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom_0.11.1-1_armhf.deb
+sudo dpkg -i bottom_0.11.1-1_armhf.deb
 
 # musl-based
-curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.0/bottom-musl_0.11.0-1_amd64.deb
-sudo dpkg -i bottom-musl_0.11.0-1_amd64.deb
+curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom-musl_0.11.1-1_amd64.deb
+sudo dpkg -i bottom-musl_0.11.1-1_amd64.deb
 ```
 
 ### Exherbo Linux
@@ -260,8 +260,8 @@
 For example:
 
 ```bash
-curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.0/bottom-0.11.0-1.x86_64.rpm
-sudo rpm -i bottom-0.11.0-1.x86_64.rpm
+curl -LO 
https://github.com/ClementTsang/bottom/releases/download/0.11.1/bottom-0.11.1-1.x86_64.rpm
+sudo rpm -i bottom-0.11.1-1.x86_64.rpm
 ```
 
 ### Gentoo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/docs/content/index.md 
new/bottom-0.11.1~0/docs/content/index.md
--- old/bottom-0.11.0~0/docs/content/index.md   2025-08-06 06:09:39.000000000 
+0200
+++ new/bottom-0.11.1~0/docs/content/index.md   2025-08-15 05:56:41.000000000 
+0200
@@ -1,4 +1,7 @@
 ---
+hide:
+  - navigation
+  - toc
 title: Home
 ---
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/docs/requirements.txt 
new/bottom-0.11.1~0/docs/requirements.txt
--- old/bottom-0.11.0~0/docs/requirements.txt   2025-08-06 06:09:39.000000000 
+0200
+++ new/bottom-0.11.1~0/docs/requirements.txt   2025-08-15 05:56:41.000000000 
+0200
@@ -1,5 +1,5 @@
 mkdocs == 1.6.1
-mkdocs-material == 9.6.9
+mkdocs-material == 9.6.16
 mdx_truly_sane_lists == 1.3
 mike == 2.1.3
 mkdocs-git-revision-date-localized-plugin == 1.4.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/sample_configs/demo_config.toml 
new/bottom-0.11.1~0/sample_configs/demo_config.toml
--- old/bottom-0.11.0~0/sample_configs/demo_config.toml 2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/sample_configs/demo_config.toml 2025-08-15 
05:56:41.000000000 +0200
@@ -18,4 +18,4 @@
 theme = "gruvbox"
 
 [processes]
-columns = ["PID", "Name", "CPU%", "Mem%", "Rps", "Wps", "TRead", "Twrite", 
"State", "Time", "Virt"]
+columns = ["PID", "Name", "CPU%", "Mem%", "Rps", "Wps", "TRead", "TWrite", 
"State", "Time", "Virt"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/scripts/schema/requirements.txt 
new/bottom-0.11.1~0/scripts/schema/requirements.txt
--- old/bottom-0.11.0~0/scripts/schema/requirements.txt 2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/scripts/schema/requirements.txt 2025-08-15 
05:56:41.000000000 +0200
@@ -1 +1 @@
-jsonschema-rs == 0.26.1
+jsonschema-rs == 0.32.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/src/canvas/components/data_table.rs 
new/bottom-0.11.1~0/src/canvas/components/data_table.rs
--- old/bottom-0.11.0~0/src/canvas/components/data_table.rs     2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/src/canvas/components/data_table.rs     2025-08-15 
05:56:41.000000000 +0200
@@ -128,7 +128,6 @@
     }
 
     /// Updates the scroll position to a selected index.
-    #[expect(clippy::comparison_chain)]
     pub fn set_position(&mut self, new_index: usize) {
         let new_index = 
new_index.clamp_upper(self.data.len().saturating_sub(1));
         if self.state.current_index < new_index {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bottom-0.11.0~0/src/canvas/widgets/battery_display.rs 
new/bottom-0.11.1~0/src/canvas/widgets/battery_display.rs
--- old/bottom-0.11.0~0/src/canvas/widgets/battery_display.rs   2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/src/canvas/widgets/battery_display.rs   2025-08-15 
05:56:41.000000000 +0200
@@ -117,11 +117,11 @@
 
             let is_basic = app_state.app_config_fields.use_basic_mode;
 
-            let margined_draw_loc = Layout::default()
+            let [margined_draw_loc] = Layout::default()
                 .constraints([Constraint::Percentage(100)])
                 .horizontal_margin(u16::from(is_basic && !is_selected))
                 .direction(Direction::Horizontal)
-                .split(draw_loc)[0];
+                .areas(draw_loc);
 
             if let Some(battery_details) =
                 
battery_harvest.get(battery_widget_state.currently_selected_battery_index)
@@ -168,13 +168,15 @@
                 let mut time: String; // Keep string lifetime in scope.
                 {
                     let style = self.styles.text_style;
+                    let time_width = (full_width / 2) as usize;
+
                     match &battery_details.state {
                         BatteryState::Charging {
                             time_to_full: Some(secs),
                         } => {
                             time = long_time(*secs);
 
-                            if full_width as usize > time.len() {
+                            if time_width >= time.len() {
                                 battery_rows.push(Row::new(["Time to full", 
&time]).style(style));
                             } else {
                                 time = short_time(*secs);
@@ -186,7 +188,7 @@
                         } => {
                             time = long_time(*secs);
 
-                            if full_width as usize > time.len() {
+                            if time_width >= time.len() {
                                 battery_rows.push(Row::new(["Time to empty", 
&time]).style(style));
                             } else {
                                 time = short_time(*secs);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/src/collection.rs 
new/bottom-0.11.1~0/src/collection.rs
--- old/bottom-0.11.0~0/src/collection.rs       2025-08-06 06:09:39.000000000 
+0200
+++ new/bottom-0.11.1~0/src/collection.rs       2025-08-15 05:56:41.000000000 
+0200
@@ -150,14 +150,21 @@
 pub struct DataCollector {
     pub data: Data,
     sys: SysinfoSource,
-    use_current_cpu_total: bool,
-    unnormalized_cpu: bool,
     last_collection_time: Instant,
+    widgets_to_harvest: UsedWidgets,
+    filters: DataFilters,
+
     total_rx: u64,
     total_tx: u64,
+
+    unnormalized_cpu: bool,
+    use_current_cpu_total: bool,
     show_average_cpu: bool,
-    widgets_to_harvest: UsedWidgets,
-    filters: DataFilters,
+
+    #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+    last_list_collection_time: Instant,
+    #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+    should_refresh_list: bool,
 
     #[cfg(target_os = "linux")]
     pid_mapping: HashMap<Pid, processes::PrevProcDetails>,
@@ -180,11 +187,13 @@
     gpus_total_mem: Option<u64>,
 }
 
+const LIST_REFRESH_TIME: Duration = Duration::from_secs(60);
+
 impl DataCollector {
     pub fn new(filters: DataFilters) -> Self {
         // Initialize it to the past to force it to load on initialization.
         let now = Instant::now();
-        let last_collection_time = 
now.checked_sub(Duration::from_secs(600)).unwrap_or(now);
+        let last_collection_time = now.checked_sub(LIST_REFRESH_TIME * 
10).unwrap_or(now);
 
         DataCollector {
             data: Data::default(),
@@ -213,32 +222,32 @@
             gpu_pids: None,
             #[cfg(feature = "gpu")]
             gpus_total_mem: None,
+            #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+            last_list_collection_time: last_collection_time,
+            #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+            should_refresh_list: true,
         }
     }
 
-    pub fn init(&mut self) {
-        #[cfg(feature = "battery")]
+    /// Update the check for updating things like lists of batteries, etc.
+    /// This is useful for things that we don't want to update all the time.
+    ///
+    /// Note this should be set back to false if 
`self.last_list_collection_time` is updated.
+    #[inline]
+    #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+    fn update_refresh_list_check(&mut self) {
+        if self
+            .data
+            .collection_time
+            .duration_since(self.last_list_collection_time)
+            > LIST_REFRESH_TIME
         {
-            if self.widgets_to_harvest.use_battery {
-                if let Ok(battery_manager) = Manager::new() {
-                    if let Ok(batteries) = battery_manager.batteries() {
-                        let battery_list: Vec<Battery> = 
batteries.filter_map(Result::ok).collect();
-                        if !battery_list.is_empty() {
-                            self.battery_list = Some(battery_list);
-                            self.battery_manager = Some(battery_manager);
-                        }
-                    }
-                }
-            }
+            self.should_refresh_list = true;
         }
 
-        self.update_data();
-
-        // Sleep a few seconds to avoid potentially weird data.
-        const SLEEP: Duration = get_sleep_duration();
-
-        std::thread::sleep(SLEEP);
-        self.data.cleanup();
+        if self.should_refresh_list {
+            self.last_list_collection_time = self.data.collection_time;
+        }
     }
 
     pub fn set_collection(&mut self, used_widgets: UsedWidgets) {
@@ -286,9 +295,6 @@
         // - Temperatures and temperature components list.
         #[cfg(not(target_os = "linux"))]
         {
-            const LIST_REFRESH_TIME: Duration = Duration::from_secs(60);
-            let refresh_start = Instant::now();
-
             if self.widgets_to_harvest.use_proc {
                 self.sys.system.refresh_processes_specifics(
                     sysinfo::ProcessesToUpdate::All,
@@ -301,13 +307,13 @@
 
                 // For Windows, sysinfo also handles the users list.
                 #[cfg(target_os = "windows")]
-                if refresh_start.duration_since(self.last_collection_time) > 
LIST_REFRESH_TIME {
+                if self.should_refresh_list {
                     self.sys.users.refresh();
                 }
             }
 
             if self.widgets_to_harvest.use_temp {
-                if refresh_start.duration_since(self.last_collection_time) > 
LIST_REFRESH_TIME {
+                if self.should_refresh_list {
                     self.sys.temps.refresh(true);
                 }
 
@@ -318,7 +324,7 @@
 
             #[cfg(target_os = "windows")]
             if self.widgets_to_harvest.use_disk {
-                if refresh_start.duration_since(self.last_collection_time) > 
LIST_REFRESH_TIME {
+                if self.should_refresh_list {
                     self.sys.disks.refresh(true);
                 }
 
@@ -329,11 +335,19 @@
         }
     }
 
+    /// Update and refresh data.
+    ///
+    /// TODO: separate refresh steps and update steps
     pub fn update_data(&mut self) {
-        self.refresh_sysinfo_data();
-
         self.data.collection_time = Instant::now();
 
+        #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+        {
+            self.update_refresh_list_check();
+        }
+
+        self.refresh_sysinfo_data();
+
         self.update_cpu_usage();
         self.update_memory_usage();
         self.update_temps();
@@ -342,16 +356,23 @@
         self.update_batteries();
 
         #[cfg(feature = "gpu")]
-        self.update_gpus(); // update_gpus before procs for gpu_pids but after 
temps for appending
+        self.update_gpus();
 
         self.update_processes();
         self.update_network_usage();
         self.update_disks();
 
+        #[cfg(any(not(target_os = "linux"), feature = "battery"))]
+        {
+            self.should_refresh_list = false;
+        }
+
         // Update times for future reference.
         self.last_collection_time = self.data.collection_time;
     }
 
+    /// Gets GPU data. Note this will usually append to other previously
+    /// collected data fields at the moment.
     #[cfg(feature = "gpu")]
     #[inline]
     fn update_gpus(&mut self) {
@@ -462,15 +483,13 @@
 
     #[inline]
     fn update_network_usage(&mut self) {
-        let current_instant = self.data.collection_time;
-
         if self.widgets_to_harvest.use_net {
             let net_data = network::get_network_data(
                 &self.sys.network,
                 self.last_collection_time,
                 &mut self.total_rx,
                 &mut self.total_tx,
-                current_instant,
+                self.data.collection_time,
                 &self.filters.net_filter,
             );
 
@@ -480,15 +499,59 @@
         }
     }
 
+    /// Update battery information.
+    ///
+    /// If the battery manager is not initialized, it will attempt to 
initialize it if at least one battery is found.
+    ///
+    /// This function also refreshes the list of batteries if 
`self.should_refresh_list` is true.
     #[inline]
     #[cfg(feature = "battery")]
     fn update_batteries(&mut self) {
-        if let Some(battery_manager) = &self.battery_manager {
-            if let Some(battery_list) = &mut self.battery_list {
-                self.data.list_of_batteries =
-                    Some(batteries::refresh_batteries(battery_manager, 
battery_list));
+        let battery_manager = match &self.battery_manager {
+            Some(manager) => {
+                // Also check if we need to refresh the list of batteries.
+                if self.should_refresh_list {
+                    let battery_list = manager
+                        .batteries()
+                        .map(|batteries| 
batteries.filter_map(Result::ok).collect::<Vec<_>>());
+
+                    if let Ok(battery_list) = battery_list {
+                        if battery_list.is_empty() {
+                            self.battery_list = None;
+                        } else {
+                            self.battery_list = Some(battery_list);
+                        }
+                    } else {
+                        self.battery_list = None;
+                    }
+                }
+
+                manager
             }
-        }
+            None => {
+                if let Ok(manager) = Manager::new() {
+                    let Ok(batteries) = manager.batteries() else {
+                        return;
+                    };
+
+                    let battery_list = 
batteries.filter_map(Result::ok).collect::<Vec<_>>();
+
+                    if battery_list.is_empty() {
+                        return;
+                    }
+
+                    self.battery_list = Some(battery_list);
+                    self.battery_manager.insert(manager)
+                } else {
+                    return;
+                }
+            }
+        };
+
+        self.data.list_of_batteries = self
+            .battery_list
+            .as_mut()
+            .map(|battery_list| batteries::refresh_batteries(battery_manager, 
battery_list));
     }
 
     #[inline]
@@ -510,31 +573,6 @@
     }
 }
 
-/// We set a sleep duration between 10ms and 250ms, ideally sysinfo's
-/// [`sysinfo::MINIMUM_CPU_UPDATE_INTERVAL`] + 1.
-///
-/// We bound the upper end to avoid waiting too long (e.g. FreeBSD is 1s, which
-/// I'm fine with losing accuracy on for the first refresh), and we bound the
-/// lower end just to avoid the off-chance that refreshing too quickly causes
-/// problems. This second case should only happen on unsupported systems via
-/// sysinfo, in which case [`sysinfo::MINIMUM_CPU_UPDATE_INTERVAL`] is defined
-/// as 0.
-///
-/// We also do `INTERVAL + 1` for some wiggle room, just in case.
-const fn get_sleep_duration() -> Duration {
-    const MIN_SLEEP: u64 = 10;
-    const MAX_SLEEP: u64 = 250;
-    const INTERVAL: u64 = sysinfo::MINIMUM_CPU_UPDATE_INTERVAL.as_millis() as 
u64;
-
-    if INTERVAL < MIN_SLEEP {
-        Duration::from_millis(MIN_SLEEP)
-    } else if INTERVAL > MAX_SLEEP {
-        Duration::from_millis(MAX_SLEEP)
-    } else {
-        Duration::from_millis(INTERVAL + 1)
-    }
-}
-
 #[cfg(target_os = "freebsd")]
 /// Deserialize 
[libxo](https://www.freebsd.org/cgi/man.cgi?query=libxo&apropos=0&sektion=0&manpath=FreeBSD+13.1-RELEASE+and+Ports&arch=default&format=html)
 JSON data
 fn deserialize_xo<T>(key: &str, data: &[u8]) -> Result<T, std::io::Error>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/src/lib.rs 
new/bottom-0.11.1~0/src/lib.rs
--- old/bottom-0.11.0~0/src/lib.rs      2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/src/lib.rs      2025-08-15 05:56:41.000000000 +0200
@@ -53,6 +53,8 @@
 use utils::logging::*;
 use utils::{cancellation_token::CancellationToken, conversion::*};
 
+use crate::collection::Data;
+
 // Used for heap allocation debugging purposes.
 // #[global_allocator]
 // static ALLOC: dhat::Alloc = dhat::Alloc;
@@ -219,17 +221,21 @@
     let use_current_cpu_total = app_config_fields.use_current_cpu_total;
     let unnormalized_cpu = app_config_fields.unnormalized_cpu;
     let show_average_cpu = app_config_fields.show_average_cpu;
-    let update_time = app_config_fields.update_rate;
+    let update_sleep = app_config_fields.update_rate;
 
     thread::spawn(move || {
-        let mut data_state = collection::DataCollector::new(filters);
+        let mut data_collector = collection::DataCollector::new(filters);
+
+        data_collector.set_collection(used_widget_set);
+        data_collector.set_use_current_cpu_total(use_current_cpu_total);
+        data_collector.set_unnormalized_cpu(unnormalized_cpu);
+        data_collector.set_show_average_cpu(show_average_cpu);
 
-        data_state.set_collection(used_widget_set);
-        data_state.set_use_current_cpu_total(use_current_cpu_total);
-        data_state.set_unnormalized_cpu(unnormalized_cpu);
-        data_state.set_show_average_cpu(show_average_cpu);
+        data_collector.update_data();
+        data_collector.data = Data::default();
 
-        data_state.init();
+        // Tiny sleep I guess? To go between the first update above and the 
first update in the loop.
+        std::thread::sleep(Duration::from_millis(5));
 
         loop {
             // Check once at the very top... don't block though.
@@ -243,12 +249,12 @@
                 // trace!("Received message in collection thread: 
{message:?}");
                 match message {
                     CollectionThreadEvent::Reset => {
-                        data_state.data.cleanup();
+                        data_collector.data.cleanup();
                     }
                 }
             }
 
-            data_state.update_data();
+            data_collector.update_data();
 
             // Yet another check to bail if needed... do not block!
             if let Some(is_terminated) = cancellation_token.try_check() {
@@ -257,14 +263,15 @@
                 }
             }
 
-            let event = BottomEvent::Update(Box::from(data_state.data));
-            data_state.data = collection::Data::default();
+            let event = BottomEvent::Update(Box::from(data_collector.data));
+            data_collector.data = Data::default();
+
             if sender.send(event).is_err() {
                 break;
             }
 
             // Sleep while allowing for interruptions...
-            if 
cancellation_token.sleep_with_cancellation(Duration::from_millis(update_time)) {
+            if 
cancellation_token.sleep_with_cancellation(Duration::from_millis(update_sleep)) 
{
                 break;
             }
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/src/options/config/disk.rs 
new/bottom-0.11.1~0/src/options/config/disk.rs
--- old/bottom-0.11.0~0/src/options/config/disk.rs      2025-08-06 
06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/src/options/config/disk.rs      2025-08-15 
05:56:41.000000000 +0200
@@ -16,7 +16,7 @@
 
     /// A list of disk widget columns.
     #[serde(default)]
-    pub(crate) columns: Vec<DiskColumn>, // TODO: make this more composable(?) 
in the future, we might need to rethink how it's done for custom widgets
+    pub(crate) columns: Option<Vec<DiskColumn>>, // TODO: make this more 
composable(?) in the future, we might need to rethink how it's done for custom 
widgets
 }
 
 #[cfg(test)]
@@ -24,10 +24,17 @@
     use super::DiskConfig;
 
     #[test]
-    fn empty_column_setting() {
+    fn none_column_setting() {
         let config = "";
         let generated: DiskConfig = toml_edit::de::from_str(config).unwrap();
-        assert!(generated.columns.is_empty());
+        assert!(generated.columns.is_none());
+    }
+
+    #[test]
+    fn empty_column_setting() {
+        let config = r#"columns = []"#;
+        let generated: DiskConfig = toml_edit::de::from_str(config).unwrap();
+        assert!(generated.columns.unwrap().is_empty());
     }
 
     #[test]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bottom-0.11.0~0/src/options.rs 
new/bottom-0.11.1~0/src/options.rs
--- old/bottom-0.11.0~0/src/options.rs  2025-08-06 06:09:39.000000000 +0200
+++ new/bottom-0.11.1~0/src/options.rs  2025-08-15 05:56:41.000000000 +0200
@@ -407,7 +407,7 @@
                                 DiskTableWidget::new(
                                     &app_config_fields,
                                     &styling,
-                                    config.disk.as_ref().map(|cfg| 
cfg.columns.as_slice()),
+                                    config.disk.as_ref().and_then(|cfg| 
cfg.columns.as_deref()),
                                 ),
                             );
                         }
@@ -672,7 +672,7 @@
     }};
 }
 
-/// How fast the screen refreshes
+/// How quickly we update data.
 #[inline]
 fn get_update_rate(args: &BottomArgs, config: &Config) -> OptionResult<u64> {
     const DEFAULT_REFRESH_RATE_IN_MILLISECONDS: u64 = 1000;

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/bottom/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.bottom.new.1085/vendor.tar.zst differ: char 7, line 
1

Reply via email to