mirror of
https://github.com/aristocratos/btop.git
synced 2024-06-01 18:19:56 +12:00
c0e17a64d3
commitc2c4fe47db
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 23:15:53 2021 +0100 Changes from main + fixes commitbd5d867089
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 21:24:01 2021 +0100 Fixes commitdc5f0606cb
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 20:51:06 2021 +0100 Fixed leak in Proc::collect() commit8b59ab6e11
Author: aristocratos <admin@qvantnet.com> Date: Sat Nov 13 19:59:56 2021 +0100 Fixed process cpu usage calculation commit53c8a0325b
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 25 13:01:53 2021 +0200 Cpu temp set to average of pACC and eACC for mac m1 commit940cd0a513
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 24 21:12:16 2021 +0200 limit cpu temp to 20 commit254ceb9c2d
Author: aristocratos <admin@qvantnet.com> Date: Sun Oct 24 11:24:04 2021 +0200 Fixed up Makefile commit6fa3bf41d7
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 21 13:12:45 2021 +0200 Makefile fixed WARNFLAGS commit2c98e2ca29
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 21 13:08:12 2021 +0200 Updated Makefile commite69780e9bc
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 20 23:26:09 2021 +0200 fix build commitde62167921
Merge:a590dd3
a0ee404
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 20 23:10:36 2021 +0200 Merge branch 'main' into OSX commita590dd3f67
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 18 11:20:12 2021 +0200 Ignore format-truncation commit4c30742d41
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 18 10:08:01 2021 +0200 comments about temp sensors commit46030de77c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 18 08:10:37 2021 +0200 available = total - used commit4c228de0ef
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:19:41 2021 +0200 use sysconf to get arg_max - seems simpler commitc60fc29f0f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:10:50 2021 +0200 arg_max should be int on macos commit0b5a931a6d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 17 22:01:42 2021 +0200 only fetch max_args once commit71d5cd5fd9
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 23:24:07 2021 +0200 Reverted mutexes back to custom atomic bool based locks commit3f34a67df6
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:47:55 2021 +0200 these helpers can be static commitfc19c46c8a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:44:49 2021 +0200 code cleanup: put the code in .cpp to enable incremental build commitc252c618c0
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:09:21 2021 +0200 don't crash on intel commit9f88187c29
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 21:06:18 2021 +0200 small improvement commit808f09c974
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 20:59:48 2021 +0200 don't iterate 3 times commitd8408336e3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 20:59:27 2021 +0200 remove debug commit4f078c3beb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 13 23:38:27 2021 +0200 more temperature (M1 + intel) commit289880aaa6
Merge:88a2528
3ffb212
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 19:37:09 2021 +0200 Merge branch 'OSX' of github.com:aristocratos/btop into OSX commit88a2528ca3
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 19:34:10 2021 +0200 Merge changes from main commit3ffb21203a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 16 19:20:45 2021 +0200 release a bit more - still has negative temps for 2 cores on my system commit70b4871062
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 16 01:59:44 2021 +0200 Fixed leaks in Mem and attempt at fixing leaks in sensors.cpp commitfbae907720
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 15 23:41:37 2021 +0200 temperature sensors via IOKit commitcef0f0a68d
Author: aristocratos <admin@qvantnet.com> Date: Fri Oct 15 18:39:17 2021 +0200 Process command line arguments commit921cfa01ff
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 23:20:15 2021 +0200 Re-enable setuid and set default SU_GROUP to wheel for OSX commita416c888c7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 13 21:16:41 2021 +0200 temperature commite7afe00ce7
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 12:54:43 2021 +0200 Cpu usage working again commit4193ef8921
Author: aristocratos <admin@qvantnet.com> Date: Wed Oct 13 10:36:51 2021 +0200 Fixed cpu lazy sorting commit93fcb6ff04
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 22:22:45 2021 +0200 Update README.md commit683354cd2e
Merge:8a399c4
6d724d6
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 22:19:30 2021 +0200 Merge pull request #80 from ShrirajHegde/OSX Add github workflow for MacOS commit8a399c499a
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 21:50:46 2021 +0200 pointer to smart pointer, first pass commit772605003a
Author: aristocratos <admin@qvantnet.com> Date: Tue Oct 12 18:54:38 2021 +0200 Fixed detailed memory not updating commit28cb677533
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 11 22:19:25 2021 +0200 more memory free-up - still leaks like crazy commit304457863f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 11 21:48:07 2021 +0200 more RAII cleanup commit82e2e3c55c
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 11 12:40:25 2021 +0200 Removed non present cpu fields and fixed calculation for selectable cpu field graphs commit68603f2b37
Author: aristocratos <admin@qvantnet.com> Date: Mon Oct 11 10:57:04 2021 +0200 RAII Wrappers for Cpu::get_battery() commitd5cb24fbeb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 10 20:23:11 2021 +0200 RAII commit8fad5a61be
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:44:16 2021 +0200 get more disk IO stats commit7fa903cf16
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:43:48 2021 +0200 fix build commit98036db660
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:18:25 2021 +0200 remove unnecessary uptime param commitaae7ae35ca
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:07:23 2021 +0200 remove debug logging commit5187420b04
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:06:43 2021 +0200 fix process elapsed time commit89582c0ea6
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 9 21:06:29 2021 +0200 don't double free commit6d724d6155
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:46:33 2021 +0530 Change Upload filename commit4f94ecc8ad
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:40:11 2021 +0530 Fix upload path commite1d6d0a1f2
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:36:13 2021 +0530 Skip installing gcc via Homebrew Change job name commit02cdd9d759
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:30:40 2021 +0530 Fix uploading Remove distclean commit39eb6c396f
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:26:57 2021 +0530 Disable static compilation commit099592bccd
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 17:52:10 2021 +0200 Ignore empty pid 0 to fix tree mode commita28e17556e
Author: Shriraj Hegde <shriraj.hegde@gmail.com> Date: Sat Oct 9 21:17:11 2021 +0530 Add workflow for MacOS commitaee9179c0a
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 17:36:46 2021 +0200 Disable failed tty mode detection for OSX commit4b7b98058d
Author: aristocratos <admin@qvantnet.com> Date: Sat Oct 9 11:28:32 2021 +0200 Fixed disk io and added io activity based on read/write commitbfa0629e7d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 22:28:10 2021 +0200 fill in 0 for ioticks commita016ff8a03
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 22:16:01 2021 +0200 disk io from IOreg. Does not show any io though commitf98606c6db
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 09:32:06 2021 +0200 per process IO stats commitc8b50ed488
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 8 00:11:08 2021 +0200 don't show autofs, it's useless commitc4df64d440
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:41:49 2021 +0200 Fixed compile time display for gmake and command timings commitb3e6f495f7
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:26:15 2021 +0200 Fixed clk_tck -> clkTck commite53799188f
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:25:14 2021 +0200 Fixed better detection for OSX commitb864edf984
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 18:24:37 2021 +0200 Fixed cumulative cpu usage commit6a3c5d9b97
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 13:20:30 2021 +0200 Proc::collect() better cpu percent accurazy commit84d0596294
Merge:3564f8e
98e1e87
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 12:56:55 2021 +0200 Merge branch 'OSX' of github.com:aristocratos/btop into OSX commit3564f8e4c2
Author: aristocratos <admin@qvantnet.com> Date: Thu Oct 7 12:56:27 2021 +0200 Proc::collect() fixed cputimes and cpu percentage calc commit98e1e87405
Merge:60c5636
d96fdd7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Thu Oct 7 11:32:41 2021 +0200 Merge branch 'main' into OSX commit60c5636cd7
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:45:54 2021 +0200 fix warning commit489e446152
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:38:40 2021 +0200 details + process states commit7e5a808c73
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 22:38:19 2021 +0200 avoid details crash commit9c9da4606b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 21:03:21 2021 +0200 fix quit on macos commitec7415384d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:41:37 2021 +0200 fix mistake in makefile commit5ac8fa4c8a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 18:56:13 2021 +0200 don't show /dev commitd901bbebd9
Author: aristocratos <gnmjpl@gmail.com> Date: Wed Oct 6 17:27:51 2021 +0200 Ignore tags and other branches commitc7f1e71e29
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 16:00:41 2021 +0200 comment commitb9d58e3faf
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:55:58 2021 +0200 impossible to get CPU freq on M1 apparently commit66072711c2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:33:43 2021 +0200 detect full commit6bb0e930a2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:38:46 2021 +0200 CPU freq in GHz commita5f10f1a0f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:13:18 2021 +0200 check array length commit155c848b97
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 15:05:20 2021 +0200 switch to other way to get CPU freq (still does not work) commitcf51ba2ebe
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:45:44 2021 +0200 remove some warnings commit775dff5f72
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:16:45 2021 +0200 fix link commit8c67967775
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:16:38 2021 +0200 reduce diff more commit70b47d2ca8
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 14:10:23 2021 +0200 reduce diff with main branch commitca9cb48054
Merge:d0c6c0a
c66b46f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 13:49:20 2021 +0200 Merge remote-tracking branch 'origin/main' into OSX commitc66b46f850
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 13:41:57 2021 +0200 battery state via CoreFoundation commitd0c6c0a362
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:51:36 2021 +0200 all disks + load averages commitca67526dc1
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:33:55 2021 +0200 show all disks commit56119f99a9
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:17:41 2021 +0200 procs sorting/filtering commit8d86011d72
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:42:17 2021 +0200 battery states commita9b64d62e4
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:24:59 2021 +0200 battery hack works on M1 commitce51031142
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:18:22 2021 +0200 ugly hack to get battery commitd5e6725c6c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 22:42:42 2021 +0200 CPU stuff commit5c02bd8c83
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 21:25:42 2021 +0200 network commitd5da9d4983
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 15:43:05 2021 +0200 correct cached size commit5f11aba504
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 12:03:48 2021 +0200 vm stats from syscall + swap commit776fc96852
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:48:07 2021 +0200 seems to work indeed commit7b40e2835a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:46:14 2021 +0200 allow override optimization flag commit005ea24e4c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:09:24 2021 +0200 update Makefile commitaf8cec9deb
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:32:55 2021 +0200 some more params commit7ebe4f7594
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:15:55 2021 +0200 show more disks commite50a56394a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 14:52:56 2021 +0200 disks show something commit6497a8c202
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 09:15:35 2021 +0200 reformat commit28e152b80c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 23:21:13 2021 +0200 decrease diff with upstream commit40da88e9ca
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:56:14 2021 +0200 try to get disks to show commiteaf2bb56a5
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:42:01 2021 +0200 don't crash on deque::back() commitf66b6f712c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:21 2021 +0200 cpu freq, name & process uid/name commit34a8a61f4d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:46:11 2021 +0200 basic process info commit29bb2dcc5f
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:45:39 2021 +0200 initialize mutex (needed on macos apparently and not on linux) commitfb5970b000
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:53:41 2021 +0200 comment commit49d16cdddd
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:51:29 2021 +0200 extract delimiters commit3db9d66476
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:28 2021 +0200 first infos on macos: memory used & free commitf8acb2f854
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Sep 28 23:37:03 2021 +0200 make it compile on macos (M1 - arm64). Does not run though commitbbba17cd35
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:51:36 2021 +0200 all disks + load averages commit548203e93d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 10:33:55 2021 +0200 show all disks commit0ab2be3985
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Oct 6 00:17:41 2021 +0200 procs sorting/filtering commit096104c90b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:42:17 2021 +0200 battery states commit0ad93684c2
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:24:59 2021 +0200 battery hack works on M1 commitc75b0f1cea
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 23:18:22 2021 +0200 ugly hack to get battery commit600b4f72b3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 22:42:42 2021 +0200 CPU stuff commit4eb812d52c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 21:25:42 2021 +0200 network commit899be68a78
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 15:43:05 2021 +0200 correct cached size commita1c7f935e3
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 12:03:48 2021 +0200 vm stats from syscall + swap commitbd1050a740
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:48:07 2021 +0200 seems to work indeed commit5094b73758
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:46:14 2021 +0200 allow override optimization flag commit8811270332
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Oct 5 10:09:24 2021 +0200 update Makefile commit42f966f448
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:32:55 2021 +0200 some more params commitc1e6d6a62e
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 15:15:55 2021 +0200 show more disks commit50fcdaa854
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 14:52:56 2021 +0200 disks show something commit264bf2d7da
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Mon Oct 4 09:15:35 2021 +0200 reformat commit1fd625086b
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 23:21:13 2021 +0200 decrease diff with upstream commit17f9f3703c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:56:14 2021 +0200 try to get disks to show commit8462ae6431
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:42:01 2021 +0200 don't crash on deque::back() commit78bce5b5a6
Merge:53e379d
f9505a4
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:34 2021 +0200 Merge branch 'aristocratos:main' into main commit53e379d74d
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 22:08:21 2021 +0200 cpu freq, name & process uid/name commit2a44b307ef
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:46:11 2021 +0200 basic process info commit66534eb5b5
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sun Oct 3 21:45:39 2021 +0200 initialize mutex (needed on macos apparently and not on linux) commit0983917f26
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:53:41 2021 +0200 comment commit9732507248
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:51:29 2021 +0200 extract delimiters commit6e704ce838
Merge:fe4db7c
7bfbd83
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:43 2021 +0200 Merge branch 'main' of github.com:joske/btop commitfe4db7c16c
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Sat Oct 2 23:48:28 2021 +0200 first infos on macos: memory used & free commit7bfbd83a47
Merge:8c8139b
a15f961
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Fri Oct 1 17:05:26 2021 +0200 Merge branch 'aristocratos:main' into main commit8c8139bd1d
Merge:679d21c
a246c09
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 21:50:00 2021 +0200 Merge branch 'aristocratos:main' into main commit679d21cd22
Merge:4c70c5b
a49b8f9
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 20:23:34 2021 +0200 Merge branch 'aristocratos:main' into main commit4c70c5bdd9
Merge:84a9746
c70667e
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Wed Sep 29 08:30:05 2021 +0200 Merge branch 'aristocratos:main' into main commit84a974695a
Author: Jos Dehaes <jos.dehaes@gmail.com> Date: Tue Sep 28 23:37:03 2021 +0200 make it compile on macos (M1 - arm64). Does not run though Co-authored-by: Jos Dehaes <jos.dehaes@gmail.com>
492 lines
14 KiB
C++
492 lines
14 KiB
C++
/* Copyright 2021 Aristocratos (jakob@qvantnet.com)
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
|
|
indent = tab
|
|
tab-size = 4
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include <ranges>
|
|
#include <vector>
|
|
|
|
#include <btop_input.hpp>
|
|
#include <btop_tools.hpp>
|
|
#include <btop_config.hpp>
|
|
#include <btop_shared.hpp>
|
|
#include <btop_menu.hpp>
|
|
#include <btop_draw.hpp>
|
|
#include <signal.h>
|
|
|
|
using std::cin, std::vector, std::string_literals::operator""s;
|
|
using namespace Tools;
|
|
namespace rng = std::ranges;
|
|
|
|
namespace Input {
|
|
|
|
//* Map for translating key codes to readable values
|
|
const unordered_flat_map<string, string> Key_escapes = {
|
|
{"\033", "escape"},
|
|
{"\n", "enter"},
|
|
{" ", "space"},
|
|
{"\x7f", "backspace"},
|
|
{"\x08", "backspace"},
|
|
{"[A", "up"},
|
|
{"OA", "up"},
|
|
{"[B", "down"},
|
|
{"OB", "down"},
|
|
{"[D", "left"},
|
|
{"OD", "left"},
|
|
{"[C", "right"},
|
|
{"OC", "right"},
|
|
{"[2~", "insert"},
|
|
{"[3~", "delete"},
|
|
{"[H", "home"},
|
|
{"[F", "end"},
|
|
{"[5~", "page_up"},
|
|
{"[6~", "page_down"},
|
|
{"\t", "tab"},
|
|
{"[Z", "shift_tab"},
|
|
{"OP", "f1"},
|
|
{"OQ", "f2"},
|
|
{"OR", "f3"},
|
|
{"OS", "f4"},
|
|
{"[15~", "f5"},
|
|
{"[17~", "f6"},
|
|
{"[18~", "f7"},
|
|
{"[19~", "f8"},
|
|
{"[20~", "f9"},
|
|
{"[21~", "f10"},
|
|
{"[23~", "f11"},
|
|
{"[24~", "f12"}
|
|
};
|
|
|
|
std::atomic<bool> interrupt (false);
|
|
array<int, 2> mouse_pos;
|
|
unordered_flat_map<string, Mouse_loc> mouse_mappings;
|
|
|
|
deque<string> history(50, "");
|
|
string old_filter;
|
|
|
|
bool poll(int timeout) {
|
|
if (timeout < 1) return cin.rdbuf()->in_avail() > 0;
|
|
while (timeout > 0) {
|
|
if (interrupt) {
|
|
interrupt = false;
|
|
return false;
|
|
}
|
|
if (cin.rdbuf()->in_avail() > 0) return true;
|
|
sleep_ms(timeout < 10 ? timeout : 10);
|
|
timeout -= 10;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
string get() {
|
|
string key;
|
|
while (cin.rdbuf()->in_avail() > 0 and key.size() < 100) key += cin.get();
|
|
if (cin.rdbuf()->in_avail() > 0) clear();
|
|
if (not key.empty()) {
|
|
//? Remove escape code prefix if present
|
|
if (key.substr(0, 2) == Fx::e) {
|
|
key.erase(0, 1);
|
|
}
|
|
//? Detect if input is an mouse event
|
|
if (key.starts_with("[<")) {
|
|
std::string_view key_view = key;
|
|
string mouse_event;
|
|
if (key_view.starts_with("[<0;") and key_view.ends_with('M')) {
|
|
mouse_event = "mouse_click";
|
|
key_view.remove_prefix(4);
|
|
}
|
|
else if (key_view.starts_with("[<0;") and key_view.ends_with('m')) {
|
|
mouse_event = "mouse_release";
|
|
key_view.remove_prefix(4);
|
|
}
|
|
else if (key_view.starts_with("[<64;")) {
|
|
mouse_event = "mouse_scroll_up";
|
|
key_view.remove_prefix(5);
|
|
}
|
|
else if (key_view.starts_with("[<65;")) {
|
|
mouse_event = "mouse_scroll_down";
|
|
key_view.remove_prefix(5);
|
|
}
|
|
else
|
|
key.clear();
|
|
|
|
if (Config::getB("proc_filtering")) {
|
|
if (mouse_event == "mouse_click") return mouse_event;
|
|
else return "";
|
|
}
|
|
|
|
//? Get column and line position of mouse and check for any actions mapped to current position
|
|
if (not key.empty()) {
|
|
try {
|
|
const auto delim = key_view.find(';');
|
|
mouse_pos[0] = stoi((string)key_view.substr(0, delim));
|
|
mouse_pos[1] = stoi((string)key_view.substr(delim + 1, key_view.find('M', delim)));
|
|
}
|
|
catch (const std::invalid_argument&) { mouse_event.clear(); }
|
|
catch (const std::out_of_range&) { mouse_event.clear(); }
|
|
|
|
key = mouse_event;
|
|
|
|
if (key == "mouse_click") {
|
|
const auto& [col, line] = mouse_pos;
|
|
|
|
for (const auto& [mapped_key, pos] : (Menu::active ? Menu::mouse_mappings : mouse_mappings)) {
|
|
if (col >= pos.col and col < pos.col + pos.width and line >= pos.line and line < pos.line + pos.height) {
|
|
key = mapped_key;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
else if (Key_escapes.contains(key))
|
|
key = Key_escapes.at(key);
|
|
else if (ulen(key) > 1)
|
|
key.clear();
|
|
|
|
if (not key.empty()) {
|
|
history.push_back(key);
|
|
history.pop_front();
|
|
}
|
|
}
|
|
return key;
|
|
}
|
|
|
|
string wait() {
|
|
while (cin.rdbuf()->in_avail() < 1) {
|
|
sleep_ms(10);
|
|
}
|
|
return get();
|
|
}
|
|
|
|
void clear() {
|
|
auto first_num = cin.rdbuf()->in_avail();
|
|
while (cin.rdbuf()->in_avail() == first_num) {
|
|
if (first_num-- == 0) break;
|
|
cin.ignore(1);
|
|
}
|
|
}
|
|
|
|
void process(const string& key) {
|
|
if (key.empty()) return;
|
|
try {
|
|
auto& filtering = Config::getB("proc_filtering");
|
|
auto& vim_keys = Config::getB("vim_keys");
|
|
auto help_key = (vim_keys ? "H" : "h");
|
|
auto kill_key = (vim_keys ? "K" : "k");
|
|
//? Global input actions
|
|
if (not filtering) {
|
|
bool keep_going = false;
|
|
if (str_to_lower(key) == "q") {
|
|
clean_quit(0);
|
|
}
|
|
else if (is_in(key, "escape", "m")) {
|
|
Menu::show(Menu::Menus::Main);
|
|
return;
|
|
}
|
|
else if (is_in(key, "F1", help_key)) {
|
|
Menu::show(Menu::Menus::Help);
|
|
return;
|
|
}
|
|
else if (is_in(key, "F2", "o")) {
|
|
Menu::show(Menu::Menus::Options);
|
|
return;
|
|
}
|
|
else if (is_in(key, "1", "2", "3", "4")) {
|
|
atomic_wait(Runner::active);
|
|
Config::current_preset = -1;
|
|
static const array<string, 4> boxes = {"cpu", "mem", "net", "proc"};
|
|
Config::toggle_box(boxes.at(std::stoi(key) - 1));
|
|
Draw::calcSizes();
|
|
Runner::run("all", false, true);
|
|
return;
|
|
}
|
|
else if (is_in(key, "p", "P") and Config::preset_list.size() > 1) {
|
|
if (key == "p") {
|
|
if (++Config::current_preset >= (int)Config::preset_list.size()) Config::current_preset = 0;
|
|
}
|
|
else {
|
|
if (--Config::current_preset < 0) Config::current_preset = Config::preset_list.size() - 1;
|
|
}
|
|
atomic_wait(Runner::active);
|
|
Config::apply_preset(Config::preset_list.at(Config::current_preset));
|
|
Draw::calcSizes();
|
|
Runner::run("all", false, true);
|
|
return;
|
|
}
|
|
else
|
|
keep_going = true;
|
|
|
|
if (not keep_going) return;
|
|
}
|
|
|
|
//? Input actions for proc box
|
|
if (Proc::shown) {
|
|
bool keep_going = false;
|
|
bool no_update = true;
|
|
bool redraw = true;
|
|
if (filtering) {
|
|
if (key == "enter") {
|
|
Config::set("proc_filter", Proc::filter.text);
|
|
Config::set("proc_filtering", false);
|
|
old_filter.clear();
|
|
}
|
|
else if (key == "escape" or key == "mouse_click") {
|
|
Config::set("proc_filter", old_filter);
|
|
Config::set("proc_filtering", false);
|
|
old_filter.clear();
|
|
}
|
|
else if (Proc::filter.command(key)) {
|
|
if (Config::getS("proc_filter") != Proc::filter.text)
|
|
Config::set("proc_filter", Proc::filter.text);
|
|
}
|
|
else
|
|
return;
|
|
}
|
|
else if (key == "left" or (vim_keys and key == "h")) {
|
|
int cur_i = v_index(Proc::sort_vector, Config::getS("proc_sorting"));
|
|
if (--cur_i < 0)
|
|
cur_i = Proc::sort_vector.size() - 1;
|
|
Config::set("proc_sorting", Proc::sort_vector.at(cur_i));
|
|
}
|
|
else if (key == "right" or (vim_keys and key == "l")) {
|
|
int cur_i = v_index(Proc::sort_vector, Config::getS("proc_sorting"));
|
|
if (std::cmp_greater(++cur_i, Proc::sort_vector.size() - 1))
|
|
cur_i = 0;
|
|
Config::set("proc_sorting", Proc::sort_vector.at(cur_i));
|
|
}
|
|
else if (is_in(key, "f", "/")) {
|
|
Config::flip("proc_filtering");
|
|
Proc::filter = { Config::getS("proc_filter") };
|
|
old_filter = Proc::filter.text;
|
|
}
|
|
else if (key == "e") {
|
|
Config::flip("proc_tree");
|
|
no_update = false;
|
|
}
|
|
|
|
else if (key == "r")
|
|
Config::flip("proc_reversed");
|
|
|
|
else if (key == "c")
|
|
Config::flip("proc_per_core");
|
|
|
|
else if (key == "delete" and not Config::getS("proc_filter").empty())
|
|
Config::set("proc_filter", ""s);
|
|
|
|
else if (key.starts_with("mouse_")) {
|
|
redraw = false;
|
|
const auto& [col, line] = mouse_pos;
|
|
const int y = (Config::getB("show_detailed") ? Proc::y + 8 : Proc::y);
|
|
const int height = (Config::getB("show_detailed") ? Proc::height - 8 : Proc::height);
|
|
if (col >= Proc::x + 1 and col < Proc::x + Proc::width and line >= y + 1 and line < y + height - 1) {
|
|
if (key == "mouse_click") {
|
|
if (col < Proc::x + Proc::width - 2) {
|
|
const auto& current_selection = Config::getI("proc_selected");
|
|
if (current_selection == line - y - 1) {
|
|
redraw = true;
|
|
goto proc_mouse_enter;
|
|
}
|
|
else if (current_selection == 0 or line - y - 1 == 0)
|
|
redraw = true;
|
|
Config::set("proc_selected", line - y - 1);
|
|
}
|
|
else if (line == y + 1) {
|
|
if (Proc::selection("page_up") == -1) return;
|
|
}
|
|
else if (line == y + height - 2) {
|
|
if (Proc::selection("page_down") == -1) return;
|
|
}
|
|
else if (Proc::selection("mousey" + to_string(line - y - 2)) == -1)
|
|
return;
|
|
}
|
|
else
|
|
goto proc_mouse_scroll;
|
|
}
|
|
else if (key == "mouse_click" and Config::getI("proc_selected") > 0) {
|
|
Config::set("proc_selected", 0);
|
|
redraw = true;
|
|
}
|
|
else
|
|
keep_going = true;
|
|
}
|
|
else if (key == "enter") {
|
|
proc_mouse_enter:
|
|
if (Config::getI("proc_selected") == 0 and not Config::getB("show_detailed")) {
|
|
return;
|
|
}
|
|
else if (Config::getI("proc_selected") > 0 and Config::getI("detailed_pid") != Config::getI("selected_pid")) {
|
|
Config::set("detailed_pid", Config::getI("selected_pid"));
|
|
Config::set("proc_last_selected", Config::getI("proc_selected"));
|
|
Config::set("proc_selected", 0);
|
|
Config::set("show_detailed", true);
|
|
}
|
|
else if (Config::getB("show_detailed")) {
|
|
if (Config::getI("proc_last_selected") > 0) Config::set("proc_selected", Config::getI("proc_last_selected"));
|
|
Config::set("proc_last_selected", 0);
|
|
Config::set("detailed_pid", 0);
|
|
Config::set("show_detailed", false);
|
|
}
|
|
}
|
|
else if (is_in(key, "+", "-", "space") and Config::getB("proc_tree") and Config::getI("proc_selected") > 0) {
|
|
atomic_wait(Runner::active);
|
|
auto& pid = Config::getI("selected_pid");
|
|
if (key == "+" or key == "space") Proc::expand = pid;
|
|
if (key == "-" or key == "space") Proc::collapse = pid;
|
|
no_update = false;
|
|
}
|
|
else if (is_in(key, "t", kill_key) and (Config::getB("show_detailed") or Config::getI("selected_pid") > 0)) {
|
|
atomic_wait(Runner::active);
|
|
if (Config::getB("show_detailed") and Config::getI("proc_selected") == 0 and Proc::detailed.status == "Dead") return;
|
|
Menu::show(Menu::Menus::SignalSend, (key == "t" ? SIGTERM : SIGKILL));
|
|
return;
|
|
}
|
|
else if (key == "s" and (Config::getB("show_detailed") or Config::getI("selected_pid") > 0)) {
|
|
atomic_wait(Runner::active);
|
|
if (Config::getB("show_detailed") and Config::getI("proc_selected") == 0 and Proc::detailed.status == "Dead") return;
|
|
Menu::show(Menu::Menus::SignalChoose);
|
|
return;
|
|
}
|
|
else if (is_in(key, "up", "down", "page_up", "page_down", "home", "end") or (vim_keys and is_in(key, "j", "k"))) {
|
|
proc_mouse_scroll:
|
|
redraw = false;
|
|
auto old_selected = Config::getI("proc_selected");
|
|
auto new_selected = Proc::selection(key);
|
|
if (new_selected == -1)
|
|
return;
|
|
else if (old_selected != new_selected and (old_selected == 0 or new_selected == 0))
|
|
redraw = true;
|
|
}
|
|
else keep_going = true;
|
|
|
|
if (not keep_going) {
|
|
Runner::run("proc", no_update, redraw);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//? Input actions for cpu box
|
|
if (Cpu::shown) {
|
|
bool keep_going = false;
|
|
bool no_update = true;
|
|
bool redraw = true;
|
|
static uint64_t last_press = 0;
|
|
|
|
if (key == "+" and Config::getI("update_ms") <= 86399900) {
|
|
int add = (Config::getI("update_ms") <= 86399000 and last_press >= time_ms() - 200
|
|
and rng::all_of(Input::history, [](const auto& str){ return str == "+"; })
|
|
? 1000 : 100);
|
|
Config::set("update_ms", Config::getI("update_ms") + add);
|
|
last_press = time_ms();
|
|
redraw = true;
|
|
}
|
|
else if (key == "-" and Config::getI("update_ms") >= 200) {
|
|
int sub = (Config::getI("update_ms") >= 2000 and last_press >= time_ms() - 200
|
|
and rng::all_of(Input::history, [](const auto& str){ return str == "-"; })
|
|
? 1000 : 100);
|
|
Config::set("update_ms", Config::getI("update_ms") - sub);
|
|
last_press = time_ms();
|
|
redraw = true;
|
|
}
|
|
else keep_going = true;
|
|
|
|
if (not keep_going) {
|
|
Runner::run("cpu", no_update, redraw);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//? Input actions for mem box
|
|
if (Mem::shown) {
|
|
bool keep_going = false;
|
|
bool no_update = true;
|
|
bool redraw = true;
|
|
|
|
if (key == "i") {
|
|
Config::flip("io_mode");
|
|
}
|
|
else if (key == "d") {
|
|
Config::flip("show_disks");
|
|
no_update = false;
|
|
Draw::calcSizes();
|
|
}
|
|
else keep_going = true;
|
|
|
|
if (not keep_going) {
|
|
Runner::run("mem", no_update, redraw);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//? Input actions for net box
|
|
if (Net::shown) {
|
|
bool keep_going = false;
|
|
bool no_update = true;
|
|
bool redraw = true;
|
|
|
|
if (is_in(key, "b", "n")) {
|
|
atomic_wait(Runner::active);
|
|
int c_index = v_index(Net::interfaces, Net::selected_iface);
|
|
if (c_index != (int)Net::interfaces.size()) {
|
|
if (key == "b") {
|
|
if (--c_index < 0) c_index = Net::interfaces.size() - 1;
|
|
}
|
|
else if (key == "n") {
|
|
if (++c_index == (int)Net::interfaces.size()) c_index = 0;
|
|
}
|
|
Net::selected_iface = Net::interfaces.at(c_index);
|
|
Net::rescale = true;
|
|
}
|
|
}
|
|
else if (key == "y") {
|
|
Config::flip("net_sync");
|
|
Net::rescale = true;
|
|
}
|
|
else if (key == "a") {
|
|
Config::flip("net_auto");
|
|
Net::rescale = true;
|
|
}
|
|
else if (key == "z") {
|
|
atomic_wait(Runner::active);
|
|
auto& ndev = Net::current_net.at(Net::selected_iface);
|
|
if (ndev.stat.at("download").offset + ndev.stat.at("upload").offset > 0) {
|
|
ndev.stat.at("download").offset = 0;
|
|
ndev.stat.at("upload").offset = 0;
|
|
}
|
|
else {
|
|
ndev.stat.at("download").offset = ndev.stat.at("download").last;
|
|
ndev.stat.at("upload").offset = ndev.stat.at("upload").last;
|
|
}
|
|
no_update = false;
|
|
}
|
|
else keep_going = true;
|
|
|
|
if (not keep_going) {
|
|
Runner::run("net", no_update, redraw);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
catch (const std::exception& e) {
|
|
throw std::runtime_error("Input::process(\"" + key + "\") : " + (string)e.what());
|
|
}
|
|
}
|
|
|
|
} |