wails/v3/examples/spotlight
Lea Anthony 0de429b8fc
feat(macos): add CollectionBehavior option to MacWindow (#4799)
* feat(macos): add CollectionBehavior option to MacWindow (#4756)

Add configurable NSWindowCollectionBehavior support for macOS windows,
allowing control over window behavior across Spaces and fullscreen.

New options include:
- MacWindowCollectionBehaviorCanJoinAllSpaces
- MacWindowCollectionBehaviorFullScreenAuxiliary
- MacWindowCollectionBehaviorMoveToActiveSpace
- And more...

This enables building Spotlight-like apps that appear on all Spaces
or overlay fullscreen applications.

Closes #4756

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Potential fix for code scanning alert no. 140: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Potential fix for code scanning alert no. 139: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* feat(examples): add spotlight example for CollectionBehavior

Demonstrates creating a Spotlight-like launcher window that:
- Appears on all macOS Spaces
- Floats above other windows
- Uses accessory activation policy (no Dock icon)
- Has frameless translucent design

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(macos): support bitwise OR for CollectionBehavior options

Update CollectionBehavior to use actual NSWindowCollectionBehavior
bitmask values, allowing multiple behaviors to be combined:

```go
CollectionBehavior: application.MacWindowCollectionBehaviorCanJoinAllSpaces |
                    application.MacWindowCollectionBehaviorFullScreenAuxiliary,
```

Changes:
- Update Go constants to use actual bitmask values (1<<0, 1<<1, etc.)
- Simplify C function to pass through combined bitmask directly
- Add ParticipatesInCycle, IgnoresCycle, FullScreenDisallowsTiling options
- Update documentation with combined behavior examples
- Update spotlight example to demonstrate combining behaviors

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-12-29 11:07:37 +11:00
..
main.go feat(macos): add CollectionBehavior option to MacWindow (#4799) 2025-12-29 11:07:37 +11:00
README.md feat(macos): add CollectionBehavior option to MacWindow (#4799) 2025-12-29 11:07:37 +11:00

Spotlight Example

This example demonstrates how to create a Spotlight-like launcher window using the CollectionBehavior option on macOS.

Features

  • Appears on all Spaces: Using MacWindowCollectionBehaviorCanJoinAllSpaces, the window is visible across all virtual desktops
  • Overlays fullscreen apps: Using MacWindowCollectionBehaviorFullScreenAuxiliary, the window can appear over fullscreen applications
  • Combined behaviors: Demonstrates combining multiple behaviors with bitwise OR
  • Floating window: MacWindowLevelFloating keeps the window above other windows
  • Accessory app: Doesn't appear in the Dock (uses ActivationPolicyAccessory)
  • Frameless design: Clean, borderless appearance with translucent backdrop

Running the example

go run .

Note: This example is macOS-specific due to the use of CollectionBehavior.

Combining CollectionBehaviors

Behaviors can be combined using bitwise OR (|):

CollectionBehavior: application.MacWindowCollectionBehaviorCanJoinAllSpaces |
                    application.MacWindowCollectionBehaviorFullScreenAuxiliary,

CollectionBehavior Options

These are bitmask values that can be combined:

Space behavior:

Option Description
MacWindowCollectionBehaviorDefault Uses FullScreenPrimary (default)
MacWindowCollectionBehaviorCanJoinAllSpaces Window appears on all Spaces
MacWindowCollectionBehaviorMoveToActiveSpace Moves to active Space when shown
MacWindowCollectionBehaviorManaged Default managed window behavior
MacWindowCollectionBehaviorTransient Temporary/transient window
MacWindowCollectionBehaviorStationary Stays stationary during Space switches

Fullscreen behavior:

Option Description
MacWindowCollectionBehaviorFullScreenPrimary Can enter fullscreen mode
MacWindowCollectionBehaviorFullScreenAuxiliary Can overlay fullscreen apps
MacWindowCollectionBehaviorFullScreenNone Disables fullscreen
MacWindowCollectionBehaviorFullScreenAllowsTiling Allows side-by-side tiling

Use Cases

  • Launcher apps (like Spotlight, Alfred, Raycast)
  • Quick capture tools (notes, screenshots)
  • System utilities that need to be accessible anywhere
  • Overlay widgets that should appear over fullscreen apps

Status

Platform Status
Mac Working
Windows N/A (macOS-specific feature)
Linux N/A (macOS-specific feature)