When proc_tree is active and left/right changes the sort column,
no_update was left as true. _tree_gen is called with no_update=true,
which skips the p.filtered=true assignment for children of collapsed
nodes while the unconditional else-if on line 211 of btop_shared.cpp
clears their stale filtered flag from the previous cycle. This leaves
collapsed children in an inconsistent state for one frame, causing a
brief visual glitch before the next full update corrects it.
Setting no_update=false only in tree mode keeps the fast path for
flat list mode unchanged.
Pressing E in tree mode collapses all processes if any parent is
currently expanded, or expands all if everything is already collapsed.
This gives a quick per-application resource summary without having
to manually toggle each node.
Implemented across all platforms (Linux, macOS, FreeBSD, OpenBSD, NetBSD).
Reselection Issues with Pause and Follow
- I found an edge case I had missed before for the very end of the process
list (not view). For the process list pausing feature, if the process
selected was the very last item in the whole list then the selection was
moved up one. And vice versa when the list is paused and the very last
item is selected, unpausing would also move it up one item in the list.
For the process following feature the same thing would happen when
unfollowing (if not using the detailed view follow) but for the last few
items (upto halfway up the view)
- This was fixed by adding 1 to either `selected` or `start` when
required.
- When process following with detailed view. unfollowing by clicking the
process and then clicking again to close detail view threw the view
off because following was disengaged.
- Fixed with the modification to the code block that handles
following. It now also restores the selection and view when exiting
detailed view also. (I had a different fix for this but the fix for
the next issue made it irrelevant and was removed)
- If following a process with detailed view and it is one of the first
or last few items in the whole list (not view) then if you change the
reverse sort mode and then unfollow the process, instead of the
selection returning to the process that was being followed it returns
to where the process would have been if the sorting wasn't reversed.
- I struggled to figure out a fix for this but landed on reusing the
code block that locates the followed process to restore the
selection when detailed view closes.
- I actually quite like this fix since it also centers the selection
if possiple when closing the detailed view.
- The change that removed selection for detailed view following caused
an issue where if the list was paused holding up would cause the
selection to loop from the list position where the followed process
was after reaching the top of the list.
- This was fixed by adding some additional conditions before changing
the selection back to the followed process when selected is 0
- This gets rid of this issue so that when paused scrolling to the
top of the list doesn't loop back to the followed process location
- When following a process and the view was at the end of the list, if
the process died and following disengaged, a blank line would be left
at the bottom of the list until the next collection cycle.
- fixed this by making select_max not a const and adding 1 to it when
the following mode disengaged.
- When the followed process is the first process in the list, pressing
up doesn't redraw the screen and get rid of the following banner
until the next collection cycle.
- I fixed this by moving `bool changed = false` to the top of the
selection function and setting `changed` to true when reselecting
the followed process before moving back up and `selected` is 0
again.
- When following a process clicking on the banner with the mouse would
exit following mode and select the last line. I am not sure if this is
desirable or not.
- I have fixed this with an extra condition in the mouse input logic
- This can be reverted if you feel it is good for clicking the banner
to exit following in that way.
Improvements to follow mode list centering
- The followed process was centered using select_max / 2. this works
but would leave it off center by 2 if select_max was odd.
- it has been updated to use select_max / 2 if select_max is even
which has the followed process off center as close as it can be
but slightly closer to the top of list. if select_max is odd then
it uses select_max / 2 + 1 which places the process dead center.
- If follow-detailed is disabled and a process is being followed while
paused, opening or closing the detailed view doesn't recenter the
followed process.
- fixed this by relocating a line that sets update_following
Issue with tree expand/collapse when following
- When I made the change that set `selected = 0` when following the
detailed process. I did not realize that this would prevent the user
from being able to expand or collapse the tree of the process being
followed without first unfollowing it.
- I fixed this by slightly reworking the input code for
expand/collapse with some extra conditions
Misc improvement to follow mode
- Added a line in the F input handling code that sets the selection to
the followed process before exiting follow mode. This means that if
if you press F after opening a detailed view and following that it
will exit follow mode and move selected to the followed process
location instead of leaving selected as 0. This is equivalent to
pressing down after opening a detailed view when not following the
process.
- Since when following the detailed view process the selection can be
moved up or down from the followed process, the up arrow for the
select button should not be greyed out if following the detailed view
process and `should_selection_return_to_followed` is false.
- Added a comment in the selection function to explain what the
following mode code block does there.
Small optimization for Pause mode
- I moved `Config::getB("keep_dead_proc_usage")` outside of the for loop
that goes through all the current procs while paused.
fix mouse selection when following is active
When making the change to the process following PR that made moving the selection
disengage following mode, I missed a couple points in the mouse input code that was
preventing following mode from being disengaged when clicking on the detailed info box
or on the upper border of the proc box/label line.
This alteration fixes that.
Also made a change so that if the detailed view is open/opened and
following mode engages. If the detailed view process is the one being
followed then the selection is set to 0 and the detailed view buttons
are active instead of the bottom bar buttons.
added follow button to detailed view buttons
the tree-children-toggle feature introduced in f8b4217 from PR #1274
was using the "u" key as a binding.
This conflicts with pause using the "u" key now.
Since the "u" key was chosen without any real reason for the
tree-children-toggle feature. It will be changed to "C" and
"u" can safely be used for pause.
- Added menu options to automatically enable process following for selected process from Detailed View
- Changed Pause keybinding to 'u'
- Added keybinding 'F' (Shift+F) to follow selected process
- Added Follow and Pause buttons
- Processes are followed through sorting, tree mode, and reverse mode changes.
- Process following disengages if the process is no longer in the list.
- Either because it died or it was filtered out
- Changing the selection exits following mode unless the list is paused.
- While paused, changing sorting method returns the selection to the followed process.
- Unpausing also returns the selection to the process being followed.
- Opening a new detailed view will change the process being followed.
- Pause banner has been upgraded to a Pause and Following banner.
- Text on banner reflects current state.
- Banner background color changes depending on mode.
- Currently:
- Red Banner (Process list paused)
- Blue Banner (Following process)
- Purple Banner (Paused list and following process)
This is partially my fault from when I made a change to allow
the hide button to not be greyed out when the detailed view item
was selected in the list.
I didn't realize that this deactivated the info button on the bottom bar from operating.
to fix this I have adding an additinal mouse mapping called "info_enter".
If there is another way to have to mouse mappings that is preferrable to this
I can do that instead.
Additionally I didn't realize that to disable a mouse mapping you have to 'delete' it so
the hide button was continuing to act as a button even when greyed out if at any point the
detailed view process was selected while detailed view was open.
This feature sets a keybinding 'F' that pauses the processes list.
- It doesn't stop collection.
- It stops new processes from being added and dead processes from being removed.
- It also disables sorting except when:
- the sorting mode is changed.
- switching between normal and tree view modes.
- While paused the user can still scroll through the processes list.
- Detailed view can still be opened and it displays current information.
- Details view shows accurate elapsed time for dead processes
- When pausing is enabled it displays a banner on the last line of the processes list.
- Added menu option for preserving cpu and mem usage of dead processes or not
Changing line in btop_input.cpp that compared first 2 characters of input to Fx::e.
Instead it now compares first character of input to first character of Fx::e and
checks that the length is greater then 1
This allows systems that send <ESC>OA and so on for the arrow keys
instead of <ESC>[A
This adds the ability to change the nice value of a process from within
btop. A new menu is introduced, accessible by pressing 'N', which allows
the user to input a new nice value for the selected process.
Fixes#1245
commit 0267eba2bb
Merge: 50bbab0e81cf2b
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Wed Nov 15 21:43:18 2023 +0100
Merge pull request #659 from ivanp7/patch-1
Add alternative key codes for Delete, Insert, Home, End
commit 50bbab0512
Merge: 9edbf275a14c7b
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Wed Nov 15 21:35:50 2023 +0100
Merge pull request #660 from stradicat/feature/elementarish
Elementarish theme: color update according to Elementary palette
commit 5a14c7b6fa
Merge: 979506f71eb414
Author: Dennis Mayr <dmayr.dev@gmail.com>
Date: Wed Nov 15 17:27:34 2023 -0300
Merge branch 'main' of https://github.com/stradicat/btop
commit 979506f18e
Author: Dennis Mayr <dmayr.dev@gmail.com>
Date: Wed Nov 8 11:17:47 2023 -0300
Elementarish theme: color update according to Elementary palette
commit 71eb4142e8
Author: Dennis Mayr <dmayr.dev@gmail.com>
Date: Wed Nov 8 11:17:47 2023 -0300
Elementarish theme: color update according to Elementary palette
commit e81cf2b7ff
Author: vân <3432246+ivanp7@users.noreply.github.com>
Date: Tue Nov 7 15:12:27 2023 +0000
Add alternative key codes for Insert, Home, End
commit f9452ff6d5
Author: vân <3432246+ivanp7@users.noreply.github.com>
Date: Mon Nov 6 13:31:53 2023 +0000
Add alternative Delete key code
Delete key not always produces ^[[3~, on some terminals (like st) it produces ^[[P.
commit 9edbf27f1b
Merge: 2a864f6ff1f51c
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Oct 21 02:09:55 2023 +0200
Merge pull request #649 from nobounce/workflow-timeout
Set FreeBSD workflow timeout
commit ff1f51ccbb
Author: Steffen Winter <steffen.winter@proton.me>
Date: Wed Oct 18 22:26:36 2023 +0200
Set FreeBSD workflow timeout
Recently the FreeBSD workflow has started to hang in a boot loop when
the VM starts up. The issue is being tracked upstream but there is not
response at the moment.
To work around this set a timeout to not waste CI minutes. Other
workflows might also want this change since they don't take 20 minutes
anyway.
commit 2a864f6f2e
Merge: 636eb25b2bf8ef
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Oct 7 10:40:54 2023 +0200
Merge pull request #643 from DecklynKern/main
Fix scrollbar not clearing sometimes.
commit b2bf8ef504
Author: DecklynKern <DecklynKern@gmail.com>
Date: Fri Oct 6 17:33:38 2023 -0600
Fix scrollbar not clearing sometimes.
commit 636eb25f5e
Merge: 260c0f6b5ba2fc
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Sep 30 19:51:03 2023 +0200
Merge pull request #623 from rahulaggarwal965/main
Add keybind for toggling memory display mode in PROC box
commit b5ba2fc963
Author: Rahul Aggarwal <rahulaggarwal965@gmail.com>
Date: Wed Sep 20 22:55:56 2023 -0400
Add keybind for toggling memory display mode in PROC box
commit 260c0f6623
Merge: 52bfff7e6a06eb
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Sep 30 18:56:25 2023 +0200
Merge pull request #635 from lvxnull/editorconfig
Add hpp files to .editorconfig
commit e6a06eb729
Author: lvxnull <86745229+lvxnull@users.noreply.github.com>
Date: Thu Sep 28 19:44:47 2023 +0200
Add hpp files to .editorconfig
commit 52bfff7ceb
Merge: 1f72e5619dbbe1
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Sep 30 18:55:08 2023 +0200
Merge pull request #636 from nobounce/performance-iili
Minor string initialization improvement
commit 19dbbe1a17
Author: nobounce <steffen.winter@proton.me>
Date: Fri Sep 29 12:20:59 2023 +0200
Minor string initialization improvement
commit 1f72e56c7d
Merge: 278a0e6cdcf8bc
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Fri Sep 29 10:43:21 2023 +0200
Merge pull request #633 from crestfallnatwork/main
[fix] Made disks statvfs logic asynchronous.
commit cdcf8bc929
Author: crestfalln <guptahiman01@gmail.com>
Date: Fri Sep 29 09:07:27 2023 +0530
fixed bug where updated disks stats overrided disk io data
commit 9b4e85f08d
Author: crestfalln <no-reply@crestfalln.com>
Date: Thu Sep 28 04:57:05 2023 +0530
fixed bug where updated disks stats overrided disk io data
commit 889623874e
Author: crestfalln <no-reply@crestfalln.com>
Date: Wed Sep 27 23:57:06 2023 +0530
made disks stat logic async
commit 278a0e6b17
Merge: d16adc9e89519f
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Thu Sep 28 18:32:09 2023 +0200
Merge pull request #630 from lvxnull/signal-list
Fix signal list on non-linux/weird linux platforms
commit e89519fbb2
Author: lvxnull <86745229+lvxnull@users.noreply.github.com>
Date: Sun Sep 24 21:44:38 2023 +0200
Fix signal list on non-linux/weird linux platforms
commit d16adc9fd0
Merge: 2c3ac48f34b408
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Thu Sep 28 18:20:42 2023 +0200
Merge pull request #618 from nobounce/aggregate-child-processes
Add option to accumulate a child's resources in parent in tree-view
commit f34b40892f
Author: nobounce <steffen.winter@proton.me>
Date: Sun Sep 24 16:34:50 2023 +0200
Make process thread count better readable when wider than 5 digits
commit 6027cedd42
Author: nobounce <steffen.winter@proton.me>
Date: Thu Sep 14 23:27:05 2023 +0200
Add option to accumulate a child's resources in parent in tree-view
commit 2c3ac4855d
Merge: f90dc375c6a281
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Wed Sep 13 21:14:56 2023 +0200
Merge pull request #589 from nobounce/cmake
Add CMake support for Linux
commit f90dc37c26
Merge: 0cac86168a49c1
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Wed Sep 13 20:27:05 2023 +0200
Merge pull request #610 from SidVeld/feature/horizon-theme
Horizon theme
commit 5c6a281002
Author: nobounce <steffen.winter@proton.me>
Date: Tue Aug 29 20:39:00 2023 +0200
Add CMake support
Linux is completly supported
FreeBSD is not able to create a static executable for now. See
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273398
MacOS was not tested
commit 68a49c10a6
Author: SidVeld <sidveld@gmail.com>
Date: Wed Sep 6 18:03:31 2023 +0300
Add horizon theme
commit 0cac861910
Merge: 31be436f798acd
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Tue Sep 5 19:27:38 2023 +0200
Merge pull request #609 from scorpion-26/byteconv
Fix short conversion of 1000-1023 *iB
commit f798acdaf7
Author: scorpion-26 <dev.scorpion26@gmail.com>
Date: Tue Sep 5 18:00:47 2023 +0200
Fix short conversion of 1000-1023*iB
floating_humanizer([1000-1024], true) with base 8 returns "2K", whereas it should return
"1.0K" to align with other formats. The conversion is also broken for
all other units(e.g. 1023M is also broken and returns "2G")
commit 31be4362ce
Author: aristocratos <gnmjpl@gmail.com>
Date: Sun Aug 27 02:00:07 2023 +0200
FreeBSD Github action 13.1 -> 13.2 and static libgcc and libstdc++
commit fc523fd1d0
Author: aristocratos <gnmjpl@gmail.com>
Date: Sun Aug 27 01:36:26 2023 +0200
Fix for FreeBSD github action not failing "correctly"...
commit c296ac13cd
Merge: 9a1e760091c30a
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Aug 26 19:29:57 2023 +0200
Merge pull request #590 from nobounce/dangling-reference-config
Convert parameters and config keys to std::string_view
commit 9a1e760a66
Merge: 9c8af4d22e64ca
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Aug 26 19:20:18 2023 +0200
Merge pull request #602 from jfouquart/main
Fix getting zfs pool name with '.' char in freebsd
commit 9c8af4df43
Merge: 8a49d8c2217cbe
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Aug 26 19:18:55 2023 +0200
Merge pull request #601 from joske/cleanup
[macos] don't check /sys on macos
commit 8a49d8cf45
Merge: 1556388008fcd8
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Aug 26 19:18:07 2023 +0200
Merge pull request #600 from joske/makefile
[macos/freebsd] support gcc13
commit 1556388c83
Merge: 1b126f5d17e1a2
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sat Aug 26 19:14:00 2023 +0200
Merge pull request #599 from joske/main
[macos] fix temp sensor on system with many cores
commit d17e1a2dac
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Fri Aug 25 16:18:39 2023 +0200
fix some warnings
commit 4d8aa6b118
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Fri Aug 25 15:52:58 2023 +0200
fix core check
commit 22e64caaff
Author: Jonathan Fouquart <jfouquart@hotmail.fr>
Date: Fri Aug 25 09:37:49 2023 +0200
Fix getting zfs pool name with '.' char in freebsd
commit 2217cbe143
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Wed Aug 23 16:01:04 2023 +0200
[macos] don't check /sys on macos
commit 008fcd889e
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Wed Aug 23 16:05:00 2023 +0200
also add g++13
commit 0fdca5eb03
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Wed Aug 23 15:54:07 2023 +0200
support gcc13
commit dcbdb7360d
Author: Jos Dehaes <jos.dehaes@gmail.com>
Date: Wed Aug 23 15:46:47 2023 +0200
[macos] fix temp sensor on system with many cores
commit 1b126f55e3
Author: aristocratos <gnmjpl@gmail.com>
Date: Fri Aug 4 01:08:27 2023 +0200
Update Makefile for partial static compilation on freebsd
commit c8ec6bbb00
Author: aristocratos <gnmjpl@gmail.com>
Date: Thu Aug 3 23:08:33 2023 +0200
Fix freebsd nullptr changes and makefile for gcc12 and newer
commit 8a33aab588
Merge: 94e5c02e4abcef
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Sun Jul 30 13:21:48 2023 +0200
Merge pull request #539 from nobounce/replace-NULL-nullptr
Modernize using nullptr.
commit 94e5c02d11
Author: aristocratos <gnmjpl@gmail.com>
Date: Thu Jul 27 20:51:21 2023 +0200
Better text editing
commit 091c30ab2b
Author: nobounce <steffen.winter@proton.me>
Date: Thu Jul 27 14:17:54 2023 +0200
Convert parameters and config keys to std::string_view
Using std::string_view instead of std::string& silences a new warning
from GCC 13, -Wdangling-reference
Also switch return type of `getI` from int& to int, trivial types are
cheaper to copy by value
commit e4abcefbf9
Author: nobounce <steffen.winter@proton.me>
Date: Wed Jul 26 16:19:17 2023 +0200
Use nullptr instead of NULL.
See https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
TLDR: NULL is of type int and relies on proper implicit pointer
conversion which may lead to issues when using overloaded functions
It is also considered a 'best practise' for modern C++ and
conveys the programmers intention more precisly.
commit d53307f14c
Author: nobounce <steffen.winter@proton.me>
Date: Sun Jul 23 19:53:36 2023 +0200
Fix path to Linux CI file in itself
The CI file has a list of dependent files including itself. The path was
not updated when the CI was split into different files
commit 594f42b9eb
Merge: aca2e4b53d6eba
Author: Jakob P. Liljenberg <admin@qvantnet.com>
Date: Wed Jul 26 15:38:01 2023 +0200
Merge pull request #584 from nobounce/nb/fix-ci-path
Fix path to Linux CI file in itself
commit aca2e4be75
Author: aristocratos <gnmjpl@gmail.com>
Date: Wed Jul 26 14:38:48 2023 +0200
Fix whitespace indent -> tab indent
commit 33faa01910
Author: aristocratos <gnmjpl@gmail.com>
Date: Wed Jul 26 14:34:15 2023 +0200
Revert fmt submodule to static fmt folder in include
commit 53d6ebabc0
Author: nobounce <steffen.winter@proton.me>
Date: Sun Jul 23 19:53:36 2023 +0200
Fix path to Linux CI file in itself
The CI file has a list of dependent files including itself. The path was
not updated when the CI was split into different files