Skip to content

feat: Safari classifier with per-tab/domain renderer grouping #42

Description

@alecf

Summary

Safari uses the same multi-process architecture as Chrome — Web Content renderers, a GPU process, a Networking process, and SafariWebExtension processes — but all of them show up as opaque com.apple.WebKit.* processes today.

A dedicated SafariClassifier would:

  • Claim all processes whose bundle ID starts with com.apple.Safari or whose path includes Safari.app or WebKit.framework
  • Group renderer processes by domain (the URL or hostname is visible in process args for Web Content processes)
  • Label sub-processes by type: Web Content, GPU, Networking, Extension

Value

Same "aha moment" as ChromeClassifier: users can see which website tab is consuming the most memory, and get a single rolled-up Safari footprint rather than a pile of mystery WebKit processes.

Implementation notes

  • Detection: com.apple.Safari bundle ID, Safari.app in path, com.apple.WebKit.WebContent / com.apple.WebKit.GPU / com.apple.WebKit.Networking process names
  • Domain grouping: parse --origin-to-launch-process or similar arg that WebKit passes to content processes; fall back to grouping all renderers under "Web Content"
  • Icon: NSRunningApplication lookup on the main Safari process
  • stableIdentifier: "safari" (single top-level group, sub-groups by domain)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions