quick_search/crates/quicksearch-gui/Cargo.toml

105 lines
4.2 KiB
TOML

[package]
name = "quicksearch-gui"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
description = "Fast full-text search across your files: desktop app and terminal search tool."
[[bin]]
name = "quicksearch"
path = "src/main.rs"
# Terminal search is its own binary because Windows needs opposite subsystems
# for the two: a console-subsystem GUI flashes a console on launch, and a
# window-subsystem tool cannot write to the invoking shell. On Unix
# `quicksearch` does both.
[[bin]]
name = "quicksearch-cli"
path = "src/cli_main.rs"
[features]
# Scripted self-capture driver that packaging/capture.sh uses to regenerate
# the website screenshots and screencasts. Adds no dependencies and is inert
# unless QS_CAPTURE_SCRIPT is set.
capture = []
[dependencies]
quicksearch-core = { path = "../quicksearch-core" }
# Index-password support: the OS keychain for "remember on this device"
# (Secret Service on Linux, Credential Manager on Windows), a hidden terminal
# prompt, and best-effort scrubbing of password buffers. `vendored` links
# libdbus statically, so neither the build machine nor the .deb needs a dbus
# package.
keyring = { version = "3", features = ["sync-secret-service", "vendored", "windows-native"] }
rpassword = "7"
zeroize = "1"
eframe = { version = "0.32", default-features = false, features = [
"glow",
"persistence",
] }
# Drops `default_fonts` (~1.4 MB of embedded TTFs; `src/fonts.rs` installs
# the faces we paint). eframe's `default-features = false` does not cover it:
# feature resolution unions the declarations, so naming egui plainly would
# switch it back on.
egui = { version = "0.32", default-features = false }
# Only `Column`/`TableBuilder` are used; the one default feature is an image
# loader we never register.
egui_extras = { version = "0.32", default-features = false }
rfd = "0.15"
open = "5"
chrono = { version = "0.4", default-features = false, features = ["clock"] }
# The shortcut QuickSearch claims while running: `RegisterHotKey` on Windows,
# `XGrabKey` on X11. Wayland lets no application claim keys; there, and
# whenever the app is not running, the desktop's binding of `--toggle` does it.
global-hotkey = "0.8"
# The window handle both native raise paths in `activate::raise` need (X11
# `_NET_ACTIVE_WINDOW`, Win32 `SetForegroundWindow`). eframe depends on it on
# every target, so it adds no crate.
raw-window-handle = "0.6"
# Display backends, which only exist on Linux/BSD. `default-features = false`
# has to be repeated: feature resolution unions the two stanzas, so a single
# permissive one would switch defaults back on for every target.
[target.'cfg(all(unix, not(target_os = "macos")))'.dependencies]
eframe = { version = "0.32", default-features = false, features = [
"wayland",
"x11",
] }
# Raises the window on X11, which winit cannot do (see `activate::raise`).
# Already in the tree as winit's X11 backend.
x11rb = "0.13"
# The Wayland half of `activate::raise`: a guest connection over winit's
# wl_display that hands the compositor an xdg-activation token for our
# surface. winit and sctk already enable all three with these features, so
# nothing new compiles.
wayland-client = "0.31"
wayland-backend = { version = "0.3", features = ["client_system"] }
wayland-protocols = { version = "0.32", features = ["client", "staging"] }
# Console attachment for the GUI binary (which has no stdio when launched from
# Explorer) and VT mode for the CLI binary. 0.59 matches what eframe and rfd
# resolve, so no extra crate compiles.
[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.59", features = [
"Win32_Foundation",
"Win32_System_Console",
# The `--toggle` named pipe in `activate`. `Win32_System_IO` and
# `Win32_Security` only carry the `OVERLAPPED` and `SECURITY_ATTRIBUTES`
# types of pointers we pass as null.
"Win32_System_Pipes",
"Win32_Storage_FileSystem",
"Win32_System_IO",
"Win32_Security",
# The foreground handshake (`activate`) and native raise (`activate::raise`):
# GetCurrentProcessId, AllowSetForegroundWindow / SetForegroundWindow.
"Win32_System_Threading",
"Win32_UI_WindowsAndMessaging",
] }