[package] authors = ["The winit contributors", "Pierre Krieger "] categories = ["gui"] description = "Cross-platform window creation library." documentation = "https://docs.rs/winit" edition.workspace = true include = [ "/build.rs", "/docs", "/examples", "/FEATURES.md", "/LICENSE", "/src", "!/src/platform_impl/web/script", "/src/platform_impl/web/script/**/*.min.js", "/tests", ] keywords = ["windowing"] license.workspace = true name = "winit" readme = "README.md" repository.workspace = true rust-version.workspace = true version = "0.30.9" [package.metadata.docs.rs] features = [ "serde", "mint", # Enabled to get docs to compile "android-native-activity", ] # These are all tested in CI rustdoc-args = ["--cfg", "docsrs"] targets = [ # Windows "i686-pc-windows-msvc", "x86_64-pc-windows-msvc", # macOS "aarch64-apple-darwin", "x86_64-apple-darwin", # Unix (X11 & Wayland) "i686-unknown-linux-gnu", "x86_64-unknown-linux-gnu", # iOS "aarch64-apple-ios", # Android "aarch64-linux-android", # Web "wasm32-unknown-unknown", ] # Features are documented in either `lib.rs` or under `winit::platform`. [features] android-game-activity = ["android-activity/game-activity"] android-native-activity = ["android-activity/native-activity"] default = ["x11", "wayland", "wayland-dlopen", "wayland-csd-adwaita"] mint = ["dpi/mint"] serde = ["dep:serde", "cursor-icon/serde", "smol_str/serde", "dpi/serde", "bitflags/serde"] wayland = [ "wayland-client", "wayland-backend", "wayland-protocols", "wayland-protocols-plasma", "sctk", "ahash", "memmap2", ] wayland-csd-adwaita = ["sctk-adwaita", "sctk-adwaita/ab_glyph"] wayland-csd-adwaita-crossfont = ["sctk-adwaita", "sctk-adwaita/crossfont"] wayland-csd-adwaita-notitle = ["sctk-adwaita"] wayland-dlopen = ["wayland-backend/dlopen"] x11 = ["x11-dl", "bytemuck", "percent-encoding", "xkbcommon-dl/x11", "x11rb"] [build-dependencies] cfg_aliases = "0.2.1" [dependencies] bitflags = "2" cursor-icon = "1.1.0" dpi = { version = "0.1.1", path = "dpi" } rwh_06 = { package = "raw-window-handle", version = "0.6", features = ["std"] } serde = { workspace = true, optional = true } smol_str = "0.3" tracing = { version = "0.1.40", default-features = false } [dev-dependencies] image = { version = "0.25.0", default-features = false, features = ["png"] } tracing = { version = "0.1.40", default-features = false, features = ["log"] } tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } [target.'cfg(not(target_os = "android"))'.dev-dependencies] softbuffer = { version = "0.4.6", default-features = false, features = [ "x11", "x11-dlopen", "wayland", "wayland-dlopen", ] } # Android [target.'cfg(target_os = "android")'.dependencies] android-activity = "0.6.0" ndk = { version = "0.9.0", features = ["rwh_06"], default-features = false } # AppKit or UIKit [target.'cfg(target_vendor = "apple")'.dependencies] block2 = "0.6.1" dispatch2 = { version = "0.3.0", default-features = false, features = ["std", "objc2"] } objc2 = "0.6.1" # AppKit [target.'cfg(target_os = "macos")'.dependencies] objc2-app-kit = { version = "0.3.1", default-features = false, features = [ "std", "objc2-core-foundation", "NSAppearance", "NSApplication", "NSBitmapImageRep", "NSButton", "NSColor", "NSControl", "NSCursor", "NSDragging", "NSEvent", "NSGraphics", "NSGraphicsContext", "NSImage", "NSImageRep", "NSMenu", "NSMenuItem", "NSOpenGLView", "NSPanel", "NSPasteboard", "NSResponder", "NSRunningApplication", "NSScreen", "NSTextInputClient", "NSTextInputContext", "NSToolbar", "NSView", "NSWindow", "NSWindowScripting", "NSWindowTabGroup", ] } objc2-core-foundation = { version = "0.3.1", default-features = false, features = [ "std", "block2", "CFBase", "CFCGTypes", "CFData", "CFRunLoop", "CFString", "CFUUID", ] } objc2-core-graphics = { version = "0.3.1", default-features = false, features = [ "std", "libc", "CGDirectDisplay", "CGDisplayConfiguration", "CGDisplayFade", "CGError", "CGRemoteOperation", "CGWindowLevel", ] } objc2-core-video = { version = "0.3.1", default-features = false, features = [ "std", "objc2-core-graphics", "CVBase", "CVReturn", "CVDisplayLink", ] } objc2-foundation = { version = "0.3.1", default-features = false, features = [ "std", "block2", "objc2-core-foundation", "NSArray", "NSAttributedString", "NSData", "NSDictionary", "NSDistributedNotificationCenter", "NSEnumerator", "NSGeometry", "NSKeyValueObserving", "NSNotification", "NSObjCRuntime", "NSOperation", "NSPathUtilities", "NSProcessInfo", "NSRunLoop", "NSString", "NSThread", "NSValue", ] } # UIKit [target.'cfg(all(target_vendor = "apple", not(target_os = "macos")))'.dependencies] objc2-core-foundation = { version = "0.3.1", default-features = false, features = [ "std", "CFCGTypes", "CFBase", "CFRunLoop", "CFString", ] } objc2-foundation = { version = "0.3.1", default-features = false, features = [ "std", "block2", "objc2-core-foundation", "NSArray", "NSEnumerator", "NSGeometry", "NSObjCRuntime", "NSOperation", "NSString", "NSThread", "NSSet", ] } objc2-ui-kit = { version = "0.3.1", default-features = false, features = [ "std", "objc2-core-foundation", "UIApplication", "UIDevice", "UIEvent", "UIGeometry", "UIGestureRecognizer", "UITextInput", "UITextInputTraits", "UIOrientation", "UIPanGestureRecognizer", "UIPinchGestureRecognizer", "UIResponder", "UIRotationGestureRecognizer", "UIScreen", "UIScreenMode", "UITapGestureRecognizer", "UITouch", "UITraitCollection", "UIView", "UIViewController", "UIWindow", ] } # Windows [target.'cfg(target_os = "windows")'.dependencies] unicode-segmentation = "1.7.1" windows-sys = { version = "0.59.0", features = [ "Win32_Devices_HumanInterfaceDevice", "Win32_Foundation", "Win32_Globalization", "Win32_Graphics_Dwm", "Win32_Graphics_Gdi", "Win32_Media", "Win32_System_Com_StructuredStorage", "Win32_System_Com", "Win32_System_LibraryLoader", "Win32_System_Ole", "Win32_Security", "Win32_System_SystemInformation", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_WindowsProgramming", "Win32_UI_Accessibility", "Win32_UI_Controls", "Win32_UI_HiDpi", "Win32_UI_Input_Ime", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_Input_Pointer", "Win32_UI_Input_Touch", "Win32_UI_Shell", "Win32_UI_TextServices", "Win32_UI_WindowsAndMessaging", ] } # Linux [target.'cfg(all(unix, not(any(target_os = "redox", target_family = "wasm", target_os = "android", target_vendor = "apple"))))'.dependencies] ahash = { version = "0.8.7", features = ["no-rng"], optional = true } bytemuck = { version = "1.13.1", default-features = false, optional = true } calloop = "0.13.0" libc = "0.2.64" memmap2 = { version = "0.9.0", optional = true } percent-encoding = { version = "2.0", optional = true } rustix = { version = "0.38.4", default-features = false, features = [ "std", "system", "thread", "process", ] } sctk = { package = "smithay-client-toolkit", version = "0.19.2", default-features = false, features = [ "calloop", ], optional = true } sctk-adwaita = { version = "0.10.1", default-features = false, optional = true } wayland-backend = { version = "0.3.9", default-features = false, features = [ "client_system", ], optional = true } wayland-client = { version = "0.31.8", optional = true } wayland-protocols = { version = "0.32.6", features = ["staging"], optional = true } wayland-protocols-plasma = { version = "0.3.4", features = ["client"], optional = true } x11-dl = { version = "2.19.1", optional = true } x11rb = { version = "0.13.0", default-features = false, features = [ "allow-unsafe-code", "cursor", "dl-libxcb", "randr", "resource_manager", "sync", "xinput", "xkb", ], optional = true } xkbcommon-dl = "0.4.2" # Orbital [target.'cfg(target_os = "redox")'.dependencies] orbclient = { version = "0.3.47", default-features = false } redox_syscall = "0.5.7" # Web [target.'cfg(target_family = "wasm")'.dependencies] js-sys = "0.3.70" pin-project = "1" wasm-bindgen = "0.2.93" wasm-bindgen-futures = "0.4.43" web-time = "1" web_sys = { package = "web-sys", version = "0.3.70", features = [ "AbortController", "AbortSignal", "Blob", "BlobPropertyBag", "console", "CssStyleDeclaration", "Document", "DomException", "DomRect", "DomRectReadOnly", "Element", "Event", "EventTarget", "FocusEvent", "HtmlCanvasElement", "HtmlElement", "HtmlHtmlElement", "HtmlImageElement", "ImageBitmap", "ImageBitmapOptions", "ImageBitmapRenderingContext", "ImageData", "IntersectionObserver", "IntersectionObserverEntry", "KeyboardEvent", "MediaQueryList", "MessageChannel", "MessagePort", "Navigator", "Node", "OrientationLockType", "OrientationType", "PageTransitionEvent", "Permissions", "PermissionState", "PermissionStatus", "PointerEvent", "PremultiplyAlpha", "ResizeObserver", "ResizeObserverBoxOptions", "ResizeObserverEntry", "ResizeObserverOptions", "ResizeObserverSize", "Screen", "ScreenOrientation", "Url", "VisibilityState", "WheelEvent", "Window", "Worker", ] } [target.'cfg(all(target_family = "wasm", target_feature = "atomics"))'.dependencies] atomic-waker = "1" concurrent-queue = { version = "2", default-features = false } [target.'cfg(target_family = "wasm")'.dev-dependencies] console_error_panic_hook = "0.1" tracing-web = "0.1" wasm-bindgen-test = "0.3" [[example]] doc-scrape-examples = true name = "window" [[example]] name = "child_window" [workspace] members = ["dpi"] resolver = "2" [workspace.package] edition = "2021" license = "Apache-2.0" repository = "https://github.com/rust-windowing/winit" rust-version = "1.73" [workspace.dependencies] mint = "0.5.6" serde = { version = "1", features = ["serde_derive"] }