[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 the two need opposite Windows # subsystems: a GUI console app flashes a console on launch; a console tool # built as a GUI app cannot write to the invoking shell. On Unix the # distinction does not exist and `quicksearch` still does both. [[bin]] name = "quicksearch-cli" path = "src/cli_main.rs" [features] # Scripted self-capture driver used by packaging/capture.sh to regenerate the # website screenshots and screencasts. Adds no dependencies and is inert # unless QS_CAPTURE_SCRIPT is set at runtime. capture = [] [dependencies] quicksearch-core = { path = "../quicksearch-core" } # Index-password support: OS keychain for "remember on this device" # (Secret Service on Linux, Credential Manager on Windows), hidden terminal # prompt, and best-effort scrubbing of password buffers. # `vendored` compiles libdbus statically, so neither the build machine nor # the .deb needs a dbus development/runtime 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", ] } # `default-features = false` for one feature, `default_fonts` (~1.4 MB of # embedded TTFs; `src/fonts.rs` installs the faces actually painted). eframe's # `default-features = false` above does NOT cover this: feature resolution # unions the declarations, so naming egui plainly switches it back on. egui = { version = "0.32", default-features = false } # Only `Column`/`TableBuilder` are used; the lone default feature is an image # loader that is never registered, so this compiles one crate less. egui_extras = { version = "0.32", default-features = false } rfd = "0.15" open = "5" chrono = { version = "0.4", default-features = false, features = ["clock"] } # The system-wide search shortcut, where the display server lets an # application claim keys for itself: `RegisterHotKey` on Windows, `XGrabKey` # on X11. Wayland does not, and is handled by the portal below. global-hotkey = "0.8" # 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", ] } # The Wayland half of the search shortcut: `org.freedesktop.portal.GlobalShortcuts`, # the only way a Wayland application can be told about a key it does not own. # `rfd` already pulls all four in (it uses the file-chooser portal), so the # versions here are the ones already resolved and nothing extra is compiled. # `default-features = false` matters: ashpd defaults to Tokio, which would add # a second async runtime and switch `zbus` over to it underneath `rfd`. ashpd = { version = "0.11", default-features = false, features = ["async-std"] } futures-channel = "0.3" futures-util = "0.3" pollster = "0.4" # Raising the window from the shortcut on X11, which winit cannot do: it asks # with a source indication of "application", and every mainstream window # manager refuses that from a window that is not already focused. See # `hotkey::raise`. Both are already in the tree (winit's own X11 backend, and # eframe's window handle), so neither adds a crate. x11rb = "0.13" raw-window-handle = "0.6" # Console attachment for the GUI binary (which has no stdio when launched from # Explorer) and VT-mode enabling for the CLI binary. 0.59 matches what eframe # and rfd already resolve, so no extra crate is compiled. [target.'cfg(windows)'.dependencies] windows-sys = { version = "0.59", features = [ "Win32_Foundation", "Win32_System_Console", ] }