├── .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 | # ![bpytop](https://github.com/aristocratos/bpytop/raw/master/Imgs/logo.png) 2 | 3 | 4 | Packaging status 5 | 6 | 7 | ![Linux](https://img.shields.io/badge/-Linux-grey?logo=linux) 8 | ![OSX](https://img.shields.io/badge/-OSX-black?logo=apple) 9 | ![FreeBSD](https://img.shields.io/badge/-FreeBSD-red?logo=freebsd) 10 | ![Usage](https://img.shields.io/badge/Usage-System%20resource%20monitor-yellow) 11 | ![Python](https://img.shields.io/badge/Python-v3.7%5E-green?logo=python) 12 | ![bpytop_version](https://img.shields.io/github/v/tag/aristocratos/bpytop?label=version) 13 | [![pypi_version](https://img.shields.io/pypi/v/bpytop?label=pypi)](https://pypi.org/project/bpytop) 14 | [![Test Status](https://img.shields.io/github/workflow/status/aristocratos/bpytop/Testing?label=tests)](https://github.com/aristocratos/bpytop/actions?query=workflow%3Atesting) 15 | [![Donate](https://img.shields.io/badge/-Donate-yellow?logo=paypal)](https://paypal.me/aristocratos) 16 | [![Sponsor](https://img.shields.io/badge/-Sponsor-red?logo=github)](https://github.com/sponsors/aristocratos) 17 | [![Coffee](https://img.shields.io/badge/-Buy%20me%20a%20Coffee-grey?logo=Ko-fi)](https://ko-fi.com/aristocratos) 18 | 19 | [![bpytop](https://img.shields.io/badge/-snapcraft.io-black)](https://snapcraft.io/bpytop)[![bpytop](https://snapcraft.io//bpytop/badge.svg)](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 | ![btop++](https://raw.githubusercontent.com/aristocratos/btop/main/Img/logo.png) 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 | ![Screenshot 1](https://github.com/aristocratos/bpytop/raw/master/Imgs/main.png) 175 | 176 | Main UI in mini mode. 177 | ![Screenshot 2](https://github.com/aristocratos/bpytop/raw/master/Imgs/mini.png) 178 | 179 | Main menu. 180 | ![Screenshot 3](https://github.com/aristocratos/bpytop/raw/master/Imgs/menu.png) 181 | 182 | Options menu. 183 | ![Screenshot 4](https://github.com/aristocratos/bpytop/raw/master/Imgs/options.png) 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 | --------------------------------------------------------------------------------