├── .editorconfig
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ └── testing.yml
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Imgs
├── init.png
├── logo.png
├── main.png
├── menu.png
├── mini.png
└── options.png
├── LICENSE
├── Makefile
├── README.md
├── bpytop-themes
├── bpytop.py
├── poetry.lock
├── pyproject.toml
├── tests
├── __init__.py
├── test_classes.py
├── test_functions.py
└── test_title.py
├── themes
├── adapta.theme
├── default_black.theme
├── dracula.theme
├── dusklight.theme
├── flat-remix-light.theme
├── flat-remix.theme
├── greyscale.theme
├── gruvbox_dark.theme
├── gruvbox_dark_v2.theme
├── kyli0x.theme
├── matcha-dark-sea.theme
├── monokai.theme
├── nord.theme
├── solarized_dark.theme
└── whiteout.theme
└── tox.ini
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{py,sh,md,cfg,sample}]
2 | indent_style = tab
3 | indent_size = 4
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: aristocratos
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: aristocratos
7 |
8 | ---
9 |
10 | **Describe the bug**
11 |
12 | [A clear and concise description of what the bug is.]
13 |
14 | **To Reproduce**
15 |
16 | [Steps to reproduce the behavior:]
17 |
18 | **Expected behavior**
19 |
20 | [A clear and concise description of what you expected to happen.]
21 |
22 | **Screenshots**
23 |
24 | [If applicable, add screenshots to help explain your problem.]
25 |
26 | **Info (please complete the following information):**
27 | - bpytop version: `bpytop -v`
28 | - psutil version: `bpytop -v` (version 5.7.0 or above is required)
29 | - (Linux) Linux distribution and version:
30 | - (OSX/FreeBSD) Os release version:
31 | - Terminal used:
32 | - Font used:
33 | - Python version, `python3 --version` (version 3.6 or above is required):
34 |
35 | **Additional context**
36 |
37 | contents of `~/.config/bpytop/error.log`
38 |
39 | (try running bpytop with `--debug` flag if error.log is empty)
40 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[REQUEST]"
5 | labels: enhancement
6 | assignees: aristocratos
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/testing.yml:
--------------------------------------------------------------------------------
1 | name: Testing
2 |
3 | on: [pull_request, push]
4 |
5 | jobs:
6 | build:
7 | runs-on: ubuntu-latest
8 | if: "!contains(github.event.head_commit.message, '[skip tests]')"
9 | strategy:
10 | max-parallel: 3
11 | matrix:
12 | python-version: [3.7, 3.8, 3.9]
13 |
14 | steps:
15 | - uses: actions/checkout@v1
16 | - name: Set up Python ${{ matrix.python-version }}
17 | uses: actions/setup-python@v2
18 | with:
19 | python-version: ${{ matrix.python-version }}
20 | - name: Install dependencies
21 | run: |
22 | python -m pip install --upgrade pip
23 | pip install tox tox-gh-actions poetry
24 | - name: Test with tox
25 | run: tox
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | syntax: glob
2 | *.al
3 | *.bak
4 | *.egg-info
5 | *.la
6 | *.lo
7 | *.o
8 | *.orig
9 | *.pyc
10 | *.pyd
11 | *.rej
12 | *.so
13 | *.swp
14 | .failed-tests.txt
15 | .cache/
16 | .idea/
17 | .tox/
18 | build/
19 | dist/
20 | __pycache__
21 | .mypy_cache
22 | .vscode
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: python
2 | python:
3 | - "3.6"
4 | - "3.7"
5 | - "3.8"
6 | jobs:
7 | include:
8 | - name: "mypy"
9 | python: 3.8
10 | env:
11 | - TOXENV=mypy
12 | - name: "pylint"
13 | python: 3.8
14 | env:
15 | - TOXENV=pylint
16 | before_install: pip install poetry
17 | install: pip install tox-travis
18 | script: tox
19 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | ## v1.0.68
4 |
5 | * Fixed: typos discovered by codespell, by @cclauss
6 | * Added: search processes using vim keybinds, by @jedi2610
7 | * Fixed: Removed a simple consider-using-in pitfall case, by @NaelsonDouglas
8 | * Added: New theme gruvbox_dark_v2, by @pietryszak
9 | * Fixed: Implement strtobool over distutils strtobool, by @RCristiano
10 |
11 | ## v1.0.67
12 |
13 | * Fixed: Removed not needed escape character replacements
14 | * Fixed: Themes missing when installing with pip3
15 | * Fixed: Color in-range check, by @GerbenWelter
16 |
17 | ## v1.0.66
18 |
19 | * Fixed: Program not stalling when system time is changed and regular update of current timezone
20 | * Fixed: NetBox not redrawing when network interface is removed, by @UmarJ
21 | * Fixed: Some typos
22 |
23 | ## v1.0.65
24 |
25 | * Fixed: Removed degrees symbol from Kelvin scale, by @jrbergen
26 | * Fixed: Mouse buttons not working in netbox when changing interface
27 | * Fixed: q key not working when terminal size warning is showed
28 | * Fixed: Cleanup of unused libraries and other small fixes
29 |
30 | ## v1.0.64
31 |
32 | * Changed: Init screen not shown by default
33 | * Fixed: Broken cleanup in ProcBox class
34 | * Fixed: cpu frequency type change in psutil 5.8.1
35 | * Added: Option to toggle CPU frequency
36 | * Fixed: Check for config in /usr/local/etc instead of /etc on BSD
37 |
38 | ## v1.0.63
39 |
40 | * Added: Options for choosing temperature scale and re-added support for negative celsius temps
41 | * Changed: Cpu values above 0 will always register on the graphs
42 |
43 | ## v1.0.62
44 |
45 | * Fixed: Support cpus with non-sequential core ids, patch by @ErwinJunge
46 | * Added: New theme Adapta, by @olokelo
47 | * Changed: Net graphs will now round up any value above 0 to register on graph
48 |
49 | ## v1.0.61
50 |
51 | * Added: Vim keys (h, j, k, l) for browsing and moved help to shift+h
52 | * Changed: Size constraints now adapts to currently shown boxes
53 |
54 | ## v1.0.60
55 |
56 | * Added: Ignore input unicode decode errors
57 | * Fixed: Wrong letter in "io" highlighted
58 | * Fixed: Crash on missing psutil.disk_usage
59 | * Added: Toggle for IO graphs in regular disk usage mode
60 | * Added: Toggle for uptime and uptime added as a option for the clock formatting
61 | * Added: Ability choose cpu graph attributes and split up upper and lower part
62 | * Added: Ability to toggle one big CPU graph instead of two combined graphs
63 | * Added: IP address to net box
64 |
65 | ## v1.0.59
66 |
67 | * Fixed: Crash on missing disks
68 | * Fixed: IO stats text transparency
69 |
70 | ## v1.0.58
71 |
72 | * Added: Disks io stat graphs and a dedicated io mode for disks box
73 | * Fixed: Better detection for disk io stats including multiple disks for OsX
74 | * Changed: Terminate, Kill, Interrupt shortcuts now only uses uppercase T, K, I
75 | * Changed: Process filtering changed to non case-sensitive, patch by @UmarJ
76 | * Case-sensitive proc filtering using uppercase F
77 | * Changed: Get CPU load average from psutil module instead of os module, patch by @araczkowski
78 | * Fixed: Misc bugs
79 |
80 | ## v1.0.57
81 |
82 | * Fixed: proc_sorting option counter not updating in menu, by @UmarJ
83 | * Added: Support for non truecolor terminals through 24-bit to 256-color conversion
84 | * Activate by setting "truecolor" variable to False or starting with "-lc/--low-color" argument
85 |
86 | ## v1.0.56
87 |
88 | * Fixed: units_to_bytes returning 0 if input value <10 and in bits
89 | * Added: Testing for some functions and classes
90 | * Added: net_iface variable to set startup network interface, by @raTmole
91 | * Added: use_fstab variable to get the disk list from /etc/fstab, by @BrHal
92 | * Added: Categories in Options menu and only_physical option for disks
93 |
94 | ## v1.0.55
95 |
96 | * Fixed: Disks usage and free meters not updating unless resized
97 | * Changed: All boxes are now toggeable with key 1-4, start argument -b/--boxes and config variable shown_boxes.
98 | * Changed: Moved testing from Travis CI to Github workflow
99 |
100 | ## v1.0.54
101 |
102 | * Fixed: Added nullfs filesystem to auto exclude from disks list
103 | * Fixed: Process box not updating on window resize
104 |
105 | ## v1.0.53
106 |
107 | * Added: Process update multiplier (only update processes every X times) to reduce cpu usage (set to 2 by default)
108 | * Changed: Patch for faster loading of config file, by @rohithill
109 | * Added: Network interface list now updates automatically, by @UmarJ
110 | * Notice: Bumped minimum python version to 3.7 because of unicode issues in 3.6
111 | * Added: pylint disable=unsubscriptable-object because of python 3.9 issue
112 | * Changed: Default theme now has a black background
113 | * Fixed: Crash if bpytop.conf exists but don't have update_ms variable set
114 |
115 | ## v1.0.52
116 |
117 | * Fixed: Removed "/sys/class/power_supply" check for FreeBSD and OsX
118 |
119 | ## v1.0.51
120 |
121 | * Fixed: Text argument in subprocess not working on python 3.6
122 | * Changed: Disks filtering now uses full mountpoint path for better accuracy
123 | * Fixed: Disable battery detection if /sys/class/power_supply is missing to avoid exception is psutil
124 | * Fixed: Catch faulty temperature readings instead of crashing
125 | * Changed: psutil update to 5.8.0 in pypi package (fixes errors on apple silicon cpus)
126 |
127 | ## v1.0.50
128 |
129 | * Fixed: Correction for missing coretemp values
130 | * Fixed: Cpu temp calculation from cores if missing and better multi cpu temp support
131 | * Added: New theme dusklight, by @drazil100
132 |
133 | ## v1.0.49
134 |
135 | * Fixed: Missing default values for cpu temp high and crit
136 |
137 | ## v1.0.48
138 |
139 | * Added: Sync clock to timer if timer = 1000ms
140 | * Fixed: Wrong coretemp mapping when missing package id 0
141 | * Fixed: Sizing when coretemp is hidden
142 | * Added: Link to Terminess Powerline with included braille symbols in README.md
143 |
144 | ## v1.0.47
145 |
146 | * Added: Testing, by @ErwinJunge
147 | * Added: Theme matcha-dark-sea, by @TheCynicalLiger
148 | * Fixed: New type errors for mypy v 0.790
149 | * Added: pylint and mypy test with tox, by @ErwinJunge
150 |
151 | ## v1.0.46
152 |
153 | * Changed: psutil update to 5.7.3 in pypi package
154 | * Fixed: Better sensor and temperature detection
155 |
156 | ## v1.0.45
157 |
158 | * Fixed: Missing temps if high or crit is None, by @TheComputerGuy96
159 | * Changed: Some refactoring by @dpshelio
160 | * Added: Proper mapping for correct coretemp display and added toggle for coretemp
161 | * Fixed: Cleanup of escaped characters in process argument string
162 |
163 | ## v1.0.44
164 |
165 | * Added: Spread CPUs across columns evenly if possible, by @ErwinJunge
166 | * Added: Additional crash fixes for graph and swap toggles
167 |
168 | ## v1.0.43
169 |
170 | * Fixed: Battery meter not clearing properly when disabled
171 | * Fixed: Correction for broken cpu high and cpu critical temps
172 | * Fixed: get_cpu_name() function for some Xeon cpus
173 | * Fixed: Additional error handling to prevent crashes from graph and swap toggles
174 |
175 | ## v1.0.42
176 |
177 | * Fixed: Battery status not using same sensors as psutil
178 | * Added: Stripping of .local from /host clock format
179 | * Fixed: Battery clear if removed
180 |
181 | ## v1.0.41
182 |
183 | * Skipped due to pypi - github versioning error
184 |
185 | ## v1.0.40
186 |
187 | * Fixed: Title leading whitespace
188 | * Fixed: Battery meter crash on non Linux systems
189 |
190 | ## v1.0.39
191 |
192 | * Fixed: Manual sensor selection screen refresh
193 | * Fixed: Rare swap toggle crash
194 | * Fixed: Clock and battery placement and sizing
195 |
196 | ## v1.0.38
197 |
198 | * Fixed: Cpu sensor check when changing from manual sensor to Auto
199 | * Fixed: Menu collection timeout and menu background update stall
200 | * Added: Custom options for clock formatting: hostname and username
201 |
202 | ## v1.0.37
203 |
204 | * Fixed: Swap toggle rare crash
205 | * Fixed: Cpu sensor option to trigger temp toggle if check temp is true
206 |
207 | ## v1.0.36
208 |
209 | * Added: Rounding for floating_humanizer() short option
210 | * Fixed: Cpu temp not showing when manually selected and not auto detected
211 | * Fixed Crash during theme change
212 |
213 | ## v1.0.35
214 |
215 | * Fixed: Decimal placement in floating_humanizer() function
216 |
217 | ## v1.0.34
218 |
219 | * Changed: Improvement on cpu name detection
220 | * Added: Option to choose cpu temperature sensor
221 | * Fixed: Battery meter adaptation
222 |
223 | ## v1.0.33
224 |
225 | * Changed: Improvement on osx cpu temperature collection with coretemp
226 | * Fixed: Battery stats crash and better battery status detection
227 | * README: coretemp install instructions by @hacker1024
228 | * README: Added notice about font problems and possible solutions
229 |
230 | ## v1.0.32
231 |
232 | * Added: Symbol for battery inactive
233 | * Fixed: Cpu model name exception for certain xeon cpus
234 | * Fixed: Exception when sending signal using uppercase T, K, I
235 | * Fixed: Battery meter placement calculation correction
236 | * Added: Support for OSX cpu core temperatures via coretemp program
237 |
238 | ## v1.0.31
239 |
240 | * Fixed: Battery meter redraw after terminal resize
241 | * Fixed: Battery meter additional fixes
242 | * Fixed: Cpu temp color wrong on small sizes
243 |
244 | ## v1.0.30
245 |
246 | * Changed: Argument parsing using argparse
247 | * Fixed: Hide battery time when not known
248 |
249 | ## v1.0.29
250 |
251 | * Fixed: Battery percent converted to integer and battery time hidden at 100% level
252 |
253 | ## v1.0.28
254 |
255 | * Fixed: Battery meter causing crash when connecting/disconnecting battery
256 | * README: Added more repositories
257 |
258 | ## v1.0.27
259 |
260 | * Added: kyli0x theme by @kyli0x
261 | * Added: Battery meter and stats
262 | * Added: Option to change the tree view auto collapse depth
263 |
264 | ## v1.0.26
265 |
266 | * Fixed: Cpu temp color index crash
267 | * Fixed: Start from virtualenv crash
268 |
269 | ## v1.0.25
270 |
271 | * Added: More sizing adaptation for processes
272 | * Fixed: Clock centering
273 |
274 | ## v1.0.24
275 |
276 | * Fixed: "view_mode" option entry format
277 | * Fixed: Help menu entries
278 |
279 | ## v1.0.23
280 |
281 | * Added: View mode toggle with 3 presets, "full", "proc" and "stat"
282 | * Added: Rescaling of net stat box width on smaller terminal sizes
283 | * Changed: Net box height slight increase, mem/disks box height slight decrease
284 | * Fixed: Some element placement fixes by @RedBearAK
285 | * Fixed: "delete" and "filter" mouse click area misaligned
286 | * Added: Option to sync network scaling between download and upload
287 |
288 | ## v1.0.22
289 |
290 | * Some refactoring and cleanup
291 | * README: Info for debian package
292 | * Added: Theme search path for snap install
293 | * README: Updated snap install info
294 |
295 |
296 | ## v1.0.21
297 |
298 | * Fixed: Clean excess whitespace from CPU model name, by @RedBearAK
299 | * Changed: README.md absolute paths to work on PyPi
300 |
301 | ## v1.0.20
302 |
303 | * Release bump to fix pypi and source version mismatch
304 |
305 | ## v1.0.19
306 |
307 | * Changed: net_auto variable now default to True
308 | * Fixed: Sorting out negative cpu temperature values from bad sensors
309 |
310 | ## v1.0.18
311 |
312 | * Fixed: Init screen and error log level when starting from pip installation
313 |
314 | ## v1.0.17
315 |
316 | * Added: Option to toggle theme background color
317 | * Added: Dracula theme by @AethanFoot
318 | * Added: PyPi theme install and path detection
319 | * Added: PyPi packaging with poetry by @cjolowicz
320 | * Added: Error checking for net_download and net_upload config values
321 | * Added: psutil outdated warning message
322 | * Changed: Expanded cpu name detection
323 |
324 | ## v1.0.16
325 |
326 | * Fixed: net_upload variable not working
327 | * Added: Ability to expand/collapse processes in the tree view
328 |
329 | ## v1.0.15
330 |
331 | * Added: Network graph color gradient bandwidth option by @drazil100
332 | * Added: cpu_thermal sensor detection for raspberri pi cpu temp
333 | * Fixed: Single color graphs crash
334 |
335 | ## v1.0.14
336 |
337 | * Added: New theme values "graph_text", "meter_bg", "process_start", "process_mid" and "process_end", see default_black.theme for reference.
338 | * Updated: default_black.theme with new values
339 | * Updated: monokai.theme and gruvbox_dark.theme with "graph_text" value.
340 |
341 | ## v1.0.13
342 |
343 | * Fixed: Cpu usage bug when showing tree and memory in percent
344 | * Fixed: Check for minimum terminal size at start when init screen is enabled
345 |
346 | ## v1.0.12
347 |
348 | * Fixed: Cpu high and cpu crit for osx and raspberry pi
349 |
350 | ## v1.0.11
351 |
352 | * Fixed: getsensors detection of vcgencmd
353 | * Fixed: Load AVG being drawn outside box on small sizes
354 | * Fixed: Slowdown when showing memory in percent instead of bytes
355 | * Fixed: Cpu temperature colors not converted to percent of cpu critical temp
356 | * Fixed: Crash on sorting change when lacking permissions
357 |
358 | ## v1.0.10
359 |
360 | * Fixed: Raspberry pi cpu temps, actually fixed this time...
361 |
362 | ## v1.0.9
363 |
364 | * Fixed: Raspberry pi cpu temp, again.
365 |
366 | ## v1.0.8
367 |
368 | * Added: Set terminal title at start
369 | * Added: Update checker, can be toggled off in options menu
370 | * Added: Option to show memory in bytes for processes, enabled by default
371 | * Added: Options to set custom network graphs minimum scaling values and a "auto" button to toggle manual and default values.
372 | * Fixed: Failure to detect cpu temp on raspberry pi
373 | * Changed: Layout changes to cpu box
374 |
375 | ## v1.0.7
376 |
377 | * Changed: Info box now restores last selection on close
378 | * Fixed: Crash when starting with show_disks=False
379 |
380 | ## v1.0.6
381 |
382 | * Fixed: Cpu temps index error on uneven temp collection
383 | * Fixed: No cpu percent in info box when filtering
384 |
385 | ## v1.0.5
386 |
387 | * Fixed: Attribute typo in detailed process collection
388 |
389 | ## v1.0.4
390 |
391 | * Fixed: Crash when filtering and showing info box
392 | * Added: Improved cpu temperature detection
393 | * Fixed: Broken cpu box layout on high core count and change to default layout
394 | * Changed: Selection now returns to last selection when pressing down from info box
395 |
396 | ## v1.0.3
397 |
398 | * Fixed: Crash on detailed info when showing tree
399 | * Fixed: Incorrect sorting for memory
400 | * FIxed: Removed unsupported osx psutil values
401 | * Changed: Removed shift modifiers for some keys and removed redundant toggles
402 |
403 | ## v1.0.2
404 |
405 | * Added: IndexError catch for cpu temperature collection
406 | * Fixed: net_io_counters() not iterating over itself
407 | * Fixed: Clear mouse queue to avoid accidental character interpretation
408 | * Added: "/etc/bpytop.conf" as default seed for config file creation if it exists.
409 | * Added: Error handling for exception in psutil.cpu_freq()
410 |
411 | ## v1.0.1
412 |
413 | * Fixed: Bad assumption of cpu model name string contents.
414 | * Added: Exception catch for psutil io_counters error caused by psutil < 5.7.0 and Linux kernel >= 5
415 | * Added: Error handling for psutil.net_io_counters() errors.
416 |
417 | ## v1.0.0
418 |
419 | * First release
420 | * Missing update checker
421 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at admin@qvantnet.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing guidelines
2 |
3 | ## When submitting pull requests
4 |
5 | * Explain your thinking in why a change or addition is needed.
6 | * Is it a requested change or feature?
7 | * If not, open a feature request to get feedback before making a pull request.
8 |
9 | * Split up multiple unrelated changes in multiple pull requests.
10 |
11 | * If it's a fix for a unreported bug, make a bug report and link the pull request.
12 |
13 | * Purely cosmetic changes won't be accepted without a very good explanation of its value.
14 | * (Some design choices are for better configurability of syntax highlighting.)
15 |
16 | ## Formatting
17 |
18 | ### Follow the current syntax design
19 |
20 | * Indent type: Tabs
21 |
22 | * Tab size: 4
23 |
24 | ## Optimization
25 |
26 | * Avoid writing to disk if possible.
27 |
28 | * Make sure variables/arrays are cleaned up if not reused.
29 |
30 | * Compare cpu and memory usage with and without your code and look for alternatives if they cause a noticeable negative impact.
31 |
32 | For questions contact Aristocratos at admin@qvantnet.com
33 |
34 | For proposing changes to this document create a [new issue](https://github.com/aristocratos/bashtop/issues/new/choose).
35 |
--------------------------------------------------------------------------------
/Imgs/init.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/init.png
--------------------------------------------------------------------------------
/Imgs/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/logo.png
--------------------------------------------------------------------------------
/Imgs/main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/main.png
--------------------------------------------------------------------------------
/Imgs/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/menu.png
--------------------------------------------------------------------------------
/Imgs/mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/mini.png
--------------------------------------------------------------------------------
/Imgs/options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/Imgs/options.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | PREFIX ?= /usr/local
2 | DOCDIR ?= $(PREFIX)/share/bpytop/doc
3 |
4 | all:
5 | @echo Run \'make install\' to install bpytop.
6 |
7 | install:
8 | @mkdir -p $(DESTDIR)$(PREFIX)/bin
9 | @cp -p bpytop.py $(DESTDIR)$(PREFIX)/bin/bpytop
10 | @mkdir -p $(DESTDIR)$(DOCDIR)
11 | @cp -p README.md $(DESTDIR)$(DOCDIR)
12 | @cp -pr themes $(DESTDIR)$(PREFIX)/share/bpytop
13 | @chmod 755 $(DESTDIR)$(PREFIX)/bin/bpytop
14 |
15 | uninstall:
16 | @rm -rf $(DESTDIR)$(PREFIX)/bin/bpytop
17 | @rm -rf $(DESTDIR)$(DOCDIR)
18 | @rm -rf $(DESTDIR)$(PREFIX)/share/bpytop
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 
2 |
3 |
4 |
5 |
6 |
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | [](https://pypi.org/project/bpytop)
14 | [](https://github.com/aristocratos/bpytop/actions?query=workflow%3Atesting)
15 | [](https://paypal.me/aristocratos)
16 | [](https://github.com/sponsors/aristocratos)
17 | [](https://ko-fi.com/aristocratos)
18 |
19 | [](https://snapcraft.io/bpytop)[](https://snapcraft.io/bpytop)
20 |
21 | ## Index
22 |
23 | * [News](#news)
24 | * [Documents](#documents)
25 | * [Description](#description)
26 | * [Features](#features)
27 | * [Themes](#themes)
28 | * [Support and funding](#support-and-funding)
29 | * [Prerequisites](#prerequisites) (Read this if you are having issues!)
30 | * [Dependencies](#dependencies)
31 | * [Screenshots](#screenshots)
32 | * [Installation](#installation)
33 | * [Configurability](#configurability)
34 | * [License](#license)
35 |
36 | ## News
37 |
38 | ### C++ Version
39 |
40 | ##### 18 September 2021
41 |
42 | 
43 |
44 | The Linux version of btop++ is complete. Released as version 1.0.0
45 |
46 | Get it at https://github.com/aristocratos/btop
47 |
48 | The development plan right now:
49 |
50 | * 1.1.0 Mac OsX support
51 | * 1.2.0 FreeBSD support
52 | * 1.3.0 Support for GPU monitoring
53 | * 1.X.0 Other platforms and features...
54 |
55 | ##### 2 May 2021
56 |
57 | I've started work on the third iteration of bashtop->bpytop.
58 | It's being written in C++ and will simply be called `btop`.
59 |
60 | I'm aiming at releasing a beta version around August this year and will publish the repo when I've got the core functionality and structure ready for anybody that wanna help out.
61 |
62 | This project is gonna take some time until it has complete feature parity with bpytop, since all system information gathering will likely have to be written from scratch without any external libraries.
63 | And will need some help in the form of code contributions to get complete support for BSD and OSX.
64 |
65 | If you got suggestions of C++ libraries that are multi-platform and are as extensive as [psutil](https://github.com/giampaolo/psutil) are for python, feel free to open up a new thread in Discussions, it could help speed up the development a lot.
66 |
67 | Will post any updates about this project here until the repo is made available.
68 |
69 | ## Documents
70 |
71 | #### [CHANGELOG.md](https://github.com/aristocratos/bpytop/blob/master/CHANGELOG.md)
72 |
73 | #### [CONTRIBUTING.md](https://github.com/aristocratos/bpytop/blob/master/CONTRIBUTING.md)
74 |
75 | #### [CODE_OF_CONDUCT.md](https://github.com/aristocratos/bpytop/blob/master/CODE_OF_CONDUCT.md)
76 |
77 | ## Description
78 |
79 | Resource monitor that shows usage and stats for processor, memory, disks, network and processes.
80 |
81 | Python port and continuation of [bashtop](https://github.com/aristocratos/bashtop).
82 |
83 | ## Features
84 |
85 | * Easy to use, with a game inspired menu system.
86 | * Full mouse support, all buttons with a highlighted key is clickable and mouse scroll works in process list and menu boxes.
87 | * Fast and responsive UI with UP, DOWN keys process selection.
88 | * Function for showing detailed stats for selected process.
89 | * Ability to filter processes, multiple filters can be entered.
90 | * Easy switching between sorting options.
91 | * Send SIGTERM, SIGKILL, SIGINT to selected process.
92 | * UI menu for changing all config file options.
93 | * Auto scaling graph for network usage.
94 | * Shows message in menu if new version is available
95 | * Shows current read and write speeds for disks
96 |
97 | ## Themes
98 |
99 | Bpytop uses the same theme files as bashtop so any theme made for bashtop will work.
100 |
101 | See [themes](https://github.com/aristocratos/bpytop/tree/master/themes) folder for available themes.
102 |
103 | The `make install` command places the default themes in `/usr/local/share/bpytop/themes`.
104 | If installed with `pip3` the themes will be located in a folder called `bpytop-themes` in the python3 site-packages folder.
105 | User created themes should be placed in `$HOME/.config/bpytop/themes`.
106 |
107 | Let me know if you want to contribute with new themes.
108 |
109 | ## Support and funding
110 |
111 | You can sponsor this project through github, see [my sponsors page](https://github.com/sponsors/aristocratos) for options.
112 |
113 | Or donate through [paypal](https://paypal.me/aristocratos) or [ko-fi](https://ko-fi.com/aristocratos).
114 |
115 | Any support is greatly appreciated!
116 |
117 | ## Prerequisites
118 |
119 | #### Mac Os X
120 |
121 | Will not display correctly in the standard terminal (unless truecolor is set to False)!
122 | Recommended alternative [iTerm2](https://www.iterm2.com/)
123 |
124 | Will also need to be run as superuser to display stats for processes not owned by user.
125 |
126 | OsX on Apple Silicon (arm) requires psutil version 5.8.0 to work and currently has no temperature monitoring.
127 | Upgrade psutil with `sudo pip3 install psutil --upgrade`
128 |
129 | #### Linux, Mac Os X and FreeBSD
130 |
131 | For correct display, a terminal with support for:
132 |
133 | * 24-bit truecolor ([See list of terminals with truecolor support](https://gist.github.com/XVilka/8346728))
134 | * 256-color terminals are supported through 24-bit to 256-color conversion when setting "truecolor" to False in the options or with "-lc/--low-color" argument.
135 | * Wide characters (Are sometimes problematic in web-based terminals)
136 |
137 | Also needs a UTF8 locale and a font that covers:
138 |
139 | * Unicode Block “Braille Patterns” U+2800 - U+28FF
140 | * Unicode Block “Geometric Shapes” U+25A0 - U+25FF
141 | * Unicode Block "Box Drawing" and "Block Elements" U+2500 - U+259F
142 |
143 | #### Notice (Text rendering issues)
144 |
145 | If you are having problems with the characters in the graphs not looking like they do in the screenshots,
146 | it's likely a problem with your systems configured fallback font not having support for braille characters.
147 |
148 | See [Terminess Powerline](https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Terminus/terminus-ttf-4.40.1) for an example of a font that includes the braille symbols.
149 |
150 | See comments by @sgleizes [link](https://github.com/aristocratos/bpytop/issues/100#issuecomment-684036827) and @XenHat [link](https://github.com/aristocratos/bpytop/issues/100#issuecomment-691585587) in issue #100 for possible solutions.
151 |
152 | If text are misaligned and you are using Konsole or Yakuake, turning off "Bi-Directional text rendering" is a possible fix.
153 |
154 | Characters clipping in to each other or text/border misalignments is not bugs caused by bpytop, but most likely a fontconfig or terminal problem where the braille characters making up the graphs aren't rendered correctly.
155 | Look to the creators of the terminal emulator you use to fix these issues if the previous mentioned fixes don't work for you.
156 |
157 | #### Notice (SSH)
158 |
159 | Dropbear seems to not be able to set correct locale. So if accessing bpytop over ssh, OpenSSH is recommended.
160 |
161 | ## Dependencies
162 |
163 | **[Python3](https://www.python.org/downloads/)** (v3.7 or later)
164 |
165 | **[psutil module](https://github.com/giampaolo/psutil)** (v5.7.0 or later)
166 |
167 | ## Optionals for additional stats
168 |
169 | (Optional OSX) **[coretemp](https://github.com/hacker1024/coretemp)** (recommended), or **[osx-cpu-temp](https://github.com/lavoiesl/osx-cpu-temp)** (less accurate) needed to show CPU temperatures.
170 |
171 | ## Screenshots
172 |
173 | Main UI showing details for a selected process.
174 | 
175 |
176 | Main UI in mini mode.
177 | 
178 |
179 | Main menu.
180 | 
181 |
182 | Options menu.
183 | 
184 |
185 | ## Installation
186 |
187 | I only maintain the PyPi package, so will not take responsibility for issues caused by any other install method!
188 |
189 | ### PyPi (will always have latest version)
190 |
191 | > Install or update to latest version
192 | ``` bash
193 | pip3 install bpytop --upgrade
194 | ```
195 |
196 | ### Mac OsX
197 |
198 | >Install with Homebrew
199 | ```bash
200 | brew install bpytop
201 | ```
202 |
203 | >Optional coretemp (Shows temperatures for cpu cores)
204 | ```bash
205 | brew install hacker1024/hacker1024/coretemp
206 | ```
207 |
208 | >Alternatively install with MacPorts
209 | ```bash
210 | port install bpytop
211 | ```
212 |
213 | OsX on Apple Silicon (arm) requires psutil version 5.8.0 to work and currently has no temperature monitoring.
214 | Upgrade psutil with `sudo pip3 install psutil --upgrade`
215 |
216 | ### Arch Linux
217 |
218 | Available in the Arch Linux [community] repository as `bpytop`
219 |
220 | >Installation
221 |
222 | ```bash
223 | sudo pacman -S bpytop
224 | ```
225 |
226 | ### Debian based
227 |
228 | Available in [official Debian repository](https://tracker.debian.org/pkg/bpytop) since Debian 11
229 |
230 | >Installation
231 |
232 | ```bash
233 | sudo apt install bpytop
234 | ```
235 |
236 | Available for debian/ubuntu from [Azlux's repository](http://packages.azlux.fr/)
237 |
238 | ### FreeBSD package
239 |
240 | Available in [FreeBSD ports](https://www.freshports.org/sysutils/bpytop/)
241 |
242 | >Install pre-built package
243 |
244 | ``` bash
245 | sudo pkg install bpytop
246 | ```
247 |
248 | ### Fedora/CentOS 8 package
249 |
250 | [Available](https://src.fedoraproject.org/rpms/bpytop) in the Fedora and [EPEL-8 repository](https://fedoraproject.org/wiki/EPEL).
251 |
252 | >Installation
253 |
254 | ``` bash
255 | sudo dnf install bpytop
256 | ```
257 |
258 | ### Gentoo / Calculate Linux
259 |
260 | Available from [adrien-overlay](https://github.com/aaaaadrien/adrien-overlay)
261 |
262 | >Installation
263 |
264 | ``` bash
265 | sudo emerge -av sys-process/bpytop
266 | ```
267 |
268 | ### Mageia Cauldron (Mageia 8)
269 |
270 | Available in Mageia Cauldron and then Mageia 8 when it is released.
271 |
272 | >Installation
273 |
274 | ``` bash
275 | sudo urpmi bpytop
276 | sudo dnf install bpytop
277 | ```
278 |
279 | ### MX Linux
280 |
281 | Available in the MX Test Repo as `bpytop`
282 | Please use MX Package Installer MX Test Repo tab to install.
283 |
284 | http://mxrepo.com/mx/testrepo/pool/test/b/bpytop/
285 |
286 | ### Void Linux
287 |
288 | Available in void repo and void-packages ports tree
289 |
290 | >Installation
291 |
292 | ``` bash
293 | sudo xbps-install bpytop
294 | ```
295 |
296 | ### Snap package
297 |
298 | (Note! There is some issues caused by the snap sandboxing)
299 |
300 | by @kz6fittycent
301 |
302 | https://github.com/kz6fittycent/bpytop-snap
303 |
304 | >Install the package
305 | ``` bash
306 | sudo snap install bpytop
307 | ```
308 |
309 | The config folder will be located in `~/snap/bpytop/current/.config/bpytop`
310 |
311 | ## Manual installation
312 |
313 | #### Dependencies installation Linux
314 |
315 | >Install python3 and git with a package manager of you choice
316 |
317 | >Install psutil python module (sudo might be required)
318 |
319 | ``` bash
320 | python3 -m pip install psutil
321 | ```
322 |
323 | #### Dependencies installation OSX
324 |
325 | >Install homebrew if not already installed
326 |
327 | ``` bash
328 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
329 | ```
330 |
331 | >Install python3 if not already installed
332 |
333 | ``` bash
334 | brew install python3 git
335 | ```
336 |
337 | >Install psutil python module
338 |
339 | ``` bash
340 | python3 -m pip install psutil
341 | ```
342 |
343 | >Install optional dependency coretemp (recommended), or osx-cpu-temp (less accurate)
344 |
345 | ``` bash
346 | brew install hacker1024/hacker1024/coretemp
347 | ```
348 |
349 | ``` bash
350 | brew install osx-cpu-temp
351 | ```
352 |
353 | #### Dependencies installation FreeBSD
354 |
355 | >Install with pkg and pip
356 |
357 | ``` bash
358 | sudo pkg install git python3 py37-psutil
359 | ```
360 |
361 | #### Manual installation Linux, OSX and FreeBSD
362 |
363 | >Clone and install
364 |
365 | ``` bash
366 | git clone https://github.com/aristocratos/bpytop.git
367 | cd bpytop
368 | sudo make install
369 | ```
370 |
371 | >to uninstall it
372 |
373 | ``` bash
374 | sudo make uninstall
375 | ```
376 |
377 | ## Configurability
378 |
379 | All options changeable from within UI.
380 | Config files stored in "$HOME/.config/bpytop" folder
381 |
382 | #### bpytop.cfg: (auto generated if not found)
383 |
384 | "/etc/bpytop.conf" will be used as default seed for config file creation if it exists. ("/usr/local/etc/bpytop.conf" on BSD)
385 |
386 | ```bash
387 | #? Config file for bpytop v. 1.0.64
388 |
389 | #* Color theme, looks for a .theme file in "/usr/[local/]share/bpytop/themes" and "~/.config/bpytop/themes", "Default" for builtin default theme.
390 | #* Prefix name by a plus sign (+) for a theme located in user themes folder, i.e. color_theme="+monokai"
391 | color_theme="monokai"
392 |
393 | #* If the theme set background should be shown, set to False if you want terminal background transparency
394 | theme_background=False
395 |
396 | #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
397 | truecolor=True
398 |
399 | #* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
400 | shown_boxes="cpu mem net proc"
401 |
402 | #* Update time in milliseconds, increases automatically if set below internal loops processing time, recommended 2000 ms or above for better sample times for graphs.
403 | update_ms=2000
404 |
405 | #* Processes update multiplier, sets how often the process list is updated as a multiplier of "update_ms".
406 | #* Set to 2 or higher to greatly decrease bpytop cpu usage. (Only integers)
407 | proc_update_mult=2
408 |
409 | #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu responsive",
410 | #* "cpu lazy" updates top process over time, "cpu responsive" updates top process directly.
411 | proc_sorting="cpu lazy"
412 |
413 | #* Reverse sorting order, True or False.
414 | proc_reversed=False
415 |
416 | #* Show processes as a tree
417 | proc_tree=False
418 |
419 | #* Which depth the tree view should auto collapse processes at
420 | tree_depth=3
421 |
422 | #* Use the cpu graph colors in the process list.
423 | proc_colors=True
424 |
425 | #* Use a darkening gradient in the process list.
426 | proc_gradient=True
427 |
428 | #* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
429 | proc_per_core=False
430 |
431 | #* Show process memory as bytes instead of percent
432 | proc_mem_bytes=True
433 |
434 | #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available, see:
435 | #* https://psutil.readthedocs.io/en/latest/#psutil.cpu_times for attributes available on specific platforms.
436 | #* Select from a list of detected attributes from the options menu
437 | cpu_graph_upper="total"
438 |
439 | #* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available, see:
440 | #* https://psutil.readthedocs.io/en/latest/#psutil.cpu_times for attributes available on specific platforms.
441 | #* Select from a list of detected attributes from the options menu
442 | cpu_graph_lower="total"
443 |
444 | #* Toggles if the lower CPU graph should be inverted.
445 | cpu_invert_lower=True
446 |
447 | #* Set to True to completely disable the lower CPU graph.
448 | cpu_single_graph=False
449 |
450 | #* Shows the system uptime in the CPU box.
451 | show_uptime=True
452 |
453 | #* Check cpu temperature, needs "osx-cpu-temp" on MacOS X.
454 | check_temp=True
455 |
456 | #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
457 | cpu_sensor=Auto
458 |
459 | #* Show temperatures for cpu cores also if check_temp is True and sensors has been found
460 | show_coretemp=True
461 |
462 | #* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine"
463 | temp_scale="celsius"
464 |
465 | #* Show CPU frequency, can cause slowdowns on certain systems with some versions of psutil
466 | show_cpu_freq=True
467 |
468 | #* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
469 | draw_clock="%H:%M"
470 |
471 | #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
472 | background_update=True
473 |
474 | #* Custom cpu model name, empty string to disable.
475 | custom_cpu_name=""
476 |
477 | #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with a comma ",".
478 | #* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot, /home/user"
479 | disks_filter="exclude=/boot"
480 |
481 | #* Show graphs instead of meters for memory values.
482 | mem_graphs=True
483 |
484 | #* If swap memory should be shown in memory box.
485 | show_swap=True
486 |
487 | #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
488 | swap_disk=True
489 |
490 | #* If mem box should be split to also show disks info.
491 | show_disks=True
492 |
493 | #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
494 | only_physical=True
495 |
496 | #* Read disks list from /etc/fstab. This also disables only_physical.
497 | use_fstab=True
498 |
499 | #* Toggles if io stats should be shown in regular disk usage view
500 | show_io_stat=True
501 |
502 | #* Toggles io mode for disks, showing only big graphs for disk read/write speeds.
503 | io_mode=False
504 |
505 | #* Set to True to show combined read/write io graphs in io mode.
506 | io_graph_combined=False
507 |
508 | #* Set the top speed for the io graphs in MiB/s (10 by default), use format "device:speed" separate disks with a comma ",".
509 | #* Example: "/dev/sda:100, /dev/sdb:20"
510 | io_graph_speeds=""
511 |
512 | #* Set fixed values for network graphs, default "10M" = 10 Mibibytes, possible units "K", "M", "G", append with "bit" for bits instead of bytes, i.e "100mbit"
513 | net_download="100Mbit"
514 | net_upload="100Mbit"
515 |
516 | #* Start in network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
517 | net_auto=True
518 |
519 | #* Sync the scaling for download and upload to whichever currently has the highest scale
520 | net_sync=False
521 |
522 | #* If the network graphs color gradient should scale to bandwidth usage or auto scale, bandwidth usage is based on "net_download" and "net_upload" values
523 | net_color_fixed=False
524 |
525 | #* Starts with the Network Interface specified here.
526 | net_iface="br0"
527 |
528 | #* Show battery stats in top right if battery is present
529 | show_battery=True
530 |
531 | #* Show init screen at startup, the init screen is purely cosmetical
532 | show_init=False
533 |
534 | #* Enable check for new version from github.com/aristocratos/bpytop at start.
535 | update_check=True
536 |
537 | #* Set loglevel for "~/.config/bpytop/error.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
538 | #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
539 | log_level=DEBUG
540 |
541 | ```
542 |
543 | #### Command line options:
544 |
545 | ``` text
546 | usage: bpytop.py [-h] [-b BOXES] [-lc] [-v] [--debug]
547 |
548 | optional arguments:
549 | -h, --help show this help message and exit
550 | -b BOXES, --boxes BOXES
551 | which boxes to show at start, example: -b "cpu mem net proc"
552 | -lc, --low-color disable truecolor, converts 24-bit colors to 256-color
553 | -v, --version show version info and exit
554 | --debug start with loglevel set to DEBUG overriding value set in config
555 | ```
556 |
557 | ## LICENSE
558 |
559 | [Apache License 2.0](https://github.com/aristocratos/bpytop/blob/master/LICENSE)
560 |
--------------------------------------------------------------------------------
/bpytop-themes:
--------------------------------------------------------------------------------
1 | themes
--------------------------------------------------------------------------------
/poetry.lock:
--------------------------------------------------------------------------------
1 | [[package]]
2 | name = "astroid"
3 | version = "2.9.3"
4 | description = "An abstract syntax tree for Python with inference support."
5 | category = "dev"
6 | optional = false
7 | python-versions = ">=3.6.2"
8 |
9 | [package.dependencies]
10 | lazy-object-proxy = ">=1.4.0"
11 | typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""}
12 | typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""}
13 | wrapt = ">=1.11,<1.14"
14 |
15 | [[package]]
16 | name = "atomicwrites"
17 | version = "1.4.0"
18 | description = "Atomic file writes."
19 | category = "dev"
20 | optional = false
21 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
22 |
23 | [[package]]
24 | name = "attrs"
25 | version = "21.4.0"
26 | description = "Classes Without Boilerplate"
27 | category = "dev"
28 | optional = false
29 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
30 |
31 | [package.extras]
32 | dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
33 | docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
34 | tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
35 | tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
36 |
37 | [[package]]
38 | name = "colorama"
39 | version = "0.4.4"
40 | description = "Cross-platform colored terminal text."
41 | category = "dev"
42 | optional = false
43 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
44 |
45 | [[package]]
46 | name = "importlib-metadata"
47 | version = "4.11.2"
48 | description = "Read metadata from Python packages"
49 | category = "dev"
50 | optional = false
51 | python-versions = ">=3.7"
52 |
53 | [package.dependencies]
54 | typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
55 | zipp = ">=0.5"
56 |
57 | [package.extras]
58 | docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
59 | perf = ["ipython"]
60 | testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"]
61 |
62 | [[package]]
63 | name = "iniconfig"
64 | version = "1.1.1"
65 | description = "iniconfig: brain-dead simple config-ini parsing"
66 | category = "dev"
67 | optional = false
68 | python-versions = "*"
69 |
70 | [[package]]
71 | name = "isort"
72 | version = "5.10.1"
73 | description = "A Python utility / library to sort Python imports."
74 | category = "dev"
75 | optional = false
76 | python-versions = ">=3.6.1,<4.0"
77 |
78 | [package.extras]
79 | pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
80 | requirements_deprecated_finder = ["pipreqs", "pip-api"]
81 | colors = ["colorama (>=0.4.3,<0.5.0)"]
82 | plugins = ["setuptools"]
83 |
84 | [[package]]
85 | name = "lazy-object-proxy"
86 | version = "1.7.1"
87 | description = "A fast and thorough lazy object proxy."
88 | category = "dev"
89 | optional = false
90 | python-versions = ">=3.6"
91 |
92 | [[package]]
93 | name = "mccabe"
94 | version = "0.6.1"
95 | description = "McCabe checker, plugin for flake8"
96 | category = "dev"
97 | optional = false
98 | python-versions = "*"
99 |
100 | [[package]]
101 | name = "more-itertools"
102 | version = "8.12.0"
103 | description = "More routines for operating on iterables, beyond itertools"
104 | category = "dev"
105 | optional = false
106 | python-versions = ">=3.5"
107 |
108 | [[package]]
109 | name = "mypy"
110 | version = "0.790"
111 | description = "Optional static typing for Python"
112 | category = "dev"
113 | optional = false
114 | python-versions = ">=3.5"
115 |
116 | [package.dependencies]
117 | mypy-extensions = ">=0.4.3,<0.5.0"
118 | typed-ast = ">=1.4.0,<1.5.0"
119 | typing-extensions = ">=3.7.4"
120 |
121 | [package.extras]
122 | dmypy = ["psutil (>=4.0)"]
123 |
124 | [[package]]
125 | name = "mypy-extensions"
126 | version = "0.4.3"
127 | description = "Experimental type system extensions for programs checked with the mypy typechecker."
128 | category = "dev"
129 | optional = false
130 | python-versions = "*"
131 |
132 | [[package]]
133 | name = "packaging"
134 | version = "21.3"
135 | description = "Core utilities for Python packages"
136 | category = "dev"
137 | optional = false
138 | python-versions = ">=3.6"
139 |
140 | [package.dependencies]
141 | pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
142 |
143 | [[package]]
144 | name = "platformdirs"
145 | version = "2.5.1"
146 | description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
147 | category = "dev"
148 | optional = false
149 | python-versions = ">=3.7"
150 |
151 | [package.extras]
152 | docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"]
153 | test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
154 |
155 | [[package]]
156 | name = "pluggy"
157 | version = "1.0.0"
158 | description = "plugin and hook calling mechanisms for python"
159 | category = "dev"
160 | optional = false
161 | python-versions = ">=3.6"
162 |
163 | [package.dependencies]
164 | importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
165 |
166 | [package.extras]
167 | dev = ["pre-commit", "tox"]
168 | testing = ["pytest", "pytest-benchmark"]
169 |
170 | [[package]]
171 | name = "psutil"
172 | version = "5.9.0"
173 | description = "Cross-platform lib for process and system monitoring in Python."
174 | category = "main"
175 | optional = false
176 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
177 |
178 | [package.extras]
179 | test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"]
180 |
181 | [[package]]
182 | name = "py"
183 | version = "1.11.0"
184 | description = "library with cross-python path, ini-parsing, io, code, log facilities"
185 | category = "dev"
186 | optional = false
187 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
188 |
189 | [[package]]
190 | name = "pylint"
191 | version = "2.12.2"
192 | description = "python code static checker"
193 | category = "dev"
194 | optional = false
195 | python-versions = ">=3.6.2"
196 |
197 | [package.dependencies]
198 | astroid = ">=2.9.0,<2.10"
199 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
200 | isort = ">=4.2.5,<6"
201 | mccabe = ">=0.6,<0.7"
202 | platformdirs = ">=2.2.0"
203 | toml = ">=0.9.2"
204 | typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
205 |
206 | [[package]]
207 | name = "pyparsing"
208 | version = "3.0.7"
209 | description = "Python parsing module"
210 | category = "dev"
211 | optional = false
212 | python-versions = ">=3.6"
213 |
214 | [package.extras]
215 | diagrams = ["jinja2", "railroad-diagrams"]
216 |
217 | [[package]]
218 | name = "pytest"
219 | version = "6.2.5"
220 | description = "pytest: simple powerful testing with Python"
221 | category = "dev"
222 | optional = false
223 | python-versions = ">=3.6"
224 |
225 | [package.dependencies]
226 | atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
227 | attrs = ">=19.2.0"
228 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
229 | importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
230 | iniconfig = "*"
231 | packaging = "*"
232 | pluggy = ">=0.12,<2.0"
233 | py = ">=1.8.2"
234 | toml = "*"
235 |
236 | [package.extras]
237 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
238 |
239 | [[package]]
240 | name = "toml"
241 | version = "0.10.2"
242 | description = "Python Library for Tom's Obvious, Minimal Language"
243 | category = "dev"
244 | optional = false
245 | python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
246 |
247 | [[package]]
248 | name = "typed-ast"
249 | version = "1.4.3"
250 | description = "a fork of Python 2 and 3 ast modules with type comment support"
251 | category = "dev"
252 | optional = false
253 | python-versions = "*"
254 |
255 | [[package]]
256 | name = "typing-extensions"
257 | version = "4.1.1"
258 | description = "Backported and Experimental Type Hints for Python 3.6+"
259 | category = "dev"
260 | optional = false
261 | python-versions = ">=3.6"
262 |
263 | [[package]]
264 | name = "wrapt"
265 | version = "1.13.3"
266 | description = "Module for decorators, wrappers and monkey patching."
267 | category = "dev"
268 | optional = false
269 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
270 |
271 | [[package]]
272 | name = "zipp"
273 | version = "3.7.0"
274 | description = "Backport of pathlib-compatible object wrapper for zip files"
275 | category = "dev"
276 | optional = false
277 | python-versions = ">=3.7"
278 |
279 | [package.extras]
280 | docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
281 | testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
282 |
283 | [metadata]
284 | lock-version = "1.1"
285 | python-versions = "^3.7"
286 | content-hash = "b3bd3798e1494ff11c901ea6d6c21d7d42daf0c58cf688edb702430bf977233b"
287 |
288 | [metadata.files]
289 | astroid = [
290 | {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"},
291 | {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"},
292 | ]
293 | atomicwrites = [
294 | {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
295 | {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
296 | ]
297 | attrs = [
298 | {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
299 | {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
300 | ]
301 | colorama = [
302 | {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
303 | {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
304 | ]
305 | importlib-metadata = [
306 | {file = "importlib_metadata-4.11.2-py3-none-any.whl", hash = "sha256:d16e8c1deb60de41b8e8ed21c1a7b947b0bc62fab7e1d470bcdf331cea2e6735"},
307 | {file = "importlib_metadata-4.11.2.tar.gz", hash = "sha256:b36ffa925fe3139b2f6ff11d6925ffd4fa7bc47870165e3ac260ac7b4f91e6ac"},
308 | ]
309 | iniconfig = [
310 | {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
311 | {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
312 | ]
313 | isort = [
314 | {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"},
315 | {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"},
316 | ]
317 | lazy-object-proxy = [
318 | {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"},
319 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"},
320 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"},
321 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"},
322 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"},
323 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"},
324 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"},
325 | {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"},
326 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"},
327 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"},
328 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"},
329 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"},
330 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"},
331 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"},
332 | {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"},
333 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"},
334 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"},
335 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"},
336 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"},
337 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"},
338 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"},
339 | {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"},
340 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"},
341 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"},
342 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"},
343 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"},
344 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"},
345 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"},
346 | {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"},
347 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"},
348 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"},
349 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"},
350 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"},
351 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"},
352 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"},
353 | {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"},
354 | {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"},
355 | ]
356 | mccabe = [
357 | {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
358 | {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
359 | ]
360 | more-itertools = [
361 | {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"},
362 | {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"},
363 | ]
364 | mypy = [
365 | {file = "mypy-0.790-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:bd03b3cf666bff8d710d633d1c56ab7facbdc204d567715cb3b9f85c6e94f669"},
366 | {file = "mypy-0.790-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:2170492030f6faa537647d29945786d297e4862765f0b4ac5930ff62e300d802"},
367 | {file = "mypy-0.790-cp35-cp35m-win_amd64.whl", hash = "sha256:e86bdace26c5fe9cf8cb735e7cedfe7850ad92b327ac5d797c656717d2ca66de"},
368 | {file = "mypy-0.790-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e97e9c13d67fbe524be17e4d8025d51a7dca38f90de2e462243ab8ed8a9178d1"},
369 | {file = "mypy-0.790-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0d34d6b122597d48a36d6c59e35341f410d4abfa771d96d04ae2c468dd201abc"},
370 | {file = "mypy-0.790-cp36-cp36m-win_amd64.whl", hash = "sha256:72060bf64f290fb629bd4a67c707a66fd88ca26e413a91384b18db3876e57ed7"},
371 | {file = "mypy-0.790-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eea260feb1830a627fb526d22fbb426b750d9f5a47b624e8d5e7e004359b219c"},
372 | {file = "mypy-0.790-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:c614194e01c85bb2e551c421397e49afb2872c88b5830e3554f0519f9fb1c178"},
373 | {file = "mypy-0.790-cp37-cp37m-win_amd64.whl", hash = "sha256:0a0d102247c16ce93c97066443d11e2d36e6cc2a32d8ccc1f705268970479324"},
374 | {file = "mypy-0.790-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf4e7bf7f1214826cf7333627cb2547c0db7e3078723227820d0a2490f117a01"},
375 | {file = "mypy-0.790-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:af4e9ff1834e565f1baa74ccf7ae2564ae38c8df2a85b057af1dbbc958eb6666"},
376 | {file = "mypy-0.790-cp38-cp38-win_amd64.whl", hash = "sha256:da56dedcd7cd502ccd3c5dddc656cb36113dd793ad466e894574125945653cea"},
377 | {file = "mypy-0.790-py3-none-any.whl", hash = "sha256:2842d4fbd1b12ab422346376aad03ff5d0805b706102e475e962370f874a5122"},
378 | {file = "mypy-0.790.tar.gz", hash = "sha256:2b21ba45ad9ef2e2eb88ce4aeadd0112d0f5026418324176fd494a6824b74975"},
379 | ]
380 | mypy-extensions = [
381 | {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
382 | {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
383 | ]
384 | packaging = [
385 | {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
386 | {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
387 | ]
388 | platformdirs = [
389 | {file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"},
390 | {file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"},
391 | ]
392 | pluggy = [
393 | {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
394 | {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
395 | ]
396 | psutil = [
397 | {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"},
398 | {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"},
399 | {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"},
400 | {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"},
401 | {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"},
402 | {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"},
403 | {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"},
404 | {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"},
405 | {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"},
406 | {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"},
407 | {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"},
408 | {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"},
409 | {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"},
410 | {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"},
411 | {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"},
412 | {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"},
413 | {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"},
414 | {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"},
415 | {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"},
416 | {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"},
417 | {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"},
418 | {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"},
419 | {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"},
420 | {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"},
421 | {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"},
422 | {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"},
423 | {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"},
424 | {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"},
425 | {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"},
426 | {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"},
427 | {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"},
428 | {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"},
429 | ]
430 | py = [
431 | {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
432 | {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
433 | ]
434 | pylint = [
435 | {file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"},
436 | {file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"},
437 | ]
438 | pyparsing = [
439 | {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"},
440 | {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"},
441 | ]
442 | pytest = [
443 | {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
444 | {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
445 | ]
446 | toml = [
447 | {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
448 | {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
449 | ]
450 | typed-ast = [
451 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"},
452 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"},
453 | {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"},
454 | {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"},
455 | {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"},
456 | {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"},
457 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"},
458 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"},
459 | {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"},
460 | {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"},
461 | {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"},
462 | {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"},
463 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"},
464 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"},
465 | {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"},
466 | {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"},
467 | {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"},
468 | {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"},
469 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"},
470 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"},
471 | {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"},
472 | {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"},
473 | {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"},
474 | {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"},
475 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"},
476 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"},
477 | {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"},
478 | {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"},
479 | {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"},
480 | {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"},
481 | ]
482 | typing-extensions = [
483 | {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"},
484 | {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"},
485 | ]
486 | wrapt = [
487 | {file = "wrapt-1.13.3-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e05e60ff3b2b0342153be4d1b597bbcfd8330890056b9619f4ad6b8d5c96a81a"},
488 | {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:85148f4225287b6a0665eef08a178c15097366d46b210574a658c1ff5b377489"},
489 | {file = "wrapt-1.13.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2dded5496e8f1592ec27079b28b6ad2a1ef0b9296d270f77b8e4a3a796cf6909"},
490 | {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e94b7d9deaa4cc7bac9198a58a7240aaf87fe56c6277ee25fa5b3aa1edebd229"},
491 | {file = "wrapt-1.13.3-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:498e6217523111d07cd67e87a791f5e9ee769f9241fcf8a379696e25806965af"},
492 | {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ec7e20258ecc5174029a0f391e1b948bf2906cd64c198a9b8b281b811cbc04de"},
493 | {file = "wrapt-1.13.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87883690cae293541e08ba2da22cacaae0a092e0ed56bbba8d018cc486fbafbb"},
494 | {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:f99c0489258086308aad4ae57da9e8ecf9e1f3f30fa35d5e170b4d4896554d80"},
495 | {file = "wrapt-1.13.3-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6a03d9917aee887690aa3f1747ce634e610f6db6f6b332b35c2dd89412912bca"},
496 | {file = "wrapt-1.13.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:936503cb0a6ed28dbfa87e8fcd0a56458822144e9d11a49ccee6d9a8adb2ac44"},
497 | {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9c51d9af9abb899bd34ace878fbec8bf357b3194a10c4e8e0a25512826ef056"},
498 | {file = "wrapt-1.13.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:220a869982ea9023e163ba915077816ca439489de6d2c09089b219f4e11b6785"},
499 | {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0877fe981fd76b183711d767500e6b3111378ed2043c145e21816ee589d91096"},
500 | {file = "wrapt-1.13.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:43e69ffe47e3609a6aec0fe723001c60c65305784d964f5007d5b4fb1bc6bf33"},
501 | {file = "wrapt-1.13.3-cp310-cp310-win32.whl", hash = "sha256:78dea98c81915bbf510eb6a3c9c24915e4660302937b9ae05a0947164248020f"},
502 | {file = "wrapt-1.13.3-cp310-cp310-win_amd64.whl", hash = "sha256:ea3e746e29d4000cd98d572f3ee2a6050a4f784bb536f4ac1f035987fc1ed83e"},
503 | {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8c73c1a2ec7c98d7eaded149f6d225a692caa1bd7b2401a14125446e9e90410d"},
504 | {file = "wrapt-1.13.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:086218a72ec7d986a3eddb7707c8c4526d677c7b35e355875a0fe2918b059179"},
505 | {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:e92d0d4fa68ea0c02d39f1e2f9cb5bc4b4a71e8c442207433d8db47ee79d7aa3"},
506 | {file = "wrapt-1.13.3-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:d4a5f6146cfa5c7ba0134249665acd322a70d1ea61732723c7d3e8cc0fa80755"},
507 | {file = "wrapt-1.13.3-cp35-cp35m-win32.whl", hash = "sha256:8aab36778fa9bba1a8f06a4919556f9f8c7b33102bd71b3ab307bb3fecb21851"},
508 | {file = "wrapt-1.13.3-cp35-cp35m-win_amd64.whl", hash = "sha256:944b180f61f5e36c0634d3202ba8509b986b5fbaf57db3e94df11abee244ba13"},
509 | {file = "wrapt-1.13.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:2ebdde19cd3c8cdf8df3fc165bc7827334bc4e353465048b36f7deeae8ee0918"},
510 | {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:610f5f83dd1e0ad40254c306f4764fcdc846641f120c3cf424ff57a19d5f7ade"},
511 | {file = "wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5601f44a0f38fed36cc07db004f0eedeaadbdcec90e4e90509480e7e6060a5bc"},
512 | {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:e6906d6f48437dfd80464f7d7af1740eadc572b9f7a4301e7dd3d65db285cacf"},
513 | {file = "wrapt-1.13.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:766b32c762e07e26f50d8a3468e3b4228b3736c805018e4b0ec8cc01ecd88125"},
514 | {file = "wrapt-1.13.3-cp36-cp36m-win32.whl", hash = "sha256:5f223101f21cfd41deec8ce3889dc59f88a59b409db028c469c9b20cfeefbe36"},
515 | {file = "wrapt-1.13.3-cp36-cp36m-win_amd64.whl", hash = "sha256:f122ccd12fdc69628786d0c947bdd9cb2733be8f800d88b5a37c57f1f1d73c10"},
516 | {file = "wrapt-1.13.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:46f7f3af321a573fc0c3586612db4decb7eb37172af1bc6173d81f5b66c2e068"},
517 | {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:778fd096ee96890c10ce96187c76b3e99b2da44e08c9e24d5652f356873f6709"},
518 | {file = "wrapt-1.13.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0cb23d36ed03bf46b894cfec777eec754146d68429c30431c99ef28482b5c1df"},
519 | {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:96b81ae75591a795d8c90edc0bfaab44d3d41ffc1aae4d994c5aa21d9b8e19a2"},
520 | {file = "wrapt-1.13.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7dd215e4e8514004c8d810a73e342c536547038fb130205ec4bba9f5de35d45b"},
521 | {file = "wrapt-1.13.3-cp37-cp37m-win32.whl", hash = "sha256:47f0a183743e7f71f29e4e21574ad3fa95676136f45b91afcf83f6a050914829"},
522 | {file = "wrapt-1.13.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fd76c47f20984b43d93de9a82011bb6e5f8325df6c9ed4d8310029a55fa361ea"},
523 | {file = "wrapt-1.13.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b73d4b78807bd299b38e4598b8e7bd34ed55d480160d2e7fdaabd9931afa65f9"},
524 | {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ec9465dd69d5657b5d2fa6133b3e1e989ae27d29471a672416fd729b429eb554"},
525 | {file = "wrapt-1.13.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd91006848eb55af2159375134d724032a2d1d13bcc6f81cd8d3ed9f2b8e846c"},
526 | {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ae9de71eb60940e58207f8e71fe113c639da42adb02fb2bcbcaccc1ccecd092b"},
527 | {file = "wrapt-1.13.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:51799ca950cfee9396a87f4a1240622ac38973b6df5ef7a41e7f0b98797099ce"},
528 | {file = "wrapt-1.13.3-cp38-cp38-win32.whl", hash = "sha256:4b9c458732450ec42578b5642ac53e312092acf8c0bfce140ada5ca1ac556f79"},
529 | {file = "wrapt-1.13.3-cp38-cp38-win_amd64.whl", hash = "sha256:7dde79d007cd6dfa65afe404766057c2409316135cb892be4b1c768e3f3a11cb"},
530 | {file = "wrapt-1.13.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:981da26722bebb9247a0601e2922cedf8bb7a600e89c852d063313102de6f2cb"},
531 | {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:705e2af1f7be4707e49ced9153f8d72131090e52be9278b5dbb1498c749a1e32"},
532 | {file = "wrapt-1.13.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:25b1b1d5df495d82be1c9d2fad408f7ce5ca8a38085e2da41bb63c914baadff7"},
533 | {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:77416e6b17926d953b5c666a3cb718d5945df63ecf922af0ee576206d7033b5e"},
534 | {file = "wrapt-1.13.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:865c0b50003616f05858b22174c40ffc27a38e67359fa1495605f96125f76640"},
535 | {file = "wrapt-1.13.3-cp39-cp39-win32.whl", hash = "sha256:0a017a667d1f7411816e4bf214646d0ad5b1da2c1ea13dec6c162736ff25a374"},
536 | {file = "wrapt-1.13.3-cp39-cp39-win_amd64.whl", hash = "sha256:81bd7c90d28a4b2e1df135bfbd7c23aee3050078ca6441bead44c42483f9ebfb"},
537 | {file = "wrapt-1.13.3.tar.gz", hash = "sha256:1fea9cd438686e6682271d36f3481a9f3636195578bab9ca3382e2f5f01fc185"},
538 | ]
539 | zipp = [
540 | {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"},
541 | {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"},
542 | ]
543 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.poetry]
2 | name = "bpytop"
3 | version = "1.0.68"
4 | description = "Resource monitor that shows usage and stats for processor, memory, disks, network and processes."
5 | readme = "README.md"
6 | authors = ["Aristocratos "]
7 | homepage = "https://github.com/aristocratos/bpytop"
8 | license = "Apache-2.0"
9 | include = ["bpytop-themes/*.theme"]
10 |
11 | [tool.poetry.dependencies]
12 | python = "^3.7"
13 | psutil = "^5.7.0"
14 |
15 | [tool.poetry.dev-dependencies]
16 | pytest = "^6.1.1"
17 | mypy = "^0.790"
18 | pylint = "^2.6.0"
19 | more-itertools = "^8.7.0"
20 |
21 | [tool.poetry.scripts]
22 | bpytop = "bpytop:main"
23 |
24 | [build-system]
25 | requires = ["poetry>=0.12"]
26 | build-backend = "poetry.masonry.api"
27 |
--------------------------------------------------------------------------------
/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aristocratos/bpytop/2034232931324f7b277b9b970a36277297a9ed43/tests/__init__.py
--------------------------------------------------------------------------------
/tests/test_classes.py:
--------------------------------------------------------------------------------
1 | import bpytop, pytest
2 | from bpytop import Box, SubBox, CpuBox, MemBox, NetBox, ProcBox, Term, Draw
3 | from bpytop import Graph, Fx, Meter, Color, Banner
4 | from bpytop import Collector, CpuCollector, MemCollector, NetCollector, ProcCollector
5 | bpytop.Term.width, bpytop.Term.height = 80, 25
6 |
7 | def test_Fx_uncolor():
8 | assert Fx.uncolor("\x1b[38;2;102;238;142mTEST\x1b[48;2;0;0;0m") == "TEST"
9 |
10 | def test_Color():
11 | assert Color.fg("#00ff00") == "\x1b[38;2;0;255;0m"
12 | assert Color.bg("#cc00cc") == "\x1b[48;2;204;0;204m"
13 | assert Color.fg(255, 255, 255) == "\x1b[38;2;255;255;255m"
14 |
15 | def test_Theme():
16 | bpytop.THEME = bpytop.Theme("Default")
17 | assert str(bpytop.THEME.main_fg) == "\x1b[38;2;204;204;204m"
18 | assert list(bpytop.THEME.main_fg) == [204, 204, 204]
19 | assert len(bpytop.THEME.gradient["cpu"]) == 101
20 |
21 | def test_Box_calc_sizes():
22 | Box.calc_sizes()
23 | assert CpuBox.width == MemBox.width + ProcBox.width == NetBox.width + ProcBox.width == 80
24 | assert CpuBox.height + ProcBox.height == CpuBox.height + MemBox.height + NetBox.height == 25
25 |
26 | def test_Graph():
27 | test_graph = Graph(width=20, height=10, color=None, data=[x for x in range(20)], invert=False, max_value=0, offset=0, color_max_value=None)
28 | assert len(str(test_graph)) > 1
29 | assert str(test_graph).endswith("⣀⣤⣴⣾⣿⣿⣿⣿⣿")
30 | assert test_graph(5).endswith("⣧")
31 |
32 | def test_Meter():
33 | test_meter = Meter(value=100, width=20, gradient_name="cpu", invert=False)
34 | assert Fx.uncolor(str(test_meter)) == "■■■■■■■■■■■■■■■■■■■■"
35 |
36 | def test_Banner():
37 | assert len(Banner.draw(line=1, col=1, center=False, now=False)) == 2477
38 |
39 | def test_CpuCollector_collect():
40 | bpytop.CONFIG.check_temp = False
41 | CpuCollector._collect()
42 | assert len(CpuCollector.cpu_usage) == bpytop.THREADS + 1
43 | assert isinstance(CpuCollector.cpu_usage[0][0], int)
44 | assert isinstance(CpuCollector.load_avg, list)
45 | assert isinstance(CpuCollector.uptime, str)
46 |
47 | def test_CpuCollector_get_sensors():
48 | bpytop.CONFIG.check_temp = True
49 | bpytop.CONFIG.cpu_sensor = "Auto"
50 | CpuCollector.get_sensors()
51 | if CpuCollector.got_sensors:
52 | assert CpuCollector.sensor_method != ""
53 | else:
54 | assert CpuCollector.sensor_method == ""
55 |
56 | def test_CpuCollector_collect_temps():
57 | if not CpuCollector.got_sensors:
58 | pytest.skip("Not testing temperature collection if no sensors was detected!")
59 | CpuCollector._collect_temps()
60 | assert len(CpuCollector.cpu_temp) == bpytop.THREADS + 1
61 | for temp_instance in CpuCollector.cpu_temp:
62 | assert temp_instance
63 | assert isinstance(temp_instance[0], int)
64 | assert isinstance(CpuCollector.cpu_temp_high, int)
65 | assert isinstance(CpuCollector.cpu_temp_crit, int)
66 |
67 | def test_MemCollector_collect():
68 | MemBox.width = 20
69 | bpytop.CONFIG.show_swap = True
70 | bpytop.CONFIG.show_disks = True
71 | bpytop.CONFIG.disks_filter = ""
72 | bpytop.CONFIG.swap_disk = True
73 | MemCollector._collect()
74 | assert isinstance(MemCollector.string["total"], str) and MemCollector.string["total"] != ""
75 | assert isinstance(MemCollector.values["used"], int)
76 | assert isinstance(MemCollector.percent["free"], int)
77 | if MemBox.swap_on:
78 | assert len(MemCollector.disks) > 1
79 | assert "__swap" in MemCollector.disks
80 | else:
81 | assert len(MemCollector.disks) > 0
82 |
83 | def test_NetCollector_get_nics():
84 | NetCollector._get_nics()
85 | if NetCollector.nic == "":
86 | pytest.skip("No nic found, skipping tests!")
87 | assert NetCollector.nic in NetCollector.nics
88 |
89 | def test_NetCollector_collect():
90 | if NetCollector.nic == "":
91 | pytest.skip("No nic found, skipping tests!")
92 | NetBox.width = 20
93 | NetCollector._collect()
94 | assert isinstance(NetCollector.strings[NetCollector.nic]["download"]["total"], str)
95 | assert isinstance(NetCollector.stats[NetCollector.nic]["upload"]["total"], int)
96 |
97 | def test_ProcCollector_collect():
98 | bpytop.CONFIG.proc_tree = False
99 | bpytop.CONFIG.proc_mem_bytes = True
100 | bpytop.Box.boxes = ["proc"]
101 | ProcCollector._collect()
102 | assert len(ProcCollector.processes) > 0
103 | bpytop.CONFIG.proc_tree = True
104 | ProcCollector.processes = {}
105 | ProcCollector._collect()
106 | assert len(ProcCollector.processes) > 0
107 |
108 | def test_CpuBox_draw():
109 | Box.calc_sizes()
110 | assert len(CpuBox._draw_bg()) > 1
111 | CpuBox._draw_fg()
112 | assert "cpu" in Draw.strings
113 |
114 | def test_MemBox_draw():
115 | bpytop.CONFIG.show_disks = True
116 | Box.calc_sizes()
117 | assert len(MemBox._draw_bg()) > 1
118 | MemBox._draw_fg()
119 | assert "mem" in Draw.strings
120 |
121 | def test_NetBox_draw():
122 | Box.calc_sizes()
123 | assert len(NetBox._draw_bg()) > 1
124 | NetBox._draw_fg()
125 | assert "net" in Draw.strings
126 |
127 | def test_ProcBox_draw():
128 | Box.calc_sizes()
129 | assert len(ProcBox._draw_bg()) > 1
130 | ProcBox._draw_fg()
131 | assert "proc" in Draw.strings
132 |
--------------------------------------------------------------------------------
/tests/test_functions.py:
--------------------------------------------------------------------------------
1 | from more_itertools import divide
2 |
3 | import bpytop
4 | from bpytop import (CORES, SYSTEM, THREADS, Fx, create_box, floating_humanizer,
5 | get_cpu_core_mapping, get_cpu_name, units_to_bytes)
6 |
7 |
8 | def test_get_cpu_name():
9 | assert isinstance(get_cpu_name(), str)
10 |
11 | def test_get_cpu_core_mapping():
12 | cpu_core_mapping = get_cpu_core_mapping()
13 | assert isinstance(cpu_core_mapping, list)
14 | # Assert cpu submappings are sequential
15 | for submapping in divide(THREADS//CORES, cpu_core_mapping):
16 | submapping = list(submapping)
17 | for a, b in zip(submapping[:-1], submapping[1:]):
18 | assert b - a == 1
19 |
20 | def test_create_box():
21 | assert len(create_box(x=1, y=1, width=10, height=10, title="", title2="", line_color=None, title_color=None, fill=True, box=None)) > 1
22 |
23 | def test_floating_humanizer():
24 | assert floating_humanizer(100) == "100 Byte"
25 | assert floating_humanizer(100<<10) == "100 KiB"
26 | assert floating_humanizer(100<<20, bit=True) == "800 Mib"
27 | assert floating_humanizer(100<<20, start=1) == "100 GiB"
28 | assert floating_humanizer(100<<40, short=True) == "100T"
29 | assert floating_humanizer(100<<50, per_second=True) == "100 PiB/s"
30 |
31 | def test_units_to_bytes():
32 | assert units_to_bytes("10kbits") == 1280
33 | assert units_to_bytes("100Mbytes") == 104857600
34 | assert units_to_bytes("1gbit") == 134217728
35 |
--------------------------------------------------------------------------------
/tests/test_title.py:
--------------------------------------------------------------------------------
1 | from bpytop import Term
2 | import os
3 | from unittest import mock
4 |
5 |
6 | def test_empty():
7 | assert Term.title() == "\033]0;\a"
8 |
9 |
10 | def test_nonempty():
11 | assert Term.title("BpyTOP") == "\033]0;BpyTOP\a"
12 |
13 |
14 | def test_empty_with_environ():
15 | with mock.patch.dict("os.environ", {"TERMINAL_TITLE": "hello"}, clear=True):
16 | assert Term.title() == "\033]0;hello\a"
17 |
18 |
19 | def test_nonempty_with_environ():
20 | with mock.patch.dict("os.environ", {"TERMINAL_TITLE": "hello"}, clear=True):
21 | assert Term.title("BpyTOP") == "\033]0;hello BpyTOP\a"
22 |
--------------------------------------------------------------------------------
/themes/adapta.theme:
--------------------------------------------------------------------------------
1 | #Bashtop Adapta theme
2 | #by olokelo
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#ffffff", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]=""
14 |
15 | # Main text color
16 | theme[main_fg]="#cfd8dc"
17 |
18 | # Title color for boxes
19 | theme[title]="#ff"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#90"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#bb0040"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ff"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#40"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#55bcea"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#00bcd4"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#00bcd4"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#00bcd4"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#00bcd4"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#50"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#00bcd4"
53 | theme[temp_mid]="#d4d400"
54 | theme[temp_end]="#ff0040"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#00bcd4"
58 | theme[cpu_mid]="#d4d400"
59 | theme[cpu_end]="#ff0040"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#00bcd4"
63 | theme[free_mid]="#1090a0"
64 | theme[free_end]="#206f79"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#991199"
68 | theme[cached_mid]="#770a55"
69 | theme[cached_end]="#550055"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#00b0ff"
73 | theme[available_mid]="#1099cc"
74 | theme[available_end]="#2070aa"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#ff0040"
78 | theme[used_mid]="#ff2060"
79 | theme[used_end]="#ff4080"
80 |
81 | # Download graph colors
82 | theme[download_start]="#00bcd4"
83 | theme[download_mid]="#991199"
84 | theme[download_end]="#ff0040"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#00bcd4"
88 | theme[upload_mid]="#991199"
89 | theme[upload_end]="#ff0040"
90 |
--------------------------------------------------------------------------------
/themes/default_black.theme:
--------------------------------------------------------------------------------
1 | #Bashtop theme with default colors and black background
2 | #by aristocratos
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#00"
14 |
15 | # Main text color
16 | theme[main_fg]="#cc"
17 |
18 | # Title color for boxes
19 | theme[title]="#ee"
20 |
21 | # Highlight color for keyboard shortcuts
22 | theme[hi_fg]="#90"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#7e2626"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ee"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#40"
32 |
33 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
34 | theme[graph_text]="#60"
35 |
36 | # Background color of the percentage meters
37 | theme[meter_bg]="#40"
38 |
39 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
40 | theme[proc_misc]="#0de756"
41 |
42 | # Cpu box outline color
43 | theme[cpu_box]="#3d7b46"
44 |
45 | # Memory/disks box outline color
46 | theme[mem_box]="#8a882e"
47 |
48 | # Net up/down box outline color
49 | theme[net_box]="#423ba5"
50 |
51 | # Processes box outline color
52 | theme[proc_box]="#923535"
53 |
54 | # Box divider line and small boxes line color
55 | theme[div_line]="#30"
56 |
57 | # Temperature graph colors
58 | theme[temp_start]="#4897d4"
59 | theme[temp_mid]="#5474e8"
60 | theme[temp_end]="#ff40b6"
61 |
62 | # CPU graph colors
63 | theme[cpu_start]="#50f095"
64 | theme[cpu_mid]="#f2e266"
65 | theme[cpu_end]="#fa1e1e"
66 |
67 | # Mem/Disk free meter
68 | theme[free_start]="#223014"
69 | theme[free_mid]="#b5e685"
70 | theme[free_end]="#dcff85"
71 |
72 | # Mem/Disk cached meter
73 | theme[cached_start]="#0b1a29"
74 | theme[cached_mid]="#74e6fc"
75 | theme[cached_end]="#26c5ff"
76 |
77 | # Mem/Disk available meter
78 | theme[available_start]="#292107"
79 | theme[available_mid]="#ffd77a"
80 | theme[available_end]="#ffb814"
81 |
82 | # Mem/Disk used meter
83 | theme[used_start]="#3b1f1c"
84 | theme[used_mid]="#d9626d"
85 | theme[used_end]="#ff4769"
86 |
87 | # Download graph colors
88 | theme[download_start]="#231a63"
89 | theme[download_mid]="#4f43a3"
90 | theme[download_end]="#b0a9de"
91 |
92 | # Upload graph colors
93 | theme[upload_start]="#510554"
94 | theme[upload_mid]="#7d4180"
95 | theme[upload_end]="#dcafde"
96 |
97 | # Process box color gradient for threads, mem and cpu usage
98 | theme[process_start]="#80d0a3"
99 | theme[process_mid]="#dcd179"
100 | theme[process_end]="#d45454"
--------------------------------------------------------------------------------
/themes/dracula.theme:
--------------------------------------------------------------------------------
1 | # Main background, empty for terminal default, need to be empty if you want transparent background
2 | theme[main_bg]="#282a36"
3 |
4 | # Main text color
5 | theme[main_fg]="#f8f8f2"
6 |
7 | # Title color for boxes
8 | theme[title]="#f8f8f2"
9 |
10 | # Highlight color for keyboard shortcuts
11 | theme[hi_fg]="#6272a4"
12 |
13 | # Background color of selected item in processes box
14 | theme[selected_bg]="#ff79c6"
15 |
16 | # Foreground color of selected item in processes box
17 | theme[selected_fg]="#f8f8f2"
18 |
19 | # Color of inactive/disabled text
20 | theme[inactive_fg]="#44475a"
21 |
22 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
23 | theme[graph_text]="#f8f8f2"
24 |
25 | # Background color of the percentage meters
26 | theme[meter_bg]="#44475a"
27 |
28 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
29 | theme[proc_misc]="#bd93f9"
30 |
31 | # Cpu box outline color
32 | theme[cpu_box]="#bd93f9"
33 |
34 | # Memory/disks box outline color
35 | theme[mem_box]="#50fa7b"
36 |
37 | # Net up/down box outline color
38 | theme[net_box]="#ff5555"
39 |
40 | # Processes box outline color
41 | theme[proc_box]="#8be9fd"
42 |
43 | # Box divider line and small boxes line color
44 | theme[div_line]="#44475a"
45 |
46 | # Temperature graph colors
47 | theme[temp_start]="#bd93f9"
48 | theme[temp_mid]="#ff79c6"
49 | theme[temp_end]="#ff33a8"
50 |
51 | # CPU graph colors
52 | theme[cpu_start]="#bd93f9"
53 | theme[cpu_mid]="#8be9fd"
54 | theme[cpu_end]="#50fa7b"
55 |
56 | # Mem/Disk free meter
57 | theme[free_start]="#ffa6d9"
58 | theme[free_mid]="#ff79c6"
59 | theme[free_end]="#ff33a8"
60 |
61 | # Mem/Disk cached meter
62 | theme[cached_start]="#b1f0fd"
63 | theme[cached_mid]="#8be9fd"
64 | theme[cached_end]="#26d7fd"
65 |
66 | # Mem/Disk available meter
67 | theme[available_start]="#ffd4a6"
68 | theme[available_mid]="#ffb86c"
69 | theme[available_end]="#ff9c33"
70 |
71 | # Mem/Disk used meter
72 | theme[used_start]="#96faaf"
73 | theme[used_mid]="#50fa7b"
74 | theme[used_end]="#0dfa49"
75 |
76 | # Download graph colors
77 | theme[download_start]="#bd93f9"
78 | theme[download_mid]="#50fa7b"
79 | theme[download_end]="#8be9fd"
80 |
81 | # Upload graph colors
82 | theme[upload_start]="#8c42ab"
83 | theme[upload_mid]="#ff79c6"
84 | theme[upload_end]="#ff33a8"
85 |
86 | # Process box color gradient for threads, mem and cpu usage
87 | theme[process_start]="#50fa7b"
88 | theme[process_mid]="#59b690"
89 | theme[process_end]="#6272a4"
90 |
--------------------------------------------------------------------------------
/themes/dusklight.theme:
--------------------------------------------------------------------------------
1 | #Bpytop theme comprised of blues, oranges, cyan, and yellow.
2 | #by Drazil100
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#04142E"
14 |
15 | # Main text color
16 | theme[main_fg]="#99DFFF"
17 |
18 | # Title color for boxes
19 | theme[title]="#99FFFF"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#FF7F00"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#722B01"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#99FFFF"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#052E51"
32 |
33 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
34 | theme[graph_text]="#79A1B4"
35 |
36 | # Background color of the percentage meters
37 | theme[meter_bg]="#052E51"
38 |
39 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
40 | theme[proc_misc]="#B46718"
41 |
42 | # Cpu box outline color
43 | theme[cpu_box]="#00FFFF"
44 |
45 | # Memory/disks box outline color
46 | theme[mem_box]="#00FFFF"
47 |
48 | # Net up/down box outline color
49 | theme[net_box]="#00FFFF"
50 |
51 | # Processes box outline color
52 | theme[proc_box]="#00FFFF"
53 |
54 | # Box divider line and small boxes line color
55 | theme[div_line]="#A55800"
56 |
57 | # Temperature graph colors
58 | theme[temp_start]="#00ADFF"
59 | theme[temp_mid]="#00FFFF"
60 | theme[temp_end]="#FFF86B"
61 |
62 | # CPU graph colors
63 | theme[cpu_start]="#00D4FF"
64 | theme[cpu_mid]="#FFF86B"
65 | theme[cpu_end]="#FF7F00"
66 |
67 | # Mem/Disk free meter
68 | theme[free_start]="#0187CB"
69 | theme[free_mid]=""
70 | theme[free_end]=""
71 |
72 | # Mem/Disk cached meter
73 | theme[cached_start]="#B4BB63"
74 | theme[cached_mid]=""
75 | theme[cached_end]=""
76 |
77 | # Mem/Disk available meter
78 | theme[available_start]="#01C0CB"
79 | theme[available_mid]=""
80 | theme[available_end]=""
81 |
82 | # Mem/Disk used meter
83 | theme[used_start]="#B46718"
84 | theme[used_mid]=""
85 | theme[used_end]=""
86 |
87 | # Download graph colors
88 | theme[download_start]="#009EFF"
89 | theme[download_mid]=""
90 | theme[download_end]="#00FFFF"
91 |
92 | # Upload graph colors
93 | theme[upload_start]="#FF7F00"
94 | theme[upload_mid]=""
95 | theme[upload_end]="#FFF86B"
96 |
--------------------------------------------------------------------------------
/themes/flat-remix-light.theme:
--------------------------------------------------------------------------------
1 | #Bashtop theme with flat-remix colors
2 | #by Daniel Ruiz de Alegría
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#ffffff", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#e4e4e7"
14 |
15 | # Main text color
16 | theme[main_fg]="#737680"
17 |
18 | # Title color for boxes
19 | theme[title]="#272a34"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#90"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#b8174c"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ff"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#40"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#367bf0"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#367bf0"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#19a187"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#fd3535"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#4aaee6"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#50"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#367bf0"
53 | theme[temp_mid]="#b8174c"
54 | theme[temp_end]="#d41919"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#367bf0"
58 | theme[cpu_mid]="#4aaee6"
59 | theme[cpu_end]="#54bd8e"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#811035"
63 | theme[free_mid]="#b8174c"
64 | theme[free_end]="#d41919"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#2656a8"
68 | theme[cached_mid]="#4aaee6"
69 | theme[cached_end]="#23bac2"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#fea44c"
73 | theme[available_mid]="#fd7d00"
74 | theme[available_end]="#fe7171"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#12715f"
78 | theme[used_mid]="#19a187"
79 | theme[used_end]="#23bac2"
80 |
81 | # Download graph colors
82 | theme[download_start]="#367bf0"
83 | theme[download_mid]="#19a187"
84 | theme[download_end]="#4aaee6"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#8c42ab"
88 | theme[upload_mid]="#b8174c"
89 | theme[upload_end]="#d41919"
90 |
--------------------------------------------------------------------------------
/themes/flat-remix.theme:
--------------------------------------------------------------------------------
1 | #Bashtop theme with flat-remix colors
2 | #by Daniel Ruiz de Alegría
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#ffffff", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]=""
14 |
15 | # Main text color
16 | theme[main_fg]="#E6E6E6"
17 |
18 | # Title color for boxes
19 | theme[title]="#ff"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#90"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#b8174c"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ff"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#40"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#367bf0"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#367bf0"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#19a187"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#fd3535"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#4aaee6"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#50"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#367bf0"
53 | theme[temp_mid]="#b8174c"
54 | theme[temp_end]="#d41919"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#367bf0"
58 | theme[cpu_mid]="#4aaee6"
59 | theme[cpu_end]="#54bd8e"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#811035"
63 | theme[free_mid]="#b8174c"
64 | theme[free_end]="#d41919"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#2656a8"
68 | theme[cached_mid]="#4aaee6"
69 | theme[cached_end]="#23bac2"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#fea44c"
73 | theme[available_mid]="#fd7d00"
74 | theme[available_end]="#fe7171"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#12715f"
78 | theme[used_mid]="#19a187"
79 | theme[used_end]="#23bac2"
80 |
81 | # Download graph colors
82 | theme[download_start]="#367bf0"
83 | theme[download_mid]="#19a187"
84 | theme[download_end]="#4aaee6"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#8c42ab"
88 | theme[upload_mid]="#b8174c"
89 | theme[upload_end]="#d41919"
90 |
--------------------------------------------------------------------------------
/themes/greyscale.theme:
--------------------------------------------------------------------------------
1 | #Bashtop grayscale theme
2 | #by aristocratos
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#00"
14 |
15 | # Main text color
16 | theme[main_fg]="#bb"
17 |
18 | # Title color for boxes
19 | theme[title]="#cc"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#90"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#ff"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#00"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#30"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#90"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#90"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#90"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#90"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#90"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#30"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#50"
53 | theme[temp_mid]=""
54 | theme[temp_end]="#ff"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#50"
58 | theme[cpu_mid]=""
59 | theme[cpu_end]="#ff"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#50"
63 | theme[free_mid]=""
64 | theme[free_end]="#ff"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#50"
68 | theme[cached_mid]=""
69 | theme[cached_end]="#ff"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#50"
73 | theme[available_mid]=""
74 | theme[available_end]="#ff"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#50"
78 | theme[used_mid]=""
79 | theme[used_end]="#ff"
80 |
81 | # Download graph colors
82 | theme[download_start]="#30"
83 | theme[download_mid]=""
84 | theme[download_end]="#ff"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#30"
88 | theme[upload_mid]=""
89 | theme[upload_end]="#ff"
--------------------------------------------------------------------------------
/themes/gruvbox_dark.theme:
--------------------------------------------------------------------------------
1 | #Bashtop gruvbox (https://github.com/morhetz/gruvbox) theme
2 | #by BachoSeven
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#1d2021"
14 |
15 | # Main text color
16 | theme[main_fg]="#a89984"
17 |
18 | # Title color for boxes
19 | theme[title]="#ebdbb2"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#d79921"
23 |
24 | # Background color of selected items
25 | theme[selected_bg]="#282828"
26 |
27 | # Foreground color of selected items
28 | theme[selected_fg]="#fabd2f"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#282828"
32 |
33 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
34 | theme[graph_text]="#585858"
35 |
36 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
37 | theme[proc_misc]="#98971a"
38 |
39 | # Cpu box outline color
40 | theme[cpu_box]="#a89984"
41 |
42 | # Memory/disks box outline color
43 | theme[mem_box]="#a89984"
44 |
45 | # Net up/down box outline color
46 | theme[net_box]="#a89984"
47 |
48 | # Processes box outline color
49 | theme[proc_box]="#a89984"
50 |
51 | # Box divider line and small boxes line color
52 | theme[div_line]="#a89984"
53 |
54 | # Temperature graph colors
55 | theme[temp_start]="#458588"
56 | theme[temp_mid]="#d3869b"
57 | theme[temp_end]="#fb4394"
58 |
59 | # CPU graph colors
60 | theme[cpu_start]="#b8bb26"
61 | theme[cpu_mid]="#d79921"
62 | theme[cpu_end]="#fb4934"
63 |
64 | # Mem/Disk free meter
65 | theme[free_start]="#4e5900"
66 | theme[free_mid]=""
67 | theme[free_end]="#98971a"
68 |
69 | # Mem/Disk cached meter
70 | theme[cached_start]="#458588"
71 | theme[cached_mid]=""
72 | theme[cached_end]="#83a598"
73 |
74 | # Mem/Disk available meter
75 | theme[available_start]="#d79921"
76 | theme[available_mid]=""
77 | theme[available_end]="#fabd2f"
78 |
79 | # Mem/Disk used meter
80 | theme[used_start]="#cc241d"
81 | theme[used_mid]=""
82 | theme[used_end]="#fb4934"
83 |
84 | # Download graph colors
85 | theme[download_start]="#3d4070"
86 | theme[download_mid]="#6c71c4"
87 | theme[download_end]="#a3a8f7"
88 |
89 | # Upload graph colors
90 | theme[upload_start]="#701c45"
91 | theme[upload_mid]="#b16286"
92 | theme[upload_end]="#d3869b"
93 |
--------------------------------------------------------------------------------
/themes/gruvbox_dark_v2.theme:
--------------------------------------------------------------------------------
1 | # Bashtop gruvbox (https://github.com/morhetz/gruvbox) theme
2 | # First version created By BachoSeven
3 | # Adjustments to proper colors by Pietryszak (https://github.com/pietryszak/)
4 |
5 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
6 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
7 |
8 | # All graphs and meters can be gradients
9 | # For single color graphs leave "mid" and "end" variable empty.
10 | # Use "start" and "end" variables for two color gradient
11 | # Use "start", "mid" and "end" for three color gradient
12 |
13 | # Main background, empty for terminal default, need to be empty if you want transparent background
14 | theme[main_bg]="#282828"
15 |
16 | # Main text color
17 | theme[main_fg]="#EBDBB2"
18 |
19 | # Title color for boxes
20 | theme[title]="#EBDBB2"
21 |
22 | # Highlight color for keyboard shortcuts
23 | theme[hi_fg]="#CC241D"
24 |
25 | # Background color of selected items
26 | theme[selected_bg]="#32302F"
27 |
28 | # Foreground color of selected items
29 | theme[selected_fg]="#D3869B"
30 |
31 | # Color of inactive/disabled text
32 | theme[inactive_fg]="#3C3836"
33 |
34 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
35 | theme[graph_text]="#A89984"
36 |
37 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
38 | theme[proc_misc]="#98971A"
39 |
40 | # Cpu box outline color
41 | theme[cpu_box]="#A89984"
42 |
43 | # Memory/disks box outline color
44 | theme[mem_box]="#A89984"
45 |
46 | # Net up/down box outline color
47 | theme[net_box]="#A89984"
48 |
49 | # Processes box outline color
50 | theme[proc_box]="#A89984"
51 |
52 | # Box divider line and small boxes line color
53 | theme[div_line]="#A89984"
54 |
55 | # Temperature graph colors
56 | theme[temp_start]="#98971A"
57 | theme[temp_mid]=""
58 | theme[temp_end]="#CC241D"
59 |
60 | # CPU graph colors
61 | theme[cpu_start]="#8EC07C"
62 | theme[cpu_mid]="#D79921"
63 | theme[cpu_end]="#CC241D"
64 |
65 | # Mem/Disk free meter
66 | theme[free_start]="#CC241D"
67 | theme[free_mid]="#D79921"
68 | theme[free_end]="#8EC07C"
69 |
70 | # Mem/Disk cached meter
71 | theme[cached_start]="#458588"
72 | theme[cached_mid]="#83A598"
73 | theme[cached_end]="#8EC07C"
74 |
75 | # Mem/Disk available meter
76 | theme[available_start]="#CC241D"
77 | theme[available_mid]="#D65D0E"
78 | theme[available_end]="#FABD2F"
79 |
80 | # Mem/Disk used meter
81 | theme[used_start]="#8EC07C"
82 | theme[used_mid]="#D65D0E"
83 | theme[used_end]="#CC241D"
84 |
85 | # Download graph colors
86 | theme[download_start]="#98971A"
87 | theme[download_mid]="#689d6A"
88 | theme[download_end]="#B8BB26"
89 |
90 | # Upload graph colors
91 | theme[upload_start]="#CC241D"
92 | theme[upload_mid]="#D65d0E"
93 | theme[upload_end]="#FABF2F"
94 |
95 | # Process box color gradient for threads, mem and cpu usage
96 | theme[process_start]="#8EC07C"
97 | theme[process_mid]="#FE8019"
98 | theme[process_end]="#CC241D"
99 |
--------------------------------------------------------------------------------
/themes/kyli0x.theme:
--------------------------------------------------------------------------------
1 | #Bashtop Kyli0x Theme
2 | #by Kyli0x
3 |
4 | # Main background, empty for terminal default, need to be empty if you want transparent background
5 | theme[main_bg]="#23252e"
6 |
7 | # Main text color
8 | theme[main_fg]="#f8f8f2"
9 |
10 | # Title color for boxes
11 | theme[title]="#f8f8f2"
12 |
13 | # Highlight color for keyboard shortcuts
14 | theme[hi_fg]="#21d6c9"
15 |
16 | # Background color of selected item in processes box
17 | theme[selected_bg]="#1aaba0"
18 |
19 | # Foreground color of selected item in processes box
20 | theme[selected_fg]="#f8f8f2"
21 |
22 | # Color of inactive/disabled text
23 | theme[inactive_fg]="#497e7a"
24 |
25 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
26 | theme[graph_text]="#21d6c9"
27 |
28 | # Background color of the percentage meters
29 | theme[meter_bg]="#80638e"
30 |
31 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
32 | theme[proc_misc]="#21d6c9"
33 |
34 | # Cpu box outline color
35 | theme[cpu_box]="#d486d4"
36 |
37 | # Memory/disks box outline color
38 | theme[mem_box]="#d486d4"
39 |
40 | # Net up/down box outline color
41 | theme[net_box]="#d486d4"
42 |
43 | # Processes box outline color
44 | theme[proc_box]="#d486d4"
45 |
46 | # Box divider line and small boxes line color
47 | theme[div_line]="#80638e"
48 |
49 | # Temperature graph colors
50 | theme[temp_start]="#21d6c9"
51 | theme[temp_mid]="#1aaba0"
52 | theme[temp_end]="#497e7a"
53 |
54 | # CPU graph colors
55 | theme[cpu_start]="#21d6c9"
56 | theme[cpu_mid]="#1aaba0"
57 | theme[cpu_end]="#497e7a"
58 |
59 | # Mem/Disk free meter
60 | theme[free_start]="#21d6c9"
61 | theme[free_mid]="#1aaba0"
62 | theme[free_end]="#497e7a"
63 |
64 | # Mem/Disk cached meter
65 | theme[cached_start]="#21d6c9"
66 | theme[cached_mid]="#1aaba0"
67 | theme[cached_end]="#497e7a"
68 |
69 | # Mem/Disk available meter
70 | theme[available_start]="#21d6c9"
71 | theme[available_mid]="#1aaba0"
72 | theme[available_end]="#497e7a"
73 |
74 | # Mem/Disk used meter
75 | theme[used_start]="#21d6c9"
76 | theme[used_mid]="#1aaba0"
77 | theme[used_end]="#497e7a"
78 |
79 | # Download graph colors
80 | theme[download_start]="#21d6c9"
81 | theme[download_mid]="#1aaba0"
82 | theme[download_end]="#497e7a"
83 |
84 | # Upload graph colors
85 | theme[upload_start]="#ec95ec"
86 | theme[upload_mid]="#1aaba0"
87 | theme[upload_end]="#497e7a"
88 |
89 | # Process box color gradient for threads, mem and cpu usage
90 | theme[process_start]="#21d6c9"
91 | theme[process_mid]="#1aaba0"
92 | theme[process_end]="#d486d4"
93 |
--------------------------------------------------------------------------------
/themes/matcha-dark-sea.theme:
--------------------------------------------------------------------------------
1 | #Bashtop matcha-dark-sea theme
2 | #by TheCynicalTeam
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]=""
14 |
15 | # Main text color
16 | theme[main_fg]="#F8F8F2"
17 |
18 | # Title color for boxes
19 | theme[title]="#F8F8F2"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#2eb398"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#0d493d"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#F8F8F2"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#595647"
32 |
33 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
34 | theme[graph_text]="#797667"
35 |
36 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
37 | theme[proc_misc]="#33b165"
38 |
39 | # Cpu box outline color
40 | theme[cpu_box]="#75715E"
41 |
42 | # Memory/disks box outline color
43 | theme[mem_box]="#75715E"
44 |
45 | # Net up/down box outline color
46 | theme[net_box]="#75715E"
47 |
48 | # Processes box outline color
49 | theme[proc_box]="#75715E"
50 |
51 | # Box divider line and small boxes line color
52 | theme[div_line]="#595647"
53 |
54 | # Temperature graph colors
55 | theme[temp_start]="#7976B7"
56 | theme[temp_mid]="#D8B8B2"
57 | theme[temp_end]="#33b165"
58 |
59 | # CPU graph colors
60 | theme[cpu_start]="#33b165"
61 | theme[cpu_mid]="#F8F8F2" #2eb398"
62 | theme[cpu_end]="#2eb398"
63 |
64 | # Mem/Disk free meter
65 | theme[free_start]="#75715E"
66 | theme[free_mid]="#a9c474"
67 | theme[free_end]="#e2f5bc"
68 |
69 | # Mem/Disk cached meter
70 | theme[cached_start]="#75715E"
71 | theme[cached_mid]="#66D9EF"
72 | theme[cached_end]="#aae7f2"
73 |
74 | # Mem/Disk available meter
75 | theme[available_start]="#75715E"
76 | theme[available_mid]="#E6DB74"
77 | theme[available_end]="#f2ecb6"
78 |
79 | # Mem/Disk used meter
80 | theme[used_start]="#75715E"
81 | theme[used_mid]="#2eb398"
82 | theme[used_end]="#33b165"
83 |
84 | # Download graph colors
85 | theme[download_start]="#2d2042"
86 | theme[download_mid]="#2eb398"
87 | theme[download_end]="#33b165"
88 |
89 | # Upload graph colors
90 | theme[upload_start]="#0d493d"
91 | theme[upload_mid]="#2eb398"
92 | theme[upload_end]="#33b165"
93 |
--------------------------------------------------------------------------------
/themes/monokai.theme:
--------------------------------------------------------------------------------
1 | #Bashtop monokai theme
2 | #by aristocratos
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#060604"
14 |
15 | # Main text color
16 | theme[main_fg]="#F8F8F2"
17 |
18 | # Title color for boxes
19 | theme[title]="#F8F8F2"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#F92672"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#7a1137"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#F8F8F2"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#595647"
32 |
33 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling
34 | theme[graph_text]="#797667"
35 |
36 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
37 | theme[proc_misc]="#A6E22E"
38 |
39 | # Cpu box outline color
40 | theme[cpu_box]="#75715E"
41 |
42 | # Memory/disks box outline color
43 | theme[mem_box]="#75715E"
44 |
45 | # Net up/down box outline color
46 | theme[net_box]="#75715E"
47 |
48 | # Processes box outline color
49 | theme[proc_box]="#75715E"
50 |
51 | # Box divider line and small boxes line color
52 | theme[div_line]="#595647"
53 |
54 | # Temperature graph colors
55 | theme[temp_start]="#7976B7"
56 | theme[temp_mid]="#D8B8B2"
57 | theme[temp_end]="#F92672"
58 |
59 | # CPU graph colors
60 | theme[cpu_start]="#A6E22E"
61 | theme[cpu_mid]="#F8F8F2" #b05475"
62 | theme[cpu_end]="#F92672"
63 |
64 | # Mem/Disk free meter
65 | theme[free_start]="#75715E"
66 | theme[free_mid]="#a9c474"
67 | theme[free_end]="#e2f5bc"
68 |
69 | # Mem/Disk cached meter
70 | theme[cached_start]="#75715E"
71 | theme[cached_mid]="#66D9EF"
72 | theme[cached_end]="#aae7f2"
73 |
74 | # Mem/Disk available meter
75 | theme[available_start]="#75715E"
76 | theme[available_mid]="#E6DB74"
77 | theme[available_end]="#f2ecb6"
78 |
79 | # Mem/Disk used meter
80 | theme[used_start]="#75715E"
81 | theme[used_mid]="#F92672"
82 | theme[used_end]="#ff87b2"
83 |
84 | # Download graph colors
85 | theme[download_start]="#2d2042"
86 | theme[download_mid]="#7352a8"
87 | theme[download_end]="#ccaefc"
88 |
89 | # Upload graph colors
90 | theme[upload_start]="#570d33"
91 | theme[upload_mid]="#cf277d"
92 | theme[upload_end]="#fa91c7"
93 |
--------------------------------------------------------------------------------
/themes/nord.theme:
--------------------------------------------------------------------------------
1 | #Bashtop theme with nord palette (https://www.nordtheme.com)
2 | #by Justin Zobel
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#ffffff", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#2E3440"
14 |
15 | # Main text color
16 | theme[main_fg]="#D8DEE9"
17 |
18 | # Title color for boxes
19 | theme[title]="#8FBCBB"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#5E81AC"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#4C566A"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ECEFF4"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#4C566A"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#5E81AC"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#4C566A"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#4C566A"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#4C566A"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#4C566A"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#4C566A"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#81A1C1"
53 | theme[temp_mid]="#88C0D0"
54 | theme[temp_end]="#ECEFF4"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#81A1C1"
58 | theme[cpu_mid]="#88C0D0"
59 | theme[cpu_end]="#ECEFF4"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#81A1C1"
63 | theme[free_mid]="#88C0D0"
64 | theme[free_end]="#ECEFF4"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#81A1C1"
68 | theme[cached_mid]="#88C0D0"
69 | theme[cached_end]="#ECEFF4"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#81A1C1"
73 | theme[available_mid]="#88C0D0"
74 | theme[available_end]="#ECEFF4"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#81A1C1"
78 | theme[used_mid]="#88C0D0"
79 | theme[used_end]="#ECEFF4"
80 |
81 | # Download graph colors
82 | theme[download_start]="#81A1C1"
83 | theme[download_mid]="#88C0D0"
84 | theme[download_end]="#ECEFF4"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#81A1C1"
88 | theme[upload_mid]="#88C0D0"
89 | theme[upload_end]="#ECEFF4"
90 |
--------------------------------------------------------------------------------
/themes/solarized_dark.theme:
--------------------------------------------------------------------------------
1 | #Bashtop solarized theme
2 | #by aristocratos
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#002b36"
14 |
15 | # Main text color
16 | theme[main_fg]="#eee8d5"
17 |
18 | # Title color for boxes
19 | theme[title]="#fdf6e3"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#b58900"
23 |
24 | # Background color of selected items
25 | theme[selected_bg]="#073642"
26 |
27 | # Foreground color of selected items
28 | theme[selected_fg]="#d6a200"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#073642"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#bad600"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#586e75"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#586e75"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#586e75"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#586e75"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#586e75"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#268bd2"
53 | theme[temp_mid]="#ccb5f7"
54 | theme[temp_end]="#fc5378"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#adc700"
58 | theme[cpu_mid]="#d6a200"
59 | theme[cpu_end]="#e65317"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#4e5900"
63 | theme[free_mid]=""
64 | theme[free_end]="#bad600"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#114061"
68 | theme[cached_mid]=""
69 | theme[cached_end]="#268bd2"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#705500"
73 | theme[available_mid]=""
74 | theme[available_end]="#edb400"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#6e1718"
78 | theme[used_mid]=""
79 | theme[used_end]="#e02f30"
80 |
81 | # Download graph colors
82 | theme[download_start]="#3d4070"
83 | theme[download_mid]="#6c71c4"
84 | theme[download_end]="#a3a8f7"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#701c45"
88 | theme[upload_mid]="#d33682"
89 | theme[upload_end]="#f56caf"
--------------------------------------------------------------------------------
/themes/whiteout.theme:
--------------------------------------------------------------------------------
1 | #Bashtop "whiteout" theme
2 | #by aristocratos
3 |
4 | # Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
5 | # example for white: "#FFFFFF", "#ff" or "255 255 255".
6 |
7 | # All graphs and meters can be gradients
8 | # For single color graphs leave "mid" and "end" variable empty.
9 | # Use "start" and "end" variables for two color gradient
10 | # Use "start", "mid" and "end" for three color gradient
11 |
12 | # Main background, empty for terminal default, need to be empty if you want transparent background
13 | theme[main_bg]="#ff"
14 |
15 | # Main text color
16 | theme[main_fg]="#30"
17 |
18 | # Title color for boxes
19 | theme[title]="#10"
20 |
21 | # Higlight color for keyboard shortcuts
22 | theme[hi_fg]="#284d75"
23 |
24 | # Background color of selected item in processes box
25 | theme[selected_bg]="#15283d"
26 |
27 | # Foreground color of selected item in processes box
28 | theme[selected_fg]="#ff"
29 |
30 | # Color of inactive/disabled text
31 | theme[inactive_fg]="#dd"
32 |
33 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
34 | theme[proc_misc]="#03521d"
35 |
36 | # Cpu box outline color
37 | theme[cpu_box]="#1a361e"
38 |
39 | # Memory/disks box outline color
40 | theme[mem_box]="#3d3c14"
41 |
42 | # Net up/down box outline color
43 | theme[net_box]="#1a1742"
44 |
45 | # Processes box outline color
46 | theme[proc_box]="#3b1515"
47 |
48 | # Box divider line and small boxes line color
49 | theme[div_line]="#80"
50 |
51 | # Temperature graph colors
52 | theme[temp_start]="#184567"
53 | theme[temp_mid]="#122c87"
54 | theme[temp_end]="#9e0061"
55 |
56 | # CPU graph colors
57 | theme[cpu_start]="#0b8e44"
58 | theme[cpu_mid]="#a49104"
59 | theme[cpu_end]="#8d0202"
60 |
61 | # Mem/Disk free meter
62 | theme[free_start]="#b0d090"
63 | theme[free_mid]="#70ba26"
64 | theme[free_end]="#496600"
65 |
66 | # Mem/Disk cached meter
67 | theme[cached_start]="#26c5ff"
68 | theme[cached_mid]="#74e6fc"
69 | theme[cached_end]="#0b1a29"
70 |
71 | # Mem/Disk available meter
72 | theme[available_start]="#ffb814"
73 | theme[available_mid]="#ffd77a"
74 | theme[available_end]="#292107"
75 |
76 | # Mem/Disk used meter
77 | theme[used_start]="#ff4769"
78 | theme[used_mid]="#d9626d"
79 | theme[used_end]="#3b1f1c"
80 |
81 | # Download graph colors
82 | theme[download_start]="#8d82de"
83 | theme[download_mid]="#413786"
84 | theme[download_end]="#130f29"
85 |
86 | # Upload graph colors
87 | theme[upload_start]="#f590f9"
88 | theme[upload_mid]="#722e76"
89 | theme[upload_end]="#2b062d"
--------------------------------------------------------------------------------
/tox.ini:
--------------------------------------------------------------------------------
1 | [tox]
2 | isolated_build = true
3 | envlist = py37,py38,py39,mypy,pylint
4 |
5 | [gh-actions]
6 | python =
7 | 3.7: py37
8 | 3.8: py38
9 | 3.9: py39, mypy, pylint
10 |
11 | [testenv]
12 | whitelist_externals = poetry
13 | commands =
14 | poetry install -v
15 | poetry run pytest
16 |
17 | [testenv:mypy]
18 | basepython = python3.9
19 | commands =
20 | poetry install -v
21 | poetry run mypy .
22 |
23 | [testenv:pylint]
24 | basepython = python3.9
25 | commands =
26 | poetry install -v
27 | poetry run pylint -E bpytop
28 |
--------------------------------------------------------------------------------