hyprshell 4.9.4

A modern GTK4-based window switcher and application launcher for Hyprland
[workspace]
members = ["crates/exec-lib", "crates/core-lib", "crates/windows-lib", "crates/launcher-lib", "crates/config-lib", "crates/hyprland-plugin", "crates/clipboard-lib", "dep-crates/hyprland-rs", "dep-crates/hyprland-rs/hyprland-macros", "dep-crates/wl-clipboard-rs", "crates/config-edit-lib"]

[workspace.package]
version = "4.9.4"
description = "A modern GTK4-based window switcher and application launcher for Hyprland"
license = "MIT"
authors = ["h3rmt"]
keywords = ["hyprland"]
repository = "https://github.com/h3rmt/hyprshell/"
# update when nixpkgs has a newer rustc
rust-version = "1.91.0"
edition = "2024"

[workspace.dependencies]
anyhow = { version = "1.0.100" }
tracing = { version = "0.1.44" }
serde_json = { version = "1.0.148" }
serde = { version = "1.0.228", features = ["derive"] }
async-channel = { version = "2.5.0", default-features = true }
semver = { version = "1.0.27" }
test-log = { version = "0.2.19", default-features = false, features = ["trace", "unstable"] }

relm4 = { version = "0.10.0", default-features = false, features = ["libadwaita", "macros", "gnome_48"] }
relm4-components = "0.10.0"
gtk4-layer-shell = { version = "0.7.1" }

config-lib = { path = "crates/config-lib", package = "hyprshell-config-lib", version = "=4.9.4" }
core-lib = { path = "crates/core-lib", package = "hyprshell-core-lib", version = "=4.9.4" }
exec-lib = { path = "crates/exec-lib", package = "hyprshell-exec-lib", version = "=4.9.4" }
hyprland-plugin = { path = "crates/hyprland-plugin", package = "hyprshell-hyprland-plugin", version = "=4.9.4" }

[package]
name = "hyprshell"
readme = "README.md"
categories = []
documentation = "https://docs.rs/hyprshell"
version = "4.9.4"
edition.workspace = true
description.workspace = true
license.workspace = true
authors.workspace = true
keywords.workspace = true
repository.workspace = true
rust-version.workspace = true
exclude = [".idea/*", ".github/*"]

[dependencies]
anyhow.workspace = true
tracing.workspace = true
relm4.workspace = true
async-channel.workspace = true
semver.workspace = true
clap = { version = "4.5.47", features = ["derive"] }
clap_complete = "4.5.57"
tracing-subscriber = { version = "0.3.20", features = ["fmt", "env-filter", "ansi"], default-features = false }
signal-hook = { version = "0.4.1" }

config-lib.workspace = true
core-lib.workspace = true
exec-lib.workspace = true
clipboard-lib = { path = "crates/clipboard-lib", package = "hyprshell-clipboard-lib", version = "=4.9.4" }
windows-lib = { path = "crates/windows-lib", package = "hyprshell-windows-lib", version = "=4.9.4" }
launcher-lib = { path = "crates/launcher-lib", package = "hyprshell-launcher-lib", version = "=4.9.4" }
config-edit-lib = { path = "crates/config-edit-lib", package = "hyprshell-config-edit-lib", version = "=4.9.4", optional = true }

[dev-dependencies]
test-log.workspace = true

[features]
default = ["json5_config", "gui_settings_editor", "launcher_calc", "debug_command", "clipboard_compress_lz4", "clipboard_compress_zstd", "clipboard_compress_brotli", "clipboard_encrypt_chacha20poly1305", "clipboard_encrypt_aes_gcm"]
slim = ["gui_settings_editor", "debug_command", "clipboard_compress_lz4"]
json5_config = ["config-lib/json5_config"]
gui_settings_editor = ["dep:config-edit-lib"]
launcher_calc = ["launcher-lib/calc", "config-lib/launcher_calc_plugin", "config-edit-lib?/launcher_calc_plugin"]
debug_command = []
ci_config_check = ["config-lib/ci_no_default_config_values"]
clipboard_compress_lz4 = ["clipboard-lib/compress_lz4"]
clipboard_compress_zstd = ["clipboard-lib/compress_zstd"]
clipboard_compress_brotli = ["clipboard-lib/compress_brotli"]
clipboard_encrypt_chacha20poly1305 = ["clipboard-lib/encrypt_chacha20poly1305"]
clipboard_encrypt_aes_gcm = ["clipboard-lib/encrypt_aes_gcm"]


[profile.release]
strip = "debuginfo"
lto = true
opt-level = 3

[lints]
workspace = true

[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
unwrap_used = "deny"
single_match = "allow"
match_wildcard_for_single_variants = "allow"
struct_excessive_bools = "allow"
missing_errors_doc = "allow"
cast_possible_truncation = "allow"
# This is broken
uninlined_format_args = "warn"
unnecessary_debug_formatting = "warn"
unnecessary_wraps = "warn"
pathbuf_init_then_push = "warn"
print_stdout = "warn"
print_stderr = "warn"