[package]
edition = "2024"
rust-version = "1.95.0"
name = "bottom"
version = "0.14.1"
authors = ["Clement Tsang <cjhtsang@uwaterloo.ca>"]
build = "build.rs"
exclude = [
".cargo-husky/",
".github/",
".idea/",
".vscode/",
"assets/",
"demos/",
"desktop/",
"docs/",
"flamegraphs/",
"sample_configs/",
"schema/",
"scripts/",
"wix/",
".all-contributorsrc",
".gitignore",
".markdownlint.json",
"CHANGELOG.md",
"clippy.toml",
"codecov.yml",
"CONTRIBUTING.md",
"Cross.toml",
"debug.log",
"flamegraph.svg",
"profile.json.gz",
"rustfmt.toml",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "btm"
description = "A customizable cross-platform graphical process/system monitor for the terminal. Supports Linux, macOS, and Windows."
documentation = "https://bottom.pages.dev/stable"
readme = "README.md"
keywords = [
"cross-platform",
"monitoring",
"cli",
"top",
"tui",
]
categories = [
"command-line-utilities",
"visualization",
]
license = "MIT"
repository = "https://github.com/ClementTsang/bottom"
[package.metadata.deb]
section = "utility"
assets = [
[
"target/release/btm",
"usr/bin/",
"755",
],
[
"LICENSE",
"usr/share/doc/btm/",
"644",
],
[
"manpage/btm.1.gz",
"usr/share/man/man1/btm.1.gz",
"644",
],
[
"completion/btm.bash",
"usr/share/bash-completion/completions/btm",
"644",
],
[
"completion/btm.fish",
"usr/share/fish/vendor_completions.d/btm.fish",
"644",
],
[
"completion/_btm",
"usr/share/zsh/vendor-completions/",
"644",
],
[
"desktop/bottom.desktop",
"usr/share/applications/bottom.desktop",
"644",
],
[
"assets/icons/bottom-system-monitor.svg",
"/usr/share/icons/hicolor/scalable/apps/bottom-system-monitor.svg",
"644",
],
]
conflicts = "btm"
extended-description = """
By default, bottom will look for a config file in ~/.config/bottom/bottom.toml. A config file can be specified using `-C`. If a config file does not exist at the specified or default location, a default one will be created for the user there.
"""
[package.metadata.deb.variants.arm64]
depends = "libc6:arm64 (>= 2.28)"
[package.metadata.deb.variants.armhf]
depends = "libc6:armhf (>= 2.28)"
[package.metadata.wix]
output = "bottom_installer.msi"
product-icon = "assets/icons/bottom.ico"
[[package.metadata.generate-rpm.assets]]
source = "target/release/btm"
dest = "/usr/bin/"
mode = "755"
[[package.metadata.generate-rpm.assets]]
source = "LICENSE"
dest = "/usr/share/doc/btm/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "manpage/btm.1.gz"
dest = "/usr/share/man/man1/btm.1.gz"
mode = "644"
doc = true
[[package.metadata.generate-rpm.assets]]
source = "completion/btm.bash"
dest = "/usr/share/bash-completion/completions/btm"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "completion/btm.fish"
dest = "/usr/share/fish/vendor_completions.d/btm.fish"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "completion/_btm"
dest = "/usr/share/zsh/vendor-completions/"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "desktop/bottom.desktop"
dest = "/usr/share/applications/bottom.desktop"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "assets/icons/bottom-system-monitor.svg"
dest = "/usr/share/icons/hicolor/scalable/apps/bottom-system-monitor.svg"
mode = "644"
[features]
battery = ["dep:starship-battery"]
default = ["deploy"]
deploy = [
"battery",
"nvidia",
"zfs",
]
generate_schema = [
"schemars",
"serde_json",
"strum",
]
gpu = []
logging = [
"fern",
"log",
"time",
]
nvidia = [
"gpu",
"dep:nvml-wrapper",
]
zfs = []
[lib]
name = "bottom"
path = "src/lib.rs"
test = true
doctest = true
doc = true
[[bin]]
name = "btm"
path = "src/bin/main.rs"
doc = false
[[bin]]
name = "schema"
path = "src/bin/schema.rs"
test = false
doctest = false
doc = false
required-features = ["generate_schema"]
[[test]]
name = "integration"
path = "tests/integration/main.rs"
[dependencies.anyhow]
version = "1.0.101"
[dependencies.clap]
version = "4.5.57"
features = [
"default",
"cargo",
"wrap_help",
"derive",
]
[dependencies.concat-string]
version = "1.0.1"
[dependencies.crossterm]
version = "0.29.0"
[dependencies.ctrlc]
version = "3.5.0"
features = ["termination"]
[dependencies.dirs]
version = "6.0.0"
[dependencies.fern]
version = "0.7.1"
optional = true
[dependencies.humantime]
version = "2.3.0"
[dependencies.indexmap]
version = "2.13.0"
[dependencies.indoc]
version = "2.0.7"
[dependencies.itertools]
version = "0.14.0"
[dependencies.log]
version = "0.4.29"
optional = true
[dependencies.nvml-wrapper]
version = "0.11.0"
features = ["legacy-functions"]
optional = true
[dependencies.ratatui]
version = "0.30.2"
features = [
"unstable-rendered-line-info",
"layout-cache",
"crossterm",
]
default-features = false
[dependencies.ratatui-core]
version = "0.1.2"
[dependencies.regex]
version = "1.12.3"
[dependencies.rustc-hash]
version = "2.1.1"
[dependencies.schemars]
version = "1.2.1"
optional = true
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.149"
optional = true
[dependencies.starship-battery]
version = "0.10.3"
optional = true
[dependencies.strum]
version = "0.27.2"
features = ["derive"]
optional = true
[dependencies.sysinfo]
version = "=0.39.3"
[dependencies.time]
version = "0.3.47"
features = [
"local-offset",
"formatting",
"macros",
]
optional = true
[dependencies.timeless]
version = "0.0.14-alpha"
[dependencies.toml_edit]
version = "0.24.0"
features = ["serde"]
[dependencies.unicode-ellipsis]
version = "0.4.0"
[dependencies.unicode-segmentation]
version = "1.13.2"
[dependencies.unicode-width]
version = "0.2.2"
[dev-dependencies.assert_cmd]
version = "2.1.2"
[dev-dependencies.predicates]
version = "3.1.3"
[dev-dependencies.tempfile]
version = "3.23.0"
default-features = false
[build-dependencies.clap]
version = "4.5.57"
features = [
"default",
"cargo",
"wrap_help",
"derive",
]
[build-dependencies.clap_complete]
version = "4.5.62"
[build-dependencies.clap_complete_fig]
version = "4.5.2"
[build-dependencies.clap_complete_nushell]
version = "4.5.10"
[build-dependencies.clap_mangen]
version = "0.2.31"
[build-dependencies.indoc]
version = "2.0.7"
[target.'cfg(all(target_arch = "x86_64", target_os = "linux"))'.dev-dependencies.portable-pty]
version = "0.9.0"
[target.'cfg(target_os = "freebsd")'.dependencies.filedescriptor]
version = "0.8.3"
[target.'cfg(target_os = "freebsd")'.dependencies.serde_json]
version = "1.0.145"
[target.'cfg(target_os = "freebsd")'.dependencies.sysctl]
version = "0.7.1"
[target.'cfg(target_os = "linux")'.dependencies.rustix]
version = "1.1.2"
features = [
"fs",
"param",
]
[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.10.1"
[target.'cfg(target_os = "macos")'.dependencies.mach2]
version = "0.6.0"
[target.'cfg(target_os = "windows")'.dependencies.windows]
version = "0.62.2"
features = [
"Win32_Foundation",
"Win32_Security",
"Win32_Storage_FileSystem",
"Win32_System_IO",
"Win32_System_Ioctl",
"Win32_System_Performance",
"Win32_System_ProcessStatus",
"Win32_System_Threading",
]
[target."cfg(unix)".dependencies.libc]
version = "0.2.180"
[lints.clippy]
missing_safety_doc = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
[lints.rust]
rust_2018_idioms = "deny"
[lints.rustdoc]
broken_intra_doc_links = "deny"
missing_crate_level_docs = "deny"
private_intra_doc_links = "deny"
[profile.dev.package."*"]
opt-level = 3
[profile.profiling]
debug = 2
inherits = "release"
strip = false
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
debug = 0
strip = "symbols"