{
  "issues": [
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1921",
      "id": 3869867865,
      "node_id": "I_kwDOJl1IZM7mqX9Z",
      "number": 1921,
      "title": "'Value is already destroyed' crash",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2026-01-29T10:13:57Z",
      "updated_at": "2026-02-01T10:44:01Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps to reproduce:\r\n1. Have AeroSpace and Sketchybar started\r\n2. Start up Electron app via terminal. Open multiple windows. All Electron app windows occupy a single space. \r\n3. Cmd+q while Electron app is focused to quit app. \r\n\r\nExpected result:\r\nApp quits, aerospace stays running.\r\n\r\nActual result:\r\nAerospace crashes.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n```\r\n\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Value is already destroyed\r\nVersion: 0.20.2-Beta\r\nGit hash: 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nrefreshSessionEvent:  socketServer\r\nDate: 2026-01-28 18:35:49 +0000\r\nThread name: AxAppThread PID: 15514 ID: com.github.Electron\r\nIs main thread: false\r\naxTaskLocalAppThreadToken: PID: 15514 ID: com.github.Electron\r\nmacOS version: Version 14.8.3 (Build 23J220)\r\nCoordinate: AppBundle/ThreadGuardedValue.swift:10:42 threadGuarded\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104f7d4ac $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2056\r\n1   AeroSpace                           0x0000000104e16d30 $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_Tg5 + 244\r\n2   AeroSpace                           0x0000000104e1a99c $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_TG5 + 28\r\n3   AeroSpace                           0x0000000104ddbb60 $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_TG5TA + 24\r\n4   AeroSpace                           0x0000000104e16208 $sSo8NSThreadC9AppBundleE9runInLoopyxxAC03RunF3JobCYbKcYaKlFxyYaKXEfU_yScCyxs5Error_pGXEfU_yAFYbcfU_AC4RectVSg_Tg5 + 168\r\n5   AeroSpace                           0x0000000104dbfdc0 $s9AppBundle13RunLoopAction33_A4959B6FE60031823DBA1501F5438AC4LLC6actionyyF + 216\r\n6   AeroSpace                           0x0000000104dbfdfc $s9AppBundle13RunLoopAction33_A4959B6FE60031823DBA1501F5438AC4LLC6actionyyFTo + 24\r\n7   Foundation                          0x000000018be0f028 __NSThreadPerformPerform + 264\r\n8   CoreFoundation                      0x000000018acbe3b8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28\r\n9   CoreFoundation                      0x000000018acbe34c __CFRunLoopDoSource0 + 176\r\n10  CoreFoundation                      0x000000018acbe0bc __CFRunLoopDoSources0 + 244\r\n11  CoreFoundation                      0x000000018acbcca8 __CFRunLoopRun + 828\r\n12  CoreFoundation                      0x000000018acbc314 CFRunLoopRunSpecific + 608\r\n13  CoreFoundation                      0x000000018ad3a33c CFRunLoopRun + 64\r\n14  AeroSpace                           0x0000000104dc6a14 $s9AppBundle03MacA0C13getOrRegisteryACSgSo20NSRunningApplicationCYaKFZyyYbcfU_yyXEfU_ + 1100\r\n15  AeroSpace                           0x0000000104dc6594 $s9AppBundle03MacA0C13getOrRegisteryACSgSo20NSRunningApplicationCYaKFZyyYbcfU_ + 120\r\n16  AeroSpace                           0x0000000104dc6298 $sIegh_IeyBh_TR + 28\r\n17  Foundation                          0x000000018bdeabb0 __NSThread__start__ + 716\r\n18  libsystem_pthread.dylib             0x000000018abdef3c _pthread_start + 136\r\n19  libsystem_pthread.dylib             0x000000018abd9d24 thread_start + 8\r\n\r\n```\r\n\r\n_Originally posted by @jinusean in https://github.com/nikitabobko/AeroSpace/discussions/1920_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1921/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1895",
      "id": 3789620250,
      "node_id": "I_kwDOJl1IZM7h4QQa",
      "number": 1895,
      "title": "Feat: `create-window` primitive",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-07T17:18:59Z",
      "updated_at": "2026-01-07T18:25:11Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The feature proposal is to introduce `aerospace create-window` primitive\n\n```\naerospace create-window [--tiling|--floating] [--title <title>] [--fullscreen] \n                        [--macos-native-fullscreen] [--macos-native-minimize] \n                        [--opacity <opacity>%] [--no-window-decoration] \n                        [--body <text>] [--body-size <text-size>] [--workspace <workspace>]\n                        [--corner-radius <radius>] [--no-shadow] \n                        [--background-color <hex-color>] [--on-click <aerospace-command>] \n                        [--on-close <aerospace-command>]\n\n--opacity <opacity>%::\nValid format is a number from 0 to 100.\n\n--fullscreen::\nThe created window is immediately fullscreened. See `fullscreen` command.\n\n--workspace <workspace>::\nImmediately assign the created window to the specified workspace.\n```\n\n## Motivation\n\nPurity and general purpose scripting. Window is a basic primitive of a window manager. Similar to how package managers allow creating drafts of packages, window manager should be capable of creating windows.\n\nGiven that it's a basic primitive, real world use cases will emerge. Some people may use it to show big text on their screen, other people may use it to intentionally introduce gaps to make half of the wide screen empty (https://github.com/nikitabobko/AeroSpace/discussions/1884)\n\n## Open questions\n\n1. `--body <text>`. Is it rich text or plain text? If it's a rich text is it markdown or html?\n2. `--corner-radius` and `--no-window-decoration` should be designed with what is technically possible in mind.\n3. Print window id to stdout?\n4. Menubar?\n5. Show anything in Dock? (probably not)\n6. How to change properties of already created windows?\n7. Instead of `--fullscreen`, `--macos-native-fullscreen` etc. add single `--on-create <aerospace-command>`. Delay window layout until the callback in called to avoid flickering. Related: #226\n8. Somehow make the command accessible without AeroSpace server running?\n\n## Special casing for hiding windows\n\nAeroSpace hides windows in monitor corners. For our own windows, we could theoretically close them and open as needed. Though it's up to discussion. Other users might not like it because of mission control. In the first version, I'd prefer to avoid the special casing.\n\n## Technical challenges\n\nAFAIK, we can't use the same mechanism that we use to move other windows. Process that tries to apply accessibility requests to itself immediately crashes\n\n## Related\n\n#1403 menu-bar primitive",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1895/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1883",
      "id": 3775468384,
      "node_id": "I_kwDOJl1IZM7hCRNg",
      "number": 1883,
      "title": "Feature: `create-implicit-container-or-fail`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-02T02:28:09Z",
      "updated_at": "2026-01-08T10:56:36Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`aerospace move --boundaries-action create-implicit-container-or-fail`\n\nCreating an implicit container can only fail in the following situation:\n1. `enable-normalization-flatten-containers` is `true`\n2. The newly created container orientation, layout and children size are the same of those of the previous container which got flattened by the normalization\n\nWhen `enable-normalization-flatten-containers` is disabled it's proposed to print a tip to stderr:\n\n```\n$ grep enable-normalization-flatten-containers ~/.aerospace.toml\nenable-normalization-flatten-containers = false\n\n$ aerospace move --boundaries-action create-implicit-container-or-fail right > /dev/null\nTip: create-implicit-container-or-fail will never cause the move command to fail since enable-normalization-flatten-containers is disabled\n\n$ echo $?\n0\n```\n\n## References\n\n- https://github.com/nikitabobko/AeroSpace/discussions/1827\n- https://github.com/nikitabobko/AeroSpace/issues/183",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1883/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1882",
      "id": 3775448374,
      "node_id": "I_kwDOJl1IZM7hCMU2",
      "number": 1882,
      "title": "Change the default value for `auto-reload-config` to `true`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-02T01:59:50Z",
      "updated_at": "2026-01-02T02:00:58Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\n\nCurrently, the default value for `auto-reload-config` is `false` because the current implementation doesn't allow to support the current flow:\n\n1. The user just installs AeroSpace and doesn't yet have a custom config\n2. AeroSpace starts watching for `/Applications/AeroSpace.app/Contents/Resources/default-config.toml`\n3. User creates the custom config.\nExpected: AeroSpace starts watching for the custom config instead of the built-in one.\n\nUnfortunately, it's unclear how to support the mentioned flow by using the current implementation of file watcher. The current implementation relies on file descriptors (file descriptors for non existing files don't exist)\n\n## Motivation\n\n`auto-reload-config = true` is a sane default for new users. For old users, it just doesn't matter\n\n## Possible solutions\n\n1. Migrate to path watching API instead of file descriptor API https://github.com/nikitabobko/AeroSpace/pull/1743\n2. Watch for descriptors of chain of containing directories? Could be very busy since we might need to watch for `$HOME`.\n\n## References\n\n- previous issue: https://github.com/nikitabobko/AeroSpace/issues/163\n- Original unmerged path watcher PR: https://github.com/nikitabobko/AeroSpace/pull/1743\n- File descriptor PR: https://github.com/nikitabobko/AeroSpace/pull/1858",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1882/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1880",
      "id": 3775237320,
      "node_id": "I_kwDOJl1IZM7hBYzI",
      "number": 1880,
      "title": "Support `aerospace focus-monitor back-and-forth`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-01-01T21:38:08Z",
      "updated_at": "2026-01-01T21:38:15Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Similar `aerospace workspace-back-and-forth` command which allows switching between workspace in back and forth style, `aerospace focus-monitor back-and-forth` does the same but for monitors\n\n## Details\n\nTechnically, it's a breaking change since somebody could have had `back-and-forth` monitor pattern, but I highly doubt that...\n\n## Related issues\n\n#1024 \n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1868",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1880/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1837",
      "id": 3685660090,
      "node_id": "I_kwDOJl1IZM7brrW6",
      "number": 1837,
      "title": "`balance-sizes`, `resize` commands don't interact in the expected way when combined together in the config",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-02T12:44:11Z",
      "updated_at": "2025-12-02T12:47:35Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps:\n1. Layout windows in the following way:\n```\nh_tiles\n  window1 (size = 50%)\n  window2 (size = 50%)\n```\n\n2. Add the following lines to the config:\n```\n[mode.main.binding]\n    alt-1 = ['balance-sizes', 'resize width 200']\n    alt-2 = 'resize width 200'\n```\n\nExpected: `alt-1` and `alt-2` do the same\nActual: The hotkeys produce different results\n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1835",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1837/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1834",
      "id": 3683275102,
      "node_id": "I_kwDOJl1IZM7bilFe",
      "number": 1834,
      "title": "Add `aerospace cycle-size` command",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-01T23:18:43Z",
      "updated_at": "2025-12-15T15:12:44Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Synopsis: `aerospace cycle-size [--axis (smart|smart-opposite|height|width)] (<size>%)...`\n\nExamples:\n```\naerospace cycle-size 33% 50% 66%\n```\n\nThe meanings of `(smart|smart-opposite|height|width)` are the same as in `aerospace resize` command.\n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1827",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1834/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1816",
      "id": 3660604679,
      "node_id": "I_kwDOJl1IZM7aMGUH",
      "number": 1816,
      "title": "Order workspaces in the menubar/`list-workspaces`/`workspace next/prev` according to `persistent-workspaces` config option",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-24T21:32:51Z",
      "updated_at": "2026-01-30T22:34:18Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, the workspaces are ordered alphabetically. The suggestion is to order them as in `persistent-workspaces` list\n\n- First, go persistent workspaces in their order.\n- Second, go phantom workspaces alphabetically as they do it now\n\nFor the traymenu menu, I even suggest splitting them into two visual groups\n\nPrevious issue: https://github.com/nikitabobko/AeroSpace/issues/999",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1816/reactions",
        "total_count": 10,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 6,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1815",
      "id": 3660575562,
      "node_id": "I_kwDOJl1IZM7aL_NK",
      "number": 1815,
      "title": "Document `persistent-workspaces` and phantom workspaces in the guide",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-24T21:22:25Z",
      "updated_at": "2025-11-24T21:22:35Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/nikitabobko/AeroSpace/issues/999\n\nSome preliminary thoughts: https://github.com/nikitabobko/AeroSpace/discussions/875#discussioncomment-11618465",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1815/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1812",
      "id": 3656407009,
      "node_id": "I_kwDOJl1IZM7Z8Ffh",
      "number": 1812,
      "title": "Update docs to elaborate on `AEROSPACE_WINDOW_ID` and `AEROSPACE_WORKSPACE` environment variables",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-11-23T20:05:35Z",
      "updated_at": "2025-11-23T20:06:02Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Docs update is a follow up on https://github.com/nikitabobko/AeroSpace/issues/20",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1812/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1772",
      "id": 3552690507,
      "node_id": "I_kwDOJl1IZM7TwcFL",
      "number": 1772,
      "title": "Add `%{window-parent-container-orientation}` and `%{workspace-root-container-orientation}` interpolation variables",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-25T16:29:16Z",
      "updated_at": "2025-10-29T22:10:52Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n$ aerospace list-windows --focused --format '%{window-parent-container-orientation}'\nhorizontal\n$ aerospace layout vertical\n$ aerospace list-windows --focused --format '%{window-parent-container-orientation}'\nvertical\n```\n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1739",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1772/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1778
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1770",
      "id": 3552459505,
      "node_id": "I_kwDOJl1IZM7Tvjrx",
      "number": 1770,
      "title": "Add configuration option to control new window insertion direction",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-25T12:52:30Z",
      "updated_at": "2026-01-23T17:09:55Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, all new windows are inserted right after _the mru window_ (most recently used window). The feature proposal is to add a configuration option to insert new windows before the mru window.\n\n```toml\n# Possible values: after-the-mru-window|before-the-mru-window\ndefault-windows-insertion-point = 'after-the-mru-window'\n```\n\nThe only thing that I'm hesitant about is the naming. I'd love to avoid scaring people with `mru` term (though, it's the way we call it in the code base right now, and it's technically correct)\n\nReported by @fcomrqz in https://github.com/nikitabobko/AeroSpace/discussions/1768",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1770/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1701",
      "id": 3426954622,
      "node_id": "I_kwDOJl1IZM7MQy1-",
      "number": 1701,
      "title": "Add `aerospace focus --wrap-around` alias",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-17T16:14:49Z",
      "updated_at": "2025-09-22T12:49:56Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`--wrap-around` should be an alias for `--boundaries-action wrap-around-the-workspace`\n\n`--wrap-around` should conflict with `--boundaries-action` and `--boundaries`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1701/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1687",
      "id": 3401585261,
      "node_id": "I_kwDOJl1IZM7KwBJt",
      "number": 1687,
      "title": "Add `%{all}` interpolation variable",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-10T09:00:45Z",
      "updated_at": "2025-09-16T14:29:55Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The proposal:\n```shell\n$ aerospace list-windows --format '%{all}' --json\n[\n  {\n    \"app-bundle-id\" : \"org.alacritty\",\n    \"app-bundle-path\" : \"/Applications/Alacritty.app\",\n    \"app-exec-path\" : \"/Applications/Alacritty.app/Contents/MacOS/alacritty\",\n    \"app-name\" : \"Alacritty\",\n    \"app-pid\" : 15052,\n    ...\n```\n\nMotivation: Exploring all possible variables in interactive way\n\nRequirements: `%{all}` requires `--json` flag",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1687/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1673",
      "id": 3382972854,
      "node_id": "I_kwDOJl1IZM7JpBG2",
      "number": 1673,
      "title": "Design and implement the solution to notify users when their monitors are not properly arranged",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        },
        "1": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        },
        "2": {
          "id": 8833150849,
          "node_id": "LA_kwDOJl1IZM8AAAACDn8vgQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/ui",
          "name": "ui",
          "color": "b2a6c4",
          "default": false,
          "description": "The issue involves working on UI"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-04T09:48:32Z",
      "updated_at": "2026-01-02T00:30:46Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "AeroSpace requires the proper monitor arrangement: https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement\n\nUnfortunately, AeroSpace doesn't give users the feedback on when monitors are not properly arranged\n\nThe hardest part of this issue the UI and UX. I can think of one hard requirement: it must be possible to dismiss the notification completely (valid use case: https://github.com/nikitabobko/AeroSpace/discussions/1671) and make it clear where users can see these kinds of diagnostics if they want to.\n\n## Possible UI/UX options\n\n1. Standard macOS notifications. Unfortunately, notifications have problems and bad reputation among all major OSes. For macOS specifically: we need to get the permission to send notifications (I don't want to disturb users with notification permissions right when they start using AeroSpace), macOS notifications are not dismissable from a keyboard (#1672), macOS notification are allowed only for app bundles (no notifications for debug builds from CLI)\n2. Floating NSPanel (like we do with macOS secure input warning). Unfortunately, this solution feels like a hack. It's like the option 1 but without the permission.\n3. menubar icon/warning. Some users hide the menubar, and menubar items tend to get hidden because of the notch...\n\nSo far, the 2nd is my favourite option. Boy, it makes me sad that notifications suck so much that I am seriously thinking about floating NSPanel (which is basically a custom notification system hacked around)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1673/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1672",
      "id": 3382927592,
      "node_id": "I_kwDOJl1IZM7Jo2Do",
      "number": 1672,
      "title": "Research the possibility to dismiss notifications using macOS accessibility API",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        },
        "1": {
          "id": 9223806274,
          "node_id": "LA_kwDOJl1IZM8AAAACJcgdQg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/task",
          "name": "task",
          "color": "39509a",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-04T09:34:55Z",
      "updated_at": "2025-10-31T15:46:09Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It's a shame that macOS doesn't provide any way to dismiss notifications from a keyboard. Hopefully, it's possible to do via accessibility API, in this case, it'd be cool to provide aerospace command to dismiss notification(s)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1672/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 1,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1615",
      "id": 3299794772,
      "node_id": "I_kwDOJl1IZM7Ert9U",
      "number": 1615,
      "title": "Window detection, destruction, native-minimize, native-fullscreen can be slow or even entirely blocked",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        },
        "2": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/milestones/5",
        "id": 13489221,
        "node_id": "MI_kwDOJl1IZM4AzdRF",
        "number": 5,
        "title": "0.20.0-Beta",
        "description": "",
        "creator": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "open_issues": 1,
        "closed_issues": 4,
        "state": "closed",
        "created_at": "2025-08-14T10:22:40Z",
        "updated_at": "2025-11-24T22:39:51Z",
        "due_on": null,
        "closed_at": "2025-11-24T22:39:51Z"
      },
      "comments": 3,
      "created_at": "2025-08-07T09:47:14Z",
      "updated_at": "2026-01-09T21:05:31Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, new window detection and destruction (including minimize and native-fullscreen) is performed by every applications individual thread in parallel.\n\nThe main thread initiates the refresh-currently-active-windows requests to all these threads and (asynchronously) waits for the responses, combines the responses, and proceeds to layouting.\n\n- The problem is obviously this: \"(asynchronously) waits for the responses\". Pointer in the source code: `MacApp.refreshAllAndGetAliveWindowIds`\n- `normalizeLayoutReason` is also problematic in the same way.\n\nThe mentioned places should be rewritten in a reactive way. The main thread initiates the requests, but the main thread doesn't wait back for the responses. Once an individual app-thread is ready, it communicates its result back to the main thread.\n\n## Visible side effects\n\n**AeroSpace is slow at detecting window destruction/creation**\n\n1. Open some heavy application (e.g. Godot)\n2. Open new windows of some other application (e.g. Firefox)\n3. Observe that AeroSpace is slow at detecting these new windows\n\n**Phantom windows / Ghost windows**\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1582#discussioncomment-14096802\n\n## Other details\n\n- Previous issue: https://github.com/nikitabobko/AeroSpace/issues/131",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1615/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1614",
      "id": 3299705727,
      "node_id": "I_kwDOJl1IZM7ErYN_",
      "number": 1614,
      "title": "AeroSpace doesn't preserve the focused workspace when users minimize the focused window",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-07T09:18:41Z",
      "updated_at": "2026-02-03T08:04:21Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, AeroSpace tries to preserve the focused workspace when the focused window dies. It has its own issue that this logic doesn't work reliably because we play \"race condition game\" with macOS #1097, but it's what it's.\n\nAnyway, currently, AeroSpace doesn't try to preserve the focused workspace when the focused window is minimized which might lead to focusing another workspace\n\n## Discussions\n\n- https://github.com/nikitabobko/AeroSpace/discussions/1551\n\n## Related\n\n- https://github.com/nikitabobko/AeroSpace/issues/1500",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1614/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1568",
      "id": 3242703627,
      "node_id": "I_kwDOJl1IZM7BR7sL",
      "number": 1568,
      "title": "Overlay UI components prevent automatic workspace switching on cmd-tab",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-18T10:13:45Z",
      "updated_at": "2025-07-18T10:24:38Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps to reproduce:\r\n1. Open Visual Studio Code\r\n2. File -> Open Folder (that will open a file selector as a child UI component)\r\n3. Switch to different application in a different workspace, say Safari\r\n4. Try to return to the Visual Studio code using cmd + tab shortcut\r\n\r\nExpected result:\r\nYou should be able to see visual studio code together with \"Open folder\" overlay\r\n\r\nActual result:\r\nIn the macos menu bar \"app menu\" indicate it switched to the Code but you still see Safari. In this particular situation you can press \"Esc\" to close overlay which refocuses Code. This problem exists with other overlays in different programs, but not all overlays close on ESC unfortunately. You can still return to the workspace with an app as a workaround. \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\nAeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\n```\r\n\r\n_Originally posted by @pszypowicz in https://github.com/nikitabobko/AeroSpace/discussions/1567_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1568/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1519",
      "id": 3186684664,
      "node_id": "I_kwDOJl1IZM698PL4",
      "number": 1519,
      "title": "Floating windows position and size is not tracked properly",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-29T23:25:45Z",
      "updated_at": "2025-07-18T10:24:46Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Tiling windows management is uni-directional in AeroSpace. AeroSpace is the owner of the state, and it enforces positions of the windows in the idempotent style. AeroSpace effectively ignores what macOS thinks about windows' position and size. Side-effects flow only in one direction - from AeroSpace to macOS. All good, all reliable\n\nFloating windows are not like that. Their management is bi-directional. AeroSpace has to listen what macOS has to say. For example, it will cause problems for floating windows in the following scenario `aerospace eval 'move right --floating-pixels 50; move right --floating-pixels 50'` (#278)\n\nI was inspired to write this issue because I already spent some brain power on #1492 but I don't know the right solution yet. Unfortunately, the priority of this issue is really minor since I don't care about floating windows much, so this issue is probably gonna just rot.\n\n## Possible solutions\n\nTurns out that there are already a number of places in AeroSpace (hmm, only 2?), where we have to deal with the problem of bi-directionality\n\n- Focus handling is bi-directional. Right now, AeroSpace implements `lastKnownNativeFocusedWindowId` approach where the focus from macOS is applied only when the `lastKnownNativeFocusedWindowId` changes. Downside if we apply it for floating windows: in every refresh session, AeroSpace will have to query all visible floating window's position and size which doesn't sound good for performance, or use AX notifications, in which I have little trust, hmm hmm hmm\n- Apply changes from macOS only when the left mouse button is down. If we apply it for all floating windows, the downside is that non-AeroSpace tilers won't work with AeroSpace anymore\n\n## Problems it causes\n\n- `layoutRecursive.swift:layoutFloatingWindow`. Calculate everything against current \"physical\" position `let currentMonitor = try await getCenter()?.monitorApproximation`. I find it hilarious. It's just unreliable, and non idempotent, but apparently works\n  - The bug fix for #1492 makes `MacWindow.hideInCorner` behave in the same way.\n- The mentioned `aerospace eval` problem above\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1519/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1515",
      "id": 3185001264,
      "node_id": "I_kwDOJl1IZM6910Mw",
      "number": 1515,
      "title": "Dynamically update config via cli",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 9554927374,
          "node_id": "LA_kwDOJl1IZM8AAAACOYSfDg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/hard",
          "name": "hard",
          "color": "6b3598",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-28T14:09:03Z",
      "updated_at": "2025-11-25T23:46:57Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Very under thought synopsis:\n\n```\naerospace config-write --set-scalar <config-path> <value>\naerospace config-write --clear-composite <config-path> # clear array or dict. Not allowed for namespace\naerospace config-write --add <config-path> <key-or-index> <value>\naerospace config-write --remove <config-path> <key-or-index>\naerospace config-write --reset-to-fallback <config-path>\naerospace config-write --reload <config-path>\n\n# <key-or-index> is string for dicts, and index for arrays. \n# <config-path> is dot-qualified config path\n# `aerospace reload-config` becomes effectively equivalent to `aerospace config-write --reload .`\n\n# Combined in one request\n\n# no-flickering\naerospace config-write \\\n  --set-scalar gaps.outer.top 20 \\\n  --set-scalar gaps.outer.bottom 20\n\naerospace config-write\n  --remove mode.main.binding \\\n  --add mode.main.binding 'alt-1' 'workspace 1'\n```\n\n## Mental model\n\nConfig is represented as recursive DTO (Something similar to `Json.swift` that we have in the sources right now), but every nested dictionary node should have an associated `kind` property with possible values `(string|int|bool|dict|array|namespace)`.\n\n```swift\nenum ConfigNode {\n  // composite\n  case array([ConfigNode])\n  case dict([String: ConfigNode])\n\n  // dot-qualified config path\n  case namespace([String: ConfigNode])\n\n  // scalar\n  case bool(Bool)\n  case int(Int)\n  case string(String)\n}\n```\n\nThe conceptual thing here is the difference between `dict` and `namespace`. dict is arbitrary length dict. namespace represents dot-qualifed config path.\n\n```swift\n$ aerospace config --get . --kind\nnamespace\n\n$ aerospace config --get mode.main.binding --kind\ndict\n\n$ aerospace config-write --add mode.main.binding alt-1 'workspace 1'\n\n$ aerospace config-write --add . alt-1 'hehe'\nConfig parse error\n\nalt-1: Unknown top-level key\n```\n\n## TODO\n\n- [ ] The first step is a maintenance step. We should minimize dependency on `TOMLKit`. The whole config validation is built on top of classes from `TOMLKit`. We should rewrite it to: run `TOMLKit` first, convert its data structures to `ConfigNode`\n\n## Open questions\n\n- What to do with callbacks? I don't like the idea of modifying the config-configured callbacks. For one, the callbacks can check for different conditions inside of them anyway. For another, socket-exposed callbacks serve quite a similar purpose #1514\n- Rename `aerospace config` to `aerospace config-read`?\n- Is it possible for `<value>` to be a composite value?\n- I don't like 3 positional args after a flag `--add <config-path> <key-or-index> <value>`\n\n## Use cases\n\n- https://github.com/nikitabobko/AeroSpace/discussions/628\n- Combined with #1514 + keyboard/mouse-event callbacks, it becomes possible to implement third-party configuration in whatever scripting language users prefer it outside AeroSpace (e.g. Lua #622)\n\n## Discussions\n\n- https://github.com/nikitabobko/AeroSpace/discussions/628",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1515/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1514",
      "id": 3184972960,
      "node_id": "I_kwDOJl1IZM691tSg",
      "number": 1514,
      "title": "Expose AeroSpace callbacks via socket protocol",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-28T13:38:18Z",
      "updated_at": "2025-06-28T14:16:16Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It should be possible to subscribe to AeroSpace callbacks via socket API without modifying the config\n\nIt should also be possible to receive callbacks for keyboard/mouse events (see use case 2. below)\n\n## Use cases\n\n- Zero-configuration bars. E.g. barik https://github.com/mocki-toki/barik/issues/47#issuecomment-2763235856\n- Combined with #1515 + keyboard/mouse-event callbacks, it becomes possible to implement third-party configuration in whatever scripting language users prefer it outside AeroSpace (e.g. Lua #622)\n\n## Alternatives\n\n`DistributedNotificationCenter.default().postNotificationName`. \n\nPros: uniform macos eventbus notification framework across different apps\nCons: proprietary Apple API (much more likely to break than sockets)\n\nIt's not a final decision, but still prefer the socket approach, at least for uniformity\n\n## Dependencies\n\nThis issue depends on:\n- Make the socket protocol public #1513\n\n## Open questions\n\nThe details of the protocol and how third-party app can subscribe to the events is an open question (should AeroSpace create separate sockets for each type of event? Or maybe socket files should be created by requests? e.g. `aerospace create-notif-socket`)\n\n## Related\n\n- Dynamically updating config can theoretically expose possibility to modify callbacks #1515 (I prefer sockets for that currently)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1514/reactions",
        "total_count": 3,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 1,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1927
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1513",
      "id": 3184965096,
      "node_id": "I_kwDOJl1IZM691rXo",
      "number": 1513,
      "title": "Make socket protocol/API public",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-28T13:32:22Z",
      "updated_at": "2025-07-09T21:10:44Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The way AeroSpace CLI communicates with the server is an implementation detail right now (unix socket + jsons). Nevertheless, some third-party applications already rely on it. Hopefully, the apps understand that the protocol is subject to breaking changes.\n\nThis issue is about making the protocol public and documented. For inspiration: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#contentPart\n\n## TODO\n\n- [ ] Migrate off the BlueSocket library dependency. I've used BlueSocket dependency in the early days of the project to speed up the development. There should be nothing hard about implementing unix socket communication by hand\n- [ ] Prepend the message with how many bytes the message is going to be (`Content-Length` header). Right now, we just write json + EOF.\n- [ ] Write an official Swift and Kotlin (languages I'm fluent in) libraries to communicate with AeroSpace socket. AeroSpace CLI itself could be migrated to the Swift library for uniformity\n- [ ] Document the protocol\n\n## Known third-party apps that communicate with aerospace socket directly\n\n- https://github.com/cristianoliveira/aerospace-ipc\n- https://github.com/acsandmann/AeroSpaceLua\n- https://github.com/search?q=%2Fbobko.aerospace.*%5C.sock%2F+-is%3Afork&type=code\n\n## Future directions\n\n- #1514",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1513/reactions",
        "total_count": 2,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 1,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1500",
      "id": 3175403850,
      "node_id": "I_kwDOJl1IZM69RNFK",
      "number": 1500,
      "title": "Fullscreen the wrong window when it exit macos native minimize",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-25T12:06:59Z",
      "updated_at": "2025-09-23T09:55:04Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps to reproduce:\r\n1. Focus on window A, click minimize on window B\r\n2. Bring B back to foreground by clicking icon in the dock\r\n3. The unminimized window B is focused now, but when pressing the fullscreen key, it fullscreens window A\r\n\r\nNote that It occurs only when you focus on window A and use mouse to minimize window B. \r\n\r\nExpected result: Full screen the correct window (B)\r\nActual result: Window A is fullscreen\r\n\r\nhttps://github.com/user-attachments/assets/549ab48c-16f6-40e9-a6cb-98710061ba3a\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\n_Originally posted by @qazxcdswe123 in https://github.com/nikitabobko/AeroSpace/discussions/1499_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1500/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1496",
      "id": 3173175070,
      "node_id": "I_kwDOJl1IZM69Is8e",
      "number": 1496,
      "title": "Displays have separate spaces is off. Accessing menu on non-main screen is not possible",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-24T20:15:35Z",
      "updated_at": "2026-01-15T01:16:25Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps:\n1. Disable 'Displays have separate spaces'\n2. Put a window on non-main screen\n3. Focus the window\n4. Click app menu on the main screen (since it's the only screen where the menu is displayed)\n\nExpected: the menu is just accessible\nActual: the menu immediately closes and the focus switches to the window on main screen\n\nNote that the bug is not reproducible if you disable AeroSpace",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1496/reactions",
        "total_count": 11,
        "+1": 11,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1491",
      "id": 3171336594,
      "node_id": "I_kwDOJl1IZM69BsGS",
      "number": 1491,
      "title": "`focus-monitor <direction>` should focus `most-reverse-direction` window instead of MRU",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8832984532,
          "node_id": "LA_kwDOJl1IZM8AAAACDnyl1A",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/behavior-change",
          "name": "behavior-change",
          "color": "099297",
          "default": false,
          "description": "The change is change in the behavior"
        },
        "1": {
          "id": 8836092071,
          "node_id": "LA_kwDOJl1IZM8AAAACDqwQpw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/several-monitors",
          "name": "several-monitors",
          "color": "aaaaaa",
          "default": false,
          "description": "Working on the issue involves several monitors"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-24T10:11:38Z",
      "updated_at": "2025-06-24T20:49:07Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Current behavior: `focus-monitor <direction>` focuses the MRU window on the appropriate monitor\nSuggested behavior: `focus-monitor right` focuses left-most window, `focus-monitor left` focuses right-most window, etc.\n\n`focus-monitor (next|prev|<monitor-pattern>...)` should remain untouched.\n\nMotivation: \n1. `focus-monitor <direction>` is often used in conjugation with `focus` command like so: `focus left --boundaries-action fail || focus-monitor left`, or https://github.com/nikitabobko/AeroSpace/issues/1480 `focus left --fail-if-fullscreen || focus-monitor left`\n2. We are going to change the behavior of `move-node-to-monitor` in the similar way https://github.com/nikitabobko/AeroSpace/issues/1425\n\nBrought up by @rwblokzijl in https://github.com/nikitabobko/AeroSpace/discussions/1475\n\n## Future improvements\n\n`focus-monitor (left|down|right|up) [--mru-window]`. `--mru-window` would revert the behavior suggested in this ticket. `--mru-window` is noop for other `focus-monitor` arguments",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1491/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1490",
      "id": 3171209790,
      "node_id": "I_kwDOJl1IZM69BNI-",
      "number": 1490,
      "title": "Maintenance: Support multiple monitors in test infrastructure",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8511225920,
          "node_id": "LA_kwDOJl1IZM8AAAAB-08AQA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/maintenance",
          "name": "maintenance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-24T09:36:46Z",
      "updated_at": "2025-06-24T14:05:26Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, test infra uses only one monitor\n\nTest infra should support multiple monitors to test commands that interact with multiple monitors: `focus-monitor`, `move-node-to-monitor`, etc.\n\nMonitor configuration should not be constant to check cases like `default-root-container-orientation = 'auto'`: https://github.com/nikitabobko/AeroSpace/discussions/1489\n\n## Test cases\n\nUntil this issue is fixed, I will collect some interesting test cases here:\n\n```\nv_monitors\n  monitor1\n    h_tiles\n      window1 (fullscreen, focused)\n      window2\n  monitor2\n    h_tiles\n      window3\n\n# move-node-to-workspace down\n```\n\n```\nv_monitors\n  monitor1\n    h_tiles\n      window1 (fullscreen, focused)\n      window2\n  monitor2\n    h_tiles\n      window3 (fullscreen)\n\n# move-node-to-workspace down\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1490/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1485",
      "id": 3169257469,
      "node_id": "I_kwDOJl1IZM685wf9",
      "number": 1485,
      "title": "Change the way join-with works with containers",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        },
        "1": {
          "id": 7151038032,
          "node_id": "LA_kwDOJl1IZM8AAAABqjwuUA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/1.0-blocker",
          "name": "1.0-blocker",
          "color": "F27AD4",
          "default": false,
          "description": ""
        },
        "2": {
          "id": 8832984532,
          "node_id": "LA_kwDOJl1IZM8AAAACDnyl1A",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/behavior-change",
          "name": "behavior-change",
          "color": "099297",
          "default": false,
          "description": "The change is change in the behavior"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-06-23T19:37:33Z",
      "updated_at": "2025-10-31T04:06:14Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Current behavior:\n\n```\nh_tiles\n  window1\n  window2 (focused)\n  v_tiles (container X)\n    window3\n    window4\n\njoin-with right\n\nh_tiles\n  window1\n  v_tiles\n    h_tiles (container X changed its orientation because of the normalization)\n      window3\n      window4\n    window2 (focused)\n```\n\nSuggested behavior: `join-with` should behave similar to `move` when the node in the specified direction is a container, not a window\n\nSo the suggested behavior:\n\n```\nh_tiles\n  window1\n  window2 (focused)\n  v_tiles\n    window3 (prev focused)\n    window4\n\njoin-with right\n\nh_tiles\n  window1\n  v_tiles\n    window3 (prev focused)\n    window2 (focused)\n    window4\n```\n\nIs it a breaking change? Not sure, don't know. My gut feeling tells me that it's ok to \"break it\"\n\n## Motivation\n\nhttps://github.com/nikitabobko/AeroSpace/issues/1462#issuecomment-2954205826",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1485/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1480",
      "id": 3164462129,
      "node_id": "I_kwDOJl1IZM68ndwx",
      "number": 1480,
      "title": "`focus`/`move` command: add `--fail-if-fullscreen`/`--fail-if-macos-native-fullscreen`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        },
        "2": {
          "id": 8836092071,
          "node_id": "LA_kwDOJl1IZM8AAAACDqwQpw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/several-monitors",
          "name": "several-monitors",
          "color": "aaaaaa",
          "default": false,
          "description": "Working on the issue involves several monitors"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-20T22:10:12Z",
      "updated_at": "2025-06-29T23:48:20Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nfocus [--fail-if-fullscreen] [--fail-if-macos-native-fullscreen] (left|down|up|right)\n```\n\nBoth new flags are only compatible with `(left|down|up|right)` argument.\n\nE.g. the following should fail:\n\n```shell\n$ aerospace focus --fail-if-fullscreen --window-id 23\nIncompatible options: --fail-if-fullscreen --window-id\n```\n\n## Use case\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1475\n\n```\n[mode.main.binding]\n  alt-h = 'focus left --fail-if-fullscreen || focus-monitor left'\n  alt-shift-h = 'move left --fail-if-fullscreen || move-node-to-monitor left'\n```\n\n## Additional info\n\nThe similar change should be done to `move` command",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1480/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1462",
      "id": 3128551510,
      "node_id": "I_kwDOJl1IZM66eehW",
      "number": 1462,
      "title": "Dragging window with modifier key to join with mouse",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        },
        "2": {
          "id": 8101101502,
          "node_id": "LA_kwDOJl1IZM8AAAAB4tz_vg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/priority-minor",
          "name": "priority-minor",
          "color": "006b75",
          "default": false,
          "description": ""
        },
        "3": {
          "id": 8749200263,
          "node_id": "LA_kwDOJl1IZM8AAAACCX4zhw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/mouse",
          "name": "mouse",
          "color": "ef07ff",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-06-08T17:23:00Z",
      "updated_at": "2025-11-14T22:23:10Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Normal window dragging: swap windows (as it's right now)\nwindow dragging with modifier: should `join-with` windows\n\n```toml\n# possible options: disable|alt|cmd|shift|ctrl\n# Combinations supported as well. Example: cmd-alt\nnative-grab-window-join-with-modifier = 'disable'\n```\n\nTo avoid jerking movements, while the window is dragged, and the `join-with` modifier is engaged, the initial area of the window should stay \"ghost\"\n\nConcept:\n```\n┌─────────────┐ ┌─────────────┐ ┌──────────────┐\n│x-+          │ │x-+          │ │x-+           │\n├─────────────┤ ├─────────────┤ ├──────────────┤\n│             │ │             │ │              │\n│             │ │             │ │              │\n│             │ │             │ │              │\n│      1      │ │      2      │ │      3       │\n│             │ │             │ │              │\n│             │ │             │ │              │\n│             │ │             │ │              │\n│             │ │             │ │              │\n└─────────────┘ └─────────────┘ └──────────────┘\n\n                   ┌─ New \"ghost\" area where window will be placed once mouse is released\n                   v\n┌─────────────┐ ┌ ─ ─ ─ ─ ─ ─ ┐ ┌ ─ ─ ─ ─ ─ ─ ─ \n│x-+          │            ┌──────────────┐    │<- Previous \"ghost\" area of the 3rd window.\n├─────────────┤ │          │x-+  *(mouse) │        It should stay \"ghost\" until the mouse is \n│             │            ├──────────────┤    │   released\n│             │ └ ─ ─ ─ ─ ─│              │     \n│             │ ┌──────────│              │    │\n│     1       │ │x-+       │              │     \n│             │ ├──────────│      3       │    │\n│             │ │          │ (drag is in progress)\n│             │ │      2   │              │    │\n│             │ │          │              │     \n└─────────────┘ └──────────│              │─ ─ ┘\n                           └──────────────┘      \n```\n\nOpen questions:\n- We need a better name for `native-grab-window-join-with-modifier` (Motivation for \"native-\" prefix in the name: to avoid confusion with `grab-window` upcoming command https://github.com/nikitabobko/AeroSpace/issues/371)\n\nRelated issues:\n- https://github.com/nikitabobko/AeroSpace/issues/371\n- https://github.com/nikitabobko/AeroSpace/issues/1357\n\n_Originally posted by @jrk in https://github.com/nikitabobko/AeroSpace/discussions/1460_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1462/reactions",
        "total_count": 14,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 4,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1458",
      "id": 3120902242,
      "node_id": "I_kwDOJl1IZM66BTBi",
      "number": 1458,
      "title": "Output in pretty json format only when stdout is tty",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        },
        "1": {
          "id": 8101101502,
          "node_id": "LA_kwDOJl1IZM8AAAAB4tz_vg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/priority-minor",
          "name": "priority-minor",
          "color": "006b75",
          "default": false,
          "description": ""
        },
        "2": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-06-05T11:49:16Z",
      "updated_at": "2025-06-21T18:01:35Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, we output pretty json always unconditionally. The proposal is to do that only when stdout is tty. In all other cases, it should be minified json for the sake of performance\n\nConsider all the commands with `--json` flag\n\nThe decision is not final. It's an open question if we want to change the output format depending on the \"is tty\" status",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1458/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1454",
      "id": 3117608018,
      "node_id": "I_kwDOJl1IZM650uxS",
      "number": 1454,
      "title": "Feature: conditional bindings. Per-app bindings",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-04T12:08:50Z",
      "updated_at": "2025-12-25T11:04:44Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\n\nAdd an ability to define application specific bindings\n\nThe issue becomes even more relevant after the introduction of `menu-bar` command https://github.com/nikitabobko/AeroSpace/issues/1403\n\n## Details\n\nThe design is yet unclear, but the feature request deserves a tracking issue (which this issue is about)\n\nVery much related and should be designed together: https://github.com/nikitabobko/AeroSpace/issues/278\n\n## Use cases\n\n- per-app `menu-bar` command #1403 \n- Swap alt/opt and cmd modifiers (not covered by the suggested drafts)\n\n## Drafts\n\n```toml\n[[conditional]]\n    if = 'test --app-bundle-id org.mozilla.firefox'\n    [conditional.binding] # TOML is hell ugly\n        ctrl-n = 'menu-bar --match-path-suffix \"new tab\" --click-first'\n```\n\n```toml\n[mode.main.app-binding.org.mozilla.firefox]\n    ctrl-n = 'menu-bar --match-path-suffix \"new tab\" --click-first'\n```\n\n```toml\n[[mode.main.conditional-binding]] # Surprisingly it doesn't conflict with [mode.main.binding]\n    if = 'test --app-bundle-id org.mozilla.firefox'\n    ctrl-n = '...'\n```\n\n## Discarded alternatives\n\n```toml\n[mode.main.binding]\n    ctrl-n = '''\n        if test --app-bundle-id org.mozilla.firefox do\n            menu-bar --match-path-suffix 'new tab' --click\n        else\n            pass\n            # or: send-key ctrl-n\n        end\n    '''\n```\n\nDiscarded because I am slowly moving away from the idea of introducing built-in control flow structures like `if`\n\n```toml\n[mode.main.binding]\n    ctrl-n = { if = 'test --app-bundle-id org.mozilla.firefox', run = 'menu-bar --match-path-suffix \"new tab\" --click-first' }\n```\n\nDiscarded because the syntax is misleading on when the binding swallows the key event\n\n## Open questions\n\n- The exact TOML syntax is an open question\n- It'd be cool if modes somehow could cover the use case, but I don't see how\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1454/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1872
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1424",
      "id": 3070062600,
      "node_id": "I_kwDOJl1IZM62_XAI",
      "number": 1424,
      "title": "Add `--hide-others` to `fullscreen` command",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        },
        "2": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        },
        "3": {
          "id": 8101101502,
          "node_id": "LA_kwDOJl1IZM8AAAAB4tz_vg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/priority-minor",
          "name": "priority-minor",
          "color": "006b75",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-05-16T23:43:34Z",
      "updated_at": "2025-07-13T18:43:51Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nfullscreen [--hide-others]\n\nOPTIONS:\n--hide-others::\n  The flag is useful when the window you're about to fullscreen is transparent. All other non-fullscreen windows of the workspace will be hidden in the corner.\n```\n\nUse cases: transparent terminals https://github.com/nikitabobko/AeroSpace/issues/419 & https://github.com/nikitabobko/AeroSpace/discussions/1416\n\nMotivation for the flag name: it's similar to the one I want to add for close command `close --others`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1424/reactions",
        "total_count": 3,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1417",
      "id": 3066664044,
      "node_id": "I_kwDOJl1IZM62yZRs",
      "number": 1417,
      "title": "Add: `--floating-pixels <pixels>` optional argument to `move` command",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-05-15T15:32:02Z",
      "updated_at": "2025-05-20T10:31:08Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nmove [-h|--help] [--window-id <window-id>] [--floating-pixels <pixels>] (left|down|up|right)\n\nOPTIONS:\n\n--floating-pixels <pixels>::\n    If window is floating then move it in the specified direction by the specified number of <pixels>.\n    If not specified, the default value for <pixels> is 10%\n```\n\nRelated: allow percentages in pixel values https://github.com/nikitabobko/AeroSpace/issues/397\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1417/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1403",
      "id": 3054606211,
      "node_id": "I_kwDOJl1IZM62EZeD",
      "number": 1403,
      "title": "Implement `menu-bar`, `new-window-or-open`, `new-tab-or-open` subcommands",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 9977965092,
          "node_id": "LA_kwDOJl1IZM8AAAACUruqJA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/ax-api-heavy-usage",
          "name": "ax-api-heavy-usage",
          "color": "76ddd0",
          "default": false,
          "description": "Heavy usage of macOS accessibility api"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-05-11T00:29:01Z",
      "updated_at": "2026-01-12T09:56:43Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "macOS accessibility API allows traversing through top left application menu bar. It'd be cool if AeroSpace provided CLI interface to control it\n\n## The suggested synopsis\n\n```\naerospace menu-bar ( [--pid <pid>] | [--app-bundle-id <bundle-id>] | [--app-bundle-path] <path> )\n               [--non-recursive] [--no-print-prefix-exclusive] [--no-print-prefix-inclusive]\n               [--match-path-prefix <menu-bar-path>...] [--match-path-suffix <menu-bar-leaf>...]\n               [--match-leaf <menu-bar-leaf>...]\n               ( [--json] | [--count] )\n               [--click-first]\n\nOptions:\n\n--match-path-prefix <menu-bar-path>..., --match-path-suffix <menu-bar-leaf>...\n  Match menu-bar path's prefix or suffix. Each path component is matched \n  by case insensitive regex substring.\n\n--match-leaf <menu-bar-leaf>...\n  Alias for --match-path-suffix\n```\n\nConflicting options: \n- `--non-recursive`, `--click-first`\n- `--json`, `--click-first`\n- `--count`, `--json`\n- `--non-recursive`, `--no-print-prefix-inclusive`\n\n## Example\n\n```\n$ aerospace menu-bar\nSublime Text / About Sublime Text\nSublime Text / Check for Updates...\nSublime Text / Settings... / Settings\nSublime Text / Settings... / Key Bindings\nFile / New File\nFile / Close File\n\n$ aerospace menu-bar --non-recursive\nSublime Text\nFile\n\n$ aerospace menu-bar --match-path-prefix sublime settings\nSublime Text / Settings... / Settings\nSublime Text / Settings... / Key Bindings\n\n$ aerospace menu-bar --match-path-prefix sublime settings --no-print-prefix-exclusive\nSettings... / Settings\nSettings... / Key Bindings\n\n$ aerospace menu-bar --match-path-prefix sublime settings --no-print-prefix-inclusive\nSettings\nKey Bindings\n\n$ aerospace menu-bar --click-first # Clicks \"About Sublime Text\"\n\n$ aerospace menu-bar --match-path-suffix \"new file\"\nFile / New File\n\n$ aerospace menu-bar --match-leaf \"new file\" --click-first # Open new window\n```\n\n## Use cases\n\n**1.** Replacement for AppleScript https://nikitabobko.github.io/AeroSpace/goodies#open-a-new-window-with-applescript\n\n```toml\n[mode.main.binding]\n    alt-s = \"menu-bar --app-bundle-id com.apple.Safari --match-leaf 'new window' --click-first || exec /usr/bin/open -b com.apple.Safari`\"\n```\n\n(assumes #278 )\n\nEven further, I think this use case is important enough to introduce aliases for the above command: `new-window-or-open` and `new-tab-or-open`\n\n## new-window-or-open\n\n```\naerospace new-window-or-open (--app-bundle-id <id> | --app-bundle-path <path>) [--menu-title <new-window-menu-title>]\n\nAlias for:\n    menu-bar --app-bundle-id <id> --match-leaf <new-window-menu-title> --click-first || \\\n        exec /usr/bin/open -b <id>\n\nOptions:\n--menu-title <new-window-menu-title>\n  If not specified, depending on your systems language, <new-window-menu-title> falls back to \"(new window|${NEW_WINDOW_IN_CURRENT_LOCALE})\"\n```\n\n## Open questions\n\n- What if submenu path contains a dash that we want to match by?\n- Replace \"path\" with \"submenu\"? Unfortunately, the name longer :(\n- What should happen when there are multiple instances of one application which are matched by `--app-bundle-id`?\n- What is the right way to get the current locale for the purpose of `NEW_WINDOW_IN_CURRENT_LOCALE`?\n- Integration with `fzf`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1403/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1357",
      "id": 3030893810,
      "node_id": "I_kwDOJl1IZM60p8Ty",
      "number": 1357,
      "title": "Feature: drag windows between workspaces of the same monitor with the mouse",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 8101101502,
          "node_id": "LA_kwDOJl1IZM8AAAAB4tz_vg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/priority-minor",
          "name": "priority-minor",
          "color": "006b75",
          "default": false,
          "description": ""
        },
        "2": {
          "id": 8749200263,
          "node_id": "LA_kwDOJl1IZM8AAAACCX4zhw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/mouse",
          "name": "mouse",
          "color": "ef07ff",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-04-30T10:44:46Z",
      "updated_at": "2025-06-08T17:36:25Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps:\n\n1. Grab a window with mouse\n2. While holding the window, switch to another workspace via keyboard\n3. Release the window\n\nExpected: the window is moved between workspaces\nActual: the window \"ungrabbed\" by AeroSpace on step 2\n\nMotivation & use cases:\n1. The suggested behavior feels natural\n2. The feature is useful for users who rarely move windows between workspaces manually and don't want to waste keyboard shortcuts on `move-node-to-workspace`\n\nRelated: #1001 #2 ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1357/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1345",
      "id": 3020034614,
      "node_id": "I_kwDOJl1IZM60AhI2",
      "number": 1345,
      "title": "Task: proofread the documentation guide.adoc and commands.adoc",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-04-25T13:14:22Z",
      "updated_at": "2025-05-17T12:45:43Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The documentation has not significantly changed from the very fist initial version that I wrote and I have never proofread it (even with some kind of basic spell checker).\n\nIt's for sure needs more love, and at least proofreading.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1345/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1342",
      "id": 3018642165,
      "node_id": "I_kwDOJl1IZM6z7NL1",
      "number": 1342,
      "title": "Maintenance: detect dead code on CI via periphery",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8511225920,
          "node_id": "LA_kwDOJl1IZM8AAAAB-08AQA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/maintenance",
          "name": "maintenance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-04-24T23:18:26Z",
      "updated_at": "2025-04-24T23:21:07Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/peripheryapp/periphery\n\ndiagnostics can be ignored via:\n```\n// periphery:ignore\nclass MyClass {}\n\n// periphery:ignore:parameters unusedOne,unusedTwo\nfunc someFunc(used: String, unusedOne: String, unusedTwo: String) {\n    print(used)\n}\n```\nhttps://github.com/peripheryapp/periphery?tab=readme-ov-file#comment-commands",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1342/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1341",
      "id": 3018628564,
      "node_id": "I_kwDOJl1IZM6z7J3U",
      "number": 1341,
      "title": "Support GNU style equals in CLI. For example: `list-workspaces --empty=no`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-04-24T23:05:31Z",
      "updated_at": "2025-04-24T23:08:09Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In addition to how it currently works:\n```\nlist-workspaces --empty no\nlist-workspaces --format %{workspace}\n```\n\nit should be possible to do the following:\n```\nlist-workspaces --empty=no\nlist-workspaces --format=%{workspace}\n```\n\nIt goes without saying that it should be supported on the CLI parser level and work for all commands",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1341/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1325",
      "id": 3007156756,
      "node_id": "I_kwDOJl1IZM6zPZIU",
      "number": 1325,
      "title": "Notion: focus bug. 0.18.0 regression",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7672274482,
          "node_id": "LA_kwDOJl1IZM8AAAAByU2eMg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/regression",
          "name": "regression",
          "color": "993B62",
          "default": false,
          "description": "The behavior changed between versions"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-04-20T18:19:47Z",
      "updated_at": "2025-07-21T18:04:20Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Steps: run `workspace-back-and-forth` for Notion login window (you don't even need to login) and Firefox window in back and forth style. In 1 out 4 cases, the Notion app steals the focus and doesn't allow to switch away from it\n\n1 monitor\n\ncmd-tab works fine\n\n`AeroSpace v0.0.0-SNAPSHOT 64ac5f2cf56c0dff28cd921ceae13d3e29d18854`\n\nNotion version Version 4.8.4 (5738c66)\n\nOriginally reported by @FelixLisczyk https://github.com/nikitabobko/AeroSpace/discussions/1294\n\nAnother report: https://github.com/nikitabobko/AeroSpace/discussions/1447",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1325/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1314",
      "id": 3002156999,
      "node_id": "I_kwDOJl1IZM6y8UfH",
      "number": 1314,
      "title": "feature: `aerospace show-notification` and `aerospace show-popup` commands",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 8833150849,
          "node_id": "LA_kwDOJl1IZM8AAAACDn8vgQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/ui",
          "name": "ui",
          "color": "b2a6c4",
          "default": false,
          "description": "The issue involves working on UI"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-04-17T11:00:15Z",
      "updated_at": "2025-06-24T10:47:09Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The concrete synopsis and commands names are yet to be defined, but I'm sure that I want to have commands like these.\n\nAeroSpace is a window manager, but I ok adding useful features here and there around scripting the macOS itself (like the `volume` command that we already have). AppleScript is awful\n\nUsecases:\n1. Test when AeroSpace callbacks are called: `on-focus-changed = 'show-popup hello'`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1314/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1311",
      "id": 2999762750,
      "node_id": "I_kwDOJl1IZM6yzL8-",
      "number": 1311,
      "title": "Crash \"AppBundle.MacWindow is already unbound\". `focus` command over floating windows",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7672274482,
          "node_id": "LA_kwDOJl1IZM8AAAAByU2eMg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/regression",
          "name": "regression",
          "color": "993B62",
          "default": false,
          "description": "The behavior changed between versions"
        },
        "2": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-04-16T14:02:14Z",
      "updated_at": "2026-01-27T03:33:44Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000100271d7c $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001001072bc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000100107568 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000100086938 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 704\r\n    4   AeroSpace                           0x00000001000893f5 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x00000001000874d9 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x000000010006c439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n    7   AeroSpace                           0x00000001000b07b5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x00000001000cda39 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ10_ + 1\r\n    10  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001000cc6a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x00000001000c9b45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001000b0305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001000643f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x0000000274c8483d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-04-16 07:01:25 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4 (Build 24E248)\r\nCoordinate: AppBundle/TreeNode.swift:121:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001002713a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100107674 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000100086938 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 704\r\n3   AeroSpace                           0x00000001000893f5 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x00000001000874d9 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x000000010006c439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n6   AeroSpace                           0x00000001000b07b5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x00000001000cda39 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ10_ + 1\r\n9   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001000cc6a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x00000001000c9b45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001000b0305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001000643f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x0000000274c8483d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n_Originally posted by @fdgngrpjk in https://github.com/nikitabobko/AeroSpace/discussions/1307_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1311/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1305",
      "id": 2997466215,
      "node_id": "I_kwDOJl1IZM6yqbRn",
      "number": 1305,
      "title": "Reduce wallpaper flickering when switching workspaces",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7672274482,
          "node_id": "LA_kwDOJl1IZM8AAAAByU2eMg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/regression",
          "name": "regression",
          "color": "993B62",
          "default": false,
          "description": "The behavior changed between versions"
        },
        "1": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-04-15T19:56:43Z",
      "updated_at": "2025-04-28T22:27:46Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "AeroSpace sends requests to applications to move their windows concurrently which might result in wallpaper flickering if the window we are about to is slower at answer AX requests.\n\nThe proposal is:\n1. Fire focus and move requests to windows that should come foreground concurrently, but wait for their completion\n2. Concurrently fire move-to-corner requests to windows that should disappear\n\nOriginally proposed by @ilyaluk https://github.com/nikitabobko/AeroSpace/discussions/1296#discussioncomment-12841563 (and more info in the thread)",
      "closed_by": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1305/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1293",
      "id": 2992248199,
      "node_id": "I_kwDOJl1IZM6yWhWH",
      "number": 1293,
      "title": "Adobe Apps are mistakenly floating by default",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-04-14T08:10:10Z",
      "updated_at": "2026-01-05T05:51:44Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\r\n<details>\r\n  <summary>complete dump</summary>\r\n\r\n```\r\n\r\ncom.adobe.Photoshop.window.30461 windowId: 30461\r\ncom.adobe.Photoshop.window.30461 workspace: Terminal\r\ncom.adobe.Photoshop.window.30461 treeNodeParent: Workspace(name: 'Terminal', isVisible: 'true', isEffectivelyEmpty: 'false', doKeepAlive: 'true')\r\ncom.adobe.Photoshop.window.30461 isWindow: true\r\ncom.adobe.Photoshop.window.30461 isDialogHeuristic: true\r\ncom.adobe.Photoshop.window.30461 AXTitle: Optional(Adobe Photoshop 2025)\r\ncom.adobe.Photoshop.window.30461 AXRole: Optional(AXWindow)\r\ncom.adobe.Photoshop.window.30461 AXSubrole: Optional(AXStandardWindow)\r\ncom.adobe.Photoshop.window.30461 AXFocused: Optional(1)\r\ncom.adobe.Photoshop.window.30461 AXFullScreen: Optional(0)\r\ncom.adobe.Photoshop.window.30461 AXFrame: Optional(<AXValue 0x600001eda480> {value = x:10.000000 y:35.000000 w:3340.000000 h:1372.000000 type = kAXValueCGRectType})\r\ncom.adobe.Photoshop.window.30461 AXPosition: Optional(<AXValue 0x600000517600> {value = x:10.000000 y:35.000000 type = kAXValueCGPointType})\r\ncom.adobe.Photoshop.window.30461 AXGrowArea: nil\r\ncom.adobe.Photoshop.window.30461 AXMinimizeButton: AXUIElement {\r\ncom.adobe.Photoshop.window.30461      AXRole: Optional(AXButton)\r\ncom.adobe.Photoshop.window.30461      AXTitle: nil\r\ncom.adobe.Photoshop.window.30461      AXSubrole: Optional(AXMinimizeButton)\r\ncom.adobe.Photoshop.window.30461      AXEnabled: Optional(1)\r\ncom.adobe.Photoshop.window.30461      AXParent: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXTopLevelUIElement: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXWindow: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.adobe.Photoshop.window.30461 }\r\ncom.adobe.Photoshop.window.30461 AXDocument: nil\r\ncom.adobe.Photoshop.window.30461 AXSections: [\r\ncom.adobe.Photoshop.window.30461         Optional({\r\ncom.adobe.Photoshop.window.30461             SectionDescription = Content;\r\ncom.adobe.Photoshop.window.30461             SectionObject = \"<AXUIElement 0x600000515650> {pid=83805}\";\r\ncom.adobe.Photoshop.window.30461             SectionUniqueID = AXContent;\r\ncom.adobe.Photoshop.window.30461         })\r\ncom.adobe.Photoshop.window.30461 ]\r\ncom.adobe.Photoshop.window.30461 AXCloseButton: AXUIElement {\r\ncom.adobe.Photoshop.window.30461      AXRole: Optional(AXButton)\r\ncom.adobe.Photoshop.window.30461      AXTitle: nil\r\ncom.adobe.Photoshop.window.30461      AXSubrole: Optional(AXCloseButton)\r\ncom.adobe.Photoshop.window.30461      AXEnabled: Optional(1)\r\ncom.adobe.Photoshop.window.30461      AXParent: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXTopLevelUIElement: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXWindow: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.adobe.Photoshop.window.30461 }\r\ncom.adobe.Photoshop.window.30461 AXMain: Optional(1)\r\ncom.adobe.Photoshop.window.30461 AXActivationPoint: Optional(<AXValue 0x600000517600> {value = x:-1.000000 y:1419.000000 type = kAXValueCGPointType})\r\ncom.adobe.Photoshop.window.30461 AXFullScreenButton: nil\r\ncom.adobe.Photoshop.window.30461 AXProxy: nil\r\ncom.adobe.Photoshop.window.30461 AXDefaultButton: nil\r\ncom.adobe.Photoshop.window.30461 AXMinimized: Optional(0)\r\ncom.adobe.Photoshop.window.30461 AXParent: Optional(<AXUIElement Application 0x6000005658c0> {pid=83805})\r\ncom.adobe.Photoshop.window.30461 AXTitleUIElement: nil\r\ncom.adobe.Photoshop.window.30461 AXCancelButton: nil\r\ncom.adobe.Photoshop.window.30461 AXModal: Optional(0)\r\ncom.adobe.Photoshop.window.30461 AXZoomButton: AXUIElement {\r\ncom.adobe.Photoshop.window.30461      AXRole: Optional(AXButton)\r\ncom.adobe.Photoshop.window.30461      AXTitle: nil\r\ncom.adobe.Photoshop.window.30461      AXSubrole: Optional(AXZoomButton)\r\ncom.adobe.Photoshop.window.30461      AXEnabled: Optional(1)\r\ncom.adobe.Photoshop.window.30461      AXParent: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXTopLevelUIElement: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      AXWindow: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop.window.30461      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.adobe.Photoshop.window.30461 }\r\ncom.adobe.Photoshop.window.30461 AXSize: Optional(<AXValue 0x60000057b450> {value = w:3340.000000 h:1372.000000 type = kAXValueCGSizeType})\r\ncom.adobe.Photoshop.window.30461 AXToolbarButton: nil\r\ncom.adobe.Photoshop.window.30461 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.adobe.Photoshop              AXRole: Optional(AXApplication)\r\ncom.adobe.Photoshop              AXTitle: Optional(Photoshop 2025)\r\ncom.adobe.Photoshop              AXFunctionRowTopLevelElements: [\r\ncom.adobe.Photoshop              ]\r\ncom.adobe.Photoshop              AXFrame: nil\r\ncom.adobe.Photoshop              AXFocusedUIElement: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop              AXFrontmost: Optional(1)\r\ncom.adobe.Photoshop              AXExtrasMenuBar: nil\r\ncom.adobe.Photoshop              AXMainWindow: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop              AXFocusedWindow: AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop              AXMenuBar: Optional(<AXUIElement 0x60000056fc30> {pid=83805})\r\ncom.adobe.Photoshop              AXWindows: [\r\ncom.adobe.Photoshop                  AXUIElement(windowId=30461, title=\"Adobe Photoshop 2025\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.adobe.Photoshop              ]\r\ncom.adobe.Photoshop              AXSize: nil\r\ncom.adobe.Photoshop              AXPosition: nil\r\ncom.adobe.Photoshop              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n```\r\n</details>\r\n\r\n_Originally posted by @tilman-schieber in https://github.com/nikitabobko/AeroSpace/discussions/1285",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1293/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1287",
      "id": 2991172125,
      "node_id": "I_kwDOJl1IZM6ySaod",
      "number": 1287,
      "title": "Optimization: if you switch to a workspace with single tiling window, don't waste AX requests on moving invisible windows to the corner of the screen",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-04-13T10:07:37Z",
      "updated_at": "2025-04-13T22:06:54Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If there is only singe tiling window on the workspace, it will overlap other windows anyway",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1287/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1235",
      "id": 2943959348,
      "node_id": "I_kwDOJl1IZM6veUE0",
      "number": 1235,
      "title": "Make `debug-windows` command to capture windows that are not treated as windows from AeroSpace perspective",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-24T17:24:56Z",
      "updated_at": "2025-04-20T18:35:18Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Unfortunately, `debug-windows` command only captures AX info from windows that are treated as windows from AeroSpace perspective. It makes it harder to debug why windows were falsely treated as windows\n\nMotivation: https://github.com/nikitabobko/AeroSpace/discussions/1234",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1235/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1220",
      "id": 2928885468,
      "node_id": "I_kwDOJl1IZM6ukz7c",
      "number": 1220,
      "title": "When you press space in completion popup in Calendar app, AeroSpace refocuses to the next window on the workspace",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-18T15:15:14Z",
      "updated_at": "2025-04-26T14:26:26Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Stumbling on a bit of an annoying quirk quite often. \r\n\r\nThis happens f you have both the Apple Calendar app, and one or more other applications open in one workspace. \r\nIf you are in the Calendar app, and create a new event - this creates a small pop-up to type in the event details - Aerospace will switch to the next window after a few keystrokes. \r\n\r\nThis gets annoying quickly, especially if that next window is Slack or something that allows typing or messaging. \r\nWorkaround is temporarily closing the other window(s) and just having the Calendar app open in a workspace. \r\n\r\n**Steps to reproduce**\r\n1. Have Calendar and another application open\r\n2. Create a new Calendar event, start typing in the title\r\n3. Observe what happens after a few keystrokes\r\n\r\n**Expected result**\r\nThe pop-up stays in focus and you can finish the event\r\n\r\n**Actual result**\r\nThe pop-up is unfocused, and the next available window is selected.\r\n\r\n_Originally posted by @hiddekramermusic in https://github.com/nikitabobko/AeroSpace/discussions/1219_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1220/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1914
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1215",
      "id": 2923004245,
      "node_id": "I_kwDOJl1IZM6uOYFV",
      "number": 1215,
      "title": "Big refactoring: rewrite core `TreeNode` mutable double-linked tree data structure to immutable single-linked persistent tree",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-03-16T12:43:34Z",
      "updated_at": "2026-01-18T03:07:05Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`TreeNode` is a core data structure of AeroSpace and unfortunately it's mutable.\n\nThe proposal is to rewrite it to immutable single-linked persistent tree.\n\nMotivation:\n1. Stability. The current logic for binding two `TreeNode` is fragile and sometimes leads to hard to debug crashes: https://github.com/nikitabobko/AeroSpace/issues/706\n2. Performance. Once we make AeroSpace multi-threaded to handle hanging apps (https://github.com/nikitabobko/AeroSpace/issues/131), instead of \"drawing\" the layout on main thread and sending requests to app-threads, it makes sense to pass the tree data structure to each app-thread so that it could draw its part of the tree, which effectively makes the drawing multi-threaded by number of apps. Multi-threading drawing will help to reduce threads context switching for cases when apps have several visible windows. Though the tree has to be traversed multiple times in multi-threaded drawing approach. Precise performance measurements needs to be done.\n3. It makes it possible to take snapshots of the tree on its every modification before windows start \"dying out\" when the screen is locked. It should help to fix this issue: https://github.com/nikitabobko/AeroSpace/issues/1216\n4. Features like `aerospace undo` become possible (though, it may be too far fetched, who would need such a feature?)\n\nRelated: https://github.com/nikitabobko/AeroSpace/issues/1257",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1215/reactions",
        "total_count": 12,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 12,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1190",
      "id": 2903755370,
      "node_id": "I_kwDOJl1IZM6tE8pq",
      "number": 1190,
      "title": "Add `--parent` flag to `move`/`move-node-to-workspace`/`move-node-to-monitor` commands",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-07T19:23:48Z",
      "updated_at": "2025-07-08T12:00:45Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`move` command moves the focused window around.\n\n`move --parent` should move the parent container of the focused window around.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1190/reactions",
        "total_count": 7,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 7,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1162",
      "id": 2889735815,
      "node_id": "I_kwDOJl1IZM6sPd6H",
      "number": 1162,
      "title": "Add `--monitor-pattern` filtering flag to `list-monitors` command",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-02T19:19:03Z",
      "updated_at": "2025-03-10T13:15:24Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`--monitor-pattern <monitor-pattern>` filters monitors similarly to how it's done by `workspace-to-monitor-force-assignment`.\n\nExamples:\n```\n$ aerospace list-monitors\n1 | Built-in Retina Display\n2 | DELL U2723QE\n\n$ aerospace list-monitors --monitor-pattern 'dell'\n2 | DELL U2723QE\n```\n\nUse case: introspection/transparency/discoverability. The flag makes it easier to understand which monitor will be selected in `workspace-to-monitor-force-assignment`",
      "closed_by": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1162/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1153",
      "id": 2886824791,
      "node_id": "I_kwDOJl1IZM6sEXNX",
      "number": 1153,
      "title": "Crash when `exec-on-window-detected` couldn't create a process",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-28T10:47:50Z",
      "updated_at": "2025-02-28T11:05:20Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I had Excel sheets open on two different spaces, switching back and forth between them with MacOS's built in \"move focus to next window\" shortcut very often (comparing contents visually).\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: The operation couldn’t be completed. Resource temporarily unavailable\r\nVersion: 0.17.1-Beta\r\nGit hash: 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nDate: 2025-02-28 10:03:25 +0000\r\nmacOS version: Version 15.3.1 (Build 24D70)\r\nCoordinate: AppBundle/focus.swift:172:48 onWorkspaceChanged(_:_:)\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\nrefreshSessionEvent: Optional(Common.RefreshSessionEvent.socketServer)\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100c160dc $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 1496\r\n1   AeroSpace                           0x0000000100c3ce18 $ss6ResultO6CommonE10getOrThrow_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   AeroSpace                           0x0000000100ab69d4 $s9AppBundle18onWorkspaceChanged33_7642A5C3292B9DD5C5AAA7E6B763F792LLyySS_SStF + 1116\r\n3   AeroSpace                           0x0000000100ab64d0 $s9AppBundle28checkOnFocusChangedCallbacksyyF + 856\r\n4   AeroSpace                           0x0000000100a5a998 $s9AppBundle14refreshSession_26screenIsDefinitelyUnlocked7startup4bodyx6Common07RefreshD5EventO_S2bxyXEtlFAF12ServerAnswerV_Tg5 + 752\r\n5   AeroSpace                           0x0000000100aca81c $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaScMYccfU1_TY0_ + 104\r\n6   AeroSpace                           0x0000000100acac2d $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaScMYccfU1_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000026c511035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n_Originally posted by @exic in https://github.com/nikitabobko/AeroSpace/discussions/1151_",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1153/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1097",
      "id": 2856141096,
      "node_id": "I_kwDOJl1IZM6qPUEo",
      "number": 1097,
      "title": "Unreliable focus change when closing windows. Focus race condition with macOS",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-02-16T14:43:52Z",
      "updated_at": "2025-11-06T14:18:48Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When the window is closed, AeroSpace receives two events from macOS:\n- The window is destroyed\n- The focused window is changed\n\nThe events system is unreliable in macOS. The events might come in whatever order, or sometimes the events might not be even delivered 🤷 \n\nAeroSpace logic relies neither on the nature of the events nor on their order. AeroSpace only uses events as a signal to \"re-evaluate the world\" (check if windows no longer exist, check if new windows are appeared, re-layout the windows)\n\n**And here comes the problem**, whenever AeroSpace detects that the window is destroyed, AeroSpace issues a focus request to focus the previously focused window on the workspace of the destroyed window. We do so to keep the focused workspace focused (Pointer in the code: `MacWindow.swift:garbageCollect`). Unfortunately, AeroSpace plays a \"race condition\" game with the macOS that tries to focus next window of the app.\n\nIt leads to the following user facing issue: AeroSpace may lose the \"race condition\" https://github.com/nikitabobko/AeroSpace/issues/854 https://github.com/nikitabobko/AeroSpace/issues/571\n\nWhat is the proposed solution to fix the problem? I don't have one. I don't know. Until it's clear how to fix the issue, the issue exists for the documentation purposes.\n\nAlso read the thread: https://github.com/nikitabobko/AeroSpace/issues/571\n\nInteresting case:\n- https://github.com/nikitabobko/AeroSpace/discussions/1371",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1097/reactions",
        "total_count": 18,
        "+1": 14,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 4
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1064",
      "id": 2831217947,
      "node_id": "I_kwDOJl1IZM6owPUb",
      "number": 1064,
      "title": "SIGABORT while parsing an invalid config",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8101101502,
          "node_id": "LA_kwDOJl1IZM8AAAAB4tz_vg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/priority-minor",
          "name": "priority-minor",
          "color": "006b75",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-04T20:26:13Z",
      "updated_at": "2025-02-24T07:45:09Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n[[[on-window-detected]]\nif.app-id = 'com.apple.findmy'\nrun = 'layout floating'\n\n[on-window-detected]]\nif.app-id = 'com.openai.chat'\nrun = 'layout floating'\n```\n\nFails with:\n\n```\nAssertion failed: (is_bare_key_character(*cp) || is_string_delimiter(*cp)), function parse_key, file toml.hpp, line 14038.\nfish: Job 1, './.debug/AeroSpaceApp --config-…' terminated by signal SIGABRT (Abort)\n```\n\nThe problem should be further investigated and reported to https://github.com/LebJe/TOMLKit and/or https://github.com/marzer/tomlplusplus/\n\nOriginally reported at: https://github.com/nikitabobko/AeroSpace/discussions/1061",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1064/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1042",
      "id": 2811469460,
      "node_id": "I_kwDOJl1IZM6nk56U",
      "number": 1042,
      "title": "docs: Add documentation about `AeroSpace.app` CLI flags",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-26T11:17:11Z",
      "updated_at": "2025-04-25T13:17:08Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "These flags should be documented\n```\n$ /Applications/AeroSpace.app/Contents/MacOS/AeroSpace -h\nUSAGE: /Applications/AeroSpace.app/Contents/MacOS/AeroSpace [<options>]\n\nOPTIONS:\n  -h, --help              Print help\n  -v, --version           Print AeroSpace.app version\n  --started-at-login      Make AeroSpace.app think that it is started at login\n                          When AeroSpace.app starts at login it runs 'after-login-command' commands\n  --config-path <path>    Config path. It will take priority over ~/.aerospace.toml\n                          and ${XDG_CONFIG_HOME}/aerospace/aerospace.toml\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1042/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1041",
      "id": 2811467025,
      "node_id": "I_kwDOJl1IZM6nk5UR",
      "number": 1041,
      "title": "Add `automatically-unhide-macos-hidden-apps-exceptions` config option",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-26T11:11:11Z",
      "updated_at": "2025-01-26T11:11:32Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The proposal:\n```toml\nautomatically-unhide-macos-hidden-apps = true\nautomatically-unhide-macos-hidden-apps-exceptions = ['com.github.wez.wezterm']\n```\n\n1. Apps in the list should be excluded from the `automatically-unhide-macos-hidden-apps` logic.\n2. Specifying non-empty `automatically-unhide-macos-hidden-apps-exceptions` array while `automatically-unhide-macos-hidden-apps = false` should be config error\n\nUse cases:\n1. Discord app is misbehaving. Instead of closing windows for real, it uses \"hide app\" when you try to close its window\n2. Raycast supposedly uses \"hide app\" to toggle windows https://github.com/nikitabobko/AeroSpace/discussions/1040",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1041/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1027",
      "id": 2797611913,
      "node_id": "I_kwDOJl1IZM6mwCuJ",
      "number": 1027,
      "title": "Maintenance: Auto-generate `./docs/commands.adoc` file",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-19T12:57:15Z",
      "updated_at": "2025-01-19T12:57:15Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This task should be done after #278 \n\nBecause after #278 the separation on \"action\" and \"query\" commands will disappear.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1027/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1024",
      "id": 2797262856,
      "node_id": "I_kwDOJl1IZM6mutgI",
      "number": 1024,
      "title": "Improve `focus-back-and-forth`: remember the whole focus history stack",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-01-18T22:50:24Z",
      "updated_at": "2025-12-09T11:33:38Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Excerpt from the docs:\n\n> AeroSpace stores only one previously focused window in history, which means that if you close the previous window, focus-back-and-forth has no window to switch focus to. In that case, the command will exit with non-zero exit code.\n> \n> That’s why it may be preferred to combine focus-back-and-forth with workspace-back-and-forth:\n> \n> `aerospace focus-back-and-forth || aerospace workspace-back-and-forth`\n\nThis is bad and should be improved. We should store the whole focus history stack. Optionally making it available for users via smth like `list-focus-history-stack`\n\n## Discussions\n\n- https://github.com/nikitabobko/AeroSpace/discussions/1790\n- https://github.com/nikitabobko/AeroSpace/discussions/942",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1024/reactions",
        "total_count": 11,
        "+1": 11,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1863
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1012",
      "id": 2797170348,
      "node_id": "I_kwDOJl1IZM6muW6s",
      "number": 1012,
      "title": "Investigate a possibility to use `CGEvent.tapCreate` for global hotkeys",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7151038032,
          "node_id": "LA_kwDOJl1IZM8AAAABqjwuUA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/1.0-blocker",
          "name": "1.0-blocker",
          "color": "F27AD4",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-01-18T20:36:22Z",
      "updated_at": "2025-10-04T19:15:01Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, we use Carbon API. It's a deprecated framework, but since a looot of apps use, I don't think that Apple is gonna drop it in foreseeable future\n\nThe alternative API I recently found is \nhttps://developer.apple.com/documentation/coregraphics/cgevent/1454426-tapcreate\nhttps://forums.developer.apple.com/forums/thread/735223\n\nCopying the response from apple forum in case it gets deleted:\n```\nI was recently asked a very similar question in a DTS incident. Pasted in below are the relevant snippets from my response.\n\nShare and Enjoy\n—\nQuinn “The Eskimo!” @ Developer Technical Support @ Apple\nlet myEmail = \"eskimo\" + \"1\" + \"@\" + \"apple.com\"\n\nThere are two parts to creating an app like this:\n\n  - Ensuring your app runs in the background (A)\n\n  - Monitoring key presses (B)\n\nI’ll cover each in turn.\n\nWith regards point A, running in the background, the approach I recommend is to split the core of your app off into a separate app that you then nest within your main app. Set the [LSUIElement property](https://developer.apple.com/documentation/bundleresources/information_property_list/lsuielement) on the nested app, so it doesn’t show up in the Dock or have its own menu bar.\n\nIn that nested app, use a [menu bar status item](https://developer.apple.com/documentation/appkit/menus_cursors_and_the_dock#2871629) to present your UI.\n\nNote If you’re using SwiftUI, there’s now a [SwiftUI equivalent](https://developer.apple.com/documentation/swiftui/scenes#creating-a-menu-bar-extra).\n\nIn your main app, have a UI to control whether the nested app runs as a login item, that is, runs while the user is logged in. Use the [SMAppService.loginItem(identifier:) method](https://developer.apple.com/documentation/servicemanagement/smappservice/3945411-loginitem) to configure this.\n\nIf you need to support older system, use the [SMLoginItemSetEnabled function](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled) instead..\n\nIMPORTANT App Review has specific constraints about the use of login items. See clause 2.4.5(iii) of the [App Store Review Guidelines](https://developer.apple.com/app-store/review/).\n\nWith regards B, monitoring key presses, there are a variety of APIs to monitor keyboard events, including:\n\n  - The [CGEventTap subsystme](https://developer.apple.com/documentation/coregraphics/cgevent/1454426-tapcreate)\n\n  - AppKit’s [global event monitor](https://developer.apple.com/documentation/appkit/nsevent/1535472-addglobalmonitorforevents)\n\n  - RegisterEventHotKey\n\nOf these the one I like the most is RegisterEventHotKey. However, it’s intimately tied to the legacy Carbon toolbox and thus I can’t honestly recommend it.\n\nOf the remaining options, I prefer CGEventTap because of its interactions with TCC. More on this below.\n\nNote This is called CGEventTap because of the API name in C-based languages, CGEventTapCreate.\n\nTCC stands for Transparency, Consent, and Control. It’s the subsystem behind the privileges in System Settings > Privacy and Security. To listen for keyboard events you’ll need the Input Monitoring privilege.\n\nOne reason I like CGEventTap is that it’s clearly associated with the APIs to determine whether you have that privilege (CGPreflightListenEventAccess) and to request that privilege (CGRequestListenEventAccess).\n\nCGEventTap is compatible with the App Sandbox, starting with macOS 10.15.\n\nCGEventTap is a bit tricky to use from Swift. See [this post](https://developer.apple.com/forums/thread/707680?answerId=716892022#716892022) for an example.\n```\n\nMaybe the alternative API allows to distinguish left and right modifiers (https://github.com/nikitabobko/AeroSpace/issues/28) and `fn` key (https://github.com/nikitabobko/AeroSpace/discussions/1011)\n\nRelated:\n- https://github.com/nikitabobko/AeroSpace/discussions/1472",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1012/reactions",
        "total_count": 6,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 2,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/992",
      "id": 2797145372,
      "node_id": "I_kwDOJl1IZM6muQ0c",
      "number": 992,
      "title": "docs: Add `./install-from-sources.sh` installation method to documentation",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-18T19:29:19Z",
      "updated_at": "2025-06-20T22:49:02Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/nikitabobko/AeroSpace/issues/530",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/992/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/975",
      "id": 2782655434,
      "node_id": "I_kwDOJl1IZM6l2_PK",
      "number": 975,
      "title": "Investigate and fix memory leaks in TOMLKit",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-12T19:31:05Z",
      "updated_at": "2025-06-20T22:49:02Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I can see memory leaks during parsing the default-config.toml in TOMLKit\r\n\r\nhttps://github.com/LebJe/TOMLKit/issues/26",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/975/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/968",
      "id": 2782496392,
      "node_id": "I_kwDOJl1IZM6l2YaI",
      "number": 968,
      "title": "Improve docs: describe workspaces mental model",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8514268782,
          "node_id": "LA_kwDOJl1IZM8AAAAB-31ubg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/docs",
          "name": "docs",
          "color": "f9d0c4",
          "default": false,
          "description": "The issue is about docs improvement"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-12T13:50:36Z",
      "updated_at": "2025-06-20T22:49:03Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/nikitabobko/AeroSpace/discussions/875",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/968/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/962",
      "id": 2782124453,
      "node_id": "I_kwDOJl1IZM6l09ml",
      "number": 962,
      "title": "Feat: automatically-quit-apps-with-zero-windows",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-01-11T20:02:44Z",
      "updated_at": "2025-06-20T22:49:04Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Draft:\r\n\r\n```diff\r\ndiff --git a/Sources/AppBundle/config/Config.swift b/Sources/AppBundle/config/Config.swift\r\nindex 2c0aad91..19009368 100644\r\n--- a/Sources/AppBundle/config/Config.swift\r\n+++ b/Sources/AppBundle/config/Config.swift\r\n@@ -40,6 +40,7 @@ struct Config: Copyable {\r\n     var defaultRootContainerOrientation: DefaultContainerOrientation = .auto\r\n     var startAtLogin: Bool = false\r\n     var automaticallyUnhideMacosHiddenApps: Bool = false\r\n+    var automaticallyQuitAppsWithZeroWindows: AutomaticallyQuitAppsWithZeroWindows = .off\r\n     var accordionPadding: Int = 30\r\n     var enableNormalizationOppositeOrientationForNestedContainers: Bool = true\r\n     var execOnWorkspaceChange: [String] = [] // todo deprecate\r\n@@ -58,6 +59,12 @@ struct Config: Copyable {\r\n     var preservedWorkspaceNames: [String] = []\r\n }\r\n\r\n+enum AutomaticallyQuitAppsWithZeroWindows: String, CaseIterable {\r\n+    case off\r\n+    case all\r\n+    case allExceptFinder = \"all-except-finder\"\r\n+}\r\n+\r\n enum DefaultContainerOrientation: String {\r\n     case horizontal, vertical, auto\r\n }\r\ndiff --git a/Sources/AppBundle/config/parseConfig.swift b/Sources/AppBundle/config/parseConfig.swift\r\nindex bca2b5d6..bd9bef95 100644\r\n--- a/Sources/AppBundle/config/parseConfig.swift\r\n+++ b/Sources/AppBundle/config/parseConfig.swift\r\n@@ -102,6 +102,7 @@ private let configParser: [String: any ParserProtocol<Config>] = [\r\n\r\n     \"start-at-login\": Parser(\\.startAtLogin, parseBool),\r\n     \"automatically-unhide-macos-hidden-apps\": Parser(\\.automaticallyUnhideMacosHiddenApps, parseBool),\r\n+    \"automatically-quit-apps-with-zero-windows\": Parser(\\.automaticallyQuitAppsWithZeroWindows, parseAutomaticallyQuitApps),\r\n     \"accordion-padding\": Parser(\\.accordionPadding, parseInt),\r\n     \"exec-on-workspace-change\": Parser(\\.execOnWorkspaceChange, parseExecOnWorkspaceChange),\r\n     \"exec\": Parser(\\.execConfig, parseExecConfig),\r\n@@ -275,6 +276,11 @@ private func parseLayout(_ raw: TOMLValueConvertible, _ backtrace: TomlBacktrace\r\n         .flatMap { $0.parseLayout().orFailure(.semantic(backtrace, \"Can't parse layout '\\($0)'\")) }\r\n }\r\n\r\n+private func parseAutomaticallyQuitApps(_ raw: TOMLValueConvertible, _ backtrace: TomlBacktrace) -> ParsedToml<AutomaticallyQuitAppsWithZeroWindows> {\r\n+    parseString(raw, backtrace)\r\n+        .flatMap { parseEnum($0, AutomaticallyQuitAppsWithZeroWindows.self).toParsedToml(backtrace) }\r\n+}\r\n+\r\n private func skipParsing<T>(_ value: T) -> (_ raw: TOMLValueConvertible, _ backtrace: TomlBacktrace) -> ParsedToml<T> {\r\n     { _, _ in .success(value) }\r\n }\r\ndiff --git a/Sources/AppBundle/layout/refresh.swift b/Sources/AppBundle/layout/refresh.swift\r\nindex 141e50b7..ca5bc5ed 100644\r\n--- a/Sources/AppBundle/layout/refresh.swift\r\n+++ b/Sources/AppBundle/layout/refresh.swift\r\n@@ -35,10 +35,28 @@ func refreshSession<T>(screenIsDefinitelyUnlocked: Bool, startup: Bool = false,\r\n         updateTrayText()\r\n         normalizeLayoutReason(startup: startup)\r\n         layoutWorkspaces()\r\n+\r\n+        if config.automaticallyQuitAppsWithZeroWindows != .off { quitAppsWithZeroWindows() }\r\n     }\r\n     return result\r\n }\r\n\r\n+func quitAppsWithZeroWindows() {\r\n+    let exceptFinder = config.automaticallyQuitAppsWithZeroWindows == .allExceptFinder\r\n+    let appsWithWindows = MacWindow.allWindowsMap.map { $0.value.app.pid }.toSet()\r\n+    let frontmostApp = NSWorkspace.shared.frontmostApplication\r\n+    let menuBarApp = NSWorkspace.shared.menuBarOwningApplication\r\n+    for (pid, app) in MacApp.allAppsMap {\r\n+        if pid == frontmostApp?.processIdentifier || pid == menuBarApp?.processIdentifier || appsWithWindows.contains(pid) {\r\n+            continue\r\n+        }\r\n+        if exceptFinder && app.nsApp.bundleIdentifier == finderAppBundleId {\r\n+            continue\r\n+        }\r\n+        app.nsApp.terminate()\r\n+    }\r\n+}\r\n+\r\n func refreshAndLayout(screenIsDefinitelyUnlocked: Bool, startup: Bool = false) {\r\n     refreshSession(screenIsDefinitelyUnlocked: screenIsDefinitelyUnlocked, startup: startup, body: {})\r\n }\r\ndiff --git a/Sources/AppBundle/util/appBundleUtil.swift b/Sources/AppBundle/util/appBundleUtil.swift\r\nindex 5802a18f..84b35fca 100644\r\n--- a/Sources/AppBundle/util/appBundleUtil.swift\r\n+++ b/Sources/AppBundle/util/appBundleUtil.swift\r\n@@ -2,7 +2,8 @@ import AppKit\r\n import Common\r\n import Foundation\r\n\r\n-let lockScreenAppBundleId = \"com.apple.loginwindow\"\r\n+let lockScreenAppBundleId = \"com.apple.loginwindow\" // /System/Library/CoreServices/[loginwindow.app](http://loginwindow.app/)\r\n+let finderAppBundleId = \"com.apple.finder\" // /System/Library/CoreServices/Finder.app\r\n let AEROSPACE_WINDOW_ID = \"AEROSPACE_WINDOW_ID\" // env var\r\n let AEROSPACE_WORKSPACE = \"AEROSPACE_WORKSPACE\" // env var\r\n\r\ndiff --git a/docs/config-examples/default-config.toml b/docs/config-examples/default-config.toml\r\nindex 705a4e9c..9147796c 100644\r\n--- a/docs/config-examples/default-config.toml\r\n+++ b/docs/config-examples/default-config.toml\r\n@@ -43,6 +43,10 @@ on-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n # Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app\r\n automatically-unhide-macos-hidden-apps = false\r\n\r\n+# Quit apps when they have zero windows and when they are unfocused.\r\n+# Possible values: off|all-except-finder|all\r\n+automatically-quit-apps-with-zero-windows = 'off'\r\n+\r\n # Possible values: (qwerty|dvorak)\r\n # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n [key-mapping]\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/962/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/940",
      "id": 2776421860,
      "node_id": "I_kwDOJl1IZM6lfNXk",
      "number": 940,
      "title": "Support `layout --root` / `move-node-to-workspace --root`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-01-08T21:55:36Z",
      "updated_at": "2025-06-20T22:49:04Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "### Discussed in https://github.com/nikitabobko/AeroSpace/discussions/939\r\n\r\n<div type='discussions-op-text'>\r\n\r\n<sup>Originally posted by **yngvedh** January  8, 2025</sup>\r\nI'm using a setup where I have two vertical accordions side by side so that I can manage my windows into two groups, left and right. I have a laptop monitor (A) together with an extrawide external monitor (B).\r\n\r\nOn A, I want the two accordions in a horizontal accordion because it is not wide enough to have the windows side by side. On B I want them tiled because it has enough room. \r\n\r\nNow when I move a workspace from one monitor to the other, I also want to switch the layout of the root node.\r\nI haven't figured out a way to do this so I'm forced to reset the layout and set it up again which is quite a hassle.\r\n\r\nThe ability to toggle the layout of the root node would solve this for me.\r\nSomething like this would do the trick: `aerospace layout --root tiles accordion`\r\n\r\nAlternatively aerospace could automatically collapse tiles to accordions when becoming too narrow. Optionally, of course.</div>",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/940/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/930",
      "id": 2770667389,
      "node_id": "I_kwDOJl1IZM6lJQd9",
      "number": 930,
      "title": "Make `move-node-to-workspace next|prev` to accept stdin similar `workspace next|prev`",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-01-06T13:29:56Z",
      "updated_at": "2025-06-20T22:49:05Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Similar to how one can do:\r\n```\r\necho \"1 2 3\" | aerospace workspace next\r\n```\r\n\r\nit would make sense to support stdin consumption for `move-node-to-workspace next|prev`\r\n\r\nUse case: https://github.com/nikitabobko/AeroSpace/discussions/842",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/930/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/924",
      "id": 2768105404,
      "node_id": "I_kwDOJl1IZM6k_e-8",
      "number": 924,
      "title": "Android Emulator flickers when tiled",
      "user": {
        "login": "Marty-W",
        "id": 53663335,
        "node_id": "MDQ6VXNlcjUzNjYzMzM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/53663335?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Marty-W",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2025-01-03T20:03:12Z",
      "updated_at": "2025-11-14T13:40:57Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nThe android emulator keeps flickering when tiled. It floats by default but I've used this: \r\n\r\n```\r\n[[on-window-detected]]\r\nif.window-title-regex-substring='Android Emulator'\r\nif.during-aerospace-startup = false  \r\ncheck-further-callbacks = true\r\nrun = 'layout tiling'  \r\n```\r\nwhich comes from this issue : https://github.com/nikitabobko/AeroSpace/issues/209. \r\n\r\n```\r\nNULL-APP-BUNDLE-ID.window.14640 windowId: 14640\r\nNULL-APP-BUNDLE-ID.window.14640 workspace: 1\r\nNULL-APP-BUNDLE-ID.window.14640 treeNodeParent: AppBundle.TilingContainer\r\nNULL-APP-BUNDLE-ID.window.14640 recognizedAsDialog: true\r\nNULL-APP-BUNDLE-ID.window.14640 AXTitle: Optional(Android Emulator - Samsung_S23_API_35:5554)\r\nNULL-APP-BUNDLE-ID.window.14640 AXRole: Optional(AXWindow)\r\nNULL-APP-BUNDLE-ID.window.14640 AXSubrole: Optional(AXDialog)\r\nNULL-APP-BUNDLE-ID.window.14640 AXFocused: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.14640 AXFullScreen: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.14640 AXFrame: Optional(<AXValue 0x600000ca3300> {value = x:3.000000 y:41.000000 w:856.000000 h:1072.000000 type = kAXValueCGRectType})\r\nNULL-APP-BUNDLE-ID.window.14640 AXPosition: Optional(<AXValue 0x60000174edf0> {value = x:3.000000 y:41.000000 type = kAXValueCGPointType})\r\nNULL-APP-BUNDLE-ID.window.14640 AXGrowArea: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXMinimizeButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXDocument: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXSections: [\r\nNULL-APP-BUNDLE-ID.window.14640 ]\r\nNULL-APP-BUNDLE-ID.window.14640 AXCloseButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXMain: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.14640 AXActivationPoint: Optional(<AXValue 0x600001742af0> {value = x:-1.000000 y:1118.000000 type = kAXValueCGPointType})\r\nNULL-APP-BUNDLE-ID.window.14640 AXFullScreenButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXProxy: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXDefaultButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXMinimized: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.14640 AXParent: Optional(<AXUIElement Application 0x6000017470f0> {pid=28581})\r\nNULL-APP-BUNDLE-ID.window.14640 AXTitleUIElement: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXCancelButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXModal: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.14640 AXZoomButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 AXSize: Optional(<AXValue 0x6000017a9ef0> {value = w:856.000000 h:1072.000000 type = kAXValueCGSizeType})\r\nNULL-APP-BUNDLE-ID.window.14640 AXToolbarButton: nil\r\nNULL-APP-BUNDLE-ID.window.14640 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\nNULL-APP-BUNDLE-ID              AXRole: Optional(AXApplication)\r\nNULL-APP-BUNDLE-ID              AXTitle: Optional(qemu-system-aarch64)\r\nNULL-APP-BUNDLE-ID              AXFunctionRowTopLevelElements: [\r\nNULL-APP-BUNDLE-ID              ]\r\nNULL-APP-BUNDLE-ID              AXFrame: nil\r\nNULL-APP-BUNDLE-ID              AXFocusedUIElement: AXUIElement(windowId=14640, title=\"Android Emulator - Samsung_S23_API_35:5554\", role=\"AXWindow\", subrole=\"AXDialog\")\r\nNULL-APP-BUNDLE-ID              AXFrontmost: Optional(1)\r\nNULL-APP-BUNDLE-ID              AXExtrasMenuBar: nil\r\nNULL-APP-BUNDLE-ID              AXMainWindow: nil\r\nNULL-APP-BUNDLE-ID              AXFocusedWindow: AXUIElement(windowId=14640, title=\"Android Emulator - Samsung_S23_API_35:5554\", role=\"AXWindow\", subrole=\"AXDialog\")\r\nNULL-APP-BUNDLE-ID              AXMenuBar: Optional(<AXUIElement 0x600001747bd0> {pid=28581})\r\nNULL-APP-BUNDLE-ID              AXWindows: [\r\nNULL-APP-BUNDLE-ID                  AXUIElement(windowId=14641, title=\"\", role=\"AXWindow\", subrole=\"AXDialog\"),\r\nNULL-APP-BUNDLE-ID                  AXUIElement(windowId=14640, title=\"Android Emulator - Samsung_S23_API_35:5554\", role=\"AXWindow\", subrole=\"AXDialog\")\r\nNULL-APP-BUNDLE-ID              ]\r\nNULL-APP-BUNDLE-ID              AXSize: nil\r\nNULL-APP-BUNDLE-ID              AXPosition: nil\r\nNULL-APP-BUNDLE-ID              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n```\r\n\r\n\r\nhttps://github.com/user-attachments/assets/fc8dfb8a-ac1c-48cf-8cd0-0ebe5c6cfc12\r\n\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/924/reactions",
        "total_count": 9,
        "+1": 9,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/899",
      "id": 2762272647,
      "node_id": "I_kwDOJl1IZM6kpO-H",
      "number": 899,
      "title": "Accordion layout not fully rendering child tiles",
      "user": {
        "login": "konchalas",
        "id": 11275077,
        "node_id": "MDQ6VXNlcjExMjc1MDc3",
        "avatar_url": "https://avatars.githubusercontent.com/u/11275077?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/konchalas",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-12-29T14:23:23Z",
      "updated_at": "2025-06-20T22:49:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nI have a workspace with the 2 accordion layouts, and one of these layouts contains 2 tiles. When switching from the accordion layout to the other layout containing the tiles, the accordion layout is not rendering properly. Instead only the tile being focused is rendered, while the rest of the window is still displaying the previous layout. I know this can be confusing, so I am certain the video will help understanding the issue I am facing, if it's an issue to begin with. I do remember on i3, this wasn't the case but it's been many years since I have used it.\r\n\r\nhttps://github.com/user-attachments/assets/9fb61e3a-e81c-4165-8004-34e3577d4c8c\r\n\r\n\r\n**Related issues you could find**\r\nI went through all the issues and to the best of my ability, I couldn't find anything similar.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/899/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/878",
      "id": 2753870709,
      "node_id": "I_kwDOJl1IZM6kJLt1",
      "number": 878,
      "title": "Floating window goes back to tiling when switch to and from fullscreen",
      "user": {
        "login": "afwlehmann",
        "id": 100929,
        "node_id": "MDQ6VXNlcjEwMDkyOQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/100929?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/afwlehmann",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-12-21T09:57:19Z",
      "updated_at": "2025-06-20T22:49:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nWhen I switch a floating window to full-screen via `macos-native-fullscreen` and then switch back (again via the same function), the window suddenly becomes tiled, and I manually have to go back to floating.\r\n\r\n**Related issues you could find**\r\nI didn't find any. Sorry if I have missed something.\r\n\r\nAeroSpace v0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/878/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/846",
      "id": 2731815038,
      "node_id": "I_kwDOJl1IZM6i1DB-",
      "number": 846,
      "title": "Add layout type to list-windows output",
      "user": {
        "login": "jcelaya775",
        "id": 24758353,
        "node_id": "MDQ6VXNlcjI0NzU4MzUz",
        "avatar_url": "https://avatars.githubusercontent.com/u/24758353?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jcelaya775",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-12-11T04:50:48Z",
      "updated_at": "2025-06-20T22:49:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Having more information about windows helps make scripting/automation easier. For instance, I would like to write a script to move a window to a specific `dfs-index`, but would need both the `dfs-index` (https://github.com/nikitabobko/AeroSpace/issues/667) of the currently focused window as well as its layout type. So, adding the layout type (`v_tiles`, `h_tiles`, `h_accordian`, or `v_accordian`) and `dfs-index` to the `list-windows` output would help, thanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/846/reactions",
        "total_count": 12,
        "+1": 12,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/804",
      "id": 2716286218,
      "node_id": "I_kwDOJl1IZM6h5z0K",
      "number": 804,
      "title": "Keynote full-screen presentation doesn't work when other windows exist in workspace",
      "user": {
        "login": "nelson-liu",
        "id": 7272031,
        "node_id": "MDQ6VXNlcjcyNzIwMzE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7272031?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nelson-liu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-12-04T00:35:51Z",
      "updated_at": "2025-09-04T16:23:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n\r\nWhen \"play\"ing a full-screen Keynote presentation with Aerospace, it seems like the presentation is automatically minimized and/or sent to another monitor. This happens both when I've got my macbook plugged into an external monitor and when I'm only using the built-in laptop display. \r\n\r\nWhen quitting Aerospace and playing the presentation, everything works as expected.\r\n\r\nHere's a video I made of the issue. First, I show that playing the presentation (in an empty workspace that only has keynote) works as expected. I then hit esc to exit out. Then, i open a terminal in that workspace, and play the presentation again. The presentation is automatically minimized, and any attempts to open it from the dock just re-minimize it. The only way to get out of this state is to either hit esc as soon as you un-minimize the presentation (which I did in the video below), or quitting keynote from the dock.\r\n\r\nhttps://github.com/user-attachments/assets/1bc81e82-e907-465c-9110-397d2c49dac7\r\n\r\n\r\n**Related issues you could find**\r\n\r\nI wasn't able to find anything about this, so perhaps this is an issue on my side. I'd really appreciate if anyone can let me know if this works for them.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/804/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/776",
      "id": 2703989319,
      "node_id": "I_kwDOJl1IZM6hK5pH",
      "number": 776,
      "title": "0.16.0 causes jumping to another application when Emacs child frame closes",
      "user": {
        "login": "nohzafk",
        "id": 149959021,
        "node_id": "U_kgDOCPAxbQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/149959021?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nohzafk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        },
        "2": {
          "id": 7672274482,
          "node_id": "LA_kwDOJl1IZM8AAAAByU2eMg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/regression",
          "name": "regression",
          "color": "993B62",
          "default": false,
          "description": "The behavior changed between versions"
        },
        "3": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2024-11-29T05:42:18Z",
      "updated_at": "2025-06-20T22:48:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I encounter this problem when I upgrade to the latest aerospace 0.16.0, I confirmed that previous 0.15.2 version doesn't cause this issue.\r\n\r\nThis issue is very like #325 , the problem specifically involves Emacs child frames, which are temporary windows created for UI elements like completion menus\r\n\r\nBehavior:\r\n- Emacs auto completion library creates child frame,  and when it finished, Emacs deletes its child frame.\r\n- At this point, Aerospace loses track of which window should have focus\r\n- This causes incorrectly jumping focus to another application, making Emacs auto completion completely unusable.\r\n- Disable Aerospace, this issue disappears. \r\n\r\nThese child frame is often undecorated\r\n```elisp\r\n(make-frame\r\n `((name . ,frame-name)   \r\n   (parent-frame . ,parent)\r\n   (undecorated . t)    \r\n   ...))\r\n```\r\n\r\nMy attempts to force focus or modify frame parameters didn't work, suggesting this is more of an Aerospace level issue",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/776/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1914
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/724",
      "id": 2669284460,
      "node_id": "I_kwDOJl1IZM6fGgxs",
      "number": 724,
      "title": "issue with window swapping automatically after updating to v0.15.2 from 14.1",
      "user": {
        "login": "AlejandroSanchez90",
        "id": 127575426,
        "node_id": "U_kgDOB5qlgg",
        "avatar_url": "https://avatars.githubusercontent.com/u/127575426?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AlejandroSanchez90",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-11-18T17:21:20Z",
      "updated_at": "2025-06-20T22:48:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "just updated Aerospace to the latest, and now my workspaces are acting weird, let's say I have 2 (a and b) windows in Workspace 1, and I'm at Workspace 2 if I jump to Workspace 1, window A will swap to the front while been in workspace 1, if I swap focused window to B, and jump to any other workspace and back to 1, then my windows will swap again to A, is there something new that would rearrange my windows on workspace move?\r\n\r\nalso, I'm not able to swap windows if the next window is float, so if I'm at window A and window B is float, then nothing will happen after opt + shit + h/l\r\n\r\nhere is my config\r\n```\r\nafter-login-command = []\r\nafter-startup-command = [\r\n    'exec-and-forget /opt/homebrew/bin/borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0'\r\n]\r\n\r\nstart-at-login = true\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\naccordion-padding = 30\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\nkey-mapping.preset = 'qwerty'\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n[gaps]\r\ninner.horizontal = 20\r\ninner.vertical =   20 \r\nouter.left =       20\r\nouter.bottom =     20\r\nouter.top =        20\r\nouter.right =      20\r\n\r\n[mode.main.binding]\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-b = ['exec-and-forget open -n -a \"Google Chrome\"', 'mode main']\r\nalt-p = ['exec-and-forget open -a \"Postman\"', 'mode main']\r\nalt-t = ['exec-and-forget open -n  -a \"WezTerm\"', 'mode main']\r\nalt-c = ['exec-and-forget open -a \"Microsoft Teams\"', 'mode main']\r\nalt-m = ['exec-and-forget open -a \"Microsoft Outlook\"', 'mode main']\r\nalt-g = ['exec-and-forget open -a \"GitHub Desktop\"', 'mode main']\r\n\r\nalt-minus = 'resize smart -50'\r\nalt-equal = 'resize smart +50'\r\nalt-0 = 'balance-sizes'\r\n\r\nalt-x = 'close'\r\nalt-o = 'close-all-windows-but-current'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-shift-1 = ['move-node-to-workspace 1', 'workspace 1']\r\nalt-shift-2 = ['move-node-to-workspace 2', 'workspace 2']\r\nalt-shift-3 = ['move-node-to-workspace 3', 'workspace 3']\r\nalt-shift-4 = ['move-node-to-workspace 4', 'workspace 4']\r\nalt-shift-5 = ['move-node-to-workspace 5', 'workspace 5']\r\nalt-shift-6 = ['move-node-to-workspace 6', 'workspace 6']\r\nalt-shift-7 = ['move-node-to-workspace 7', 'workspace 7']\r\nalt-shift-8 = ['move-node-to-workspace 8', 'workspace 8']\r\nalt-shift-9 = ['move-node-to-workspace 9', 'workspace 9']\r\n\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\nalt-tab = 'workspace-back-and-forth'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-semicolon = 'mode service'\r\nalt-shift-m = 'mode move'\r\nalt-shift-o = 'mode open'\r\n\r\n[mode.open.binding]\r\nesc = 'mode main'\r\nenter = 'mode main'\r\n \r\n[mode.move.binding]\r\nesc = 'mode main'\r\nenter = 'mode main'\r\n\r\n\r\n\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = ['KYY', 1,2,3]\r\n2 = ['DELL U2415','Built-in Retina Display']\r\n3 = [3, 'KYY',2,1]\r\n4 = [3, 'KYY',2,1]\r\n5 = [2, 'Built-in Retina Display',2 ,1 ]\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.teams2'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 1']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.Outlook'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 1']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 2']  # The callback itself\r\n[[on-window-detected]]\r\nif.app-id = 'com.googlecode.iterm2'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 2']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.google.Chrome'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 3']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\ncheck-further-callbacks = true\r\nrun = ['layout floating']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.postmanlabs.mac'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 4']  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.GitHubClient'\r\ncheck-further-callbacks = true\r\nrun = ['move-node-to-workspace 4']  # The callback itself\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'net.whatsapp.WhatsApp'\r\ncheck-further-callbacks = true\r\nrun = ['layout floating','move-node-to-workspace 2' ]  # The callback itself\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.PhotoBooth'\r\ncheck-further-callbacks = true\r\nrun = ['layout floating','move-node-to-workspace 1' ]  # The callback itself\r\n```\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/724/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/705",
      "id": 2660514769,
      "node_id": "I_kwDOJl1IZM6elDvR",
      "number": 705,
      "title": "Add option `--keep-windows-hidden` to `enable off`",
      "user": {
        "login": "thalesmello",
        "id": 1127394,
        "node_id": "MDQ6VXNlcjExMjczOTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1127394?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thalesmello",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        },
        "2": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-11-15T02:10:41Z",
      "updated_at": "2025-08-06T02:15:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The documentation of the `enable` command says:\n\n> Temporarily disable window management\n\nThen it should include a `--keep-windows-hidden` to keep Aerospace from moving windows from hidden workspaces into the visible area.\n\nContext:\n\nI sometimes need to temporarily disable aerospace while dragging a window in order to prevent it from trying to resize window, e.g. moving a tab across windows in chrome.\n\nCurrently I use BetterTouchTool to:\n\non `fn` keydown: `aerospace enable off`\non `fn` keyup: `aerospace enable on`\n\nIt mostly works, but it will occasionally move another app's window on top of the Chrome window I'm trying to move my tab to.\n\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/705/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/691",
      "id": 2651488567,
      "node_id": "I_kwDOJl1IZM6eCoE3",
      "number": 691,
      "title": "`workspace next` switches workspaces on two monitors",
      "user": {
        "login": "jonashaag",
        "id": 175722,
        "node_id": "MDQ6VXNlcjE3NTcyMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/175722?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jonashaag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2024-11-12T08:51:32Z",
      "updated_at": "2026-01-26T20:23:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\n\r\nI have `ctrl-left/right` bound to `workspace --wrap-around prev/next`.\r\n\r\nSometimes when I use that key binding AeroSpace switches two workspaces at the same time: the one on the focused monitor, and the one on the other monitor, and it gives focus to the workspace/window on the other monitor.\r\n\r\nI think this only happens when there are multiple windows of the same application on different monitors, or maybe this only happens when that application is iTerm2.\r\n\r\n**Related issues you could find**\r\n\r\nNone that are open.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/691/reactions",
        "total_count": 13,
        "+1": 13,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/680",
      "id": 2645938945,
      "node_id": "I_kwDOJl1IZM6dtdMB",
      "number": 680,
      "title": "Sometimes the split doesn't work, windows are overlapping each other, and can't fix the workspace unless the aerospace is restarted.",
      "user": {
        "login": "pencilcheck",
        "id": 116532,
        "node_id": "MDQ6VXNlcjExNjUzMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/116532?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/pencilcheck",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-11-09T11:18:31Z",
      "updated_at": "2025-12-06T15:40:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Describe the bug**\r\nA clear and concise description of what the bug is.\r\n\r\nSometimes workspace will not able to resize the windows properly, the windows overlaps instead.\r\n<img width=\"1440\" alt=\"Screenshot 2024-11-09 at 5 18 01 AM\" src=\"https://github.com/user-attachments/assets/86822370-9731-4da6-a248-f6b289649df7\">\r\n\r\n\r\nThe two windows suppose to be side by side or vertical, but as you can see in the screenshot they are 99% overlapped.\r\n\r\n\r\n**Related issues you could find**\r\nPlease make sure to search for duplicates.\r\nIf you couldn't find the duplicates, linking related issues is helpful anyway.\r\n\r\nI tried https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree\r\nBut it doesn't work\r\n\r\nTried toggling between floating and tile mode, doesn't work\r\n\r\n\r\nTried `layout tiles horizontal vertical` it finally fixed it... I still think this is a bug\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/680/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/665",
      "id": 2635981241,
      "node_id": "I_kwDOJl1IZM6dHeG5",
      "number": 665,
      "title": "\"Hiding\" windows with resize will crash aerospace if you focus on the hidden window",
      "user": {
        "login": "XavierLaRochelle",
        "id": 96694867,
        "node_id": "U_kgDOBcNyUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/96694867?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/XavierLaRochelle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-11-05T16:50:21Z",
      "updated_at": "2025-06-20T22:49:10Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I recently switched to aerospace from Yabai and I was looking for a way to re-implement the [\"zoom-parent\" feature](https://github.com/koekeishiya/yabai/wiki/Commands#toggle-window-properties), which makes a node resized to occupy its entire parent node. There's no built-in command for this specific action in Aerospace but there is the \"resize\" command which I tried to use as a workaround by assigning `z = 'resize smart +10000'` in my config. \r\n\r\nThis *seemed* to be working until I moved focus to the \"hidden\" window, which results in Aerospace crashing. That is, if I use `resize smart +10000` on window 2 in the following layout and later try to focus on window 3, Aerospace stops.\r\n\r\n```\r\nh_tiles\r\n├── window 1\r\n└── v_tiles\r\n    ├── window 2 (resized)\r\n    └── window 3 (implicitly hidden)\r\n```\r\n\r\nI believe this is because aerospace is trying to focus a window that's actually off-screen. I don't know if it qualifies as a bug since it is mentionned in the guide that MacOS doesn't support having windows off-screen but still, if anyone knows a way around this problem, let me know!\r\n\r\n\r\n",
      "closed_by": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/665/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/660",
      "id": 2632472886,
      "node_id": "I_kwDOJl1IZM6c6Fk2",
      "number": 660,
      "title": "allow multiple entries in 'on-window-detected' block",
      "user": {
        "login": "onexbash",
        "id": 118682177,
        "node_id": "U_kgDOBxLyQQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/118682177?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/onexbash",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-11-04T10:51:30Z",
      "updated_at": "2026-01-25T09:27:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi together, \r\nright now I pin my apps to workspaces like this: \r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefoxdeveloperedition'\r\nrun = ['move-node-to-workspace 3']\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefox'\r\nrun = ['move-node-to-workspace 3']\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.com.zen.browser'\r\nrun = ['move-node-to-workspace 3']\r\n[[on-window-detected]]\r\nif.app-id = 'org.chromium.Chromium'\r\nrun = ['move-node-to-workspace 3']\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.edgemac'\r\nrun = ['move-node-to-workspace 3']\r\n```\r\n\r\nThis adds so much repeating patterns and bloats up my config file. \r\n\r\nIs there a better way of doing that or are you planning to let `if.app-id` accept an array of Bundle IDs?\r\n\r\nThis could minify the config above to this:\r\n```\r\n[[on-window-detected]]\r\nif.app-id = ['org.mozilla.firefoxdeveloperedition', 'org.mozilla.firefox', 'org.mozilla.com.zen.browser', 'org.chromium.Chromium', 'com.microsoft.edgemac']\r\nrun = ['move-node-to-workspace 3']\r\n```\r\n\r\nBut results in an error:\r\n`on-window-detected[4].if.app-id: Expected type is 'string'. But actual type is 'array'`  \r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/660/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/642",
      "id": 2620821496,
      "node_id": "I_kwDOJl1IZM6cNo_4",
      "number": 642,
      "title": "Windows of floating hidden applications don't preserve their position when focused from different workspace",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        },
        "2": {
          "id": 7672274482,
          "node_id": "LA_kwDOJl1IZM8AAAAByU2eMg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/regression",
          "name": "regression",
          "color": "993B62",
          "default": false,
          "description": "The behavior changed between versions"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-29T10:30:27Z",
      "updated_at": "2025-06-20T22:49:11Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Steps to reproduce:**\r\n1. Open 1 finder window, make it float (`layout floating`), and place it in the middle of the screen\r\n2. Press `cmd-h` to hide application\r\n3. Switch to a different aerospace workspace\r\n4. `cmd-tab` to Finder application\r\n\r\nExpected: The Finder window is in the middle of the screen\r\nActual: The Finder window is in the bottom right corner\r\n\r\nIn the #641, it's reported that it's a 0.14 - 0.15 regression. I didn't check it",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/642/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/634",
      "id": 2616843489,
      "node_id": "I_kwDOJl1IZM6b-dzh",
      "number": 634,
      "title": "mouse-follows-focus and multi-monitor setups do not work well together",
      "user": {
        "login": "skarndev",
        "id": 10352100,
        "node_id": "MDQ6VXNlcjEwMzUyMTAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/10352100?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/skarndev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8749200263,
          "node_id": "LA_kwDOJl1IZM8AAAACCX4zhw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/mouse",
          "name": "mouse",
          "color": "ef07ff",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-10-27T20:20:29Z",
      "updated_at": "2025-06-20T22:49:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Description**\r\nThe mouse-follows-focus feature works fine on multi-monitor setups when navigating via keyboard. However, it makes moving windows with a mouse / trackpad to another screen totally impossible and explodes the entire workspace.\r\n\r\nFrom the observed behavior it looks like, as soon as the moved window is reaching another screen, Aerospace somehow registers the focus changed event and tries to move the the mouse to the center of the window. Since the window is not yet placed on the monitor, its center is likely to be on another screen, thus, moving the mouse pointer back there and disrupting the drag before you have a chance to release the window.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/634/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/611",
      "id": 2608904521,
      "node_id": "I_kwDOJl1IZM6bgLlJ",
      "number": 611,
      "title": "needs float: Arc Max Previews",
      "user": {
        "login": "NoRePercussions",
        "id": 66567994,
        "node_id": "MDQ6VXNlcjY2NTY3OTk0",
        "avatar_url": "https://avatars.githubusercontent.com/u/66567994?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NoRePercussions",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-10-23T14:52:14Z",
      "updated_at": "2025-06-20T22:49:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Arc Max Preview popups are treated as their own window and attempt to tile, instead of floating/being untouched.\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - Arc\r\n  - Arc Preview\r\n  - Arc Max\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] (N/I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands).\r\n\r\n```\r\ncompany.thebrowser.Browser.window.124295 windowId: 124295\r\ncompany.thebrowser.Browser.window.124295 workspace: 7\r\ncompany.thebrowser.Browser.window.124295 treeNodeParent: AppBundle.MacosFullscreenWindowsContainer\r\ncompany.thebrowser.Browser.window.124295 recognizedAsDialog: false\r\ncompany.thebrowser.Browser.window.124295 AXTitle: Optional(Test)\r\ncompany.thebrowser.Browser.window.124295 AXRole: Optional(AXWindow)\r\ncompany.thebrowser.Browser.window.124295 AXSubrole: Optional(AXStandardWindow)\r\ncompany.thebrowser.Browser.window.124295 AXIdentifier: Optional(bigBrowserWindow-228693DC-A3E4-4398-A7DD-85D2877481BB)\r\ncompany.thebrowser.Browser.window.124295 AXFocused: Optional(0)\r\ncompany.thebrowser.Browser.window.124295 AXFullScreen: Optional(1)\r\ncompany.thebrowser.Browser.window.124295 AXFrame: Optional(<AXValue 0x600000a99140> {value = x:-199.000000 y:-1080.000000 w:1920.000000 h:1080.000000 type = kAXValueCGRectType})\r\ncompany.thebrowser.Browser.window.124295 AXPosition: Optional(<AXValue 0x6000011abd20> {value = x:-199.000000 y:-1080.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.124295 AXGrowArea: nil\r\ncompany.thebrowser.Browser.window.124295 AXMinimizeButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.124295      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.124295      AXTitle: nil\r\ncompany.thebrowser.Browser.window.124295      AXSubrole: Optional(AXMinimizeButton)\r\ncompany.thebrowser.Browser.window.124295      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.124295      AXParent: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXTopLevelUIElement: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.124295 }\r\ncompany.thebrowser.Browser.window.124295 AXDocument: nil\r\ncompany.thebrowser.Browser.window.124295 AXSections: [\r\ncompany.thebrowser.Browser.window.124295         Optional({\r\ncompany.thebrowser.Browser.window.124295             SectionDescription = Content;\r\ncompany.thebrowser.Browser.window.124295             SectionObject = \"<AXUIElement 0x600001139140> {pid=65516}\";\r\ncompany.thebrowser.Browser.window.124295             SectionUniqueID = AXContent;\r\ncompany.thebrowser.Browser.window.124295         })\r\ncompany.thebrowser.Browser.window.124295 ]\r\ncompany.thebrowser.Browser.window.124295 AXCloseButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.124295      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.124295      AXTitle: nil\r\ncompany.thebrowser.Browser.window.124295      AXSubrole: Optional(AXCloseButton)\r\ncompany.thebrowser.Browser.window.124295      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.124295      AXParent: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXTopLevelUIElement: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncompany.thebrowser.Browser.window.124295 }\r\ncompany.thebrowser.Browser.window.124295 AXMain: Optional(1)\r\ncompany.thebrowser.Browser.window.124295 AXActivationPoint: Optional(<AXValue 0x6000011ff630> {value = x:-1.000000 y:1170.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.124295 AXFullScreenButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.124295      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.124295      AXTitle: nil\r\ncompany.thebrowser.Browser.window.124295      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.124295      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.124295      AXParent: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXTopLevelUIElement: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.124295 }\r\ncompany.thebrowser.Browser.window.124295 AXProxy: nil\r\ncompany.thebrowser.Browser.window.124295 AXDefaultButton: nil\r\ncompany.thebrowser.Browser.window.124295 AXMinimized: Optional(0)\r\ncompany.thebrowser.Browser.window.124295 AXParent: Optional(<AXUIElement Application 0x6000011ff630> {pid=65516})\r\ncompany.thebrowser.Browser.window.124295 AXTitleUIElement: nil\r\ncompany.thebrowser.Browser.window.124295 AXCancelButton: nil\r\ncompany.thebrowser.Browser.window.124295 AXModal: Optional(0)\r\ncompany.thebrowser.Browser.window.124295 AXZoomButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.124295      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.124295      AXTitle: nil\r\ncompany.thebrowser.Browser.window.124295      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.124295      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.124295      AXParent: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXTopLevelUIElement: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      AXWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.124295      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.124295 }\r\ncompany.thebrowser.Browser.window.124295 AXSize: Optional(<AXValue 0x6000011092c0> {value = w:1920.000000 h:1080.000000 type = kAXValueCGSizeType})\r\ncompany.thebrowser.Browser.window.124295 AXToolbarButton: nil\r\ncompany.thebrowser.Browser.window.124295 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncompany.thebrowser.Browser               AXRole: Optional(AXApplication)\r\ncompany.thebrowser.Browser               AXTitle: Optional(Arc)\r\ncompany.thebrowser.Browser               AXFunctionRowTopLevelElements: [\r\ncompany.thebrowser.Browser               ]\r\ncompany.thebrowser.Browser               AXFrame: nil\r\ncompany.thebrowser.Browser               AXFocusedUIElement: AXUIElement(windowId=124295, title=\"\", role=\"AXGroup\", subrole=nil)\r\ncompany.thebrowser.Browser               AXFrontmost: Optional(1)\r\ncompany.thebrowser.Browser               AXExtrasMenuBar: nil\r\ncompany.thebrowser.Browser               AXMainWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser               AXFocusedWindow: AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser               AXMenuBar: Optional(<AXUIElement 0x6000011092c0> {pid=65516})\r\ncompany.thebrowser.Browser               AXWindows: [\r\ncompany.thebrowser.Browser                   AXUIElement(windowId=124295, title=\"Test\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                   AXUIElement(windowId=130620, title=\"\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncompany.thebrowser.Browser               ]\r\ncompany.thebrowser.Browser               AXSize: nil\r\ncompany.thebrowser.Browser               AXPosition: nil\r\ncompany.thebrowser.Browser               Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/611/reactions",
        "total_count": 13,
        "+1": 13,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/603",
      "id": 2598590216,
      "node_id": "I_kwDOJl1IZM6a41cI",
      "number": 603,
      "title": "[feature] summon-workspace: don't switch monitors",
      "user": {
        "login": "raisjn",
        "id": 70462544,
        "node_id": "MDQ6VXNlcjcwNDYyNTQ0",
        "avatar_url": "https://avatars.githubusercontent.com/u/70462544?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/raisjn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-10-18T23:58:23Z",
      "updated_at": "2025-06-20T22:49:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This feature is very cool! Aerospace is almost perfect for me now :-D \r\n\r\nIs it possible to add a parameter to `summon-workspace` so that when focusing to an active workspace on a separate monitor, it brings that workspace to the current monitor? This is how my xmonad is currently setup. \r\n\r\nCurrent behavior: the other monitor will become focused. If we are at [0,1*], it becomes [0*, 1]\r\nDesired behavior: the two workspaces will be swapped. If it was [0,1*] before, it would be [1, 0*]. \r\n\r\nI have modified the source to accomplish this for myself, but would appreciate it being included in your source for future releases. Thank you! \r\n\r\n## Checklist\r\n\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - xmonad\r\n  - summon-workspace\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). \r\n\r\nMy search queries were:\r\n  - summon-workspace",
      "closed_by": {
        "login": "raisjn",
        "id": 70462544,
        "node_id": "MDQ6VXNlcjcwNDYyNTQ0",
        "avatar_url": "https://avatars.githubusercontent.com/u/70462544?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/raisjn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/603/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/599",
      "id": 2592678853,
      "node_id": "I_kwDOJl1IZM6aiSPF",
      "number": 599,
      "title": "Allow configuring according-padding as a percentage of screen size?",
      "user": {
        "login": "bchang",
        "id": 489318,
        "node_id": "MDQ6VXNlcjQ4OTMxOA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/489318?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bchang",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-16T18:12:31Z",
      "updated_at": "2025-06-20T22:49:13Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have my accordion padding set to 400, which works to my liking on a 32\" monitor. However, if I'm out and I'm using my Mac with only its built in display, this padding is too much. I find myself having to temporarily edit my config to adjust this setting until I'm back to having my big monitor. Is there a feature I'm missing?\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/599/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/598",
      "id": 2592215344,
      "node_id": "I_kwDOJl1IZM6aghEw",
      "number": 598,
      "title": "Interop with flameshot (screenshot tool)",
      "user": {
        "login": "luanpotter",
        "id": 882703,
        "node_id": "MDQ6VXNlcjg4MjcwMw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/882703?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/luanpotter",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2024-10-16T15:19:38Z",
      "updated_at": "2025-11-19T14:09:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, thanks for this amazing tool, it is a life changer!\r\n\r\nI've noticed that it doesn't currently play well with [Flameshot](https://flameshot.org/) - but maybe I am doing something wrong, on my end, as I see that there is a [previous, closed issued about a different issue with it](https://github.com/nikitabobko/AeroSpace/issues/112).\r\n\r\nFor me the issue is that the flameshot overlay opens in an empty, unnamed worskpace, with no windows in it, and cannot be moved. If I switch back to any of my actual workspaces, flameshot closes the overlay. Curiously the built-in macos screenshot tool overlay does work nicely - but it is nowhere near as good as Flameshot.\r\n\r\nI have default configs for both applications.\r\n\r\nAerospace verison (latest):\r\n```\r\n> aerospace --version\r\n\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n\r\nFlameshot version:\r\n\r\n```\r\nFlameshot v12.1.0 (96c2c82e)\r\nCompiled with Qt 5.15.5\r\n```\r\n\r\nSorry if this is not the right forum for this type of issue; please feel free to close if this is not appropriate.\r\n\r\n---\r\n\r\n## Checklist\r\n\r\n- [x] I've searched for duplicates - previous issue for a different problem with flameshot was resolved\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands) for flameshot but found nothing.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/598/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/594",
      "id": 2585628200,
      "node_id": "I_kwDOJl1IZM6aHY4o",
      "number": 594,
      "title": "Application menu is unusable when application is not on the monitor that contains menubar",
      "user": {
        "login": "katafractari",
        "id": 1299228,
        "node_id": "MDQ6VXNlcjEyOTkyMjg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1299228?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/katafractari",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2024-10-14T10:45:44Z",
      "updated_at": "2025-10-30T15:15:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have a multi monitor setup with center monitor being the main one with the MacOS menubar and the left and right ones being secondary ones. In the attached video you can see the menubar on the main monitor. The secondary monitor is not included because the default MacOS screen capture tool doesn't seem to support multi monitor setup. What you see on the video is the following:\r\n\r\n- I move the mouse left to the secondary monitor, where an Aerospace workspace with kitty terminal is located\r\n- I click kitty to gain focus (or switch to that workspace with a keyboard shortcut, does not matter)\r\n- I got back to the main monitor and try to use kitty's menu\r\n- kitty's menu is immediatelly closed and the menu from Chrome, which is on the workspace on the main monitor is shown\r\n\r\nWe should be able to use the menu for application on all monitors.\r\n\r\n\r\n```\r\n❯ aerospace debug-windows\r\nnet.kovidgoyal.kitty.window.54 windowId: 54\r\nnet.kovidgoyal.kitty.window.54 workspace: T\r\nnet.kovidgoyal.kitty.window.54 treeNodeParent: AppBundle.TilingContainer\r\nnet.kovidgoyal.kitty.window.54 recognizedAsDialog: false\r\nnet.kovidgoyal.kitty.window.54 AXTitle: Optional(zsh)\r\nnet.kovidgoyal.kitty.window.54 AXRole: Optional(AXWindow)\r\nnet.kovidgoyal.kitty.window.54 AXSubrole: Optional(AXStandardWindow)\r\nnet.kovidgoyal.kitty.window.54 AXFocused: Optional(0)\r\nnet.kovidgoyal.kitty.window.54 AXFullScreen: Optional(0)\r\nnet.kovidgoyal.kitty.window.54 AXFrame: Optional(<AXValue 0x600000865f40> {value = x:-2560.000000 y:-197.000000 w:2560.000000 h:1439.000000 type = kAXValueCGRectType})\r\nnet.kovidgoyal.kitty.window.54 AXPosition: Optional(<AXValue 0x600001cb9530> {value = x:-2560.000000 y:-197.000000 type = kAXValueCGPointType})\r\nnet.kovidgoyal.kitty.window.54 AXGrowArea: nil\r\nnet.kovidgoyal.kitty.window.54 AXMinimizeButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXDocument: nil\r\nnet.kovidgoyal.kitty.window.54 AXSections: [\r\nnet.kovidgoyal.kitty.window.54         Optional({\r\nnet.kovidgoyal.kitty.window.54             SectionDescription = Content;\r\nnet.kovidgoyal.kitty.window.54             SectionObject = \"<AXUIElement 0x600001cba4c0> {pid=1310}\";\r\nnet.kovidgoyal.kitty.window.54             SectionUniqueID = AXContent;\r\nnet.kovidgoyal.kitty.window.54         })\r\nnet.kovidgoyal.kitty.window.54 ]\r\nnet.kovidgoyal.kitty.window.54 AXCloseButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXMain: Optional(1)\r\nnet.kovidgoyal.kitty.window.54 AXActivationPoint: Optional(<AXValue 0x600001ddef70> {value = x:-1.000000 y:1441.000000 type = kAXValueCGPointType})\r\nnet.kovidgoyal.kitty.window.54 AXFullScreenButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXProxy: nil\r\nnet.kovidgoyal.kitty.window.54 AXDefaultButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXMinimized: Optional(0)\r\nnet.kovidgoyal.kitty.window.54 AXParent: Optional(<AXUIElement Application 0x600001cb9530> {pid=1310})\r\nnet.kovidgoyal.kitty.window.54 AXTitleUIElement: nil\r\nnet.kovidgoyal.kitty.window.54 AXCancelButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXModal: Optional(0)\r\nnet.kovidgoyal.kitty.window.54 AXZoomButton: nil\r\nnet.kovidgoyal.kitty.window.54 AXSize: Optional(<AXValue 0x600001ddef70> {value = w:2560.000000 h:1439.000000 type = kAXValueCGSizeType})\r\nnet.kovidgoyal.kitty.window.54 AXToolbarButton: nil\r\nnet.kovidgoyal.kitty.window.54 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\nnet.kovidgoyal.kitty           AXRole: Optional(AXApplication)\r\nnet.kovidgoyal.kitty           AXTitle: Optional(kitty)\r\nnet.kovidgoyal.kitty           AXFunctionRowTopLevelElements: [\r\nnet.kovidgoyal.kitty           ]\r\nnet.kovidgoyal.kitty           AXFrame: nil\r\nnet.kovidgoyal.kitty           AXFocusedUIElement: AXUIElement(windowId=54, title=nil, role=\"AXTextArea\", subrole=nil)\r\nnet.kovidgoyal.kitty           AXFrontmost: Optional(1)\r\nnet.kovidgoyal.kitty           AXExtrasMenuBar: nil\r\nnet.kovidgoyal.kitty           AXMainWindow: AXUIElement(windowId=54, title=\"zsh\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty           AXFocusedWindow: AXUIElement(windowId=54, title=\"zsh\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty           AXMenuBar: Optional(<AXUIElement 0x600001cb9e30> {pid=1310})\r\nnet.kovidgoyal.kitty           AXWindows: [\r\nnet.kovidgoyal.kitty               AXUIElement(windowId=54, title=\"zsh\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty           ]\r\nnet.kovidgoyal.kitty           AXSize: nil\r\nnet.kovidgoyal.kitty           AXPosition: nil\r\nnet.kovidgoyal.kitty           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```\r\n\r\nMy config\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = false\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 0\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        0\r\nouter.right =      0\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)\r\n# alt-enter = '''exec-and-forget osascript -e '\r\n# tell application \"Terminal\"\r\n#     do script\r\n#     activate\r\n# end tell'\r\n# '''\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-period = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\nalt-b = 'workspace B'\r\nalt-c = 'workspace C'\r\nalt-d = 'workspace D'\r\nalt-e = 'workspace E'\r\nalt-f = 'workspace F'\r\nalt-g = 'workspace G'\r\nalt-i = 'workspace I'\r\nalt-m = 'workspace M'\r\nalt-n = 'workspace N'\r\nalt-o = 'workspace O'\r\nalt-p = 'workspace P'\r\nalt-q = 'workspace Q'\r\nalt-r = 'workspace R'\r\nalt-s = 'workspace S'\r\nalt-t = 'workspace T'\r\nalt-u = 'workspace U'\r\nalt-v = 'workspace V'\r\nalt-w = 'workspace W'\r\nalt-x = 'workspace X'\r\nalt-y = 'workspace Y'\r\nalt-z = 'workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-a = 'move-node-to-workspace A'\r\nalt-shift-b = 'move-node-to-workspace B'\r\nalt-shift-c = 'move-node-to-workspace C'\r\nalt-shift-d = 'move-node-to-workspace D'\r\nalt-shift-e = 'move-node-to-workspace E'\r\nalt-shift-f = 'move-node-to-workspace F'\r\nalt-shift-g = 'move-node-to-workspace G'\r\nalt-shift-i = 'move-node-to-workspace I'\r\nalt-shift-m = 'move-node-to-workspace M'\r\nalt-shift-n = 'move-node-to-workspace N'\r\nalt-shift-o = 'move-node-to-workspace O'\r\nalt-shift-p = 'move-node-to-workspace P'\r\nalt-shift-q = 'move-node-to-workspace Q'\r\nalt-shift-r = 'move-node-to-workspace R'\r\nalt-shift-s = 'move-node-to-workspace S'\r\nalt-shift-t = 'move-node-to-workspace T'\r\nalt-shift-u = 'move-node-to-workspace U'\r\nalt-shift-v = 'move-node-to-workspace V'\r\nalt-shift-w = 'move-node-to-workspace W'\r\nalt-shift-x = 'move-node-to-workspace X'\r\nalt-shift-y = 'move-node-to-workspace Y'\r\nalt-shift-z = 'move-node-to-workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-0 = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n#s = ['layout sticky tiling', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n# Event listeners\r\n\r\n## Browsers\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'Chrome Personal'\r\nrun = 'move-node-to-workspace P'\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'Chrome Work'\r\nrun = 'move-node-to-workspace K'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefox'\r\nrun = 'move-node-to-workspace A'\r\n\r\n## IDE\r\n[[on-window-detected]]\r\nif.app-id = 'com.jetbrains.intellij'\r\nrun = 'move-node-to-workspace I'\r\n\r\n## Terminal\r\n[[on-window-detected]]\r\nif.app-id = 'net.kovidgoyal.kitty'\r\nrun = 'move-node-to-workspace T'\r\n\r\n## AI\r\n[[on-window-detected]]\r\nif.app-id = 'com.openai.chat'\r\nrun = ['layout floating', 'move-node-to-workspace G']\r\n\r\n## Notes\r\n[[on-window-detected]]\r\nif.app-id = 'md.obsidian'\r\nrun = 'move-node-to-workspace N'\r\n\r\n## Music\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'\r\nrun = 'move-node-to-workspace S'\r\n\r\n## Finder\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'move-node-to-workspace E'\r\n\r\n## Postman\r\n[[on-window-detected]]\r\nif.app-id = 'com.postmanlabs.mac'\r\nrun = 'move-node-to-workspace R'\r\n\r\n## Signal\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nrun = ['layout floating', 'move-node-to-workspace W']\r\n\r\n## Zoom\r\n[[on-window-detected]]\r\nif.app-id = 'us.zoom.xos'\r\nrun = 'move-node-to-workspace Z'\r\n\r\n## Miro\r\n[[on-window-detected]]\r\nif.app-id = 'com.electron.realtimeboard'\r\nrun = 'move-node-to-workspace O'\r\n\r\n## Chat\r\n[[on-window-detected]]\r\nif.app-id = 'org.whispersystems.signal-desktop'\r\nrun = 'move-node-to-workspace C'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'net.whatsapp.WhatsApp'\r\nrun = 'move-node-to-workspace C'\r\n\r\n# Home Monitor Layout\r\n# left 'DELL P2720DC (1)'\r\n# center 'DELL P2720DC (2)'\r\n# right 'built-in'\r\n\r\n# Office Monitor Layour\r\n# right DELL 4K-TBD\r\n# left 'built-in'\r\n\r\n[workspace-to-monitor-force-assignment]\r\nC = 'built-in'\r\nT = ['DELL P2720DC \\(1\\)', 'built-in']\r\nI = 'DELL P2720DC \\(2\\)'\r\nK = 'DELL P2720DC \\(2\\)'\r\nP = 'DELL P2720DC \\(2\\)'\r\nA = 'DELL P2720DC \\(1\\)'\r\nG = 'DELL P2720DC \\(1\\)'\r\nN = 'DELL P2720DC \\(1\\)'\r\nS = 'built-in'\r\nZ = 'built-in'\r\n\r\n```\r\n\r\n## Checklist\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - menubar\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - menubar\r\n\r\n```\r\n❯ aerospace --version\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\n```\r\n\r\nhttps://github.com/user-attachments/assets/f3143a1c-2e95-4563-9df5-3c04acb15cee\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/594/reactions",
        "total_count": 20,
        "+1": 20,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/590",
      "id": 2585096583,
      "node_id": "I_kwDOJl1IZM6aFXGH",
      "number": 590,
      "title": "Request regarding summon-workspace (auto-back-and-forth)",
      "user": {
        "login": "stefanpinterBE",
        "id": 110233420,
        "node_id": "U_kgDOBpIHTA",
        "avatar_url": "https://avatars.githubusercontent.com/u/110233420?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/stefanpinterBE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-10-14T07:40:51Z",
      "updated_at": "2025-06-20T22:48:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "hi!\r\n\r\nit would be great if there'd be something like `--auto-back-and-forth` for summon-workspace as well. I'd expect to make the summoned workspace vanish with the same command and make the workspace appear on the monitor that has been on it previously. this would basically work almost like scratchpad and would \"close\" issues (i suppose):\r\nhttps://github.com/nikitabobko/AeroSpace/issues/272\r\nhttps://github.com/nikitabobko/AeroSpace/issues/296\r\n\r\n\r\n\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - summon\r\n  \r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - summon\r\n\r\n\r\n```\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/590/reactions",
        "total_count": 13,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 5
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/576",
      "id": 2574185173,
      "node_id": "I_kwDOJl1IZM6ZbvLV",
      "number": 576,
      "title": "Making sure macOS's \"monitor focus\" agrees with `focus-monitor` in the case of empty monitors",
      "user": {
        "login": "ELLIOTTCABLE",
        "id": 200,
        "node_id": "MDQ6VXNlcjIwMA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ELLIOTTCABLE",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-10-08T20:50:27Z",
      "updated_at": "2026-01-12T17:31:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`focus-monitor` is great (Aerospace has really come a long way!); but at the moment, it's got one glaring flow issue.\r\n\r\nWhen all monitors have at least one window, cycling through them with a `focus-monitor left` command or similar _also_ drags the macOS \"focus\" along (that is, the top menubar is faded out on the other, non-focused displays; and <kbd>⌘</kbd><kbd>␣</kbd> pops up a search window on the correct monitor.)\r\n\r\nHowever, if there's a monitor with _no_ windows on it, then when you `focus-monitor` onto that empty monitor, there's no integration with the system. (The wrong monitor's menubar is highlighted, <kbd>⌘</kbd><kbd>␣</kbd> will open windows on the wrong monitor, etc.)\r\n\r\nThis is slightly worse when [`borders`](https://github.com/FelixKratz/JankyBorders) or similar is installed - now, the 'active window' indicator is no longer doubling as a \"what display/container AeroSpace is going to operate on\" indicator.\r\n\r\nOne janky fix, is to rewrite the default `on-focused-monitor-changed = ['move-mouse monitor-lazy-center']` hook to also …\r\n1. determine if there's any windows on the newly-focused monitor and\r\n2. then, if not, execute a mouse-click to click on the desktop and activate that monitor from macOS's point of view.\r\n\r\nThus, I suppose, at least one potential \"fix\" for this might be to make that behaviour the default (hopefully a lot) faster than indirecting through a shell, especially when tabbing through monitors quickly.\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - `focus-monitor empty`\r\n  - `\"focus-monitor\"`\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands)\r\n\r\n```\r\n❯ aerospace --version         \r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/576/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/568",
      "id": 2567984382,
      "node_id": "I_kwDOJl1IZM6ZEFT-",
      "number": 568,
      "title": "Default root container layout isn't applied to the workspace on the main display",
      "user": {
        "login": "shoplab7",
        "id": 152511767,
        "node_id": "U_kgDOCRclFw",
        "avatar_url": "https://avatars.githubusercontent.com/u/152511767?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/shoplab7",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2024-10-05T12:39:17Z",
      "updated_at": "2025-12-19T18:45:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have\r\n`default-root-container-layout = 'accordion'`\r\nin config, but when I launch aerospace, workspace on the main display(2) uses tiles, while workspaces on external displays use accordion.\r\n\r\n<details>\r\n  <summary>Config</summary> \r\n\r\n  ```\r\n  # Place a copy of this config to ~/.aerospace.toml\r\n  # After that, you can edit ~/.aerospace.toml to your liking\r\n  \r\n  # It's not necessary to copy all keys to your config.\r\n  # If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n  \r\n  # You can use it to add commands that run after login to macOS user session.\r\n  # 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n  # Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\n  after-login-command = []\r\n  \r\n  # You can use it to add commands that run after AeroSpace startup.\r\n  # 'after-startup-command' is run after 'after-login-command'\r\n  # Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\n  after-startup-command = []\r\n  \r\n  # Start AeroSpace at login\r\n  start-at-login = true \r\n  \r\n  # Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\n  enable-normalization-flatten-containers = true\r\n  enable-normalization-opposite-orientation-for-nested-containers = true\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n  # The 'accordion-padding' specifies the size of accordion padding\r\n  # You can set 0 to disable the padding feature\r\n  accordion-padding = 0\r\n  \r\n  # Possible values: tiles|accordion\r\n  default-root-container-layout = 'accordion'\r\n  \r\n  # Possible values: horizontal|vertical|auto\r\n  # 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n  #               tall monitor (anything higher than wide) gets vertical orientation\r\n  default-root-container-orientation = 'auto'\r\n  \r\n  # Possible values: (qwerty|dvorak)\r\n  # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n  key-mapping.preset = 'qwerty'\r\n  \r\n  # Mouse follows focus when focused monitor changes\r\n  # Drop it from your config, if you don't like this behavior\r\n  # See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n  # See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n  on-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n  on-focus-changed = \"move-mouse window-lazy-center\"\r\n  \r\n  # Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n  # Possible values:\r\n  # - Constant:     gaps.outer.top = 8\r\n  # - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n  #                 In this example, 24 is a default value when there is no match.\r\n  #                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n  #                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n  [gaps]\r\n  inner.horizontal = 0\r\n  inner.vertical =   0\r\n  outer.left =       0\r\n  outer.bottom =     0\r\n  outer.top =        0\r\n  outer.right =      0\r\n  \r\n  # 'main' binding mode declaration\r\n  # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n  # 'main' binding mode must be always presented\r\n  [mode.main.binding]\r\n  \r\n  # All possible keys:\r\n  # - Letters.        a, b, c, ..., z\r\n  # - Numbers.        0, 1, 2, ..., 9\r\n  # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n  # - F-keys.         f1, f2, ..., f20\r\n  # - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n  #                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n  # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n  #                   keypadMinus, keypadMultiply, keypadPlus\r\n  # - Arrows.         left, down, up, right\r\n  \r\n  # All possible modifiers: cmd, alt, ctrl, shift\r\n  \r\n  # All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n  # You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)\r\n  # alt-enter = '''exec-and-forget osascript -e '\r\n  # tell application \"Terminal\"\r\n  #     do script\r\n  #     activate\r\n  # end tell'\r\n  # '''\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\n  alt-slash = 'layout tiles horizontal vertical'\r\n  alt-comma = 'layout accordion horizontal vertical'\r\n  alt-t = 'layout floating tiling'\r\n  \r\n  # Monitor\r\n  cmd-alt-ctrl-shift-n = 'focus-monitor --wrap-around next'\r\n  cmd-alt-ctrl-shift-p = 'focus-monitor --wrap-around prev'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\n  cmd-alt-ctrl-shift-h = 'focus left --ignore-floating'\r\n  cmd-alt-ctrl-shift-j = 'focus down --ignore-floating'\r\n  cmd-alt-ctrl-shift-k = 'focus up --ignore-floating'\r\n  cmd-alt-ctrl-shift-l = 'focus right --ignore-floating'\r\n  \r\n  alt-h = 'focus left'\r\n  alt-j = 'focus down'\r\n  alt-k = 'focus up'\r\n  alt-l = 'focus right'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#move\r\n  alt-shift-h = 'move left'\r\n  alt-shift-j = 'move down'\r\n  alt-shift-k = 'move up'\r\n  alt-shift-l = 'move right'\r\n  \r\n  alt-n = ['move-node-to-monitor --wrap-around next', 'focus-monitor --wrap-around next']\r\n  alt-p = ['move-node-to-monitor --wrap-around prev', 'focus-monitor --wrap-around prev']\r\n  \r\n  alt-b = 'focus-back-and-forth'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\n  alt-shift-minus = 'resize smart -50'\r\n  alt-shift-equal = 'resize smart +50'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\n  alt-1 = 'workspace 1'\r\n  alt-2 = 'workspace 2'\r\n  alt-3 = 'workspace 3'\r\n  # alt-4 = 'workspace 4'\r\n  # alt-5 = 'workspace 5'\r\n  # alt-6 = 'workspace 6'\r\n  # alt-7 = 'workspace 7'\r\n  # alt-8 = 'workspace 8'\r\n  # alt-9 = 'workspace 9'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\n  alt-shift-1 = 'move-node-to-workspace 1'\r\n  alt-shift-2 = 'move-node-to-workspace 2'\r\n  alt-shift-3 = 'move-node-to-workspace 3'\r\n  # alt-shift-4 = 'move-node-to-workspace 4'\r\n  # alt-shift-5 = 'move-node-to-workspace 5'\r\n  # alt-shift-6 = 'move-node-to-workspace 6'\r\n  # alt-shift-7 = 'move-node-to-workspace 7'\r\n  # alt-shift-8 = 'move-node-to-workspace 8'\r\n  # alt-shift-9 = 'move-node-to-workspace 9'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\n  alt-tab = 'workspace-back-and-forth'\r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\n  alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n  \r\n  # See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\n  alt-shift-semicolon = 'mode service'\r\n  \r\n  # 'service' binding mode declaration.\r\n  # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n  [mode.service.binding]\r\n  esc = ['reload-config', 'mode main']\r\n  r = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n  ctrl-r = ['enable off', 'enable on']\r\n  #s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n  f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\n  backspace = ['close-all-windows-but-current', 'mode main']\r\n  \r\n  alt-shift-h = ['join-with left', 'mode main']\r\n  alt-shift-j = ['join-with down', 'mode main']\r\n  alt-shift-k = ['join-with up', 'mode main']\r\n  alt-shift-l = ['join-with right', 'mode main']\r\n  \r\n  # assign workspaces\r\n  [workspace-to-monitor-force-assignment]\r\n  1 = 1\r\n  2 = 2\r\n  3 = 3\r\n  \r\n  # float windows\r\n  [[on-window-detected]]\r\n  if.app-id = 'com.googlecode.iterm2'\r\n  if.window-title-regex-substring = 'iTerm2 Hotkey Window'\r\n  run = ['layout floating']\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'com.google.android.studio'\r\n  if.window-title-regex-substring = 'Running Devices.+'\r\n  run = ['layout floating']\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'cc.ffitch.shottr'\r\n  run = 'layout floating'\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'com.apple.iphonesimulator'\r\n  run = 'layout floating'\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'com.colliderli.iina'\r\n  run = 'layout floating'\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'net.freemacsoft.AppCleaner'\r\n  run = 'layout floating'\r\n  \r\n  [[on-window-detected]]\r\n  if.app-id = 'com.windscribe.gui.macos'\r\n  run = 'layout floating'\r\n  ```\r\n</details>\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - incorrect layout\r\n  - container layout\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - layout\r\n  - container\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/568/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/567",
      "id": 2567749688,
      "node_id": "I_kwDOJl1IZM6ZDMA4",
      "number": 567,
      "title": "Chain focus window",
      "user": {
        "login": "GuiltiTer",
        "id": 31219852,
        "node_id": "MDQ6VXNlcjMxMjE5ODUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/31219852?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GuiltiTer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-05T09:07:11Z",
      "updated_at": "2025-06-20T22:49:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I want to assign a list of focuses to a key binding! something like:\r\n```\r\nalt-slash = ['focus right', 'focus up', 'focus left']\r\n```\r\nFor some reason, this keybinding wouldn't work.\r\nThe solution I came up with is to use the `exec-and-forget` command:\r\n```\r\nalt-slash = 'exec-and-forget aerospace focus right && aerospace focus up && aerospace focus left'\r\n```\r\nIt works! but rather slowish.\r\n\r\nThe use case:\r\nI want to switch the window focus in the other accordion layout container.\r\nConsider a node on the left side of the screen, in a tiling layout, and a container in accordion layout on the right. Being focused on the left node, I need to switch focus to the accordion layout on the right side, switch focus on the accordion layout, and return to the node on the left side of the screen. \r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - focus\r\n  - focus chain\r\n  - focus list\r\n  - change focus on the other container\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  I've read the whole docs!\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/567/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/562",
      "id": 2566347863,
      "node_id": "I_kwDOJl1IZM6Y91xX",
      "number": 562,
      "title": "Preserve position for native fullscreen window after exiting",
      "user": {
        "login": "bin101",
        "id": 12427722,
        "node_id": "MDQ6VXNlcjEyNDI3NzIy",
        "avatar_url": "https://avatars.githubusercontent.com/u/12427722?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bin101",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2024-10-04T13:11:31Z",
      "updated_at": "2025-10-14T14:32:52Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I built a snapshot from commit https://github.com/nikitabobko/AeroSpace/commit/0589ac7d3071042e0c17e80dd517a0bcdbf798e9 and noticed that when entering native fullscreen, the window is detached and when exiting native fullscreen, the window is reattached after the last focused window and does not return to the last known position.\r\n\r\nI found [this](https://github.com/nikitabobko/AeroSpace/issues/188#issuecomment-2015684656) where @nikitabobko said this is the intended behaviour, but also [this](https://github.com/nikitabobko/AeroSpace/issues/18#issuecomment-2310013237) that at least the behaviour for hidden windows should be changed to preserve the position in the tree.\r\n\r\nThis is more of a feature request to rethink the native fullscreen behavior. At least for me, it disturbed my workflow, as I have an ultra-wide monitor with multiple browser instances in a horizontal accordion container and keep my IDE next to it on the same workspace, and switching back and forth between native fullscreen in a e.g. Youtube video completely destroys my layout.\r\n\r\n\r\n```\r\naerospace CLI client version: 0.0.0-SNAPSHOT 0589ac7d3071042e0c17e80dd517a0bcdbf798e9\r\nAeroSpace.app server version: 0.0.0-SNAPSHOT 0589ac7d3071042e0c17e80dd517a0bcdbf798e9\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/562/reactions",
        "total_count": 16,
        "+1": 16,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/556",
      "id": 2564466717,
      "node_id": "I_kwDOJl1IZM6Y2qgd",
      "number": 556,
      "title": "after-startup-command seems to ignore any configuration upon startup",
      "user": {
        "login": "ninicdennis",
        "id": 40923967,
        "node_id": "MDQ6VXNlcjQwOTIzOTY3",
        "avatar_url": "https://avatars.githubusercontent.com/u/40923967?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ninicdennis",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 12,
      "created_at": "2024-10-03T16:26:33Z",
      "updated_at": "2025-06-20T22:48:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello! I am trying to configure aerospace to start both sketchybar and borders with my configurations. The docs specify to do the following:\r\n\r\n```\r\nafter-startup-command = [\r\n    # JankyBorders has a built-in detection of already running process,\r\n    # so it won't be run twice on AeroSpace restart\r\n    'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0'\r\n]\r\n```\r\n```\r\nafter-startup-command = ['exec-and-forget sketchybar']\r\n\r\n# Notify Sketchybar about workspace change\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n]\r\n```\r\nI have done both of the above and neither will run unless I provide the absolute path like so:\r\n\r\n```\r\nafter-startup-command = [\r\n  'exec-and-forget /usr/local/bin/sketchybar'\r\n  'exec-and-forget /usr/local/bin/borders'\r\n]\r\n```\r\n\r\nI have a config for each of these which should work, but it seems to lose any context of the configuration when ran. I can run these both individually as services, and they work fine. But Aerospace seems to lose that context. \r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n- after-startup-command\r\n- enviornment not loading\r\n- startup not working\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n- after-startup-command\r\n- whatever the env part is in the guide\r\n\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/556/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/553",
      "id": 2561847086,
      "node_id": "I_kwDOJl1IZM6Ysq8u",
      "number": 553,
      "title": "Add: `volumeUp`, `volumeDown`, `mute` keys",
      "user": {
        "login": "keyelle",
        "id": 33430163,
        "node_id": "MDQ6VXNlcjMzNDMwMTYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/33430163?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/keyelle",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-10-02T14:31:15Z",
      "updated_at": "2025-06-20T22:49:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "More possibile keys request: volumeUp, volumeDown, mute\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - volume\r\n  - mute\r\n \r\n- [X] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [X] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - volume\r\n  - mute\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/553/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/548",
      "id": 2557392617,
      "node_id": "I_kwDOJl1IZM6Ybrbp",
      "number": 548,
      "title": "Multiple monitor navigation doesn't appear to work",
      "user": {
        "login": "alexgorbatchev",
        "id": 65633,
        "node_id": "MDQ6VXNlcjY1NjMz",
        "avatar_url": "https://avatars.githubusercontent.com/u/65633?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alexgorbatchev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2024-09-30T18:37:11Z",
      "updated_at": "2025-06-20T22:48:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Using `v0.14.2` I found that I'm unable to navigate between monitors. I have 3 monitors in this configuration\r\n\r\n```\r\n-----  -----\r\n| 2 |  |   |\r\n-----  | 3 |\r\n-----  |   |\r\n| 1 |  |   |\r\n-----  -----\r\n```\r\n\r\nI can only jump from 1 to 3 and back using `focus-monitor left` and `focus-monitor right`. I can still get the job done by focusing monitors by using `workspace [int]` command.\r\n\r\nMy config\r\n\r\n```\r\nafter-login-command = []\r\nafter-startup-command = []\r\nstart-at-login = true\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\naccordion-padding = 30\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\nkey-mapping.preset = 'qwerty'\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = ['^Gigabyte.*', 'built-in']\r\n2 = ['^Gigabyte.*', 'built-in']\r\n3 = ['^LG.*', 'Z1-7', 'secondary']\r\n4 = ['^LG.*', 'Z1-7', 'secondary']\r\n5 = ['^DELL.*']\r\n6 = ['^DELL.*']\r\n\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical =   10\r\nouter.left =       5\r\nouter.bottom =     5\r\nouter.top =        5\r\nouter.right =      5\r\n\r\n[exec]                   # Again, you don't need to copy all config sections to your config.\r\ninherit-env-vars = true  # If you don't touch \"exec\" section,\r\n[exec.env-vars]          # it will fallback to \"default-config.toml\"\r\nPATH = '/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}'\r\n\r\n[mode.main.binding]\r\nalt-period = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-ctrl-h = 'focus-monitor left'\r\nalt-ctrl-j = 'focus-monitor down'\r\nalt-ctrl-k = 'focus-monitor up'\r\nalt-ctrl-l = 'focus-monitor right'\r\n\r\nalt-shift-ctrl-h = 'move-node-to-monitor left'\r\nalt-shift-ctrl-j = 'move-node-to-monitor down'\r\nalt-shift-ctrl-k = 'move-node-to-monitor up'\r\nalt-shift-ctrl-l = 'move-node-to-monitor right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -100'\r\nalt-shift-equal = 'resize smart +100'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/548/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/545",
      "id": 2555826377,
      "node_id": "I_kwDOJl1IZM6YVtDJ",
      "number": 545,
      "title": "Avoid accessibility requests to windows on invisible workspaces",
      "user": {
        "login": "bmfurtado",
        "id": 185576,
        "node_id": "MDQ6VXNlcjE4NTU3Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/185576?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bmfurtado",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2024-09-30T07:36:10Z",
      "updated_at": "2025-12-05T07:57:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": " # Original title: iPhone Mirroring (macOS 15) app flickers on the corner when in another space\n\nThe new iPhone Mirroring app flickers on the corner of the screen when it's on another workspace.\n\nhttps://github.com/user-attachments/assets/92c4b4fa-5092-4029-bf87-41b264feeda3\n\nNot sure if it's relevant but here's the output of `aerospace debug-windows`:\n```\ncom.apple.ScreenContinuity.window.1187 windowId: 1187\ncom.apple.ScreenContinuity.window.1187 workspace: 5\ncom.apple.ScreenContinuity.window.1187 treeNodeParent: Workspace(name: '5', isVisible: 'false', isEffectivelyEmpty: 'false', doKeepAlive: 'true')\ncom.apple.ScreenContinuity.window.1187 recognizedAsDialog: true\ncom.apple.ScreenContinuity.window.1187 AXTitle: Optional(iPhone Mirroring)\ncom.apple.ScreenContinuity.window.1187 AXRole: Optional(AXWindow)\ncom.apple.ScreenContinuity.window.1187 AXSubrole: Optional(AXStandardWindow)\ncom.apple.ScreenContinuity.window.1187 AXIdentifier: Optional(iphone-mirroring-main)\ncom.apple.ScreenContinuity.window.1187 AXFocused: Optional(0)\ncom.apple.ScreenContinuity.window.1187 AXFullScreen: Optional(0)\ncom.apple.ScreenContinuity.window.1187 AXFrame: Optional(<AXValue 0x60000379e600> {value = x:1784.000000 y:1008.000000 w:322.000000 h:718.000000 type = kAXValueCGRectType})\ncom.apple.ScreenContinuity.window.1187 AXPosition: Optional(<AXValue 0x600002c7d800> {value = x:1784.000000 y:1008.000000 type = kAXValueCGPointType})\ncom.apple.ScreenContinuity.window.1187 AXGrowArea: nil\ncom.apple.ScreenContinuity.window.1187 AXMinimizeButton: AXUIElement {\ncom.apple.ScreenContinuity.window.1187      AXRole: Optional(AXButton)\ncom.apple.ScreenContinuity.window.1187      AXTitle: nil\ncom.apple.ScreenContinuity.window.1187      AXSubrole: Optional(AXMinimizeButton)\ncom.apple.ScreenContinuity.window.1187      AXEnabled: Optional(1)\ncom.apple.ScreenContinuity.window.1187      AXParent: AXUIElement(windowId=1187, title=nil, role=\"AXGroup\", subrole=\"AXHostingView\")\ncom.apple.ScreenContinuity.window.1187      AXTopLevelUIElement: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      AXWindow: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\ncom.apple.ScreenContinuity.window.1187 }\ncom.apple.ScreenContinuity.window.1187 AXDocument: nil\ncom.apple.ScreenContinuity.window.1187 AXSections: [\ncom.apple.ScreenContinuity.window.1187         Optional({\ncom.apple.ScreenContinuity.window.1187             SectionDescription = Content;\ncom.apple.ScreenContinuity.window.1187             SectionObject = \"<AXUIElement 0x600002cd01e0> {pid=36760}\";\ncom.apple.ScreenContinuity.window.1187             SectionUniqueID = AXContent;\ncom.apple.ScreenContinuity.window.1187         }),\ncom.apple.ScreenContinuity.window.1187         Optional({\ncom.apple.ScreenContinuity.window.1187             SectionObject = \"<AXUIElement 0x600002cd0c30> {pid=36760}\";\ncom.apple.ScreenContinuity.window.1187             SectionUniqueID = AXContainer;\ncom.apple.ScreenContinuity.window.1187         })\ncom.apple.ScreenContinuity.window.1187 ]\ncom.apple.ScreenContinuity.window.1187 AXCloseButton: AXUIElement {\ncom.apple.ScreenContinuity.window.1187      AXRole: Optional(AXButton)\ncom.apple.ScreenContinuity.window.1187      AXTitle: nil\ncom.apple.ScreenContinuity.window.1187      AXSubrole: Optional(AXCloseButton)\ncom.apple.ScreenContinuity.window.1187      AXEnabled: Optional(1)\ncom.apple.ScreenContinuity.window.1187      AXParent: AXUIElement(windowId=1187, title=nil, role=\"AXGroup\", subrole=\"AXHostingView\")\ncom.apple.ScreenContinuity.window.1187      AXTopLevelUIElement: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      AXWindow: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\ncom.apple.ScreenContinuity.window.1187 }\ncom.apple.ScreenContinuity.window.1187 AXMain: Optional(1)\ncom.apple.ScreenContinuity.window.1187 AXActivationPoint: Optional(<AXValue 0x600002cd0a20> {value = x:1794.000000 y:1022.000000 type = kAXValueCGPointType})\ncom.apple.ScreenContinuity.window.1187 AXFullScreenButton: nil\ncom.apple.ScreenContinuity.window.1187 AXProxy: nil\ncom.apple.ScreenContinuity.window.1187 AXDefaultButton: nil\ncom.apple.ScreenContinuity.window.1187 AXMinimized: Optional(0)\ncom.apple.ScreenContinuity.window.1187 AXParent: Optional(<AXUIElement Application 0x600002cd0a20> {pid=36760})\ncom.apple.ScreenContinuity.window.1187 AXTitleUIElement: nil\ncom.apple.ScreenContinuity.window.1187 AXCancelButton: nil\ncom.apple.ScreenContinuity.window.1187 AXModal: Optional(0)\ncom.apple.ScreenContinuity.window.1187 AXZoomButton: AXUIElement {\ncom.apple.ScreenContinuity.window.1187      AXRole: Optional(AXButton)\ncom.apple.ScreenContinuity.window.1187      AXTitle: nil\ncom.apple.ScreenContinuity.window.1187      AXSubrole: Optional(AXZoomButton)\ncom.apple.ScreenContinuity.window.1187      AXEnabled: Optional(0)\ncom.apple.ScreenContinuity.window.1187      AXParent: AXUIElement(windowId=1187, title=nil, role=\"AXGroup\", subrole=\"AXHostingView\")\ncom.apple.ScreenContinuity.window.1187      AXTopLevelUIElement: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      AXWindow: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity.window.1187      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\ncom.apple.ScreenContinuity.window.1187 }\ncom.apple.ScreenContinuity.window.1187 AXSize: Optional(<AXValue 0x600002cd0a20> {value = w:322.000000 h:718.000000 type = kAXValueCGSizeType})\ncom.apple.ScreenContinuity.window.1187 AXToolbarButton: nil\ncom.apple.ScreenContinuity.window.1187 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\ncom.apple.ScreenContinuity             AXRole: Optional(AXApplication)\ncom.apple.ScreenContinuity             AXTitle: Optional(iPhone Mirroring)\ncom.apple.ScreenContinuity             AXFunctionRowTopLevelElements: [\ncom.apple.ScreenContinuity             ]\ncom.apple.ScreenContinuity             AXFrame: nil\ncom.apple.ScreenContinuity             AXFocusedUIElement: AXUIElement(windowId=1187, title=nil, role=\"AXGroup\", subrole=\"AXHostingView\")\ncom.apple.ScreenContinuity             AXFrontmost: Optional(1)\ncom.apple.ScreenContinuity             AXExtrasMenuBar: nil\ncom.apple.ScreenContinuity             AXMainWindow: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity             AXFocusedWindow: AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity             AXMenuBar: Optional(<AXUIElement 0x600002cdf0f0> {pid=36760})\ncom.apple.ScreenContinuity             AXWindows: [\ncom.apple.ScreenContinuity                 AXUIElement(windowId=1187, title=\"iPhone Mirroring\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\ncom.apple.ScreenContinuity             ]\ncom.apple.ScreenContinuity             AXSize: nil\ncom.apple.ScreenContinuity             AXPosition: nil\ncom.apple.ScreenContinuity             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\n```\n\n<!--\nConsider including in bug reports:\n- `aerospace debug-windows` output if applicable\n- Screenshots of problematic windows if applicable\n- Videos of problematic windows if applicable\n- Your config\n-->\n\n## Checklist\n\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\n\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\n  - iPhone Mirroring\n  - flickering\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\n  - flickering\n\n```\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/545/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/524",
      "id": 2535630820,
      "node_id": "I_kwDOJl1IZM6XIqfk",
      "number": 524,
      "title": "[Feature request] Reset to main binding after some time without touching keybinds",
      "user": {
        "login": "thewinger",
        "id": 121455,
        "node_id": "MDQ6VXNlcjEyMTQ1NQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/121455?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thewinger",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-19T08:19:46Z",
      "updated_at": "2025-06-20T22:49:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem\r\nI'm using a Vim-like config, sometimes I change to the 'move windows around'.binding, stop to read something and forget I'm in that binding, so I start to write and move stuff around.\r\n\r\nIs there a way of resetting to main.binding after some time without touching any of the keybindings?\r\n\r\n\r\n\r\n## Checklist\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - reset binding\r\n  - change binding after delay\r\n  \r\n- [X] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [X] I've searched in the documentation. My search queries were:\r\n  - bindings\r\n  - reset\r\n  - delay\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/524/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/520",
      "id": 2534245418,
      "node_id": "I_kwDOJl1IZM6XDYQq",
      "number": 520,
      "title": "Focused workspace not moving to assigned monitor",
      "user": {
        "login": "BitInByte",
        "id": 64453275,
        "node_id": "MDQ6VXNlcjY0NDUzMjc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/64453275?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BitInByte",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-09-18T17:00:24Z",
      "updated_at": "2026-01-13T16:16:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello guys, first of all thanks for this tool, this was literally what I’ve been looking for, thanks a lot.\r\n\r\nI just found a behaviour, I might probably be setting up wrong on my config or something. Basically I have a workspace assigned to move to a specific monitor, with workspace-to-monitor-force-assignment and what happens is that, whenever I disconnect my monitor and I connect it again with the workspace I have assigned to force move, it will not move and will stay on the main monitor, even though I have it forced moved. If I have any other workspace focus on the moment I will connect the monitor again, then it works perfectly fine.\r\n\r\nAm I missing some configuration or something?\r\n\r\nthanks in advance…\r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - workspace force assign \r\n  - workspace-to\r\n  - Monitor move\r\n  - workspace move\r\n- [X] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [X] I've searched in the documentation. My search queries were:\r\n  The same than the duplicates, even used ChatGPT \r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta Ocb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/520/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/512",
      "id": 2527232693,
      "node_id": "I_kwDOJl1IZM6WooK1",
      "number": 512,
      "title": "Workspace position reset for apps fully killed via \"aerospace close\"",
      "user": {
        "login": "Chasewhip8",
        "id": 12751915,
        "node_id": "MDQ6VXNlcjEyNzUxOTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/12751915?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Chasewhip8",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-09-15T22:24:51Z",
      "updated_at": "2025-06-20T22:48:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Executing `aerospace close` either via a bind or directly against any app where the process will be killed via `--quit-if-last-window` causes the current space to be reset.  If it is executed via a bind the workspace will jump to the next space with a window, if it is executed via the cli the current space is not visually updated but I believe under the hood selects the nearest space with a window as well.**\r\n\r\nConsider including in bug reports:\r\n- `aerospace debug-windows`\r\n```\r\nnet.kovidgoyal.kitty.window.434 windowId: 434\r\nnet.kovidgoyal.kitty.window.434 workspace: 3\r\nnet.kovidgoyal.kitty.window.434 treeNodeParent: AppBundle.TilingContainer\r\nnet.kovidgoyal.kitty.window.434 recognizedAsDialog: false\r\nnet.kovidgoyal.kitty.window.434 AXTitle: Optional(aerospace debug-windows)\r\nnet.kovidgoyal.kitty.window.434 AXRole: Optional(AXWindow)\r\nnet.kovidgoyal.kitty.window.434 AXSubrole: Optional(AXStandardWindow)\r\nnet.kovidgoyal.kitty.window.434 AXFocused: Optional(0)\r\nnet.kovidgoyal.kitty.window.434 AXFullScreen: Optional(0)\r\nnet.kovidgoyal.kitty.window.434 AXFrame: Optional(<AXValue 0x600000717700> {value = x:0.000000 y:34.000000 w:1496.000000 h:932.000000 type = kAXValueCGRectType})\r\nnet.kovidgoyal.kitty.window.434 AXPosition: Optional(<AXValue 0x600001c5ac70> {value = x:0.000000 y:34.000000 type = kAXValueCGPointType})\r\nnet.kovidgoyal.kitty.window.434 AXGrowArea: nil\r\nnet.kovidgoyal.kitty.window.434 AXMinimizeButton: AXUIElement {\r\nnet.kovidgoyal.kitty.window.434      AXRole: Optional(AXButton)\r\nnet.kovidgoyal.kitty.window.434      AXTitle: nil\r\nnet.kovidgoyal.kitty.window.434      AXSubrole: Optional(AXMinimizeButton)\r\nnet.kovidgoyal.kitty.window.434      AXEnabled: Optional(1)\r\nnet.kovidgoyal.kitty.window.434      AXParent: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXTopLevelUIElement: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\nnet.kovidgoyal.kitty.window.434 }\r\nnet.kovidgoyal.kitty.window.434 AXDocument: nil\r\nnet.kovidgoyal.kitty.window.434 AXSections: [\r\nnet.kovidgoyal.kitty.window.434         Optional({\r\nnet.kovidgoyal.kitty.window.434             SectionDescription = Content;\r\nnet.kovidgoyal.kitty.window.434             SectionObject = \"<AXUIElement 0x600001c46610> {pid=5125}\";\r\nnet.kovidgoyal.kitty.window.434             SectionUniqueID = AXContent;\r\nnet.kovidgoyal.kitty.window.434         })\r\nnet.kovidgoyal.kitty.window.434 ]\r\nnet.kovidgoyal.kitty.window.434 AXCloseButton: AXUIElement {\r\nnet.kovidgoyal.kitty.window.434      AXRole: Optional(AXButton)\r\nnet.kovidgoyal.kitty.window.434      AXTitle: nil\r\nnet.kovidgoyal.kitty.window.434      AXSubrole: Optional(AXCloseButton)\r\nnet.kovidgoyal.kitty.window.434      AXEnabled: Optional(1)\r\nnet.kovidgoyal.kitty.window.434      AXParent: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXTopLevelUIElement: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\nnet.kovidgoyal.kitty.window.434 }\r\nnet.kovidgoyal.kitty.window.434 AXMain: Optional(1)\r\nnet.kovidgoyal.kitty.window.434 AXActivationPoint: Optional(<AXValue 0x600001c92550> {value = x:10.000000 y:48.000000 type = kAXValueCGPointType})\r\nnet.kovidgoyal.kitty.window.434 AXFullScreenButton: AXUIElement {\r\nnet.kovidgoyal.kitty.window.434      AXRole: Optional(AXButton)\r\nnet.kovidgoyal.kitty.window.434      AXTitle: nil\r\nnet.kovidgoyal.kitty.window.434      AXSubrole: Optional(AXFullScreenButton)\r\nnet.kovidgoyal.kitty.window.434      AXEnabled: Optional(1)\r\nnet.kovidgoyal.kitty.window.434      AXParent: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXTopLevelUIElement: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\nnet.kovidgoyal.kitty.window.434 }\r\nnet.kovidgoyal.kitty.window.434 AXProxy: nil\r\nnet.kovidgoyal.kitty.window.434 AXDefaultButton: nil\r\nnet.kovidgoyal.kitty.window.434 AXMinimized: Optional(0)\r\nnet.kovidgoyal.kitty.window.434 AXParent: Optional(<AXUIElement Application 0x600001c92550> {pid=5125})\r\nnet.kovidgoyal.kitty.window.434 AXTitleUIElement: nil\r\nnet.kovidgoyal.kitty.window.434 AXCancelButton: nil\r\nnet.kovidgoyal.kitty.window.434 AXModal: Optional(0)\r\nnet.kovidgoyal.kitty.window.434 AXZoomButton: AXUIElement {\r\nnet.kovidgoyal.kitty.window.434      AXRole: Optional(AXButton)\r\nnet.kovidgoyal.kitty.window.434      AXTitle: nil\r\nnet.kovidgoyal.kitty.window.434      AXSubrole: Optional(AXFullScreenButton)\r\nnet.kovidgoyal.kitty.window.434      AXEnabled: Optional(1)\r\nnet.kovidgoyal.kitty.window.434      AXParent: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXTopLevelUIElement: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      AXWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty.window.434      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\nnet.kovidgoyal.kitty.window.434 }\r\nnet.kovidgoyal.kitty.window.434 AXSize: Optional(<AXValue 0x600001c92550> {value = w:1496.000000 h:932.000000 type = kAXValueCGSizeType})\r\nnet.kovidgoyal.kitty.window.434 AXToolbarButton: nil\r\nnet.kovidgoyal.kitty.window.434 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\nnet.kovidgoyal.kitty            AXRole: Optional(AXApplication)\r\nnet.kovidgoyal.kitty            AXTitle: Optional(kitty)\r\nnet.kovidgoyal.kitty            AXFunctionRowTopLevelElements: [\r\nnet.kovidgoyal.kitty            ]\r\nnet.kovidgoyal.kitty            AXFrame: nil\r\nnet.kovidgoyal.kitty            AXFocusedUIElement: AXUIElement(windowId=434, title=nil, role=\"AXTextArea\", subrole=nil)\r\nnet.kovidgoyal.kitty            AXFrontmost: Optional(1)\r\nnet.kovidgoyal.kitty            AXExtrasMenuBar: nil\r\nnet.kovidgoyal.kitty            AXMainWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty            AXFocusedWindow: AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty            AXMenuBar: Optional(<AXUIElement 0x600001c47f00> {pid=5125})\r\nnet.kovidgoyal.kitty            AXWindows: [\r\nnet.kovidgoyal.kitty                AXUIElement(windowId=434, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nnet.kovidgoyal.kitty            ]\r\nnet.kovidgoyal.kitty            AXSize: nil\r\nnet.kovidgoyal.kitty            AXPosition: nil\r\nnet.kovidgoyal.kitty            Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```\r\n\r\n- Your config\r\n```\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n    \"exec-and-forget /Applications/AutoRaise.app/Contents/MacOS/AutoRaise -delay 0 -focusDelay 1 -disableKey disabled\",\r\n]\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 2\r\ninner.vertical = 2\r\nouter.left = 0\r\nouter.bottom = 0\r\nouter.top = 0\r\nouter.right = 0\r\n\r\n# See https://nikitabobko.github.io/AeroSpace/guide#exec-env-vars\r\n[exec] # Again, you don't need to copy all config sections to your config.\r\ninherit-env-vars = true # If you don't touch \"exec\" section,\r\n[exec.env-vars] # it will fallback to \"default-config.toml\"\r\nPATH = '/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}'\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# System Binds\r\nalt-q = 'close --quit-if-last-window'\r\n\r\n# Application Binds\r\nalt-t = 'exec-and-forget kitty'                                     # Terminal\r\nalt-f = 'exec-and-forget open -n \"/Applications/Google Chrome.app\"' # Browser\r\nalt-r = 'exec-and-forget open .'                                    # Finder\r\nalt-c = \"exec-and-forget zed\"\r\n\r\n# Layout Binds\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\n# alt-slash = 'layout tiles horizontal vertical'\r\n# alt-comma = 'layout accordion horizontal vertical'\r\nalt-o = \"layout floating tiling\"\r\nalt-u = 'layout tiles horizontal vertical'\r\nalt-left = \"move left\"\r\nalt-right = \"move right\"\r\nalt-up = \"move up\"\r\nalt-down = \"move left\"\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-j = \"move left\"\r\nalt-l = \"move right\"\r\nalt-i = \"move up\"\r\nalt-k = \"move down\"\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\n# alt-shift-h = 'move left'\r\n# alt-shift-j = 'move down'\r\n# alt-shift-k = 'move up'\r\n# alt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\n# alt-shift-minus = 'resize smart -50'\r\n# alt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-s = 'workspace s'\r\n\r\nalt-a = 'workspace prev'\r\nalt-d = 'workspace next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\ncmd-alt-1 = 'move-node-to-workspace 1'\r\ncmd-alt-2 = 'move-node-to-workspace 2'\r\ncmd-alt-3 = 'move-node-to-workspace 3'\r\ncmd-alt-4 = 'move-node-to-workspace 4'\r\ncmd-alt-5 = 'move-node-to-workspace 5'\r\ncmd-alt-6 = 'move-node-to-workspace 6'\r\n\r\n# Move relative and follow window.\r\ncmd-alt-a = [\"move-node-to-workspace prev\", 'workspace prev']\r\ncmd-alt-d = [\"move-node-to-workspace next\", 'workspace next']\r\n\r\n# See: https:nikitabobko.github.o/AeroSpace/commands#mode\r\n# alt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = [\r\n    'layout floating tiling',\r\n    'mode main',\r\n] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n```\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - close\r\n  - kitty\r\n  - decorators\r\n  - decorations\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - close\r\n  - decorators\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/512/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/510",
      "id": 2526931449,
      "node_id": "I_kwDOJl1IZM6Wnen5",
      "number": 510,
      "title": "[Feature Request] Hotkey Window / Guake-style windows",
      "user": {
        "login": "jottr",
        "id": 2744198,
        "node_id": "MDQ6VXNlcjI3NDQxOTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2744198?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jottr",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2024-09-15T14:09:40Z",
      "updated_at": "2025-06-23T15:40:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be very useful to be able to set a keybinding that activates or hides an application window on the currently aktive screen/workspace. \nThe goal is to achieve something like the drop down terminal [Guake](https://guake.github.io/), or **Dedicated Hotkey Windows** in [iTerm](https://iterm2.com/documentation-hotkey.html).\n\nI'm aware of `exec-and-forget open <app>` and `move-node-to-workspace`, but haven't found a strategy to achieve the above with these commands. \n\nIf it is already possible to achieve this with the current Aerospace feature set, consider this a question. \nOtherwise consider this a feature request. \n\nThanks!\n\nRelated (or maybe a duplicate): https://github.com/nikitabobko/AeroSpace/issues/272",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/510/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/509",
      "id": 2526891517,
      "node_id": "I_kwDOJl1IZM6WnU39",
      "number": 509,
      "title": "Focus switches to another app when last tab is closed, change behavior to quit it directly?",
      "user": {
        "login": "saadjs",
        "id": 66745745,
        "node_id": "MDQ6VXNlcjY2NzQ1NzQ1",
        "avatar_url": "https://avatars.githubusercontent.com/u/66745745?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/saadjs",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-09-15T12:26:51Z",
      "updated_at": "2025-06-20T22:48:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When the last tab of a browser (or any app) is closed, the current behavior is that the focus automatically switches to another active window in the workspace. However, the closed app remains running in the background. To fully quit the app, I need to use Cmd+Tab to bring it back into focus, then Cmd+Q to close it.\r\n\r\nHow do I change this behavior so when the last tab or window of an app is closed, the app will remain in focus, allowing me to immediately quit it using Cmd+Q? Only after quitting the app, aerospace would switch focus to another active app in the workspace.\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - focus\r\n  - auto focus\r\n  - auto focus switch, etc.\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - focus\r\n  - auto focus\r\n  - auto focus switch, etc.\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/509/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/508",
      "id": 2526149641,
      "node_id": "I_kwDOJl1IZM6WkfwJ",
      "number": 508,
      "title": "\"The Unarchiver\" window should be floating",
      "user": {
        "login": "andreaswilli",
        "id": 17298270,
        "node_id": "MDQ6VXNlcjE3Mjk4Mjcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/17298270?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/andreaswilli",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-09-14T09:27:26Z",
      "updated_at": "2025-06-20T22:49:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**YOUR TEXT**\r\n\r\nThe Unarchiver extraction window does not seem to be automatically detected as a dialog.\r\n\r\n<img width=\"865\" alt=\"Screenshot 2024-09-14 at 11 22 29\" src=\"https://github.com/user-attachments/assets/107f81d1-55fc-4b99-bca8-807d05fc8ee8\">\r\n\r\nNot sure why this has a fullscreen button 😄  but that's probably the issue\r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - unarchiver\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [ ] I've searched in the documentation. My search queries were:\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/508/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/506",
      "id": 2522837519,
      "node_id": "I_kwDOJl1IZM6WX3IP",
      "number": 506,
      "title": "Crash when monitors connect/disconnect",
      "user": {
        "login": "chrishoage",
        "id": 1056886,
        "node_id": "MDQ6VXNlcjEwNTY4ODY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1056886?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chrishoage",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-09-12T16:20:55Z",
      "updated_at": "2025-08-25T13:53:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Sometimes when disconnecting / connecting monitors AereoSpace crashes\r\n\r\nI have:\r\n\r\n- 4k display set a main displaly\r\n- 1440p display set as secondary display\r\n- 'built in' display set as mirror of main display (it is unused while docked)\r\n\r\nI think it may be a mismatch in the workspaces defined in the config though `workspace #` and I had forgot to comment out the `workspace-to-monitor-force-assignment`. It is commented out now as I was writing this report I noticed the issue, but I still thought it valutable to report the crash along with the crash report.\r\n\r\n<details><summary>My Config</summary>\r\n<pre>\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = false\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = false\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# on-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = [\r\n  'move-mouse window-lazy-center',\r\n] # Mouse lazily follows any focus (window or workspace)\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 8\r\ninner.vertical = 8\r\nouter.left = 8\r\nouter.bottom = 8\r\nouter.top = 8\r\nouter.right = 8\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'main' # Main monitor\r\n# 3 = 'main'      # Non-main monitor in case when there are only two monitors\r\n4 = 'secondary' # Case insensitive regex substring\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nrun = 'move-node-to-workspace 4'\r\n\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)\r\nctrl-enter = [\r\n  'exec-and-forget /Applications/kitty.app/Contents/MacOS/kitty --single-instance -d ~',\r\n]\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nctrl-slash = 'layout tiles horizontal vertical'\r\nctrl-comma = 'layout accordion horizontal vertical'\r\n\r\nctrl-p = 'focus-monitor --wrap-around left'\r\nctrl-n = 'focus-monitor --wrap-around right'\r\n\r\nctrl-w = 'close'\r\n\r\nctrl-m = 'fullscreen'\r\nctrl-t = 'layout tiling floating'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nctrl-h = 'focus left'\r\nctrl-j = 'focus down'\r\nctrl-k = 'focus up'\r\nctrl-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nctrl-shift-h = 'move left'\r\nctrl-shift-j = 'move down'\r\nctrl-shift-k = 'move up'\r\nctrl-shift-l = 'move right'\r\n\r\nctrl-alt-h = 'join-with left'\r\nctrl-alt-j = 'join-with down'\r\nctrl-alt-k = 'join-with up'\r\nctrl-alt-l = 'join-with right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nctrl-shift-minus = 'resize smart -50'\r\nctrl-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nctrl-1 = 'workspace 1'\r\nctrl-2 = 'workspace 2'\r\n# ctrl-3 = 'workspace 3'\r\nctrl-4 = 'workspace 4'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nctrl-shift-1 = 'move-node-to-workspace 1'\r\nctrl-shift-2 = 'move-node-to-workspace 2'\r\n# ctrl-shift-3 = 'move-node-to-workspace 3'\r\nctrl-shift-4 = 'move-node-to-workspace 4'\r\n\r\nctrl-rightSquareBracket = 'workspace next'\r\nctrl-leftSquareBracket = 'workspace prev'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nctrl-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nctrl-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nctrl-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = [\r\n  'layout floating tiling',\r\n  'mode main',\r\n] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n</pre>\r\n</details> \r\n\r\n<details><summary>Crash Report</summary>\r\n<pre>\r\n-------------------------------------\r\nTranslated Report (Full Report Below)\r\n-------------------------------------\r\n\r\nProcess:               AeroSpace [78225]\r\nPath:                  /Applications/AeroSpace.app/Contents/MacOS/AeroSpace\r\nIdentifier:            bobko.aerospace\r\nVersion:               0.14.2-Beta (???)\r\nCode Type:             ARM-64 (Native)\r\nParent Process:        launchd [1]\r\nUser ID:               501\r\n\r\nDate/Time:             2024-09-11 17:30:16.5343 -0700\r\nOS Version:            macOS 14.6.1 (23G93)\r\nReport Version:        12\r\nAnonymous UUID:        6C4BFFA6-31F9-5C7A-C905-7AEC6565D87F\r\n\r\nSleep/Wake UUID:       2E25A891-0CA0-442E-8146-0849AE26F34E\r\n\r\nTime Awake Since Boot: 100000 seconds\r\nTime Since Wake:       30253 seconds\r\n\r\nSystem Integrity Protection: enabled\r\n\r\nCrashed Thread:        0  Dispatch queue: com.apple.main-thread\r\n\r\nException Type:        EXC_BREAKPOINT (SIGTRAP)\r\nException Codes:       0x0000000000000001, 0x00000001000c3d60\r\n\r\nTermination Reason:    Namespace SIGNAL, Code 5 Trace/BPT trap: 5\r\nTerminating Process:   exc handler [78225]\r\n\r\nThread 0 Crashed::  Dispatch queue: com.apple.main-thread\r\n0   AeroSpace                     \t       0x1000c3d60 specialized Collection.map<A>(_:) + 1752\r\n1   AeroSpace                     \t       0x1000c389c specialized Collection.map<A>(_:) + 532\r\n2   AeroSpace                     \t       0x1000c3560 sortedMonitors.getter + 300\r\n3   AeroSpace                     \t       0x1000e7088 Workspace.forceAssignedMonitor.getter + 392\r\n4   AeroSpace                     \t       0x1000deff8 Workspace.workspaceMonitor.getter + 40\r\n5   AeroSpace                     \t       0x1000ba86c checkOnFocusChangedCallbacks() + 164\r\n6   AeroSpace                     \t       0x1000bdd88 specialized refreshSession<A>(startup:forceFocus:body:) + 348\r\n7   HIServices                    \t       0x18a13c3b0 _XXMIGPostNotification + 896\r\n8   HIServices                    \t       0x18a16749c _XPostNotification + 360\r\n9   HIServices                    \t       0x18a11e340 mshMIGPerform + 208\r\n10  CoreFoundation                \t       0x183d05a6c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 60\r\n11  CoreFoundation                \t       0x183d0598c __CFRunLoopDoSource1 + 524\r\n12  CoreFoundation                \t       0x183d04350 __CFRunLoopRun + 2244\r\n13  CoreFoundation                \t       0x183d03434 CFRunLoopRunSpecific + 608\r\n14  HIToolbox                     \t       0x18e4ad19c RunCurrentEventLoopInMode + 292\r\n15  HIToolbox                     \t       0x18e4acfd8 ReceiveNextEventCommon + 648\r\n16  HIToolbox                     \t       0x18e4acd30 _BlockUntilNextEventMatchingListInModeWithFilter + 76\r\n17  AppKit                        \t       0x187562cc8 _DPSNextEvent + 660\r\n18  AppKit                        \t       0x187d594d0 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 700\r\n19  AppKit                        \t       0x187555ffc -[NSApplication run] + 476\r\n20  AppKit                        \t       0x18752d240 NSApplicationMain + 880\r\n21  SwiftUI                       \t       0x1af6fb3b8 0x1af5f1000 + 1090488\r\n22  SwiftUI                       \t       0x1afe64ddc 0x1af5f1000 + 8863196\r\n23  SwiftUI                       \t       0x1b025fe0c 0x1af5f1000 + 13037068\r\n24  AeroSpace                     \t       0x100067470 main + 36\r\n25  dyld                          \t       0x18389b154 start + 2476\r\n\r\nThread 1::  Dispatch queue: com.apple.root.default-qos\r\n0   libsystem_kernel.dylib        \t       0x183bed6d4 __accept + 8\r\n1   AeroSpace                     \t       0x1002d43ac Socket.acceptClientConnection(invokeDelegate:) + 456\r\n2   AeroSpace                     \t       0x1000ca24c closure #3 in startServer() + 180\r\n3   AeroSpace                     \t       0x1000cc8c0 thunk for @escaping @callee_guaranteed @Sendable () -> () + 28\r\n4   libdispatch.dylib             \t       0x183a73750 _dispatch_call_block_and_release + 32\r\n5   libdispatch.dylib             \t       0x183a753e8 _dispatch_client_callout + 20\r\n6   libdispatch.dylib             \t       0x183a78580 _dispatch_queue_override_invoke + 928\r\n7   libdispatch.dylib             \t       0x183a86ea8 _dispatch_root_queue_drain + 392\r\n8   libdispatch.dylib             \t       0x183a876b8 _dispatch_worker_thread2 + 156\r\n9   libsystem_pthread.dylib       \t       0x183c21fd0 _pthread_wqthread + 228\r\n10  libsystem_pthread.dylib       \t       0x183c20d28 start_wqthread + 8\r\n\r\nThread 2:: com.apple.NSEventThread\r\n0   libsystem_kernel.dylib        \t       0x183be4df4 mach_msg2_trap + 8\r\n1   libsystem_kernel.dylib        \t       0x183bf75e4 mach_msg2_internal + 80\r\n2   libsystem_kernel.dylib        \t       0x183bed9c4 mach_msg_overwrite + 476\r\n3   libsystem_kernel.dylib        \t       0x183be5178 mach_msg + 24\r\n4   CoreFoundation                \t       0x183d05680 __CFRunLoopServiceMachPort + 160\r\n5   CoreFoundation                \t       0x183d03f44 __CFRunLoopRun + 1208\r\n6   CoreFoundation                \t       0x183d03434 CFRunLoopRunSpecific + 608\r\n7   AppKit                        \t       0x18768d280 _NSEventThread + 144\r\n8   libsystem_pthread.dylib       \t       0x183c25f94 _pthread_start + 136\r\n9   libsystem_pthread.dylib       \t       0x183c20d34 thread_start + 8\r\n\r\nThread 3:\r\n0   libsystem_pthread.dylib       \t       0x183c20d20 start_wqthread + 0\r\n\r\n\r\nThread 0 crashed with ARM Thread State (64-bit):\r\n    x0: 0x0000600002f22f40   x1: 0x05000001eba8ce99   x2: 0x00000001eba8ce98   x3: 0x0000000000000000\r\n    x4: 0x0000000193e393e8   x5: 0x00000001ec10cae0   x6: 0x0000000000000065   x7: 0x0000000000000079\r\n    x8: 0x0000600002f22f40   x9: 0x00000001e436642d  x10: 0x00000001572cb8ed  x11: 0x000000000000001f\r\n   x12: 0x000000000000000d  x13: 0x0000000158b0bd90  x14: 0x03000001ebaa6011  x15: 0x00000001ebaa6010\r\n   x16: 0x05000001eba8ce99  x17: 0x0000000000000008  x18: 0x0000000000000000  x19: 0x000000010039a598\r\n   x20: 0x0000000000000000  x21: 0x0000000000000000  x22: 0x4000600002f22f40  x23: 0x000000010039a550\r\n   x24: 0x0000000000000000  x25: 0x000000010039a618  x26: 0x0000600001061360  x27: 0x0000000000000000\r\n   x28: 0x0000600000521680   fp: 0x000000016fd98bf0   lr: 0x00000001000c389c\r\n    sp: 0x000000016fd98a90   pc: 0x00000001000c3d60 cpsr: 0x60001000\r\n   far: 0x0000000000000000  esr: 0xf2000001 (Breakpoint) brk 1\r\n\r\nBinary Images:\r\n       0x10b110000 -        0x10b11bfff libobjc-trampolines.dylib (*) <7d6ca1cb-c5e6-38b6-9618-2c580486fc6b> /usr/lib/libobjc-trampolines.dylib\r\n       0x100064000 -        0x100393fff bobko.aerospace (0.14.2-Beta) <62b9891b-2b4c-347c-8d9a-d6905efb258d> /Applications/AeroSpace.app/Contents/MacOS/AeroSpace\r\n       0x18a113000 -        0x18a176fff com.apple.HIServices (1.22) <5edc02bc-3474-3577-a9d5-8d543bc1521e> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices\r\n       0x183c87000 -        0x18415ffff com.apple.CoreFoundation (6.9) <55720ee0-d8c3-33a1-9854-8e61a6f44895> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation\r\n       0x18e47a000 -        0x18e73dfff com.apple.HIToolbox (2.1.1) <4166f6cb-b599-306c-8568-823bd29a74c3> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox\r\n       0x187529000 -        0x188867fff com.apple.AppKit (6.9) <7acbeef9-a453-3e4d-98ac-f9441d86e183> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit\r\n       0x1af5f1000 -        0x1b12d4fff com.apple.SwiftUI (5.6.2) <0ccf2597-869c-37ef-aded-ce62f6ac3c77> /System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI\r\n       0x183895000 -        0x18391e507 dyld (*) <f635824e-318b-3f0c-842c-c369737f2b68> /usr/lib/dyld\r\n               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???\r\n       0x1938f7000 -        0x193e54fff libswiftCore.dylib (*) <7db1818b-1d9a-328e-821b-21a33442746a> /usr/lib/swift/libswiftCore.dylib\r\n       0x183be4000 -        0x183c1effb libsystem_kernel.dylib (*) <71ff45b8-f14e-3666-9e96-6cf58315b91d> /usr/lib/system/libsystem_kernel.dylib\r\n       0x183a71000 -        0x183ab8fff libdispatch.dylib (*) <1a1ce00a-89cd-36ba-9678-5038aedd0d8d> /usr/lib/system/libdispatch.dylib\r\n       0x183c1f000 -        0x183c2bfff libsystem_pthread.dylib (*) <e03e8478-6f5c-3d21-a79a-58408f514000> /usr/lib/system/libsystem_pthread.dylib\r\n\r\nExternal Modification Summary:\r\n  Calls made by other processes targeting this process:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n  Calls made by this process:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n  Calls made by all processes on this machine:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n\r\nVM Region Summary:\r\nReadOnly portion of Libraries: Total=1.1G resident=0K(0%) swapped_out_or_unallocated=1.1G(100%)\r\nWritable regions: Total=2.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=2.7G(100%)\r\n\r\n                                VIRTUAL   REGION \r\nREGION TYPE                        SIZE    COUNT (non-coalesced) \r\n===========                     =======  ======= \r\nActivity Tracing                   256K        1 \r\nAttributeGraph Data               1024K        1 \r\nCG image                            32K        1 \r\nColorSync                          608K       29 \r\nCoreAnimation                       48K        2 \r\nCoreGraphics                        64K        4 \r\nFoundation                          16K        1 \r\nKernel Alloc Once                   32K        1 \r\nMALLOC                             2.7G      100 \r\nMALLOC guard page                  288K       18 \r\nSTACK GUARD                       56.1M        4 \r\nStack                             9808K        4 \r\nVM_ALLOCATE                        192K        6 \r\n__AUTH                            1430K      260 \r\n__AUTH_CONST                      23.5M      443 \r\n__CTF                               824        1 \r\n__DATA                             9.9M      430 \r\n__DATA_CONST                      22.0M      448 \r\n__DATA_DIRTY                      1298K      140 \r\n__FONT_DATA                          4K        1 \r\n__LINKEDIT                       529.9M        3 \r\n__OBJC_RO                         71.9M        1 \r\n__OBJC_RW                         2200K        1 \r\n__TEXT                           546.6M      464 \r\ndyld private memory                272K        2 \r\nmapped file                      188.5M       27 \r\nshared memory                     1392K       14 \r\n===========                     =======  ======= \r\nTOTAL                              4.1G     2407 \r\n\r\n\r\n\r\n-----------\r\nFull Report\r\n-----------\r\n\r\n{\"app_name\":\"AeroSpace\",\"timestamp\":\"2024-09-11 17:30:16.00 -0700\",\"app_version\":\"0.14.2-Beta\",\"slice_uuid\":\"62b9891b-2b4c-347c-8d9a-d6905efb258d\",\"build_version\":\"\",\"platform\":1,\"bundleID\":\"bobko.aerospace\",\"share_with_app_devs\":0,\"is_first_party\":0,\"bug_type\":\"309\",\"os_version\":\"macOS 14.6.1 (23G93)\",\"roots_installed\":0,\"name\":\"AeroSpace\",\"incident_id\":\"D818D0BA-696F-4F49-99B1-2F2EEDB06520\"}\r\n{\r\n  \"uptime\" : 100000,\r\n  \"procRole\" : \"Default\",\r\n  \"version\" : 2,\r\n  \"userID\" : 501,\r\n  \"deployVersion\" : 210,\r\n  \"modelCode\" : \"Mac15,8\",\r\n  \"coalitionID\" : 1131,\r\n  \"osVersion\" : {\r\n    \"train\" : \"macOS 14.6.1\",\r\n    \"build\" : \"23G93\",\r\n    \"releaseType\" : \"User\"\r\n  },\r\n  \"captureTime\" : \"2024-09-11 17:30:16.5343 -0700\",\r\n  \"codeSigningMonitor\" : 1,\r\n  \"incident\" : \"D818D0BA-696F-4F49-99B1-2F2EEDB06520\",\r\n  \"pid\" : 78225,\r\n  \"translated\" : false,\r\n  \"cpuType\" : \"ARM-64\",\r\n  \"roots_installed\" : 0,\r\n  \"bug_type\" : \"309\",\r\n  \"procLaunch\" : \"2024-09-11 13:33:14.9485 -0700\",\r\n  \"procStartAbsTime\" : 2077575713197,\r\n  \"procExitAbsTime\" : 2418894247481,\r\n  \"procName\" : \"AeroSpace\",\r\n  \"procPath\" : \"\\/Applications\\/AeroSpace.app\\/Contents\\/MacOS\\/AeroSpace\",\r\n  \"bundleInfo\" : {\"CFBundleShortVersionString\":\"0.14.2-Beta\",\"CFBundleIdentifier\":\"bobko.aerospace\"},\r\n  \"storeInfo\" : {\"deviceIdentifierForVendor\":\"656E66B6-DB75-5F3D-ADE5-88B98B0D3806\",\"thirdParty\":true},\r\n  \"parentProc\" : \"launchd\",\r\n  \"parentPid\" : 1,\r\n  \"coalitionName\" : \"bobko.aerospace\",\r\n  \"crashReporterKey\" : \"6C4BFFA6-31F9-5C7A-C905-7AEC6565D87F\",\r\n  \"codeSigningID\" : \"bobko.aerospace\",\r\n  \"codeSigningTeamID\" : \"\",\r\n  \"codeSigningFlags\" : 570425861,\r\n  \"codeSigningValidationCategory\" : 10,\r\n  \"codeSigningTrustLevel\" : 4294967295,\r\n  \"instructionByteStream\" : {\"beforePC\":\"FaGWmuADFqpntAmU4AMVqoGwCZT3AwCq4AMWqly0CZRe\\/v8XIAAg1A==\",\"atPC\":\"IAAg1CAAINT\\/AwLR6SMEbfZXBan0Twap\\/XsHqf3DAZESBgaUwAUANg==\"},\r\n  \"wakeTime\" : 30253,\r\n  \"sleepWakeUUID\" : \"2E25A891-0CA0-442E-8146-0849AE26F34E\",\r\n  \"sip\" : \"enabled\",\r\n  \"exception\" : {\"codes\":\"0x0000000000000001, 0x00000001000c3d60\",\"rawCodes\":[1,4295769440],\"type\":\"EXC_BREAKPOINT\",\"signal\":\"SIGTRAP\"},\r\n  \"termination\" : {\"flags\":0,\"code\":5,\"namespace\":\"SIGNAL\",\"indicator\":\"Trace\\/BPT trap: 5\",\"byProc\":\"exc handler\",\"byPid\":78225},\r\n  \"os_fault\" : {\"process\":\"AeroSpace\"},\r\n  \"extMods\" : {\"caller\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"system\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"targeted\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"warnings\":0},\r\n  \"faultingThread\" : 0,\r\n  \"threads\" : [{\"triggered\":true,\"id\":1494915,\"threadState\":{\"x\":[{\"value\":105553165692736},{\"value\":360287978438315673,\"symbolLocation\":360287970189639681,\"symbol\":\"OBJC_CLASS_$___NSArrayI\"},{\"value\":8248675992,\"symbolLocation\":0,\"symbol\":\"OBJC_CLASS_$___NSArrayI\"},{\"value\":0},{\"value\":6776132584,\"symbolLocation\":0,\"symbol\":\"nominal type descriptor for _ContiguousArrayStorage\"},{\"value\":8255490784,\"symbolLocation\":0,\"symbol\":\"flag for loading of canonical specialized generic type metadata for _ContiguousArrayStorage\"},{\"value\":101},{\"value\":121},{\"value\":105553165692736},{\"value\":8123737133,\"objc-selector\":\"frame\"},{\"value\":5757516013},{\"value\":31},{\"value\":13},{\"value\":5782945168},{\"value\":216172790362562577,\"symbolLocation\":216172782113783809,\"symbol\":\"OBJC_CLASS_$_NSScreen\"},{\"value\":8248778768,\"symbolLocation\":0,\"symbol\":\"OBJC_CLASS_$_NSScreen\"},{\"value\":360287978438315673,\"symbolLocation\":360287970189639681,\"symbol\":\"OBJC_CLASS_$___NSArrayI\"},{\"value\":8},{\"value\":0},{\"value\":4298745240,\"symbolLocation\":72,\"symbol\":\"protocol witness table for MonitorImpl\"},{\"value\":0},{\"value\":0},{\"value\":4611791571593080640},{\"value\":4298745168,\"symbolLocation\":0,\"symbol\":\"protocol witness table for MonitorImpl\"},{\"value\":0},{\"value\":4298745368,\"symbolLocation\":0,\"symbol\":\"type metadata for MonitorImpl\"},{\"value\":105553133441888},{\"value\":0},{\"value\":105553121646208}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":4295768220},\"cpsr\":{\"value\":1610616832},\"fp\":{\"value\":6171495408},\"sp\":{\"value\":6171495056},\"esr\":{\"value\":4060086273,\"description\":\"(Breakpoint) brk 1\"},\"pc\":{\"value\":4295769440,\"matchesCrashFrame\":1},\"far\":{\"value\":0}},\"queue\":\"com.apple.main-thread\",\"frames\":[{\"imageOffset\":392544,\"symbol\":\"specialized Collection.map<A>(_:)\",\"symbolLocation\":1752,\"imageIndex\":1},{\"imageOffset\":391324,\"symbol\":\"specialized Collection.map<A>(_:)\",\"symbolLocation\":532,\"imageIndex\":1},{\"imageOffset\":390496,\"symbol\":\"sortedMonitors.getter\",\"symbolLocation\":300,\"imageIndex\":1},{\"imageOffset\":536712,\"symbol\":\"Workspace.forceAssignedMonitor.getter\",\"symbolLocation\":392,\"imageIndex\":1},{\"imageOffset\":503800,\"symbol\":\"Workspace.workspaceMonitor.getter\",\"symbolLocation\":40,\"imageIndex\":1},{\"imageOffset\":354412,\"symbol\":\"checkOnFocusChangedCallbacks()\",\"symbolLocation\":164,\"imageIndex\":1},{\"imageOffset\":368008,\"symbol\":\"specialized refreshSession<A>(startup:forceFocus:body:)\",\"symbolLocation\":348,\"imageIndex\":1},{\"imageOffset\":168880,\"symbol\":\"_XXMIGPostNotification\",\"symbolLocation\":896,\"imageIndex\":2},{\"imageOffset\":345244,\"symbol\":\"_XPostNotification\",\"symbolLocation\":360,\"imageIndex\":2},{\"imageOffset\":45888,\"symbol\":\"mshMIGPerform\",\"symbolLocation\":208,\"imageIndex\":2},{\"imageOffset\":518764,\"symbol\":\"__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__\",\"symbolLocation\":60,\"imageIndex\":3},{\"imageOffset\":518540,\"symbol\":\"__CFRunLoopDoSource1\",\"symbolLocation\":524,\"imageIndex\":3},{\"imageOffset\":512848,\"symbol\":\"__CFRunLoopRun\",\"symbolLocation\":2244,\"imageIndex\":3},{\"imageOffset\":508980,\"symbol\":\"CFRunLoopRunSpecific\",\"symbolLocation\":608,\"imageIndex\":3},{\"imageOffset\":209308,\"symbol\":\"RunCurrentEventLoopInMode\",\"symbolLocation\":292,\"imageIndex\":4},{\"imageOffset\":208856,\"symbol\":\"ReceiveNextEventCommon\",\"symbolLocation\":648,\"imageIndex\":4},{\"imageOffset\":208176,\"symbol\":\"_BlockUntilNextEventMatchingListInModeWithFilter\",\"symbolLocation\":76,\"imageIndex\":4},{\"imageOffset\":236744,\"symbol\":\"_DPSNextEvent\",\"symbolLocation\":660,\"imageIndex\":5},{\"imageOffset\":8586448,\"symbol\":\"-[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]\",\"symbolLocation\":700,\"imageIndex\":5},{\"imageOffset\":184316,\"symbol\":\"-[NSApplication run]\",\"symbolLocation\":476,\"imageIndex\":5},{\"imageOffset\":16960,\"symbol\":\"NSApplicationMain\",\"symbolLocation\":880,\"imageIndex\":5},{\"imageOffset\":1090488,\"imageIndex\":6},{\"imageOffset\":8863196,\"imageIndex\":6},{\"imageOffset\":13037068,\"imageIndex\":6},{\"imageOffset\":13424,\"symbol\":\"main\",\"symbolLocation\":36,\"imageIndex\":1},{\"imageOffset\":24916,\"symbol\":\"start\",\"symbolLocation\":2476,\"imageIndex\":7}]},{\"id\":1494929,\"threadState\":{\"x\":[{\"value\":4},{\"value\":0},{\"value\":6172634080},{\"value\":5782924882},{\"value\":0},{\"value\":800},{\"value\":105553153458976},{\"value\":0},{\"value\":128},{\"value\":0},{\"value\":162594033434624},{\"value\":16},{\"value\":105553153416844},{\"value\":2095104},{\"value\":2043},{\"value\":2491314227},{\"value\":30},{\"value\":2493409330},{\"value\":0},{\"value\":5782924608},{\"value\":5782924882},{\"value\":0},{\"value\":6172634128},{\"value\":0},{\"value\":5782924660},{\"value\":8248594880,\"symbolLocation\":1536,\"symbol\":\"_dispatch_root_queues\"},{\"value\":9223372041153362400},{\"value\":14987979559889010718},{\"value\":4298586128}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":4297933740},\"cpsr\":{\"value\":1610616832},\"fp\":{\"value\":6172634544},\"sp\":{\"value\":6172633728},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6505289428},\"far\":{\"value\":0}},\"queue\":\"com.apple.root.default-qos\",\"frames\":[{\"imageOffset\":38612,\"symbol\":\"__accept\",\"symbolLocation\":8,\"imageIndex\":10},{\"imageOffset\":2556844,\"symbol\":\"Socket.acceptClientConnection(invokeDelegate:)\",\"symbolLocation\":456,\"imageIndex\":1},{\"imageOffset\":418380,\"symbol\":\"closure #3 in startServer()\",\"symbolLocation\":180,\"imageIndex\":1},{\"imageOffset\":428224,\"symbol\":\"thunk for @escaping @callee_guaranteed @Sendable () -> ()\",\"symbolLocation\":28,\"imageIndex\":1},{\"imageOffset\":10064,\"symbol\":\"_dispatch_call_block_and_release\",\"symbolLocation\":32,\"imageIndex\":11},{\"imageOffset\":17384,\"symbol\":\"_dispatch_client_callout\",\"symbolLocation\":20,\"imageIndex\":11},{\"imageOffset\":30080,\"symbol\":\"_dispatch_queue_override_invoke\",\"symbolLocation\":928,\"imageIndex\":11},{\"imageOffset\":89768,\"symbol\":\"_dispatch_root_queue_drain\",\"symbolLocation\":392,\"imageIndex\":11},{\"imageOffset\":91832,\"symbol\":\"_dispatch_worker_thread2\",\"symbolLocation\":156,\"imageIndex\":11},{\"imageOffset\":12240,\"symbol\":\"_pthread_wqthread\",\"symbolLocation\":228,\"imageIndex\":12},{\"imageOffset\":7464,\"symbol\":\"start_wqthread\",\"symbolLocation\":8,\"imageIndex\":12}]},{\"id\":1494979,\"name\":\"com.apple.NSEventThread\",\"threadState\":{\"x\":[{\"value\":268451845},{\"value\":21592279046},{\"value\":8589934592},{\"value\":215517163945984},{\"value\":0},{\"value\":215517163945984},{\"value\":2},{\"value\":4294967295},{\"value\":18446744073709550527},{\"value\":50179},{\"value\":0},{\"value\":1},{\"value\":50179},{\"value\":7075},{\"value\":0},{\"value\":0},{\"value\":18446744073709551569},{\"value\":8423679720},{\"value\":0},{\"value\":4294967295},{\"value\":2},{\"value\":215517163945984},{\"value\":0},{\"value\":215517163945984},{\"value\":6174351464},{\"value\":8589934592},{\"value\":21592279046},{\"value\":21592279046},{\"value\":4412409862}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":6505330148},\"cpsr\":{\"value\":4096},\"fp\":{\"value\":6174351312},\"sp\":{\"value\":6174351232},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6505254388},\"far\":{\"value\":0}},\"frames\":[{\"imageOffset\":3572,\"symbol\":\"mach_msg2_trap\",\"symbolLocation\":8,\"imageIndex\":10},{\"imageOffset\":79332,\"symbol\":\"mach_msg2_internal\",\"symbolLocation\":80,\"imageIndex\":10},{\"imageOffset\":39364,\"symbol\":\"mach_msg_overwrite\",\"symbolLocation\":476,\"imageIndex\":10},{\"imageOffset\":4472,\"symbol\":\"mach_msg\",\"symbolLocation\":24,\"imageIndex\":10},{\"imageOffset\":517760,\"symbol\":\"__CFRunLoopServiceMachPort\",\"symbolLocation\":160,\"imageIndex\":3},{\"imageOffset\":511812,\"symbol\":\"__CFRunLoopRun\",\"symbolLocation\":1208,\"imageIndex\":3},{\"imageOffset\":508980,\"symbol\":\"CFRunLoopRunSpecific\",\"symbolLocation\":608,\"imageIndex\":3},{\"imageOffset\":1458816,\"symbol\":\"_NSEventThread\",\"symbolLocation\":144,\"imageIndex\":5},{\"imageOffset\":28564,\"symbol\":\"_pthread_start\",\"symbolLocation\":136,\"imageIndex\":12},{\"imageOffset\":7476,\"symbol\":\"thread_start\",\"symbolLocation\":8,\"imageIndex\":12}]},{\"id\":1694746,\"frames\":[{\"imageOffset\":7456,\"symbol\":\"start_wqthread\",\"symbolLocation\":0,\"imageIndex\":12}],\"threadState\":{\"x\":[{\"value\":6173782016},{\"value\":87123},{\"value\":6173245440},{\"value\":0},{\"value\":409604},{\"value\":18446744073709551615},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":0},\"cpsr\":{\"value\":4096},\"fp\":{\"value\":0},\"sp\":{\"value\":6173782016},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6505499936},\"far\":{\"value\":0}}}],\r\n  \"usedImages\" : [\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 4480630784,\r\n    \"size\" : 49152,\r\n    \"uuid\" : \"7d6ca1cb-c5e6-38b6-9618-2c580486fc6b\",\r\n    \"path\" : \"\\/usr\\/lib\\/libobjc-trampolines.dylib\",\r\n    \"name\" : \"libobjc-trampolines.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64\",\r\n    \"base\" : 4295376896,\r\n    \"CFBundleShortVersionString\" : \"0.14.2-Beta\",\r\n    \"CFBundleIdentifier\" : \"bobko.aerospace\",\r\n    \"size\" : 3342336,\r\n    \"uuid\" : \"62b9891b-2b4c-347c-8d9a-d6905efb258d\",\r\n    \"path\" : \"\\/Applications\\/AeroSpace.app\\/Contents\\/MacOS\\/AeroSpace\",\r\n    \"name\" : \"AeroSpace\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6611349504,\r\n    \"CFBundleShortVersionString\" : \"1.22\",\r\n    \"CFBundleIdentifier\" : \"com.apple.HIServices\",\r\n    \"size\" : 409600,\r\n    \"uuid\" : \"5edc02bc-3474-3577-a9d5-8d543bc1521e\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/ApplicationServices.framework\\/Versions\\/A\\/Frameworks\\/HIServices.framework\\/Versions\\/A\\/HIServices\",\r\n    \"name\" : \"HIServices\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6505918464,\r\n    \"CFBundleShortVersionString\" : \"6.9\",\r\n    \"CFBundleIdentifier\" : \"com.apple.CoreFoundation\",\r\n    \"size\" : 5083136,\r\n    \"uuid\" : \"55720ee0-d8c3-33a1-9854-8e61a6f44895\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/CoreFoundation.framework\\/Versions\\/A\\/CoreFoundation\",\r\n    \"name\" : \"CoreFoundation\",\r\n    \"CFBundleVersion\" : \"2602\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6682025984,\r\n    \"CFBundleShortVersionString\" : \"2.1.1\",\r\n    \"CFBundleIdentifier\" : \"com.apple.HIToolbox\",\r\n    \"size\" : 2899968,\r\n    \"uuid\" : \"4166f6cb-b599-306c-8568-823bd29a74c3\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/Carbon.framework\\/Versions\\/A\\/Frameworks\\/HIToolbox.framework\\/Versions\\/A\\/HIToolbox\",\r\n    \"name\" : \"HIToolbox\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6565302272,\r\n    \"CFBundleShortVersionString\" : \"6.9\",\r\n    \"CFBundleIdentifier\" : \"com.apple.AppKit\",\r\n    \"size\" : 20180992,\r\n    \"uuid\" : \"7acbeef9-a453-3e4d-98ac-f9441d86e183\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/AppKit.framework\\/Versions\\/C\\/AppKit\",\r\n    \"name\" : \"AppKit\",\r\n    \"CFBundleVersion\" : \"2487.70.105\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 7237210112,\r\n    \"CFBundleShortVersionString\" : \"5.6.2\",\r\n    \"CFBundleIdentifier\" : \"com.apple.SwiftUI\",\r\n    \"size\" : 30294016,\r\n    \"uuid\" : \"0ccf2597-869c-37ef-aded-ce62f6ac3c77\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/SwiftUI.framework\\/Versions\\/A\\/SwiftUI\",\r\n    \"name\" : \"SwiftUI\",\r\n    \"CFBundleVersion\" : \"5.6.2\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6501781504,\r\n    \"size\" : 562440,\r\n    \"uuid\" : \"f635824e-318b-3f0c-842c-c369737f2b68\",\r\n    \"path\" : \"\\/usr\\/lib\\/dyld\",\r\n    \"name\" : \"dyld\"\r\n  },\r\n  {\r\n    \"size\" : 0,\r\n    \"source\" : \"A\",\r\n    \"base\" : 0,\r\n    \"uuid\" : \"00000000-0000-0000-0000-000000000000\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6770618368,\r\n    \"size\" : 5627904,\r\n    \"uuid\" : \"7db1818b-1d9a-328e-821b-21a33442746a\",\r\n    \"path\" : \"\\/usr\\/lib\\/swift\\/libswiftCore.dylib\",\r\n    \"name\" : \"libswiftCore.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6505250816,\r\n    \"size\" : 241660,\r\n    \"uuid\" : \"71ff45b8-f14e-3666-9e96-6cf58315b91d\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libsystem_kernel.dylib\",\r\n    \"name\" : \"libsystem_kernel.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6503731200,\r\n    \"size\" : 294912,\r\n    \"uuid\" : \"1a1ce00a-89cd-36ba-9678-5038aedd0d8d\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libdispatch.dylib\",\r\n    \"name\" : \"libdispatch.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6505492480,\r\n    \"size\" : 53248,\r\n    \"uuid\" : \"e03e8478-6f5c-3d21-a79a-58408f514000\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libsystem_pthread.dylib\",\r\n    \"name\" : \"libsystem_pthread.dylib\"\r\n  }\r\n],\r\n  \"sharedCache\" : {\r\n  \"base\" : 6501023744,\r\n  \"size\" : 4214358016,\r\n  \"uuid\" : \"bb3df3d3-38bd-304c-9233-e43de95f1903\"\r\n},\r\n  \"vmSummary\" : \"ReadOnly portion of Libraries: Total=1.1G resident=0K(0%) swapped_out_or_unallocated=1.1G(100%)\\nWritable regions: Total=2.7G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=2.7G(100%)\\n\\n                                VIRTUAL   REGION \\nREGION TYPE                        SIZE    COUNT (non-coalesced) \\n===========                     =======  ======= \\nActivity Tracing                   256K        1 \\nAttributeGraph Data               1024K        1 \\nCG image                            32K        1 \\nColorSync                          608K       29 \\nCoreAnimation                       48K        2 \\nCoreGraphics                        64K        4 \\nFoundation                          16K        1 \\nKernel Alloc Once                   32K        1 \\nMALLOC                             2.7G      100 \\nMALLOC guard page                  288K       18 \\nSTACK GUARD                       56.1M        4 \\nStack                             9808K        4 \\nVM_ALLOCATE                        192K        6 \\n__AUTH                            1430K      260 \\n__AUTH_CONST                      23.5M      443 \\n__CTF                               824        1 \\n__DATA                             9.9M      430 \\n__DATA_CONST                      22.0M      448 \\n__DATA_DIRTY                      1298K      140 \\n__FONT_DATA                          4K        1 \\n__LINKEDIT                       529.9M        3 \\n__OBJC_RO                         71.9M        1 \\n__OBJC_RW                         2200K        1 \\n__TEXT                           546.6M      464 \\ndyld private memory                272K        2 \\nmapped file                      188.5M       27 \\nshared memory                     1392K       14 \\n===========                     =======  ======= \\nTOTAL                              4.1G     2407 \\n\",\r\n  \"legacyInfo\" : {\r\n  \"threadTriggered\" : {\r\n    \"queue\" : \"com.apple.main-thread\"\r\n  }\r\n},\r\n  \"logWritingSignature\" : \"cf63fa85a0b979b5770f0091cc3941e39ebee112\",\r\n  \"trialInfo\" : {\r\n  \"rollouts\" : [\r\n    {\r\n      \"rolloutId\" : \"64b21a7351cbb02ce3442e4e\",\r\n      \"factorPackIds\" : {\r\n        \"REMINDERS_GROCERY\" : \"659475af5595a45664475f23\"\r\n      },\r\n      \"deploymentId\" : 240000037\r\n    },\r\n    {\r\n      \"rolloutId\" : \"661464ecda55e5192b100804\",\r\n      \"factorPackIds\" : {\r\n\r\n      },\r\n      \"deploymentId\" : 240000005\r\n    }\r\n  ],\r\n  \"experiments\" : [\r\n    {\r\n      \"treatmentId\" : \"45f4e2a5-551b-4bc2-a2dc-19c244dda8f8\",\r\n      \"experimentId\" : \"6643969b3099cf28e049862f\",\r\n      \"deploymentId\" : 400000007\r\n    }\r\n  ]\r\n}\r\n}\r\n</pre>\r\n</details> \r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - Crash (found https://github.com/nikitabobko/AeroSpace/issues/164 but this is a different stacktrace, althought I have reprodudec this crash as well by dragging windows) \r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - N/A\r\n\r\n```\r\n❯ aerospace --version\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/506/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/494",
      "id": 2510276050,
      "node_id": "I_kwDOJl1IZM6Vn8XS",
      "number": 494,
      "title": "Feature request: center window if in floating mode ",
      "user": {
        "login": "wanbinkimoon",
        "id": 10087639,
        "node_id": "MDQ6VXNlcjEwMDg3NjM5",
        "avatar_url": "https://avatars.githubusercontent.com/u/10087639?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wanbinkimoon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-09-06T12:02:08Z",
      "updated_at": "2025-06-20T22:49:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "**Feature request**\r\n\r\n## Checklist\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - \"center window\"\r\n  - \"move floating windows\"\r\n\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n- [X] I've searched in the documentation. My search queries were:\r\n  - \"center window\"\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n\r\nI come from a much simpler window manager and I have been using aerospace for few weeks, I love the software but something that I really miss is a command to center a window in the screen when the window is in floating mode. \r\n\r\nI'm not sure of the implementation cost but I think it could be a quick win for everyone.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/494/reactions",
        "total_count": 57,
        "+1": 41,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 16,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/492",
      "id": 2504634729,
      "node_id": "I_kwDOJl1IZM6VSbFp",
      "number": 492,
      "title": "Support configuration for notched vs un-notched built-in displays",
      "user": {
        "login": "chrisbarrett",
        "id": 836504,
        "node_id": "MDQ6VXNlcjgzNjUwNA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/836504?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/chrisbarrett",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-09-04T08:20:43Z",
      "updated_at": "2025-06-20T22:49:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\r\n\r\nI have a configuration that's shared across two MacBooks, one of which has a display notch (an M3) and another which doesn't (an M1). I haven't found a way to account for the clearance needed for the menubar in a way that works for both machines. \r\n\r\nI'm wondering if there's a mechanism I've missed that could make a shared configuration work for both hardware types; if not, this is probs a duplicate of #115.\r\n\r\nThanks so much for implementing and maintaining this project. 💜 \r\n\r\n## Detail\r\n\r\nThe issue seems to be that the origin AeroSpace uses for window management differs on notched vs un-notched hardware; I vaguely understand this corresponds to how things work in the macOS APIs.\r\n\r\n- on the M1, point 0,0 seems to be the corner of the display\r\n    - the menubar is rendered at 0,0\r\n    - therefore top padding needs to be applied for AeroSpace to tile windows clear of the menu bar\r\n   \r\n- on the M3, point 0,0 seems level with the bottom of the notch\r\n    - the menubar is rendered _above_ the origin\r\n    - therefore no top padding should be applied to clear the menu bar.\r\n\r\nI don't see a solution that allows one configuration to handle both cases out-of-the box. \r\n1. `aerospace list-monitors` reports `Built-in Retina Display` on both machines; therefore per-monitor configuration wouldn't work\r\n2. I don't see a documented command that can set padding settings dynamically.\r\n\r\nCan you think of a way to configure this via the existing configuration mechanisms?\r\n\r\n## Workaround\r\nThe workaround I'm contemplating is templating the TOML configuration file; my nix-darwin config knows which machines have notches, so I can apply different padding values for different systems that way. But it's obviously not the nicest way to accomplish this. :)\r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - notch\r\n  - padding\r\n  - dynamic\r\n\r\n  Relevant hits:\r\n  - #74 involved non-notch external display, solved via per-display configuration (would not apply here)\r\n  - addressing #115 would provide a general solution.\r\n\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - config\r\n  - padding\r\n  Hits relate to querying, rather than updating\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/492/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/491",
      "id": 2503484928,
      "node_id": "I_kwDOJl1IZM6VOCYA",
      "number": 491,
      "title": "Feature Request: Implement `list-windows --sort-by`",
      "user": {
        "login": "Perlten",
        "id": 33089800,
        "node_id": "MDQ6VXNlcjMzMDg5ODAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/33089800?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Perlten",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2024-09-03T18:17:32Z",
      "updated_at": "2026-01-31T06:29:12Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Now that we have the `focus --dfs-index <index>` [command](https://github.com/nikitabobko/AeroSpace/pull/464), it would be fantastic to extend this by allowing us to query the structure of a workspace's windows from a DFS perspective. A command like `list-windows --dfs-order` would be ideal for this purpose.\r\n\r\nThe output could follow the same format as the existing `list-windows` command, but it should be ordered as if a DFS (Depth-First Search) was performed on the workspace. See the example below.\r\n\r\nh_tiles\r\n├── window (index: 0)\r\n├── v_tiles\r\n&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├── window (index: 1)\r\n&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└── window (index: 2)\r\n├── window (index: 3)\r\n\r\nI realize this is similar to the functionality proposed in https://github.com/nikitabobko/AeroSpace/issues/16, but I believe this request is still valid. It specifically focuses on the DFS ordering of windows, disregarding how they are otherwise structured within the tree.\r\n\r\n\r\n## Checklist\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - window-list\r\n  - tree\r\n  - feature-request\r\n\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - window-list\r\n  - tree\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/491/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/484",
      "id": 2499845148,
      "node_id": "I_kwDOJl1IZM6VAJwc",
      "number": 484,
      "title": "accordion layout – title bars always on top",
      "user": {
        "login": "martinengelke",
        "id": 117628882,
        "node_id": "U_kgDOBwLf0g",
        "avatar_url": "https://avatars.githubusercontent.com/u/117628882?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/martinengelke",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-09-02T02:07:16Z",
      "updated_at": "2025-06-20T22:49:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\r\nI can not find anything about my problem, but I would love If I could have the title bar of an accordion array of windows always on top. As soon as I switch to another window it gets to the foreground and if it the one with the \"highest\" position, it will hide the other title bars – gets stacked \"the wrong way\":\r\n\r\ndesired: focused window always in lowest position (ordered by last call?)\r\n<img width=\"1092\" alt=\"Bildschirmfoto 2024-09-02 um 02 53 21\" src=\"https://github.com/user-attachments/assets/c692e1b9-9956-4e68-bdf6-3319760067c6\">\r\nhidden titlebars:\r\n<img width=\"1004\" alt=\"Bildschirmfoto 2024-09-02 um 03 05 42\" src=\"https://github.com/user-attachments/assets/d14cf611-50ff-42aa-9406-5adcc65ab746\">\r\n\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x ] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - query 1\r\n  - query 2\r\n  - ...\r\n- [ x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x ] I've searched in the documentation. My search queries were:\r\n  - accoridion\r\n  - frontmost\r\n  - foreground\r\n  - title*bar\r\n\r\n```\r\n<!-- AeroSpace v0.13.4-Beta ae7340ab50f654546dc5523fd7fa5c81faa3d313-->\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/484/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/481",
      "id": 2498198611,
      "node_id": "I_kwDOJl1IZM6U53xT",
      "number": 481,
      "title": "Widget window causing random workspace switching",
      "user": {
        "login": "ztlevi",
        "id": 16655096,
        "node_id": "MDQ6VXNlcjE2NjU1MDk2",
        "avatar_url": "https://avatars.githubusercontent.com/u/16655096?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ztlevi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-08-30T21:30:42Z",
      "updated_at": "2025-06-20T22:49:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Amazon Chime has a little widget window controls volume. I cannot even capture it by taking screenshot w/o AeroSpace opened. The output screenshot is empty. I have to use my phone to capture it. \r\n\r\n![IMG_7430](https://github.com/user-attachments/assets/0a076884-dc61-4e6b-aa5c-4a8a1854dc84)\r\n\r\nWhat’s even more frustrating is, when I switch between workspace, it's causing random workspace switch from time to time. \r\n\r\nNot sure if this is a issue for AeroSpace or the app itself. Could you take a look? Thanks!\r\n\r\n<details>\r\n<summary>debug log</summary>\r\nNULL-APP-BUNDLE-ID.window.332 windowId: 332\r\nNULL-APP-BUNDLE-ID.window.332 workspace: 3\r\nNULL-APP-BUNDLE-ID.window.332 treeNodeParent: AppBundle.TilingContainer\r\nNULL-APP-BUNDLE-ID.window.332 recognizedAsDialog: false\r\nNULL-APP-BUNDLE-ID.window.332 AXTitle: Optional(_zsh_tmux_plugin_run attach -t L1)\r\nNULL-APP-BUNDLE-ID.window.332 AXRole: Optional(AXWindow)\r\nNULL-APP-BUNDLE-ID.window.332 AXSubrole: Optional(AXStandardWindow)\r\nNULL-APP-BUNDLE-ID.window.332 AXFocused: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332 AXFullScreen: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.332 AXFrame: Optional(<AXValue 0x6000009e9300> {value = x:5.000000 y:30.000000 w:1910.000000 h:1044.000000 type = kAXValueCGRectType})\r\nNULL-APP-BUNDLE-ID.window.332 AXPosition: Optional(<AXValue 0x60000120aee0> {value = x:5.000000 y:30.000000 type = kAXValueCGPointType})\r\nNULL-APP-BUNDLE-ID.window.332 AXGrowArea: nil\r\nNULL-APP-BUNDLE-ID.window.332 AXMinimizeButton: AXUIElement {\r\nNULL-APP-BUNDLE-ID.window.332      AXRole: Optional(AXButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXTitle: nil\r\nNULL-APP-BUNDLE-ID.window.332      AXSubrole: Optional(AXMinimizeButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXEnabled: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332      AXParent: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXTopLevelUIElement: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\nNULL-APP-BUNDLE-ID.window.332 }\r\nNULL-APP-BUNDLE-ID.window.332 AXDocument: nil\r\nNULL-APP-BUNDLE-ID.window.332 AXSections: [\r\nNULL-APP-BUNDLE-ID.window.332         Optional({\r\nNULL-APP-BUNDLE-ID.window.332             SectionDescription = Content;\r\nNULL-APP-BUNDLE-ID.window.332             SectionObject = \"<AXUIElement 0x6000012049f0> {pid=6423}\";\r\nNULL-APP-BUNDLE-ID.window.332             SectionUniqueID = AXContent;\r\nNULL-APP-BUNDLE-ID.window.332         })\r\nNULL-APP-BUNDLE-ID.window.332 ]\r\nNULL-APP-BUNDLE-ID.window.332 AXCloseButton: AXUIElement {\r\nNULL-APP-BUNDLE-ID.window.332      AXRole: Optional(AXButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXTitle: nil\r\nNULL-APP-BUNDLE-ID.window.332      AXSubrole: Optional(AXCloseButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXEnabled: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332      AXParent: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXTopLevelUIElement: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\nNULL-APP-BUNDLE-ID.window.332 }\r\nNULL-APP-BUNDLE-ID.window.332 AXMain: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332 AXActivationPoint: Optional(<AXValue 0x600001262880> {value = x:75.000000 y:44.000000 type = kAXValueCGPointType})\r\nNULL-APP-BUNDLE-ID.window.332 AXFullScreenButton: AXUIElement {\r\nNULL-APP-BUNDLE-ID.window.332      AXRole: Optional(AXButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXTitle: nil\r\nNULL-APP-BUNDLE-ID.window.332      AXSubrole: Optional(AXFullScreenButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXEnabled: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332      AXParent: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXTopLevelUIElement: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\nNULL-APP-BUNDLE-ID.window.332 }\r\nNULL-APP-BUNDLE-ID.window.332 AXProxy: nil\r\nNULL-APP-BUNDLE-ID.window.332 AXDefaultButton: nil\r\nNULL-APP-BUNDLE-ID.window.332 AXMinimized: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.332 AXParent: Optional(<AXUIElement Application 0x6000012070c0> {pid=6423})\r\nNULL-APP-BUNDLE-ID.window.332 AXTitleUIElement: AXUIElement(windowId=332, title=nil, role=\"AXStaticText\", subrole=nil)\r\nNULL-APP-BUNDLE-ID.window.332 AXCancelButton: nil\r\nNULL-APP-BUNDLE-ID.window.332 AXModal: Optional(0)\r\nNULL-APP-BUNDLE-ID.window.332 AXZoomButton: AXUIElement {\r\nNULL-APP-BUNDLE-ID.window.332      AXRole: Optional(AXButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXTitle: nil\r\nNULL-APP-BUNDLE-ID.window.332      AXSubrole: Optional(AXFullScreenButton)\r\nNULL-APP-BUNDLE-ID.window.332      AXEnabled: Optional(1)\r\nNULL-APP-BUNDLE-ID.window.332      AXParent: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXTopLevelUIElement: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      AXWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID.window.332      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\nNULL-APP-BUNDLE-ID.window.332 }\r\nNULL-APP-BUNDLE-ID.window.332 AXSize: Optional(<AXValue 0x600001262c40> {value = w:1910.000000 h:1044.000000 type = kAXValueCGSizeType})\r\nNULL-APP-BUNDLE-ID.window.332 AXToolbarButton: nil\r\nNULL-APP-BUNDLE-ID.window.332 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\nNULL-APP-BUNDLE-ID            AXRole: Optional(AXApplication)\r\nNULL-APP-BUNDLE-ID            AXTitle: Optional(alacritty)\r\nNULL-APP-BUNDLE-ID            AXFunctionRowTopLevelElements: [\r\nNULL-APP-BUNDLE-ID            ]\r\nNULL-APP-BUNDLE-ID            AXFrame: nil\r\nNULL-APP-BUNDLE-ID            AXFocusedUIElement: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID            AXFrontmost: Optional(1)\r\nNULL-APP-BUNDLE-ID            AXExtrasMenuBar: nil\r\nNULL-APP-BUNDLE-ID            AXMainWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID            AXFocusedWindow: AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID            AXMenuBar: Optional(<AXUIElement 0x600001211b00> {pid=6423})\r\nNULL-APP-BUNDLE-ID            AXWindows: [\r\nNULL-APP-BUNDLE-ID                AXUIElement(windowId=332, title=\"_zsh_tmux_plugin_run attach -t L1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\nNULL-APP-BUNDLE-ID            ]\r\nNULL-APP-BUNDLE-ID            AXSize: nil\r\nNULL-APP-BUNDLE-ID            AXPosition: nil\r\nNULL-APP-BUNDLE-ID            Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.amazon.Amazon-Chime.window.1380 windowId: 1380\r\ncom.amazon.Amazon-Chime.window.1380 workspace: C\r\ncom.amazon.Amazon-Chime.window.1380 treeNodeParent: AppBundle.TilingContainer\r\ncom.amazon.Amazon-Chime.window.1380 recognizedAsDialog: false\r\ncom.amazon.Amazon-Chime.window.1380 AXTitle: Optional(Amazon Chime: Zhou, Ting Instant Meeting)\r\ncom.amazon.Amazon-Chime.window.1380 AXRole: Optional(AXWindow)\r\ncom.amazon.Amazon-Chime.window.1380 AXSubrole: Optional(AXStandardWindow)\r\ncom.amazon.Amazon-Chime.window.1380 AXFocused: Optional(0)\r\ncom.amazon.Amazon-Chime.window.1380 AXFullScreen: Optional(0)\r\ncom.amazon.Amazon-Chime.window.1380 AXFrame: Optional(<AXValue 0x6000009a3780> {value = x:35.000000 y:30.000000 w:1880.000000 h:1044.000000 type = kAXValueCGRectType})\r\ncom.amazon.Amazon-Chime.window.1380 AXPosition: Optional(<AXValue 0x60000120a400> {value = x:35.000000 y:30.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.1380 AXGrowArea: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXMinimizeButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.1380      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.1380      AXSubrole: Optional(AXMinimizeButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.1380      AXParent: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXTopLevelUIElement: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.1380 }\r\ncom.amazon.Amazon-Chime.window.1380 AXDocument: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXSections: [\r\ncom.amazon.Amazon-Chime.window.1380         Optional({\r\ncom.amazon.Amazon-Chime.window.1380             SectionDescription = Content;\r\ncom.amazon.Amazon-Chime.window.1380             SectionObject = \"<AXUIElement 0x600001204780> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.1380             SectionUniqueID = AXContent;\r\ncom.amazon.Amazon-Chime.window.1380         }),\r\ncom.amazon.Amazon-Chime.window.1380         Optional({\r\ncom.amazon.Amazon-Chime.window.1380             SectionObject = \"<AXUIElement 0x600001207000> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.1380             SectionUniqueID = AXContainer;\r\ncom.amazon.Amazon-Chime.window.1380         })\r\ncom.amazon.Amazon-Chime.window.1380 ]\r\ncom.amazon.Amazon-Chime.window.1380 AXCloseButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.1380      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.1380      AXSubrole: Optional(AXCloseButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.1380      AXParent: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXTopLevelUIElement: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.amazon.Amazon-Chime.window.1380 }\r\ncom.amazon.Amazon-Chime.window.1380 AXMain: Optional(1)\r\ncom.amazon.Amazon-Chime.window.1380 AXActivationPoint: Optional(<AXValue 0x60000129aeb0> {value = x:105.000000 y:44.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.1380 AXFullScreenButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.1380      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.1380      AXSubrole: Optional(AXFullScreenButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.1380      AXParent: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXTopLevelUIElement: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.1380 }\r\ncom.amazon.Amazon-Chime.window.1380 AXProxy: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXDefaultButton: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXMinimized: Optional(0)\r\ncom.amazon.Amazon-Chime.window.1380 AXParent: Optional(<AXUIElement Application 0x60000129bb10> {pid=867})\r\ncom.amazon.Amazon-Chime.window.1380 AXTitleUIElement: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXCancelButton: nil\r\ncom.amazon.Amazon-Chime.window.1380 AXModal: Optional(0)\r\ncom.amazon.Amazon-Chime.window.1380 AXZoomButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.1380      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.1380      AXSubrole: Optional(AXFullScreenButton)\r\ncom.amazon.Amazon-Chime.window.1380      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.1380      AXParent: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXTopLevelUIElement: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      AXWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.1380      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.1380 }\r\ncom.amazon.Amazon-Chime.window.1380 AXSize: Optional(<AXValue 0x60000129bb10> {value = w:1880.000000 h:1044.000000 type = kAXValueCGSizeType})\r\ncom.amazon.Amazon-Chime.window.1380 AXToolbarButton: nil\r\ncom.amazon.Amazon-Chime.window.1380 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.amazon.Amazon-Chime             AXRole: Optional(AXApplication)\r\ncom.amazon.Amazon-Chime             AXTitle: Optional(Amazon Chime)\r\ncom.amazon.Amazon-Chime             AXFunctionRowTopLevelElements: [\r\ncom.amazon.Amazon-Chime             ]\r\ncom.amazon.Amazon-Chime             AXManualAccessibility: Optional(0)\r\ncom.amazon.Amazon-Chime             AXFrame: nil\r\ncom.amazon.Amazon-Chime             AXFocusedUIElement: AXUIElement(windowId=1380, title=\"\", role=\"AXGroup\", subrole=\"AXLandmarkBanner\")\r\ncom.amazon.Amazon-Chime             AXFrontmost: Optional(1)\r\ncom.amazon.Amazon-Chime             AXExtrasMenuBar: nil\r\ncom.amazon.Amazon-Chime             AXMainWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             AXFocusedWindow: AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             AXMenuBar: Optional(<AXUIElement 0x6000012120d0> {pid=867})\r\ncom.amazon.Amazon-Chime             AXWindows: [\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=8559, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             ]\r\ncom.amazon.Amazon-Chime             AXSize: nil\r\ncom.amazon.Amazon-Chime             AXPosition: nil\r\ncom.amazon.Amazon-Chime             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.amazon.Amazon-Chime.window.74 windowId: 74\r\ncom.amazon.Amazon-Chime.window.74 workspace: C\r\ncom.amazon.Amazon-Chime.window.74 treeNodeParent: AppBundle.TilingContainer\r\ncom.amazon.Amazon-Chime.window.74 recognizedAsDialog: false\r\ncom.amazon.Amazon-Chime.window.74 AXTitle: Optional(Amazon Chime)\r\ncom.amazon.Amazon-Chime.window.74 AXRole: Optional(AXWindow)\r\ncom.amazon.Amazon-Chime.window.74 AXSubrole: Optional(AXStandardWindow)\r\ncom.amazon.Amazon-Chime.window.74 AXFocused: Optional(0)\r\ncom.amazon.Amazon-Chime.window.74 AXFullScreen: Optional(0)\r\ncom.amazon.Amazon-Chime.window.74 AXFrame: Optional(<AXValue 0x6000009fa2c0> {value = x:5.000000 y:30.000000 w:1880.000000 h:1044.000000 type = kAXValueCGRectType})\r\ncom.amazon.Amazon-Chime.window.74 AXPosition: Optional(<AXValue 0x6000012e9800> {value = x:5.000000 y:30.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.74 AXGrowArea: nil\r\ncom.amazon.Amazon-Chime.window.74 AXMinimizeButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.74      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.74      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.74      AXSubrole: Optional(AXMinimizeButton)\r\ncom.amazon.Amazon-Chime.window.74      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.74      AXParent: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXTopLevelUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.74 }\r\ncom.amazon.Amazon-Chime.window.74 AXDocument: nil\r\ncom.amazon.Amazon-Chime.window.74 AXSections: [\r\ncom.amazon.Amazon-Chime.window.74         Optional({\r\ncom.amazon.Amazon-Chime.window.74             SectionDescription = Content;\r\ncom.amazon.Amazon-Chime.window.74             SectionObject = \"<AXUIElement 0x600001211b00> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.74             SectionUniqueID = AXContent;\r\ncom.amazon.Amazon-Chime.window.74         }),\r\ncom.amazon.Amazon-Chime.window.74         Optional({\r\ncom.amazon.Amazon-Chime.window.74             SectionObject = \"<AXUIElement 0x600001213ba0> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.74             SectionUniqueID = AXContainer;\r\ncom.amazon.Amazon-Chime.window.74         })\r\ncom.amazon.Amazon-Chime.window.74 ]\r\ncom.amazon.Amazon-Chime.window.74 AXCloseButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.74      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.74      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.74      AXSubrole: Optional(AXCloseButton)\r\ncom.amazon.Amazon-Chime.window.74      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.74      AXParent: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXTopLevelUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.amazon.Amazon-Chime.window.74 }\r\ncom.amazon.Amazon-Chime.window.74 AXMain: Optional(1)\r\ncom.amazon.Amazon-Chime.window.74 AXActivationPoint: Optional(<AXValue 0x600001213210> {value = x:75.000000 y:44.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.74 AXFullScreenButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.74      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.74      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.74      AXSubrole: Optional(AXFullScreenButton)\r\ncom.amazon.Amazon-Chime.window.74      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.74      AXParent: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXTopLevelUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.74 }\r\ncom.amazon.Amazon-Chime.window.74 AXProxy: nil\r\ncom.amazon.Amazon-Chime.window.74 AXDefaultButton: nil\r\ncom.amazon.Amazon-Chime.window.74 AXMinimized: Optional(0)\r\ncom.amazon.Amazon-Chime.window.74 AXParent: Optional(<AXUIElement Application 0x60000120b7b0> {pid=867})\r\ncom.amazon.Amazon-Chime.window.74 AXTitleUIElement: nil\r\ncom.amazon.Amazon-Chime.window.74 AXCancelButton: nil\r\ncom.amazon.Amazon-Chime.window.74 AXModal: Optional(0)\r\ncom.amazon.Amazon-Chime.window.74 AXZoomButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.74      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.74      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.74      AXSubrole: Optional(AXFullScreenButton)\r\ncom.amazon.Amazon-Chime.window.74      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.74      AXParent: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXTopLevelUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      AXWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.74      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.74 }\r\ncom.amazon.Amazon-Chime.window.74 AXSize: Optional(<AXValue 0x60000129aa60> {value = w:1880.000000 h:1044.000000 type = kAXValueCGSizeType})\r\ncom.amazon.Amazon-Chime.window.74 AXToolbarButton: nil\r\ncom.amazon.Amazon-Chime.window.74 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.amazon.Amazon-Chime           AXRole: Optional(AXApplication)\r\ncom.amazon.Amazon-Chime           AXTitle: Optional(Amazon Chime)\r\ncom.amazon.Amazon-Chime           AXFunctionRowTopLevelElements: [\r\ncom.amazon.Amazon-Chime           ]\r\ncom.amazon.Amazon-Chime           AXManualAccessibility: Optional(0)\r\ncom.amazon.Amazon-Chime           AXFrame: nil\r\ncom.amazon.Amazon-Chime           AXFocusedUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWebArea\", subrole=nil)\r\ncom.amazon.Amazon-Chime           AXFrontmost: Optional(1)\r\ncom.amazon.Amazon-Chime           AXExtrasMenuBar: nil\r\ncom.amazon.Amazon-Chime           AXMainWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime           AXFocusedWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime           AXMenuBar: Optional(<AXUIElement 0x600001213210> {pid=867})\r\ncom.amazon.Amazon-Chime           AXWindows: [\r\ncom.amazon.Amazon-Chime               AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.amazon.Amazon-Chime               AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime           ]\r\ncom.amazon.Amazon-Chime           AXSize: nil\r\ncom.amazon.Amazon-Chime           AXPosition: nil\r\ncom.amazon.Amazon-Chime           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.amazon.Amazon-Chime.window.8561 windowId: 8561\r\ncom.amazon.Amazon-Chime.window.8561 workspace: C\r\ncom.amazon.Amazon-Chime.window.8561 treeNodeParent: Workspace(name: 'C', isVisible: 'true', isEffectivelyEmpty: 'false', doKeepAlive: 'true')\r\ncom.amazon.Amazon-Chime.window.8561 recognizedAsDialog: true\r\ncom.amazon.Amazon-Chime.window.8561 AXTitle: Optional(Amazon Chime: Meeting Controls)\r\ncom.amazon.Amazon-Chime.window.8561 AXRole: Optional(AXWindow)\r\ncom.amazon.Amazon-Chime.window.8561 AXSubrole: Optional(AXStandardWindow)\r\ncom.amazon.Amazon-Chime.window.8561 AXFocused: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561 AXFullScreen: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561 AXFrame: Optional(<AXValue 0x6000009fa680> {value = x:0.000000 y:1019.000000 w:301.000000 h:61.000000 type = kAXValueCGRectType})\r\ncom.amazon.Amazon-Chime.window.8561 AXPosition: Optional(<AXValue 0x60000121aca0> {value = x:0.000000 y:1019.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.8561 AXGrowArea: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXMinimizeButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.8561      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.8561      AXSubrole: Optional(AXMinimizeButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.8561      AXParent: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXTopLevelUIElement: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXWindow: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.8561 }\r\ncom.amazon.Amazon-Chime.window.8561 AXDocument: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXSections: [\r\ncom.amazon.Amazon-Chime.window.8561         Optional({\r\ncom.amazon.Amazon-Chime.window.8561             SectionDescription = Content;\r\ncom.amazon.Amazon-Chime.window.8561             SectionObject = \"<AXUIElement 0x600001209530> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.8561             SectionUniqueID = AXContent;\r\ncom.amazon.Amazon-Chime.window.8561         }),\r\ncom.amazon.Amazon-Chime.window.8561         Optional({\r\ncom.amazon.Amazon-Chime.window.8561             SectionObject = \"<AXUIElement 0x600001208270> {pid=867}\";\r\ncom.amazon.Amazon-Chime.window.8561             SectionUniqueID = AXContainer;\r\ncom.amazon.Amazon-Chime.window.8561         })\r\ncom.amazon.Amazon-Chime.window.8561 ]\r\ncom.amazon.Amazon-Chime.window.8561 AXCloseButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.8561      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.8561      AXSubrole: Optional(AXCloseButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXEnabled: Optional(1)\r\ncom.amazon.Amazon-Chime.window.8561      AXParent: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXTopLevelUIElement: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXWindow: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.amazon.Amazon-Chime.window.8561 }\r\ncom.amazon.Amazon-Chime.window.8561 AXMain: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561 AXActivationPoint: Optional(<AXValue 0x600001209f50> {value = x:-1.000000 y:1081.000000 type = kAXValueCGPointType})\r\ncom.amazon.Amazon-Chime.window.8561 AXFullScreenButton: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXProxy: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXDefaultButton: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXMinimized: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561 AXParent: Optional(<AXUIElement Application 0x600001219890> {pid=867})\r\ncom.amazon.Amazon-Chime.window.8561 AXTitleUIElement: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXCancelButton: nil\r\ncom.amazon.Amazon-Chime.window.8561 AXModal: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561 AXZoomButton: AXUIElement {\r\ncom.amazon.Amazon-Chime.window.8561      AXRole: Optional(AXButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXTitle: nil\r\ncom.amazon.Amazon-Chime.window.8561      AXSubrole: Optional(AXZoomButton)\r\ncom.amazon.Amazon-Chime.window.8561      AXEnabled: Optional(0)\r\ncom.amazon.Amazon-Chime.window.8561      AXParent: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXTopLevelUIElement: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      AXWindow: AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime.window.8561      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.amazon.Amazon-Chime.window.8561 }\r\ncom.amazon.Amazon-Chime.window.8561 AXSize: Optional(<AXValue 0x6000012d22e0> {value = w:301.000000 h:61.000000 type = kAXValueCGSizeType})\r\ncom.amazon.Amazon-Chime.window.8561 AXToolbarButton: nil\r\ncom.amazon.Amazon-Chime.window.8561 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.amazon.Amazon-Chime             AXRole: Optional(AXApplication)\r\ncom.amazon.Amazon-Chime             AXTitle: Optional(Amazon Chime)\r\ncom.amazon.Amazon-Chime             AXFunctionRowTopLevelElements: [\r\ncom.amazon.Amazon-Chime             ]\r\ncom.amazon.Amazon-Chime             AXManualAccessibility: Optional(0)\r\ncom.amazon.Amazon-Chime             AXFrame: nil\r\ncom.amazon.Amazon-Chime             AXFocusedUIElement: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWebArea\", subrole=nil)\r\ncom.amazon.Amazon-Chime             AXFrontmost: Optional(1)\r\ncom.amazon.Amazon-Chime             AXExtrasMenuBar: nil\r\ncom.amazon.Amazon-Chime             AXMainWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             AXFocusedWindow: AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             AXMenuBar: Optional(<AXUIElement 0x6000012191a0> {pid=867})\r\ncom.amazon.Amazon-Chime             AXWindows: [\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=8561, title=\"Amazon Chime: Meeting Controls\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=74, title=\"Amazon Chime\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.amazon.Amazon-Chime                 AXUIElement(windowId=1380, title=\"Amazon Chime: Zhou, Ting Instant Meeting\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.amazon.Amazon-Chime             ]\r\ncom.amazon.Amazon-Chime             AXSize: nil\r\ncom.amazon.Amazon-Chime             AXPosition: nil\r\ncom.amazon.Amazon-Chime             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n\r\n</details>\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - query 1\r\n  - query 2\r\n  - ...\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - dvorak\r\n  - monitor\r\n  - ...\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/481/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/465",
      "id": 2490640353,
      "node_id": "I_kwDOJl1IZM6UdCfh",
      "number": 465,
      "title": "Feature idea: Partition display into multiple workspace containers",
      "user": {
        "login": "jaybonthius",
        "id": 46472915,
        "node_id": "MDQ6VXNlcjQ2NDcyOTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/46472915?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jaybonthius",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 11,
      "created_at": "2024-08-28T00:51:22Z",
      "updated_at": "2025-10-08T22:42:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Feature idea: The ability to partition a single display into multiple _workspace containers_, each of which can contain multiple workspaces.\r\n\r\nHere is my beautiful picture: X, Y, and Z are all workspace containers within a single display.  Each workspace container contains multiple workspaces that can be toggled between, while leaving the other containers / workspaces in view. Functionally, this is identical to if X, Y, and Z were on separate displays.\r\n```\r\n-----------------------------------------------\r\n|            .                  .             |\r\n|            .                  .             |\r\n|      X     .        Y         .      Z      |\r\n|            .                  .             |\r\n|            .                  .             |\r\n-----------------------------------------------\r\n```\r\n\r\nThe lack of any window management tool that can accomplish this (as far as I know) is the main obstacle preventing me from using an ultrawide monitor. There are a few monitors that have [picture-by-picture](https://www.samsung.com/hk_en/support/computing/what-is-the-difference-between-pip-and-pbp/) functionality which partitions the display into multiple smaller displays, but this feature is rare, limited by hardware decisions made by the manufacturer, and requires multiple HDMI connections.\r\n\r\nI'm not under any impression that this would be easy (or even possible?) to implement. But I figure I'd throw it out there as an idea, because it's kind of my dream window management feature. 😻 \r\n\r\n## Checklist\r\n\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - partition\r\n  - multiple workspaces display\r\n  - multiple workspaces monitor\r\n  - ...\r\n- [X] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [X] I've searched in the documentation. My search queries were:\r\n  - partition\r\n  - multiple workspaces display\r\n  - multiple workspaces monitor",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/465/reactions",
        "total_count": 39,
        "+1": 37,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 2,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/463",
      "id": 2489561192,
      "node_id": "I_kwDOJl1IZM6UY7Bo",
      "number": 463,
      "title": "`on-workspace-changed` crashes if it can't spawn a process",
      "user": {
        "login": "dagrlx",
        "id": 55724881,
        "node_id": "MDQ6VXNlcjU1NzI0ODgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/55724881?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dagrlx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7992329734,
          "node_id": "LA_kwDOJl1IZM8AAAAB3GFGBg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/crash",
          "name": "crash",
          "color": "bfdadc",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-27T14:33:05Z",
      "updated_at": "2025-06-20T22:49:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, I was working normally without any external monitor connected, I went to my desktop, connected to docking and pressed the key combination I use to move windows to other workspaces (opt+cmd), and suddenly aerospaces closed and I got this error. I use 2 external monitors\r\n\r\nMy config is:\r\n\r\nmacbook air m1\r\nSonoma 14.6.1\r\nSketchybar v2.21.0\r\n\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/issues/new\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: The operation couldn’t be completed. Resource temporarily unavailable\r\nVersion: 0.14.2-Beta\r\nGit hash: 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nCoordinate: /Users/bobko/a/AeroSpace/Sources/AppBundle/focus.swift:163:48 onWorkspaceChanged(_:_:)\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001030b73fc $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 740\r\n1   AeroSpace                           0x00000001030d01c0 $ss6ResultO6CommonE10getOrThrow_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   AeroSpace                           0x0000000102f4af7c $s9AppBundle18onWorkspaceChanged33_7642A5C3292B9DD5C5AAA7E6B763F792LLyySS_SStF + 1132\r\n3   AeroSpace                           0x0000000102f4aa80 $s9AppBundle28checkOnFocusChangedCallbacksyyF + 696\r\n4   AeroSpace                           0x0000000102ef8360 $s9AppBundle14refreshSession7startup10forceFocus4bodyxSb_SbxyXEtlFSb_Tg5 + 932\r\n5   AeroSpace                           0x0000000102ef7dc0 $s9AppBundle14GlobalObserverC04initD0yyFZySo7NSEventCcfU_ + 356\r\n6   AeroSpace                           0x0000000102ef8dd8 $sSo7NSEventCIegg_ABIeyBy_TR + 48\r\n7   AppKit                              0x0000000197847878 GlobalObserverHandler + 92\r\n8   HIToolbox                           0x000000019e1a1444 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1232\r\n9   HIToolbox                           0x000000019e1a0844 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 356\r\n10  HIToolbox                           0x000000019e1a06d4 SendEventToEventTargetWithOptions + 44\r\n11  HIToolbox                           0x000000019e1df368 _ZL29ToolboxEventDispatcherHandlerP25OpaqueEventHandlerCallRefP14OpaqueEventRefPv + 468\r\n12  HIToolbox                           0x000000019e1a186c _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 2296\r\n13  HIToolbox                           0x000000019e1a0844 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 356\r\n14  HIToolbox                           0x000000019e1b6cd8 SendEventToEventTarget + 40\r\n15  AppKit                              0x000000019727ee28 _DPSNextEvent + 1012\r\n16  AppKit                              0x0000000197a754d0 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 700\r\n17  AppKit                              0x0000000197271ffc -[NSApplication run] + 476\r\n18  AppKit                              0x0000000197249240 NSApplicationMain + 880\r\n19  SwiftUI                             0x00000001bf4173b8 OUTLINED_FUNCTION_12 + 13968\r\n20  SwiftUI                             0x00000001bfb80ddc OUTLINED_FUNCTION_3 + 196\r\n21  SwiftUI                             0x00000001bff7be0c OUTLINED_FUNCTION_0 + 140\r\n22  AeroSpace                           0x0000000102ef7470 main + 36\r\n23  dyld                                0x00000001935b7154 start + 2476\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/463/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/455",
      "id": 2485576479,
      "node_id": "I_kwDOJl1IZM6UJuMf",
      "number": 455,
      "title": "Workspace switches automatically when workspace has window present behind virtual display",
      "user": {
        "login": "hwamil",
        "id": 25888359,
        "node_id": "MDQ6VXNlcjI1ODg4MzU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/25888359?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/hwamil",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-26T00:33:32Z",
      "updated_at": "2025-06-20T22:48:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This may be a Parallels Desktop specific issue.\r\n\r\nTo reproduce:\r\n- multi-monitor setup\r\n- enable Parallels \"Use All Displays in Fullscreen\" feature\r\n- have window on each monitor/workspace\r\n- switch to VM (Win 11)\r\n- click anywhere on `secondary` monitor\r\n\r\nResult:\r\n- workspaces switches by itself\r\n\r\nCurrent workaround:\r\n- Switch workspace on `secondary` to an empty one before triggering workspace with VM\r\n\r\naerospace debug-windows:\r\n```\r\ncom.github.wez.wezterm.window.50 windowId: 50\r\ncom.github.wez.wezterm.window.50 workspace: T\r\ncom.github.wez.wezterm.window.50 treeNodeParent: AppBundle.TilingContainer\r\ncom.github.wez.wezterm.window.50 recognizedAsDialog: false\r\ncom.github.wez.wezterm.window.50 AXTitle: Optional(aerospace debug-wind ~/.c/aerospace)\r\ncom.github.wez.wezterm.window.50 AXRole: Optional(AXWindow)\r\ncom.github.wez.wezterm.window.50 AXSubrole: Optional(AXStandardWindow)\r\ncom.github.wez.wezterm.window.50 AXFocused: Optional(1)\r\ncom.github.wez.wezterm.window.50 AXFullScreen: Optional(0)\r\ncom.github.wez.wezterm.window.50 AXFrame: Optional(<AXValue 0x60000230d0c0> {value = x:20.000000 y:45.000000 w:1880.000000 h:1014.000000 type = kAXValueCGRectType})\r\ncom.github.wez.wezterm.window.50 AXPosition: Optional(<AXValue 0x600003930840> {value = x:20.000000 y:45.000000 type = kAXValueCGPointType})\r\ncom.github.wez.wezterm.window.50 AXGrowArea: nil\r\ncom.github.wez.wezterm.window.50 AXMinimizeButton: AXUIElement {\r\ncom.github.wez.wezterm.window.50      AXRole: Optional(AXButton)\r\ncom.github.wez.wezterm.window.50      AXTitle: nil\r\ncom.github.wez.wezterm.window.50      AXSubrole: Optional(AXMinimizeButton)\r\ncom.github.wez.wezterm.window.50      AXEnabled: Optional(1)\r\ncom.github.wez.wezterm.window.50      AXParent: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXTopLevelUIElement: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.wez.wezterm.window.50 }\r\ncom.github.wez.wezterm.window.50 AXDocument: nil\r\ncom.github.wez.wezterm.window.50 AXSections: [\r\ncom.github.wez.wezterm.window.50 ]\r\ncom.github.wez.wezterm.window.50 AXCloseButton: AXUIElement {\r\ncom.github.wez.wezterm.window.50      AXRole: Optional(AXButton)\r\ncom.github.wez.wezterm.window.50      AXTitle: nil\r\ncom.github.wez.wezterm.window.50      AXSubrole: Optional(AXCloseButton)\r\ncom.github.wez.wezterm.window.50      AXEnabled: Optional(1)\r\ncom.github.wez.wezterm.window.50      AXParent: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXTopLevelUIElement: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.github.wez.wezterm.window.50 }\r\ncom.github.wez.wezterm.window.50 AXMain: Optional(1)\r\ncom.github.wez.wezterm.window.50 AXActivationPoint: Optional(<AXValue 0x6000038e4780> {value = x:30.000000 y:59.000000 type = kAXValueCGPointType})\r\ncom.github.wez.wezterm.window.50 AXFullScreenButton: AXUIElement {\r\ncom.github.wez.wezterm.window.50      AXRole: Optional(AXButton)\r\ncom.github.wez.wezterm.window.50      AXTitle: nil\r\ncom.github.wez.wezterm.window.50      AXSubrole: Optional(AXFullScreenButton)\r\ncom.github.wez.wezterm.window.50      AXEnabled: Optional(1)\r\ncom.github.wez.wezterm.window.50      AXParent: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXTopLevelUIElement: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.wez.wezterm.window.50 }\r\ncom.github.wez.wezterm.window.50 AXProxy: nil\r\ncom.github.wez.wezterm.window.50 AXDefaultButton: nil\r\ncom.github.wez.wezterm.window.50 AXMinimized: Optional(0)\r\ncom.github.wez.wezterm.window.50 AXParent: Optional(<AXUIElement Application 0x6000039330c0> {pid=531})\r\ncom.github.wez.wezterm.window.50 AXTitleUIElement: nil\r\ncom.github.wez.wezterm.window.50 AXCancelButton: nil\r\ncom.github.wez.wezterm.window.50 AXModal: Optional(0)\r\ncom.github.wez.wezterm.window.50 AXZoomButton: AXUIElement {\r\ncom.github.wez.wezterm.window.50      AXRole: Optional(AXButton)\r\ncom.github.wez.wezterm.window.50      AXTitle: nil\r\ncom.github.wez.wezterm.window.50      AXSubrole: Optional(AXFullScreenButton)\r\ncom.github.wez.wezterm.window.50      AXEnabled: Optional(1)\r\ncom.github.wez.wezterm.window.50      AXParent: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXTopLevelUIElement: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      AXWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm.window.50      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.wez.wezterm.window.50 }\r\ncom.github.wez.wezterm.window.50 AXSize: Optional(<AXValue 0x600003923c30> {value = w:1880.000000 h:1014.000000 type = kAXValueCGSizeType})\r\ncom.github.wez.wezterm.window.50 AXToolbarButton: nil\r\ncom.github.wez.wezterm.window.50 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.github.wez.wezterm           AXRole: Optional(AXApplication)\r\ncom.github.wez.wezterm           AXTitle: Optional(WezTerm)\r\ncom.github.wez.wezterm           AXFunctionRowTopLevelElements: [\r\ncom.github.wez.wezterm           ]\r\ncom.github.wez.wezterm           AXFrame: nil\r\ncom.github.wez.wezterm           AXFocusedUIElement: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm           AXFrontmost: Optional(1)\r\ncom.github.wez.wezterm           AXExtrasMenuBar: nil\r\ncom.github.wez.wezterm           AXMainWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm           AXFocusedWindow: AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm           AXMenuBar: Optional(<AXUIElement 0x600003911740> {pid=531})\r\ncom.github.wez.wezterm           AXWindows: [\r\ncom.github.wez.wezterm               AXUIElement(windowId=50, title=\"aerospace debug-wind ~/.c/aerospace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.wez.wezterm           ]\r\ncom.github.wez.wezterm           AXSize: nil\r\ncom.github.wez.wezterm           AXPosition: nil\r\ncom.github.wez.wezterm           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.parallels.desktop.console.window.7239 windowId: 7239\r\ncom.parallels.desktop.console.window.7239 workspace: V\r\ncom.parallels.desktop.console.window.7239 treeNodeParent: AppBundle.MacosFullscreenWindowsContainer\r\ncom.parallels.desktop.console.window.7239 recognizedAsDialog: false\r\ncom.parallels.desktop.console.window.7239 AXTitle: Optional(Work)\r\ncom.parallels.desktop.console.window.7239 AXRole: Optional(AXWindow)\r\ncom.parallels.desktop.console.window.7239 AXSubrole: Optional(AXStandardWindow)\r\ncom.parallels.desktop.console.window.7239 AXIdentifier: Optional({aa3d05c2-2638-43d7-8c54-e8f9938e4865})\r\ncom.parallels.desktop.console.window.7239 AXFocused: Optional(1)\r\ncom.parallels.desktop.console.window.7239 AXFullScreen: Optional(1)\r\ncom.parallels.desktop.console.window.7239 AXFrame: Optional(<AXValue 0x600002311780> {value = x:0.000000 y:0.000000 w:1920.000000 h:1080.000000 type = kAXValueCGRectType})\r\ncom.parallels.desktop.console.window.7239 AXPosition: Optional(<AXValue 0x600003930180> {value = x:0.000000 y:0.000000 type = kAXValueCGPointType})\r\ncom.parallels.desktop.console.window.7239 AXGrowArea: nil\r\ncom.parallels.desktop.console.window.7239 AXMinimizeButton: AXUIElement {\r\ncom.parallels.desktop.console.window.7239      AXRole: Optional(AXButton)\r\ncom.parallels.desktop.console.window.7239      AXTitle: nil\r\ncom.parallels.desktop.console.window.7239      AXSubrole: Optional(AXMinimizeButton)\r\ncom.parallels.desktop.console.window.7239      AXEnabled: Optional(0)\r\ncom.parallels.desktop.console.window.7239      AXParent: AXUIElement(windowId=7242, title=nil, role=\"AXGroup\", subrole=nil)\r\ncom.parallels.desktop.console.window.7239      AXTopLevelUIElement: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      AXWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.parallels.desktop.console.window.7239 }\r\ncom.parallels.desktop.console.window.7239 AXDocument: nil\r\ncom.parallels.desktop.console.window.7239 AXSections: [\r\ncom.parallels.desktop.console.window.7239         Optional({\r\ncom.parallels.desktop.console.window.7239             SectionDescription = Toolbar;\r\ncom.parallels.desktop.console.window.7239             SectionObject = \"<AXUIElement 0x60000384e550> {pid=88781}\";\r\ncom.parallels.desktop.console.window.7239             SectionUniqueID = AXToolbar;\r\ncom.parallels.desktop.console.window.7239         }),\r\ncom.parallels.desktop.console.window.7239         Optional({\r\ncom.parallels.desktop.console.window.7239             SectionObject = \"<AXUIElement 0x6000038b51d0> {pid=88781}\";\r\ncom.parallels.desktop.console.window.7239             SectionUniqueID = AXContainer;\r\ncom.parallels.desktop.console.window.7239         })\r\ncom.parallels.desktop.console.window.7239 ]\r\ncom.parallels.desktop.console.window.7239 AXCloseButton: AXUIElement {\r\ncom.parallels.desktop.console.window.7239      AXRole: Optional(AXButton)\r\ncom.parallels.desktop.console.window.7239      AXTitle: nil\r\ncom.parallels.desktop.console.window.7239      AXSubrole: Optional(AXCloseButton)\r\ncom.parallels.desktop.console.window.7239      AXEnabled: Optional(1)\r\ncom.parallels.desktop.console.window.7239      AXParent: AXUIElement(windowId=7242, title=nil, role=\"AXGroup\", subrole=nil)\r\ncom.parallels.desktop.console.window.7239      AXTopLevelUIElement: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      AXWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.parallels.desktop.console.window.7239 }\r\ncom.parallels.desktop.console.window.7239 AXMain: Optional(1)\r\ncom.parallels.desktop.console.window.7239 AXActivationPoint: Optional(<AXValue 0x600003930180> {value = x:-1.000000 y:1081.000000 type = kAXValueCGPointType})\r\ncom.parallels.desktop.console.window.7239 AXFullScreenButton: AXUIElement {\r\ncom.parallels.desktop.console.window.7239      AXRole: Optional(AXButton)\r\ncom.parallels.desktop.console.window.7239      AXTitle: nil\r\ncom.parallels.desktop.console.window.7239      AXSubrole: Optional(AXZoomButton)\r\ncom.parallels.desktop.console.window.7239      AXEnabled: Optional(1)\r\ncom.parallels.desktop.console.window.7239      AXParent: AXUIElement(windowId=7242, title=nil, role=\"AXGroup\", subrole=nil)\r\ncom.parallels.desktop.console.window.7239      AXTopLevelUIElement: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      AXWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.parallels.desktop.console.window.7239 }\r\ncom.parallels.desktop.console.window.7239 AXProxy: nil\r\ncom.parallels.desktop.console.window.7239 AXDefaultButton: nil\r\ncom.parallels.desktop.console.window.7239 AXMinimized: Optional(0)\r\ncom.parallels.desktop.console.window.7239 AXParent: Optional(<AXUIElement Application 0x6000038e60a0> {pid=88781})\r\ncom.parallels.desktop.console.window.7239 AXTitleUIElement: nil\r\ncom.parallels.desktop.console.window.7239 AXCancelButton: nil\r\ncom.parallels.desktop.console.window.7239 AXModal: Optional(0)\r\ncom.parallels.desktop.console.window.7239 AXZoomButton: AXUIElement {\r\ncom.parallels.desktop.console.window.7239      AXRole: Optional(AXButton)\r\ncom.parallels.desktop.console.window.7239      AXTitle: nil\r\ncom.parallels.desktop.console.window.7239      AXSubrole: Optional(AXZoomButton)\r\ncom.parallels.desktop.console.window.7239      AXEnabled: Optional(1)\r\ncom.parallels.desktop.console.window.7239      AXParent: AXUIElement(windowId=7242, title=nil, role=\"AXGroup\", subrole=nil)\r\ncom.parallels.desktop.console.window.7239      AXTopLevelUIElement: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      AXWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console.window.7239      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.parallels.desktop.console.window.7239 }\r\ncom.parallels.desktop.console.window.7239 AXSize: Optional(<AXValue 0x6000038123a0> {value = w:1920.000000 h:1080.000000 type = kAXValueCGSizeType})\r\ncom.parallels.desktop.console.window.7239 AXToolbarButton: nil\r\ncom.parallels.desktop.console.window.7239 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.parallels.desktop.console             AXRole: Optional(AXApplication)\r\ncom.parallels.desktop.console             AXTitle: Optional(Parallels Desktop)\r\ncom.parallels.desktop.console             AXFunctionRowTopLevelElements: [\r\ncom.parallels.desktop.console             ]\r\ncom.parallels.desktop.console             AXFrame: nil\r\ncom.parallels.desktop.console             AXFocusedUIElement: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console             AXFrontmost: Optional(1)\r\ncom.parallels.desktop.console             AXExtrasMenuBar: Optional(<AXUIElement 0x60000381ee80> {pid=88781})\r\ncom.parallels.desktop.console             AXMainWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console             AXFocusedWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console             AXMenuBar: Optional(<AXUIElement 0x6000039128e0> {pid=88781})\r\ncom.parallels.desktop.console             AXWindows: [\r\ncom.parallels.desktop.console             ]\r\ncom.parallels.desktop.console             AXSize: nil\r\ncom.parallels.desktop.console             AXPosition: nil\r\ncom.parallels.desktop.console             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.parallels.desktop.console.window.7301 windowId: 7301\r\ncom.parallels.desktop.console.window.7301 workspace: nil\r\ncom.parallels.desktop.console.window.7301 treeNodeParent: AppBundle.MacosPopupWindowsContainer\r\ncom.parallels.desktop.console.window.7301 recognizedAsDialog: true\r\ncom.parallels.desktop.console.window.7301 AXTitle: Optional(Work)\r\ncom.parallels.desktop.console.window.7301 AXRole: Optional(AXWindow)\r\ncom.parallels.desktop.console.window.7301 AXSubrole: Optional(AXUnknown)\r\ncom.parallels.desktop.console.window.7301 AXIdentifier: Optional({fc5f2d92-8bac-44ee-9d11-9d7eec34268f})\r\ncom.parallels.desktop.console.window.7301 AXFocused: Optional(1)\r\ncom.parallels.desktop.console.window.7301 AXFullScreen: Optional(0)\r\ncom.parallels.desktop.console.window.7301 AXFrame: Optional(<AXValue 0x6000023ca100> {value = x:1920.000000 y:0.000000 w:1920.000000 h:1080.000000 type = kAXValueCGRectType})\r\ncom.parallels.desktop.console.window.7301 AXPosition: Optional(<AXValue 0x6000039372a0> {value = x:1920.000000 y:0.000000 type = kAXValueCGPointType})\r\ncom.parallels.desktop.console.window.7301 AXGrowArea: nil\r\ncom.parallels.desktop.console.window.7301 AXMinimizeButton: nil\r\ncom.parallels.desktop.console.window.7301 AXDocument: nil\r\ncom.parallels.desktop.console.window.7301 AXSections: [\r\ncom.parallels.desktop.console.window.7301 ]\r\ncom.parallels.desktop.console.window.7301 AXCloseButton: nil\r\ncom.parallels.desktop.console.window.7301 AXMain: Optional(0)\r\ncom.parallels.desktop.console.window.7301 AXActivationPoint: Optional(<AXValue 0x6000039114d0> {value = x:-1.000000 y:1081.000000 type = kAXValueCGPointType})\r\ncom.parallels.desktop.console.window.7301 AXFullScreenButton: nil\r\ncom.parallels.desktop.console.window.7301 AXProxy: nil\r\ncom.parallels.desktop.console.window.7301 AXDefaultButton: nil\r\ncom.parallels.desktop.console.window.7301 AXMinimized: Optional(0)\r\ncom.parallels.desktop.console.window.7301 AXParent: Optional(<AXUIElement Application 0x6000039114d0> {pid=88781})\r\ncom.parallels.desktop.console.window.7301 AXTitleUIElement: nil\r\ncom.parallels.desktop.console.window.7301 AXCancelButton: nil\r\ncom.parallels.desktop.console.window.7301 AXModal: Optional(0)\r\ncom.parallels.desktop.console.window.7301 AXZoomButton: nil\r\ncom.parallels.desktop.console.window.7301 AXSize: Optional(<AXValue 0x60000392aee0> {value = w:1920.000000 h:1080.000000 type = kAXValueCGSizeType})\r\ncom.parallels.desktop.console.window.7301 AXToolbarButton: nil\r\ncom.parallels.desktop.console.window.7301 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.parallels.desktop.console             AXRole: Optional(AXApplication)\r\ncom.parallels.desktop.console             AXTitle: Optional(Parallels Desktop)\r\ncom.parallels.desktop.console             AXFunctionRowTopLevelElements: [\r\ncom.parallels.desktop.console             ]\r\ncom.parallels.desktop.console             AXFrame: nil\r\ncom.parallels.desktop.console             AXFocusedUIElement: AXUIElement(windowId=7301, title=\"Work\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.parallels.desktop.console             AXFrontmost: Optional(1)\r\ncom.parallels.desktop.console             AXExtrasMenuBar: Optional(<AXUIElement 0x600003906070> {pid=88781})\r\ncom.parallels.desktop.console             AXMainWindow: AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.parallels.desktop.console             AXFocusedWindow: AXUIElement(windowId=7301, title=\"Work\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.parallels.desktop.console             AXMenuBar: Optional(<AXUIElement 0x6000038e7240> {pid=88781})\r\ncom.parallels.desktop.console             AXWindows: [\r\ncom.parallels.desktop.console                 AXUIElement(windowId=7301, title=\"Work\", role=\"AXWindow\", subrole=\"AXUnknown\"),\r\ncom.parallels.desktop.console                 AXUIElement(windowId=7239, title=\"Work\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.parallels.desktop.console                 AXUIElement(windowId=7244, title=\"\", role=\"AXWindow\", subrole=\"AXUnknown\"),\r\ncom.parallels.desktop.console                 AXUIElement(windowId=7243, title=\"\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.parallels.desktop.console             ]\r\ncom.parallels.desktop.console             AXSize: nil\r\ncom.parallels.desktop.console             AXPosition: nil\r\ncom.parallels.desktop.console             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\norg.mozilla.firefox.window.443 windowId: 443\r\norg.mozilla.firefox.window.443 workspace: 9\r\norg.mozilla.firefox.window.443 treeNodeParent: AppBundle.TilingContainer\r\norg.mozilla.firefox.window.443 recognizedAsDialog: false\r\norg.mozilla.firefox.window.443 AXTitle: Optional(|| wwanc - Synology NAS)\r\norg.mozilla.firefox.window.443 AXRole: Optional(AXWindow)\r\norg.mozilla.firefox.window.443 AXSubrole: Optional(AXStandardWindow)\r\norg.mozilla.firefox.window.443 AXFocused: Optional(1)\r\norg.mozilla.firefox.window.443 AXFullScreen: Optional(0)\r\norg.mozilla.firefox.window.443 AXFrame: Optional(<AXValue 0x600002366340> {value = x:1940.000000 y:20.000000 w:1880.000000 h:1039.000000 type = kAXValueCGRectType})\r\norg.mozilla.firefox.window.443 AXPosition: Optional(<AXValue 0x600003923f00> {value = x:1940.000000 y:20.000000 type = kAXValueCGPointType})\r\norg.mozilla.firefox.window.443 AXGrowArea: nil\r\norg.mozilla.firefox.window.443 AXMinimizeButton: AXUIElement {\r\norg.mozilla.firefox.window.443      AXRole: Optional(AXButton)\r\norg.mozilla.firefox.window.443      AXTitle: nil\r\norg.mozilla.firefox.window.443      AXSubrole: Optional(AXMinimizeButton)\r\norg.mozilla.firefox.window.443      AXEnabled: Optional(1)\r\norg.mozilla.firefox.window.443      AXParent: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXTopLevelUIElement: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\norg.mozilla.firefox.window.443 }\r\norg.mozilla.firefox.window.443 AXDocument: nil\r\norg.mozilla.firefox.window.443 AXSections: [\r\norg.mozilla.firefox.window.443         Optional({\r\norg.mozilla.firefox.window.443             SectionDescription = Content;\r\norg.mozilla.firefox.window.443             SectionObject = \"<AXUIElement 0x6000038e7a50> {pid=1881}\";\r\norg.mozilla.firefox.window.443             SectionUniqueID = AXContent;\r\norg.mozilla.firefox.window.443         })\r\norg.mozilla.firefox.window.443 ]\r\norg.mozilla.firefox.window.443 AXCloseButton: AXUIElement {\r\norg.mozilla.firefox.window.443      AXRole: Optional(AXButton)\r\norg.mozilla.firefox.window.443      AXTitle: nil\r\norg.mozilla.firefox.window.443      AXSubrole: Optional(AXCloseButton)\r\norg.mozilla.firefox.window.443      AXEnabled: Optional(1)\r\norg.mozilla.firefox.window.443      AXParent: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXTopLevelUIElement: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\norg.mozilla.firefox.window.443 }\r\norg.mozilla.firefox.window.443 AXMain: Optional(1)\r\norg.mozilla.firefox.window.443 AXActivationPoint: Optional(<AXValue 0x600003904840> {value = x:2010.000000 y:34.000000 type = kAXValueCGPointType})\r\norg.mozilla.firefox.window.443 AXFullScreenButton: AXUIElement {\r\norg.mozilla.firefox.window.443      AXRole: Optional(AXButton)\r\norg.mozilla.firefox.window.443      AXTitle: nil\r\norg.mozilla.firefox.window.443      AXSubrole: Optional(AXFullScreenButton)\r\norg.mozilla.firefox.window.443      AXEnabled: Optional(1)\r\norg.mozilla.firefox.window.443      AXParent: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXTopLevelUIElement: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\norg.mozilla.firefox.window.443 }\r\norg.mozilla.firefox.window.443 AXProxy: nil\r\norg.mozilla.firefox.window.443 AXDefaultButton: nil\r\norg.mozilla.firefox.window.443 AXMinimized: Optional(0)\r\norg.mozilla.firefox.window.443 AXParent: Optional(<AXUIElement Application 0x600003910060> {pid=1881})\r\norg.mozilla.firefox.window.443 AXTitleUIElement: nil\r\norg.mozilla.firefox.window.443 AXCancelButton: nil\r\norg.mozilla.firefox.window.443 AXModal: Optional(0)\r\norg.mozilla.firefox.window.443 AXZoomButton: AXUIElement {\r\norg.mozilla.firefox.window.443      AXRole: Optional(AXButton)\r\norg.mozilla.firefox.window.443      AXTitle: nil\r\norg.mozilla.firefox.window.443      AXSubrole: Optional(AXFullScreenButton)\r\norg.mozilla.firefox.window.443      AXEnabled: Optional(1)\r\norg.mozilla.firefox.window.443      AXParent: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXTopLevelUIElement: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      AXWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox.window.443      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\norg.mozilla.firefox.window.443 }\r\norg.mozilla.firefox.window.443 AXSize: Optional(<AXValue 0x60000391cd20> {value = w:1880.000000 h:1039.000000 type = kAXValueCGSizeType})\r\norg.mozilla.firefox.window.443 AXToolbarButton: nil\r\norg.mozilla.firefox.window.443 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\norg.mozilla.firefox            AXRole: Optional(AXApplication)\r\norg.mozilla.firefox            AXTitle: Optional(Firefox)\r\norg.mozilla.firefox            AXFunctionRowTopLevelElements: [\r\norg.mozilla.firefox            ]\r\norg.mozilla.firefox            AXFrame: nil\r\norg.mozilla.firefox            AXFocusedUIElement: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXGroup\", subrole=\"AXUnknown\")\r\norg.mozilla.firefox            AXFrontmost: Optional(1)\r\norg.mozilla.firefox            AXExtrasMenuBar: nil\r\norg.mozilla.firefox            AXMainWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox            AXFocusedWindow: AXUIElement(windowId=443, title=\"|| wwanc - Synology NAS\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.mozilla.firefox            AXMenuBar: Optional(<AXUIElement 0x60000391e460> {pid=1881})\r\norg.mozilla.firefox            AXWindows: [\r\norg.mozilla.firefox            ]\r\norg.mozilla.firefox            AXSize: nil\r\norg.mozilla.firefox            AXPosition: nil\r\norg.mozilla.firefox            Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [ x ] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - workspace switching automatically\r\n  - workspace switches by itself\r\n  - parallels\r\n  - virtual monitors\r\n- [ x ] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [ x ] I've searched in the documentation. My search queries were:\r\n  - parallels\r\n  - virtual monitors\r\n \r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/455/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/438",
      "id": 2476615446,
      "node_id": "I_kwDOJl1IZM6TnicW",
      "number": 438,
      "title": "Add `--visible` and `--fullscreen` flags to `list-windows` command",
      "user": {
        "login": "diogox",
        "id": 13244408,
        "node_id": "MDQ6VXNlcjEzMjQ0NDA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/13244408?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/diogox",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-08-20T22:09:03Z",
      "updated_at": "2025-08-20T08:25:58Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I've just setup [JankyBorders](https://github.com/FelixKratz/JankyBorders), and added the first line in the following snippet to my config:\r\n\r\n```sh\r\non-focus-changed = [\r\n  'exec-and-forget [ $(aerospace list-windows --workspace focused | wc -l) -eq 1 ] && borders width=0.0 || borders width=6.0',\r\n  'move-mouse window-lazy-center'  # Mouse lazily follows any focus (window or workspace)\r\n]\r\n```\r\n\r\nWhat this does is remove the border highlighting the currently focused window if there's only one window in the focused workspace.\r\n\r\nI would like to make it so that if there is more than one window, but the layout is `fullscreen`, the border should also disappear.\r\n\r\nI was not able to find a way to query Aerospace for the current workspace layout.\r\n\r\nDid I miss it? If not, could this be added somehow?\r\n\r\n## Checklist\r\n\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - List focused window layout\r\n  - Query layout\r\n- [X] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [X] I've searched in the documentation. My search queries were:\r\n  - layout\r\n  - query\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/438/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/429",
      "id": 2472728299,
      "node_id": "I_kwDOJl1IZM6TYtbr",
      "number": 429,
      "title": "Feature Request: implement `list-windows --layout`",
      "user": {
        "login": "Petemir",
        "id": 287105,
        "node_id": "MDQ6VXNlcjI4NzEwNQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/287105?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Petemir",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-19T08:07:58Z",
      "updated_at": "2025-06-20T22:49:26Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, \r\n\r\nExtracted from a comment on #272:\r\n\r\n> Would it be/is it possible to filter windows by their layout? Particularly, I am interested in being able to list floating windows... in that case, it would be trivial (as a user) to implement the requested feature\r\n\r\n(i.e., a scratchpad).\r\n\r\n\r\nBy the way, many thanks for the app. It's a great tool for those used to i3 on Linux, and it's a comfort being able to keep a similar workflow when changing environment so drastically. \r\n\r\nPlease let me know if there's anything else I should add. Thanks once again!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/429/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/412",
      "id": 2465462241,
      "node_id": "I_kwDOJl1IZM6S8_fh",
      "number": 412,
      "title": "[feature request] Ignore key binds for specific apps/windows",
      "user": {
        "login": "jakenvac",
        "id": 9119973,
        "node_id": "MDQ6VXNlcjkxMTk5NzM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9119973?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jakenvac",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-08-14T10:27:21Z",
      "updated_at": "2025-06-20T22:49:27Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Apologies if this has been requested before - I couldn't find anything similar.\r\n\r\nI would like to request a feature that allows us to ignore key binds if a specific app/window is focused and instead allow the keys to be sent to the application.\r\n\r\nMy use case is that I would like to integrate my `focus` keybinds with my terminal/multiplexer (Wezterm in this case). I was able to do this with yabai/skhd by leveraging Wezterms scriptable config. If it was focused, wezterm would handle the keypress and decide if it should navigate within its panes, based on the current panes siblings or if it should execute the yabai focus command.\r\n\r\nI have achieved something similar to this by executing a shell script on my focus keybinds and writing custom user vars to wezterm for it to handle. However this has introduced latency when switching focus even outside of wezterm. My setup for this is shared at the bottom if anyone else wants to achieve similar behaviour in the meantime.\r\n\r\n### Proposal\r\nTOML isn't the greatest format for dynamic config, so I wonder if this can wait until #278 is implemented. Maybe there could be a feature to propagate key presses under arbitrary conditions.\r\n\r\nOtherwise, I would draw inspiration from the callback syntax.\r\n```toml\r\n[[node.main.binding.conditional]]\r\nif.app-id.not = 'com.apple.systempreferences'\r\nalt-h = 'focus left'\r\n\r\n# etc.\r\n```\r\n\r\nI would be happy to have a go at implementing this if it's a feature that aligns with the projects goals. Thanks for considering.\r\n\r\n---\r\n### My config\r\n\r\nMy keybinds\r\n```toml\r\nalt-h = 'exec-and-forget /Users/jakenvac/.config/aerospace/focus.sh left'\r\nalt-j = 'exec-and-forget /Users/jakenvac/.config/aerospace/focus.sh down'\r\nalt-k = 'exec-and-forget /Users/jakenvac/.config/aerospace/focus.sh up'\r\nalt-l = 'exec-and-forget /Users/jakenvac/.config/aerospace/focus.sh right'\r\n```\r\nfocus.sh\r\n```sh\r\n#!/bin/bash\r\nDIR=$1\r\n\r\nwezpane=-1\r\nweztty=-1\r\n\r\nif aerospace list-windows --focused | grep -q \"WezTerm\"; then\r\n  wezpane=$(wezterm cli list-clients --format json | jq '.[0].focused_pane_id' 2>/dev/null) || wezpane=-1\r\n  weztty=`wezterm cli list --format json | jq -r \".[] | select(.pane_id == $wezpane) | .tty_name\" 2>/dev/null` || weztty=-1\r\nfi\r\n  \r\n# If wezterm is focused and we have its tty\r\nif [[ $wezpane != -1 ]] && [[ $weztty != -1 ]]; then\r\n  base64dir=$(printf \"%s\" \"$DIR\" | base64)\r\n  # this emits an event in wezterm that can be handled with lua scripts\r\n  wezcmd=`printf \"\\033]1337;SetUserVar=%s=%s\\007\" ActivatePaneFromAerospace $base64dir`\r\n  printf \"%s\" \"$wezcmd\" > \"$weztty\";\r\nelse\r\n  aerospace focus $DIR\r\nfi\r\n```\r\nwezterm user-var-changed handler (this is a stripped down version, I also have it set up to manage navigating within neovim windows)\r\n```lua\r\nlocal aerospace_to_wezterm_map = {\r\n\tleft = \"Left\",\r\n\tdown = \"Down\",\r\n\tup = \"Up\",\r\n\tright = \"Right\",\r\n}\r\n\r\nlocal function CustomActivatePaneDirection(window, pane, direction)\r\n\tlocal wezterm_direction = aerospace_to_wezterm_map[direction]\r\n\r\n\tlocal tab = pane:tab()\r\n\tlocal sibling = tab:get_pane_direction(direction)\r\n\r\n\tif sibling ~= nil then\r\n\t\twindow:perform_action(act.ActivatePaneDirection(wezterm_direction), pane)\r\n\telse\r\n\t\twezterm.run_child_process({ \"/opt/homebrew/bin/aerospace\", \"focus\", direction })\r\n\tend\r\nend\r\n\r\nwezterm.on(\"user-var-changed\", function(window, pane, name, value)\r\n\tif name == \"ActivatePaneFromAerospace\" then\r\n\t\tCustomActivatePaneDirection(window, pane, value)\r\n\tend\r\nend)\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/412/reactions",
        "total_count": 14,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 14,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/401",
      "id": 2463536168,
      "node_id": "I_kwDOJl1IZM6S1pQo",
      "number": 401,
      "title": "Implement accordion maximum item count and improve current visualization",
      "user": {
        "login": "denisloch",
        "id": 36578994,
        "node_id": "MDQ6VXNlcjM2NTc4OTk0",
        "avatar_url": "https://avatars.githubusercontent.com/u/36578994?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/denisloch",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-13T14:43:25Z",
      "updated_at": "2025-06-20T22:48:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "First of all, I love the project and the efforts that are put in, amazing piece of software.\r\nI especially like the accordion layout, as it allows me to stack multiple windows on top of another without losing a lot of screen real estate.\r\n\r\nWhen the accordion layout is used, after a while you might forget which windows are stacked on top of another because currently, only two items max are shown at a time while more than that are allowed to exist.  \r\n\r\nThus, the first suggestion would be to add a config item `accordion-max-items=2`. The default value would be `2` and could be customized by the user. That would not break any existing user configs. The padding would also play along nicely.\r\n\r\nIn addition to that, I would like to suggest a better visualization. Currently, if you focus the lowest accordion item, it overlays the top one which again makes you lose context about what you have open below that. I have created a little visualization on how that could be improved. If the idea is too drastic, it could be locked behind a feature flag as well.\r\nHopefully it becomes clear with the following image:\r\n\r\n<img src=\"https://gist.githubusercontent.com/denisloch/f0270bb13a0a4c03680a1ec950f30d0e/raw/f7b6235d32eed6b07f7b536ce53721fc59b16642/file.svg\" />\r\n  \r\nPlease feel free to criticize and improve my idea.\r\nCheers :)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/401/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/397",
      "id": 2461989967,
      "node_id": "I_kwDOJl1IZM6SvvxP",
      "number": 397,
      "title": "Allow percentages in `resize` command, `accordion-padding`, `gaps` settings",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-12T22:22:05Z",
      "updated_at": "2025-06-20T22:49:28Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "For example\n- `resize width 25%` should make window to occupy 1/4 of the monitor width\n- `resize width 50%` should make window to occupy half of the monitor\n- `resize width +10%` should increase window's width by 10% of the monitor's width\n\nFor searchability: percent",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/397/reactions",
        "total_count": 36,
        "+1": 36,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/386",
      "id": 2460485343,
      "node_id": "I_kwDOJl1IZM6SqAbf",
      "number": 386,
      "title": "Cursor misbehaving when having a single floating window with `on-focus-changed = ['move-mouse window-lazy-center']`",
      "user": {
        "login": "AlexBurdu",
        "id": 1262636,
        "node_id": "MDQ6VXNlcjEyNjI2MzY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1262636?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AlexBurdu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-08-12T09:31:03Z",
      "updated_at": "2025-06-22T15:57:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I sometimes prefer keeping a single floating window in a workspace (monitor too big) and I'm using `on-focus-changed = ['move-mouse window-lazy-center']`.\r\n\r\nWhen I switch to the workspaces with a single floating window, the cursor goes to the bottom right corner of the screen instead of being centered on the single floating window in the workspace.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/386/reactions",
        "total_count": 6,
        "+1": 6,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/371",
      "id": 2459368221,
      "node_id": "I_kwDOJl1IZM6Slvsd",
      "number": 371,
      "title": "Mouse Events",
      "user": {
        "login": "samholmes",
        "id": 517469,
        "node_id": "MDQ6VXNlcjUxNzQ2OQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/517469?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/samholmes",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2024-08-11T01:35:22Z",
      "updated_at": "2025-06-20T22:49:30Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Events like mouse move or mouse click would be useful to exit modes. My current main mode only has one binding to enter an alt mode with all my single key bindings to navigate windows etc. The space bar is the exit binding from this alt mode. Being able to setup mouse events to also exit this alt mode would be very handy and useful to not accidentally forget that I'm in the alt mode.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/371/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/367",
      "id": 2457609294,
      "node_id": "I_kwDOJl1IZM6SfCRO",
      "number": 367,
      "title": "Switch to previous workspace when a workspace is moved to another monitor",
      "user": {
        "login": "Grezzo",
        "id": 1574195,
        "node_id": "MDQ6VXNlcjE1NzQxOTU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1574195?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Grezzo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-09T10:24:55Z",
      "updated_at": "2025-06-20T22:48:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Aerospace seems to assign a random workspace to my monitor when I move an existing workspace to a different monitor. It would be good if aerospace was able to remember the previous workspace(s) that were displayed and put them on the monitor that a workspace was just moved from.\r\n\r\nIt may need some additional logic like not moving workspaces that are already active on other monitors to prevent stealing workspaces from them.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/367/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/359",
      "id": 2449033367,
      "node_id": "I_kwDOJl1IZM6R-UiX",
      "number": 359,
      "title": "Add window condition for executable path prefix",
      "user": {
        "login": "graywolf",
        "id": 790463,
        "node_id": "MDQ6VXNlcjc5MDQ2Mw==",
        "avatar_url": "https://avatars.githubusercontent.com/u/790463?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/graywolf",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-05T17:00:32Z",
      "updated_at": "2025-06-20T22:49:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\r\n\r\nI am trying to use the on-window-detected callback to move a window, and I am having trouble differentiating between two windows with the same application id.  The application in question is Firefox.  I need to have two separate profiles running at the same time, one for hardened browsing, other for Zoom.  Using `cp -r` I ended up with `/Applications/Firefox.app` and `/Applications/Firefox for Zoom.app`.  It works fine it seems.\r\n\r\nHowever when I want to place one firefox on workspace 2, and other on workspace 4, I am unsure how to currently do it.  Both have the same application id, so `if.app-id` cannot be used.  Matching on window title will not work either, since the title differs based on the active tabs.\r\n\r\nThe solution for me would be to introduce new condition, for example `if.app-path-prefix`, so I could do\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-path-prefix = '/Applications/Firefox.app/'\r\nrun = 'move-node-to-workspace 2'\r\n\r\n[[on-window-detected]]\r\nif.app-path-prefix = '/Applications/Firefox for Zoom.app/'\r\nrun = 'move-node-to-workspace 4'\r\n```\r\n\r\nThank you for considering this feature.\r\n\r\n(As off-topic note at the end, thank you, AeroSpace is great.  When I was forced to switch to Mac few days back, the usability was horrible.  Then I installed AeroSpace, ported over my i3 config, and suddenly I no longer want to shoot my brain out.  So, thanks a lot.)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/359/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/354",
      "id": 2446876045,
      "node_id": "I_kwDOJl1IZM6R2F2N",
      "number": 354,
      "title": "Exit binding mode by pressing a non-defined key in that mode",
      "user": {
        "login": "mfiers",
        "id": 81995,
        "node_id": "MDQ6VXNlcjgxOTk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/81995?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mfiers",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-08-04T06:51:26Z",
      "updated_at": "2025-06-20T23:05:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be helpful if there was the (configurable?) option to exit a binding mode when pressing any key that is not defined in that mode. \r\n\r\nI've had a few cases where I got stuck in the (service) binding mode when misspressing a key, after which I'm mentally back in the main binding, but aerospace is waiting for a service command.\r\n\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/354/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 1,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/351",
      "id": 2443585083,
      "node_id": "I_kwDOJl1IZM6RpiY7",
      "number": 351,
      "title": "Add environment variables to all callbacks",
      "user": {
        "login": "tobiasgiese",
        "id": 23076619,
        "node_id": "MDQ6VXNlcjIzMDc2NjE5",
        "avatar_url": "https://avatars.githubusercontent.com/u/23076619?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tobiasgiese",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-08-01T22:22:53Z",
      "updated_at": "2025-06-20T22:49:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Having environment variables like `AEROSPACE_FOCUSED_WORKSPACE` and `AEROSPACE_PREV_WORKSPACE` in all callbacks would be helpful. Especially while using other tools like sketchybar for instance. Having those envs will reduce aerospace queries and will lower resource consumption.\r\n\r\nAdditionally, further environment variables would be useful. Some ideas that I have in my mind:\r\n\r\n`AEROSPACE_FOCUSED_MONITOR_ID`: the current focussed monitor id\r\n`AEROSPACE_WORKSPACE_MONITOR_ID`: the monitor id for the workspace\r\n`AEROSPACE_WORKSPACE_WINDOWS`: the windows in the workspace\r\n\r\nxref https://github.com/nikitabobko/AeroSpace/issues/230#issuecomment-2262997144",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/351/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/347",
      "id": 2438211802,
      "node_id": "I_kwDOJl1IZM6RVCja",
      "number": 347,
      "title": "Moving floating windows between monitors causes them to jump back to their original monitor.",
      "user": {
        "login": "gohma231",
        "id": 4106435,
        "node_id": "MDQ6VXNlcjQxMDY0MzU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4106435?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gohma231",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-07-30T16:17:55Z",
      "updated_at": "2025-06-20T22:48:24Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Dragging floating windows between monitors will sometimes result in them jumping back to their original monitor. It seems to happen more frequently when if you drag the window to another monitor quickly. This happens frequently on my machine.\r\n\r\nTo reproduce:\r\n1. Open a window (Firefox for example)\r\n2. Set the window to floating\r\n3. Drag the window to the other monitor. \r\n4. Repeat (3) a few times if the window doesn't jump back. Quickly drag the window back and forth to improve chances that this occurs. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/347/reactions",
        "total_count": 9,
        "+1": 9,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/316",
      "id": 2392059688,
      "node_id": "I_kwDOJl1IZM6Ok-8o",
      "number": 316,
      "title": "`on-workspace-touched`/`on-workspace-redraw` callback",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-07-05T07:54:15Z",
      "updated_at": "2025-06-20T22:49:32Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The proposal is to introduce `on-workspace-touched` callback. When the workspace is updated in any way (focused changed to/from the workspace, children are attached/removed, name/tag is changed ~~(oh,fuck, see below)~~)\r\n\r\nUse case:\r\n```toml\r\non-workspace-touched = 'echo %{workspace-mru-app-name} | xargs rename-workspace --tag'\r\n```\r\n\r\nIt'd require introduction of `workspace-mru-app-name` interpolation variable (\"MRU\" stands for \"most recently used\")\r\n\r\n**Alternative names:** `on-workspace-used` (similar to \"MRU\"), `on-workspace-updated` (Does \"focusing the workspace\" update it?)\r\n\r\n**Alternative.** Allow interpolation variables directly inside `rename-workspace`? `rename-workspace --tag %{workspace-mru-app-name}`. Then, for the consistency, they should be allowed in literally all commands. `workspace %{next-workspace}`, `focus --window-id %{left-window-id}`, etc. jeez\r\n\r\n**Problem.** Any command run inside the callback will probably change the workspace again. `rename-workspace` changes the workspace, which leads to infinite loop.\r\n\r\nPossible solutions:\r\n- More fine-grained callback. `on-workspace-children-changed` (sounds too specific. Is it useful in general case?)\r\n- Detect changes from the callback itself, and don't retrigger recursively. **Sounds the most promising**\r\n- ~~Don't do anything with this problem. Assume that the script inside is idempotent, which will cause recursion only once~~ I completely dislike it. At least because commands need to make sure no to call the callback if they detect that they noop\r\n\r\n**Depends on:** #245 #278 ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/316/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/307",
      "id": 2383226661,
      "node_id": "I_kwDOJl1IZM6ODScl",
      "number": 307,
      "title": "TablePlus Database \"Windows\" are detected as separate windows",
      "user": {
        "login": "gempir",
        "id": 9765622,
        "node_id": "MDQ6VXNlcjk3NjU2MjI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9765622?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gempir",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2024-07-01T08:44:40Z",
      "updated_at": "2025-10-31T08:37:56Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The database client https://tableplus.com/ supports having multiple databases open. They call that windows. But the window is in the same macOS window. \r\n\r\nAeroSpace detects these as separate windows and splits them that way. \r\n\r\nThe free version supports 2 \"windows\" so it can be reproduced with that.\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/assets/9765622/8aa03714-6fc2-4a03-88d8-54f8036e9deb\r\n\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/307/reactions",
        "total_count": 11,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/304",
      "id": 2382333922,
      "node_id": "I_kwDOJl1IZM6N_4fi",
      "number": 304,
      "title": "Ability to cycle through more than two layouts",
      "user": {
        "login": "edgimar",
        "id": 393850,
        "node_id": "MDQ6VXNlcjM5Mzg1MA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/393850?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/edgimar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        },
        "1": {
          "id": 7151038032,
          "node_id": "LA_kwDOJl1IZM8AAAABqjwuUA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/1.0-blocker",
          "name": "1.0-blocker",
          "color": "F27AD4",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-06-30T16:42:14Z",
      "updated_at": "2025-06-20T22:49:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It seems that the current way that the `layout` command functions will not allow for the cycling of more than two layouts.  If new layouts are introduced in the future, it would be convenient to be able to cycle between them all with a single keybinding.  Even with the current layouts, it would still be convenient to cycle from `h_tiles -> v_tiles -> v_accordion -> h_tiles ...`.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/304/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/278",
      "id": 2354966135,
      "node_id": "I_kwDOJl1IZM6MXe53",
      "number": 278,
      "title": "Feature: shell-like combinators for conditional computation and sending several commands to server in a single batch",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 7151038032,
          "node_id": "LA_kwDOJl1IZM8AAAABqjwuUA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/1.0-blocker",
          "name": "1.0-blocker",
          "color": "F27AD4",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-06-15T15:52:31Z",
      "updated_at": "2025-06-29T10:16:13Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`Currently` it's impossible to consume stdout and exit codes of commands in toml config. One has to use `exec-and-forget`\n```toml\nalt-w = 'exec-and-forget aerospace workspace W --fail-if-noop || aerospace workspace-back-and-forth'\natl-tab = 'exec-and-forget aerospace list-workspaces --all | aerospace workspace next'\n```\n\nIt's slow. Communicating with the server back and forth from CLI client can take additional 100ms which becomes noticeable. Even if we fix the slowness somehow, annoying flickering will still remain an issue\n\nIt'd be cool if AeroSpace supported basic shell combinators (`||`, `&&`, `;`, `( )`)\n```toml\nalt-w = 'workspace --fail-if-noop W || workspace-back-and-forth'\natl-tab = 'list-workspaces --all | workspace next'\n```\n\nThat's a big feature that lays the foundation for a lot of things (basically the combinators allow programming custom logic):\n- It becomes possible to send a batch of commands from CLI to server at once, resulting in reduced flickering (because server already implements \"double buffering\" to reduce flickering)\n  https://nikitabobko.github.io/AeroSpace/goodness#use-trackpad-gestures-to-switch-workspaces\n  ```shell\n  aerospace eval 'list-workspaces --monitor mouse --visible | xargs workspace; aerospace workspace next'\n  ```\n  Or alternatively without `xargs`:\n  ```\n  aerospace eval 'list-workspaces --monitor mouse --visible | workspace -; workspace next'\n  ```\n- It fixes the ugliness of `on-window-detected` TOML callback. The new syntax is much more compact and powerful. It remains readable for people familiar with shell:\n  ```toml\n  on-window-detected = '''\n      test %{app-bundle-id} == com.jetbrains.intellij && move-workspace-to-monitor I\n          || test %{app-bundle-id} == com.google.Chrome && move-node-to-workspace W\n          || test %{app-bundle-id} == com.apple.dt.Xcode && (move-node-to-workspace X; exec-async 'echo hi!')\n  '''\n  ```\n- It opens up a possibility for even more powerful conditional gaps #60:\n  ```toml\n  [gaps]\n  outer.left = 'test %{workspace-tiling-windows-count} --lessThan 2 && echo 100'\n  outer.right = 'test %{workspace-tiling-windows-count} --lessThan 2 && echo 100'\n  ```\n  UPD: this particular suggestion was discarded\n- It makes everything more universal and reusable. E.g. there won't be need to fix #107 if `config` command allows to query `on-window-detected` command:\n  ```shell\n  aerospace eval 'config --get on-window-detected | eval -'\n  ```\n\nOther subcommands that AeroSpace has to implement to make the feature complete:\n- `test` as in CLI but with possibility to interpolate AeroSpace special variables like `%{window-title}`, `%{window-name}`, `%{app-bundle-id}`, `%{workspace-tiling-windows-count}`, etc #150\n- ~~`xargs` as in CLI~~ UPD: stop turning it into a programming language. It's better to provide single dash `-` to a bunch of commands as in \"consume stdin convention\". `xargs` and interpolation (which is another idea, that I discard right now) have a downside that it becomes impossible to statically parse all commands in \"AeroSpace script\"\n- `echo` as in CLI. (use case: https://github.com/nikitabobko/AeroSpace/discussions/842)\n- `exec-async` as a replacement for `exec-and-forget`. The problem with `exec-and-forget` that it's not parsed as real CLI command, making it impossible to use the command with combinators\n- `eval` to evaluate \"AeroSpace script\" from `argv[1]`\n\nOverall a lot issues can be fixed: #264 #60 #54 #174 (partially) #104 (partially) #107 (kinda) #150\n\nOpen question: doesn't it open a pandora box of own script programming language? It kinda does. I hope that people will never ask for loops.\n\nRelated: https://github.com/nikitabobko/AeroSpace/issues/1454",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/278/reactions",
        "total_count": 28,
        "+1": 21,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 7,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/272",
      "id": 2348138290,
      "node_id": "I_kwDOJl1IZM6L9b8y",
      "number": 272,
      "title": "Feature Request: scratchpad",
      "user": {
        "login": "ericd23",
        "id": 110474835,
        "node_id": "U_kgDOBpW2Uw",
        "avatar_url": "https://avatars.githubusercontent.com/u/110474835?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ericd23",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 19,
      "created_at": "2024-06-12T08:22:54Z",
      "updated_at": "2025-11-24T02:20:19Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "i3 and sway have the concept of scratchpad that you can put some windows there and show/hide the windows in it on any workspace. For example, I could put my note taking or todo apps there. Whenever some random thought comes in, I bring out the scratchpad, log down the thought and then hide it. Quick and simple!\n\nRelated (or maybe a duplicate): https://github.com/nikitabobko/AeroSpace/issues/510",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/272/reactions",
        "total_count": 53,
        "+1": 53,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/267",
      "id": 2346365545,
      "node_id": "I_kwDOJl1IZM6L2rJp",
      "number": 267,
      "title": "The Photo Booth app window jumps around constantly in non-builtin monitor",
      "user": {
        "login": "dekked",
        "id": 1590959,
        "node_id": "MDQ6VXNlcjE1OTA5NTk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1590959?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dekked",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-06-11T12:55:50Z",
      "updated_at": "2025-06-20T22:48:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "* If two windows or more side by side, seems to be fine.\r\n* If it's the only window, trouble.\r\n* If it's full screen, trouble again!\r\n\r\nSee video:\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/assets/1590959/8d68df1f-6b81-48ba-af98-a4108a27603f\r\n\r\nI'm using sketchybar on the top and this is my gaps config:\r\n```\r\n[gaps]\r\ninner.horizontal = 2\r\ninner.vertical = 2\r\nouter.left = 2\r\nouter.bottom = 2\r\nouter.top = [{ monitor.built-in = 2 }, 32]\r\n```\r\n\r\nThis only happens in my external display, set as main. In the built-in display, it works just fine.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/267/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/260",
      "id": 2341692456,
      "node_id": "I_kwDOJl1IZM6Lk2Qo",
      "number": 260,
      "title": "Feature proposal: More sophisticated per-workspace normalizations to replicate dynamic twm",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": true,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 23,
      "created_at": "2024-06-08T14:56:47Z",
      "updated_at": "2026-01-25T17:50:24Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": "off-topic",
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "AeroSpace already provides two normalizations (\"flatten-containers\" and \"opposite-orientation-for-nested-containers\")\n\nThe current mental model of normalizations can be extended to allow more types of normalizations. To completely replicate dynamic tiling window managers, it should be possible to change normalizations with command on per-workspace basis\n\nNormalizations to consider:\n- `floating`. All windows on the workspace are floating. \n  Open question: should the normalization remember and restore layout from the workspace where this normalization wasn't enabled?\n- `columns`\n- `rows`\n- `primary-others` (\"tall\" in Amethyst)\n- `others-primary` (\"tall-right\" in Amethyst)\n- `v-primary-others` (\"wide\" in Amethyst)\n- `v-others-primary`\n- `bsp`\n\nTo consider: file with declarative hierarchical normalization description (something like yaml, but probably not yaml)\n\nIt should also be possible to apply the normalization once, but don't keep it persistent\n\nRelated: #228 #248 #256 \n\nRelated:\n- https://github.com/eliep/i3-layouts/tree/main",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/260/reactions",
        "total_count": 123,
        "+1": 96,
        "-1": 0,
        "laugh": 0,
        "hooray": 11,
        "confused": 0,
        "heart": 0,
        "rocket": 8,
        "eyes": 8
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/245",
      "id": 2319782556,
      "node_id": "I_kwDOJl1IZM6KRRKc",
      "number": 245,
      "title": "Feature Request: Ability to rename and renumber workspaces",
      "user": {
        "login": "sangaline",
        "id": 8236564,
        "node_id": "MDQ6VXNlcjgyMzY1NjQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8236564?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sangaline",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2024-05-27T21:11:02Z",
      "updated_at": "2025-06-20T22:49:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In i3, I find it extremely useful to be able to rename workspaces. It's helpful to add some human-readable metadata to the workspace numbers describing the focus of the workspace. In i3, commands like `workspace number 1` will continue to work if a workspace is renamed with a `:...` suffix like `1:firefox`, so the names can be changed on the fly without changing the config. It's also helpful to be able to reorganize the ordering of your workspaces. Another important use-case this enables is temporarily moving workspaces out of the top 10 (or however many you have with active bindings) when you know that you won't need them for a while. I'll often push inactive workspaces out into the 11-20 range and then swap them back in when I need them again days or weeks later.\r\n\r\nHere's an example of how I configured this in i3 to allow for easily moving and renaming workspaces:\r\n\r\n```\r\nbindsym Mod4+Shift+i exec i3-input\r\nbindsym Mod4+i exec i3-input -F 'rename workspace to \"%s'$(i3-msg -t get_workspaces | jq '.[] | select(.focused==true).name' | sed 's/[0-9]\\+\\(.*\\)/\\1/g' | sed 's/\"//g')'\"' -P 'Renumber workspace to: '\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/245/reactions",
        "total_count": 17,
        "+1": 13,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 4,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/241",
      "id": 2318378164,
      "node_id": "I_kwDOJl1IZM6KL6S0",
      "number": 241,
      "title": "Feature Request: Get selected layout of current focused workspace",
      "user": {
        "login": "adwinying",
        "id": 6265936,
        "node_id": "MDQ6VXNlcjYyNjU5MzY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6265936?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/adwinying",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-05-27T06:51:11Z",
      "updated_at": "2025-06-20T22:49:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "First off, thanks for this amazing piece of software!\r\n\r\nAs mentioned in the title, would really appreciate if there's a way to get the current layout of the current workspace 🤔 ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/241/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/238",
      "id": 2314504131,
      "node_id": "I_kwDOJl1IZM6J9IfD",
      "number": 238,
      "title": "Switching workspaces on one monitor hides native fullscreen app on second monitor",
      "user": {
        "login": "curbol",
        "id": 5971687,
        "node_id": "MDQ6VXNlcjU5NzE2ODc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5971687?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/curbol",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-05-24T06:19:32Z",
      "updated_at": "2025-10-01T20:54:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Background\r\n\r\nI'm having an issue where switching workspaces that are both on the same monitor results in a fullscreen app minimizing on my other monitor. I'll go into more detail below.\r\n\r\n\"Displays have separate Spaces\" is enabled.\r\n\"Group windows by application\" is enabled. (disabling doesn't seem to affect this issue)\r\n\r\nMy main monitor is positioned to the left of my laptop screen. I like to watch a fullscreen video on my laptop screen while working on other things on my main monitor.\r\n\r\nI have aerospace workspaces 1 and 2 on my main monitor. workspace 0 on my laptop screen.\r\n\r\nWhen I switch between workspaces 1 and 2 (on main monitor), the video on workspaces 0 goes away to show the desktop. I can still hear the audio and if I just click the screen on the laptop then the video shows up again.\r\n\r\nIt looks like the apps from inactive workspaces are being moved to the bottom right corner of my laptop monitor. I suspect this might be what is causing the video to go away.\r\n\r\n## What I've tried\r\n\r\n- I thought it might just be my browser (chrome) because I have chrome in multiple workspaces including the one playing the video. However, I tried using a different browser for the video only and the issue still happens.\r\n- I tried changing my main display to the laptop screen in macOS settings thinking maybe the apps would get moved to my other monitor instead of the laptop monitor. However, the apps always move to the bottom-right of the laptop screen regardless of the settings.\r\n- I temporarily tried swapping which monitors my workspaces are on (1 and 2 moved to my laptop screen, 0 moved to my main monitor). This way the video was playing fullscreen on my main monitor and my other apps on my laptop screen. This _did_ \"fix\" the issue in that I could switch between workspaces 1 and 2 and workspace 0 stayed fullscreen. This leads me to believe the issue is related to where the inactive apps get moved to.\r\n- I temporarily moved the arrangement of my laptop in macOS settings to be on the left of my main monitor instead of the right. This _did_ \"fix\" the issue. This is further evidence that the root of the issue is where the inactive apps get moved to.\r\n\r\n## Possible solution\r\n(assuming there isn't already a known solution)\r\n\r\nThis issue could be solved for me if there was a setting  to control which monitor inactive apps get moved to. If they moved to my main monitor instead of my laptop monitor I think the issue would be solved. On a side note, it seems weird that apps (even inactive ones) would get moved to a different macOS Space. Shouldn't they always stay in the same Space to keep things isolated?\r\n\r\nAlternatively, there could be a settings to control which corner apps get moved to. It appears to always be the bottom-right. If it could be configured to be the bottom-left, then I think it would fix the issue for me.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/238/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/236",
      "id": 2310501355,
      "node_id": "I_kwDOJl1IZM6Jt3Pr",
      "number": 236,
      "title": "Feature: interactive commands",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-05-22T13:09:28Z",
      "updated_at": "2025-07-15T13:52:35Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Proposed synopsis:\r\n```\r\naerospace focus [-h|--help] --interactive [--fzf] [--fzf-args <fzf-args>... --end-fzf-args]\r\n```\r\n\r\nProposed behaviour: If the stdout is not TTY then a new floating (!) terminal window opens (sticky floating window?). The terminal should present the following message:\r\n```\r\n1. Calendar      | Calendar\r\n2. Google Chrome | New Issue · nikitabobko/AeroSpace - Google Chrome\r\n3. IntelliJ IDEA | jvm-sandbox – JavaBase.java [jvm-sandbox]\r\n4. IntelliJ IDEA | jvm-gradle-sandbox – Jaba.java [jvm-gradle-sandbox.main]\r\n5. Alacritty     | /Users/Nikita.Bobko 🚀 ta\r\nWhat window do you want to focus (1-5)? \r\n```\r\n`--fzf` flag makes the interactive communication nicer by utilizing the `fzf` tool\r\n\r\nAfter the interactive workflow is done terminal window should close\r\n\r\nIf the stdout is TTY then TTY should be used for interactive communication\r\n\r\n**Consideration.** Other commands where analogical `--interactive` could be added: `workspace`, `layout` (interactively choose the layout), `focus`, `macos-native*`, `close`, `move-node*`?\r\n\r\n**Consideration.** The terminal that is used for interactive communication shouldn't appear in the selection?\r\n\r\n**Consideration.** focus command. `--interactive-window-id` to interactively choose window-id and `--interactive` to interactively choose direction (is the interactive direction even useful?)\r\n\r\n**Consideration.** Use NSWindow instead of a terminal?\r\n\r\n**Consideration.** Use fzf when available by default?\r\n\r\n**Consideration.** Introduce a separate command to make it possible to create custom \"interactive\" workflows?\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/236/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/226",
      "id": 2296788378,
      "node_id": "I_kwDOJl1IZM6I5jWa",
      "number": 226,
      "title": "Add a possibility to \"await\" the moment when new window opens",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-05-15T03:31:17Z",
      "updated_at": "2025-06-20T22:49:39Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Problem\n\nSuppose the user wants to open a new window and move to the particular workspace. \n\nThe naive solution won't work because `open` exits faster than the window appears:\n```\nopen -n /Applications/kitty.app && aerospace move-node-to-workspace kitty\n```\n\n## Proposed solutions\n\n**Solution 1.** \"callback\" style command to run next commands once focus changes\n```\naerospace run-when-focus-changes move-node-to-workspace kitty && open -n /Applications/kitty.app\n```\n\n**Solution 2.** \"suspend\" style command to await until the next window appears. (Harder to implement but prettier)\n```\naerospace wait-for-new-window open -n /Applications/kitty.app && aerospace move-node-to-workspace kitty\n```\n\n## Workaround\n\nUse `sleep`. It's ugly and fragile\n```\nopen -n /Applications/kitty.app && sleep 1 && aerospace move-node-to-workspace kitty\n```\n\nFor searchability: `open-and-wait`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/226/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/225",
      "id": 2290629448,
      "node_id": "I_kwDOJl1IZM6IiDtI",
      "number": 225,
      "title": "[Bug] Non-native menubar dropdown issue in multi-monitor setup",
      "user": {
        "login": "XOR-op",
        "id": 17672363,
        "node_id": "MDQ6VXNlcjE3NjcyMzYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/17672363?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/XOR-op",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-05-11T03:22:22Z",
      "updated_at": "2025-06-20T22:48:47Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\r\nWhen using multi-monitor setup, if the previous focus lies on monitor A, clicking icon on menubar from monitor B will create the non-native dropdown on monitor B first and disappeared (it's moved to monitor A and deactivated by the application, for losing focus?).\r\n\r\nThe root cause is probably that clicking icon on menubar does not update the current focused workspace or window. Native dropdown implementations are not affected (the one aerospace is using).\r\n\r\n**Affected applications**: iStat Menus, stats, eqMac and MenuBar Browser etc.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/225/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/224",
      "id": 2290451420,
      "node_id": "I_kwDOJl1IZM6IhYPc",
      "number": 224,
      "title": "[Feature] Alias for combinations",
      "user": {
        "login": "AlgusDark",
        "id": 818856,
        "node_id": "MDQ6VXNlcjgxODg1Ng==",
        "avatar_url": "https://avatars.githubusercontent.com/u/818856?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AlgusDark",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 14,
      "created_at": "2024-05-10T21:47:07Z",
      "updated_at": "2025-12-21T18:45:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, thanks for this awesome project, I just discovered and I'm feeling that it's super great at this stage and I'm excited for it's future. There is this feature I would like to know if it's possible. \r\n\r\nI have a hyper key (`ctrl+alt+shift+cmd`) that I would like to define so I can do `hyper-c` instead of defining the all 4 modifiers in every definition of a combo.\r\n\r\nThanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/224/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/206",
      "id": 2260478639,
      "node_id": "I_kwDOJl1IZM6GvCqv",
      "number": 206,
      "title": "Built-in method for resizing or moving the window under the cursor",
      "user": {
        "login": "frantic1048",
        "id": 3102803,
        "node_id": "MDQ6VXNlcjMxMDI4MDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3102803?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/frantic1048",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2024-04-24T06:40:10Z",
      "updated_at": "2025-10-02T11:57:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, AeroSpace does not offer a built-in method for resizing or moving the window under the cursor. I have attempted the following methods:\r\n\r\n1. `defaults write -g NSWindowShouldDragOnGesture YES`: This does not work on macOS 14.4.1 (Sonoma). Additionally, this method does not allow customization of the default modifier key (<kbd>ctrl</kbd> + <kbd>cmd</kbd>).\r\n\r\n2. Running Yabai with only mouse features (Yabai has built-in support for resizing and moving windows with modifier+mouse). I understand this might seem a bit ridiculous. It did not work: the windows can be moved or resized by Yabai, but it seems that AeroSpace forces them to remain in their original positions.\r\n\r\n   ```sh\r\n      # set mouse interaction modifier key\r\n      yabai -m config mouse_modifier cmd\r\n\r\n      # set modifier + left-click drag to move window\r\n      yabai -m config mouse_action1 move\r\n\r\n      # set modifier + right-click drag to resize window\r\n      yabai -m config mouse_action2 resize\r\n\r\n      # disable Yabai window management\r\n      yabai -m rule --add app=\".*\" manage=off\r\n      ```\r\n3. Trying other tools just for resizing or moving windows, such as [easy-move-resize](https://github.com/dmarcotte/easy-move-resize), it works when AeroSpace is not running. However, when AeroSpace is active, it behaves similarly to the Yabai case.\r\n\r\nWill it be possible to add this feature to AeroSpace? \r\n\r\nBTW, as a lost child from i3wm/swaywm to macOS, AeroSpace gives me the most similar experience to i3wm/swaywm. Thanks for your amazing work! :kissing_heart: ",
      "closed_by": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/206/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/202",
      "id": 2243964025,
      "node_id": "I_kwDOJl1IZM6FwCx5",
      "number": 202,
      "title": "xdot graphiz viewer isn't recognized as window",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-04-15T15:24:04Z",
      "updated_at": "2025-06-20T22:49:41Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/jrfonseca/xdot.py\r\n\r\nI can't attach the `debug-windows` log, because the window doesn't even show up in the `debug-windows` log\r\n`Accessibility Inspector.app` refuses to capture accessibility info as well\r\n\r\nThe window is really obscure, it doesn't even show up in menubar:\r\n<img width=\"615\" alt=\"image\" src=\"https://github.com/nikitabobko/AeroSpace/assets/20517828/6327e707-9513-4c56-a948-6081bc86394b\">\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/202/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/180",
      "id": 2177169500,
      "node_id": "I_kwDOJl1IZM6BxPhc",
      "number": 180,
      "title": "make it possible to share common part between binding modes",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-03-09T10:22:02Z",
      "updated_at": "2025-06-20T22:49:43Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n[mode.shared.binding]\n  alt-1 = 'workspace 1' # shared binding\n\n[mode.main]\n  parent-binding-mode = 'shared'\n[mode.main.binding]\n\n[mode.resize]\n  parent-binding-mode = 'shared'\n[mode.resize.binding]\n```\n\nOpen questions:\n- Use cases?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/180/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/177",
      "id": 2166819463,
      "node_id": "I_kwDOJl1IZM6BJwqH",
      "number": 177,
      "title": "Feature request: Implement `on-window-title-changed` callback",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-03-04T13:12:03Z",
      "updated_at": "2025-10-10T05:51:31Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "_Originally posted by @jakufort in https://github.com/nikitabobko/AeroSpace/issues/175#issuecomment-1976385824_\r\n\r\nIt looks like there is an API to listen to \"title\" changes, so technically it should be possible https://developer.apple.com/documentation/applicationservices/kaxtitlechangednotification?language=objc",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/177/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/163",
      "id": 2138997128,
      "node_id": "I_kwDOJl1IZM5_foGI",
      "number": 163,
      "title": "Feature request: auto-reload config",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        },
        "2": {
          "id": 9702185077,
          "node_id": "LA_kwDOJl1IZM8AAAACQkuYdQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/fixed-in-main",
          "name": "fixed-in-main",
          "color": "81df0b",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-02-16T16:54:03Z",
      "updated_at": "2026-01-02T11:00:02Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When the config changes AeroSpace can detect the file change and auto-reload the config\n\nauto-reload behavior should be possible to disable in the config itself:\n```\nauto-reload-config = true|false\n```\n\n~~`reload-config` command should stop resetting to `main` mode?~~ (done)\n\nFollow up is to make the value default: https://github.com/nikitabobko/AeroSpace/issues/1882",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/163/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/152",
      "id": 2121530913,
      "node_id": "I_kwDOJl1IZM5-c_4h",
      "number": 152,
      "title": "Crash resume functionality",
      "user": {
        "login": "alper",
        "id": 72429,
        "node_id": "MDQ6VXNlcjcyNDI5",
        "avatar_url": "https://avatars.githubusercontent.com/u/72429?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/alper",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 13,
      "created_at": "2024-02-06T19:34:16Z",
      "updated_at": "2025-10-18T15:42:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I love it when I have stuff setup nicely but Aerospace will still regularly crash for me.\r\n\r\nIs there crash tracking?\r\n\r\nCould there be a quick and dirty way to restore the workspace state after restarting the app?\r\n\r\nI guess this requires some checkpointing of the window state but I imagine something like: if the app starts and finds a saved state with the exact same windows (and ids) as are currently present, probably worth trying to put them all back where the saved state says they should go.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/152/reactions",
        "total_count": 3,
        "+1": 3,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/150",
      "id": 2119501953,
      "node_id": "I_kwDOJl1IZM5-VQiB",
      "number": 150,
      "title": "Implement test-regex command so users could more interactively test regexes the way they are implemented in AeroSpace",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2024-02-05T21:39:11Z",
      "updated_at": "2025-06-20T22:49:46Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "This issue + #107 will close #145 (or rather make it easier to debug problems like #145)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/150/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/123",
      "id": 2086451976,
      "node_id": "I_kwDOJl1IZM58XLsI",
      "number": 123,
      "title": "workspace to monitor assignment without force",
      "user": {
        "login": "GraemeARobinson",
        "id": 99871539,
        "node_id": "U_kgDOBfPrMw",
        "avatar_url": "https://avatars.githubusercontent.com/u/99871539?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/GraemeARobinson",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2024-01-17T15:38:01Z",
      "updated_at": "2025-06-20T22:49:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I know we have `workspace-to-monitor-force-assignment` that I can use in combination with `on-window-detected` to force an application to a specific monitor when it is linked, but I would love a way to set a workspace to a monitor when Aerospace is loaded while still being able to shift that workspace to other monitors later",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/123/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/121",
      "id": 2082491684,
      "node_id": "I_kwDOJl1IZM58IE0k",
      "number": 121,
      "title": "Account for window's minimum/maximum size",
      "user": {
        "login": "wojciech-kulik",
        "id": 3128467,
        "node_id": "MDQ6VXNlcjMxMjg0Njc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3128467?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wojciech-kulik",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2024-01-15T18:09:16Z",
      "updated_at": "2025-11-14T22:33:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I open a new dialog like app settings or just another application like iOS simulator, AeroSpace splits my screen into two equal halves. \r\n\r\nIs it possible to configure AeroSpace so that the new window takes only as much space as it needs? Consider the iOS simulator, it is a very narrow window. Every time I open it, I have to resize Xcode.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/121/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/115",
      "id": 2080328172,
      "node_id": "I_kwDOJl1IZM57_0ns",
      "number": 115,
      "title": "Support hostname specific configs",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2024-01-13T14:41:39Z",
      "updated_at": "2025-06-20T22:49:48Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be cool to have hostname specific configurations in case when users use different computers\r\n\r\nSuggestions:\r\n- `~/.aerospace.toml` - fallback\r\n- `~/.aerospace-$HOSTNAME.toml` - hostname specific config",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/115/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/107",
      "id": 2070158935,
      "node_id": "I_kwDOJl1IZM57ZB5X",
      "number": 107,
      "title": "Add command to programatically run all on-window-detected callbacks ",
      "user": {
        "login": "carlosflorencio",
        "id": 1500881,
        "node_id": "MDQ6VXNlcjE1MDA4ODE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1500881?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/carlosflorencio",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6951981605,
          "node_id": "LA_kwDOJl1IZM8AAAABnl7SJQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/good-first-issue",
          "name": "good-first-issue",
          "color": "bfd4f2",
          "default": false,
          "description": "Easy to fix issues. Good for newcomers"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2024-01-08T10:30:20Z",
      "updated_at": "2026-01-28T14:35:45Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\n\nIt's possible to have a command that runs all the `on-window-detected` callbacks?\n\nUse-case:\nI have the apps <> workspaces affinities setup like:\n\n```\n# apps to workspaces\n[[on-window-detected]]\nif.app-id = 'com.microsoft.VSCode'\nrun = ['move-node-to-workspace 1']\n\n[[on-window-detected]]\nif.app-id = 'com.vivaldi.Vivaldi'\nrun = ['move-node-to-workspace 2']\n\n...\n```\n\nSometimes I move apps between workspaces and then have the need to reposition them back to the initial workspaces. So it would be useful to have a command like `aerospace force-window-detected` to run all the rules the move the windows back to their original workspace.\n\n~~Also a different request/question, it's possible to assign layouts to workspaces in the config file? e.g `workspace 1` to start with the `h_accordion` layout.~~ (UPD: resolved in the comments)\n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1919",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/107/reactions",
        "total_count": 7,
        "+1": 7,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/104",
      "id": 2068731481,
      "node_id": "I_kwDOJl1IZM57TlZZ",
      "number": 104,
      "title": "Optimize CLI commands performance",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6521666282,
          "node_id": "LA_kwDOJl1IZM8AAAABhLi66g",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/problem",
          "name": "problem",
          "color": "23FA29",
          "default": false,
          "description": "Neither a bug, nor a feature request"
        },
        "1": {
          "id": 8448955930,
          "node_id": "LA_kwDOJl1IZM8AAAAB95jWGg",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/performance",
          "name": "performance",
          "color": "aaaaaa",
          "default": false,
          "description": null
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-01-06T17:17:56Z",
      "updated_at": "2025-06-20T22:49:49Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "`aerospace list-workspaces` is slow. Well, `aerospace list-workspaces` is ~100ms which by itself is fine.\r\n\r\n**(1)** But 100ms is the result when AeroSpace is idle. Currently AeroSpace performs all operations in one thread. Considering that Ax calls are blocking, 100ms becomes worse when a lot of Ax calls are performed. \r\n\r\nIt can be tested with `alt-w = ['workspace W', 'exec-and-forget bash -c \"time ~/.bin/aerospace list-workspaces\" 2> ~/log']`. I have 9 windows opened, and I get 300ms in `~/log`. 300ms is not that nice\r\n\r\n**(2)** The problem becomes worse when users need to call `aerospace list-workspaces` several times (E.g. to get all workspaces and focused workspaces). `list-workspaces` is designed to be called several times. Maybe the design could be reconsidered, or `--json` flag could be provided. With JSON format, AeroSpace could dump out all the info it knows about workspaces in a structured way.\r\n\r\nReported at: https://github.com/nikitabobko/AeroSpace/pull/81",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/104/reactions",
        "total_count": 8,
        "+1": 8,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/103",
      "id": 2068638865,
      "node_id": "I_kwDOJl1IZM57TOyR",
      "number": 103,
      "title": "Feature request: make it possible to ignore \"workspace assignments\" for non-tiling windows",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2024-01-06T13:43:18Z",
      "updated_at": "2026-01-01T21:24:12Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Users tend to write \"naive\" workspace assignment callbacks like this:\n```toml\n[[on-window-detected]]\nif.app-id = 'com.jetbrains.intellij'\nrun = 'move-node-to-workspace 2'\n```\n\nThe problem with callbacks like this is that if during the work, users move the window to a different workspace, and then decide to open some dialog, the dialog will be moved back to workspace 2\n\nIt would be nice to make it possible to ignore \"workspace assignment\" callbacks for dialogs. \n\n1. One way of doing this could be to introduce `if.is-tiled-by-default` in `on-window-detected` callback. The problem with this solution is that it is not \"enabled by default\". Users would need to remember that they always need to write `if.is-tiled-by-default = true`\n2. Another crazy solution could be to introduce an option for `move-node-to-workspace` command `[--only-tiling [no]]`. And say that `--only-tiling` is enabled by default for `move-node-to-workspace` command in `on-window-detected` callback. This way the naive callback will magically work \"as expected\". The downside is that this solution might be too \"magical\". It introduces a special treatment for `move-node-to-workspace` in callbacks which is not good\n\nSuggestions and ideas are welcome\n\n## Discussions\n\nhttps://github.com/nikitabobko/AeroSpace/discussions/1877",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/103/reactions",
        "total_count": 13,
        "+1": 12,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 1
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/102",
      "id": 2068343871,
      "node_id": "I_kwDOJl1IZM57SGw_",
      "number": 102,
      "title": "Browse Time Machine does not work",
      "user": {
        "login": "andylou2",
        "id": 8786414,
        "node_id": "MDQ6VXNlcjg3ODY0MTQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8786414?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/andylou2",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7647620268,
          "node_id": "LA_kwDOJl1IZM8AAAABx9VsrA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/help-wanted",
          "name": "help-wanted",
          "color": "BCCA34",
          "default": false,
          "description": "Maintainers won't work on the issue. Contribution is welcome"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2024-01-06T03:45:19Z",
      "updated_at": "2025-06-20T22:49:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have 2 Finder Windows open, set as h_tiles. When I try to enter Mac's `Browse Time Machine Backups`, the screen will start to spazz out. It seems like AeroSpace is trying to force the Finder Window into the side of the screen, but Time Machine is trying to center the Finder Window.\r\n\r\nIt does this with multiple monitors and with no monitors plugged in.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/102/reactions",
        "total_count": 10,
        "+1": 10,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/101",
      "id": 2067017400,
      "node_id": "I_kwDOJl1IZM57NC64",
      "number": 101,
      "title": "Bug: sometimes a window on the focused monitor is focused when a window of the same app on a different monitor was requested to focus",
      "user": {
        "login": "Jasperswaagman",
        "id": 1667743,
        "node_id": "MDQ6VXNlcjE2Njc3NDM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1667743?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Jasperswaagman",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 25,
      "created_at": "2024-01-05T09:35:00Z",
      "updated_at": "2026-01-02T14:18:43Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey Nikita, I'm experiencing the following behavior and I've no idea if it's intended or not. Whenever I've two instances of an application open on different monitors/workspaces. It will focus the instance of the app I last used. I'll try to explain it with an example:\r\n\r\nI've a three monitor setup: `1 | 2 | *0`\r\n\r\n* Workspace 1 contains a kitty window.\r\n* Workspace 2 contains a kitty window\r\n* Workspace 0 contains something else, say firefox.\r\n\r\nI've the following keybinds to go the specific workspaces:\r\n```\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\n```\r\n\r\nI want to go to workspace 1 so I press `alt-1`. I end up at workspace 2. If I press `alt-1` again I'll go to workspace 1 as expected. \r\n\r\nIs this working as intended? I would like to be able to actually focus a specific window/instance of an app.\r\n\r\nLove the app so far, is there a way we can buy you a coffee or beer?",
      "closed_by": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/101/reactions",
        "total_count": 19,
        "+1": 19,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/88",
      "id": 2061832305,
      "node_id": "I_kwDOJl1IZM565RBx",
      "number": 88,
      "title": "Not focusing when opening a new window of firefox while running in the background",
      "user": {
        "login": "Adriel-M",
        "id": 20115135,
        "node_id": "MDQ6VXNlcjIwMTE1MTM1",
        "avatar_url": "https://avatars.githubusercontent.com/u/20115135?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Adriel-M",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8816163679,
          "node_id": "LA_kwDOJl1IZM8AAAACDXv7Xw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/needs-triage",
          "name": "needs-triage",
          "color": "cd73c6",
          "default": false,
          "description": "The issue is unverified and needs triage"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2024-01-01T23:41:25Z",
      "updated_at": "2025-06-20T22:48:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When opening a new window of firefox, it doesn't go into focus. This happens when it's running in the background (showing in the dock).\r\n\r\nOpening with this hotkey:\r\n\r\n```\r\nalt-shift-f = 'exec-and-forget open -n /Applications/Firefox.app'\r\n```\r\n\r\nI'm on the latest commit: https://github.com/nikitabobko/AeroSpace/commit/1e214f2cbe2244f179b15059b7dbf1bd64e660d4",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/88/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/71",
      "id": 2055970321,
      "node_id": "I_kwDOJl1IZM56i54R",
      "number": 71,
      "title": "Feature request: Introduce `if.is-leader-window` condition to`[[on-window-detected]]`",
      "user": {
        "login": "januz",
        "id": 1440498,
        "node_id": "MDQ6VXNlcjE0NDA0OTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1440498?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/januz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2023-12-26T02:35:15Z",
      "updated_at": "2025-10-12T08:52:48Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I was wondering whether you could include the possibility to specify a condition based on the window ID. Specifically, I would like the main application window of my email client to be managed but automatically float (and ideally center) the windows for new emails I'm writing.\r\n\r\nWhile not perfect, using the window ID could be used to infer that a window is a child window (in this case a new email window).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/71/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/68",
      "id": 2054786256,
      "node_id": "I_kwDOJl1IZM56eYzQ",
      "number": 68,
      "title": "Native macOS Big Sur tabs are considered windows",
      "user": {
        "login": "yanggggjie",
        "id": 60206592,
        "node_id": "MDQ6VXNlcjYwMjA2NTky",
        "avatar_url": "https://avatars.githubusercontent.com/u/60206592?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanggggjie",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 5529165053,
          "node_id": "LA_kwDOJl1IZM8AAAABSZBc_Q",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working as expected"
        },
        "1": {
          "id": 7151038032,
          "node_id": "LA_kwDOJl1IZM8AAAABqjwuUA",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/1.0-blocker",
          "name": "1.0-blocker",
          "color": "F27AD4",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": true,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 45,
      "created_at": "2023-12-23T13:19:25Z",
      "updated_at": "2025-06-26T05:46:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"1062\" alt=\"image\" src=\"https://github.com/nikitabobko/AeroSpace/assets/60206592/b9bbf02f-a9a5-4ad3-bfd6-ee5b2199e532\">\r\n\r\nHello everyone! When I open two or more IDEA projects with tabs. IDEAs take up space as white space.\r\n\r\nFollow the steps below to reproduce\r\n1.\r\n![image](https://github.com/nikitabobko/AeroSpace/assets/60206592/38b6323b-71a1-4dcf-ad00-94703f79bc20)\r\n\r\n2.\r\n<img width=\"659\" alt=\"image\" src=\"https://github.com/nikitabobko/AeroSpace/assets/60206592/9de02317-1d7b-4628-84f8-28e2d7ad115f\">\r\n\r\n3.open projects\r\n\r\n[How to open projects as tabs in IntelliJ - Stack Overflow](https://stackoverflow.com/questions/65397429/how-to-open-projects-as-tabs-in-intellij)",
      "closed_by": {
        "login": "yanggggjie",
        "id": 60206592,
        "node_id": "MDQ6VXNlcjYwMjA2NTky",
        "avatar_url": "https://avatars.githubusercontent.com/u/60206592?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanggggjie",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/68/reactions",
        "total_count": 72,
        "+1": 72,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": "reopened",
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/60",
      "id": 2044997998,
      "node_id": "I_kwDOJl1IZM555DFu",
      "number": 60,
      "title": "[Feature Request] Better support for ultrawide monitors",
      "user": {
        "login": "juniusfree",
        "id": 8164667,
        "node_id": "MDQ6VXNlcjgxNjQ2Njc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8164667?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/juniusfree",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 28,
      "created_at": "2023-12-17T00:04:25Z",
      "updated_at": "2025-12-26T11:35:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "## Description\n\nWhat exactly should be done to support ultrawide monitors is an open question\n\nThe current go-to design is `window-max-width` config option that would restrict the max widths of leaf nodes (tiling windows):\n- https://github.com/nikitabobko/AeroSpace/discussions/621\n- https://github.com/nikitabobko/AeroSpace/issues/60#issuecomment-2237504168\n\n## Alternatives\n\n- Conditional gaps https://github.com/nikitabobko/AeroSpace/issues/60#issuecomment-2170067042 (discarded at the moment)\n- Ghost windows https://github.com/nikitabobko/AeroSpace/issues/60#issuecomment-2532587617\n\n## Original message\n\nFirst of all, thank you for creating AeroSpace.\n\nApologies if this is already solved. I am using a 28-inch monitor. When only one application is open, the window stretches across the entire screen, making it too wide and challenging to navigate efficiently.\n\nIt might be helpful to have a feature that allows for managing the window size or position in such scenarios.\n\nThis is the result I am aiming for. The window could be also be on the left or right, not just center.\n![image](https://github.com/nikitabobko/AeroSpace/assets/8164667/e25a6f64-ec7b-40af-b6e3-7a47237e779d)\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/60/reactions",
        "total_count": 55,
        "+1": 55,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/57",
      "id": 2043291837,
      "node_id": "I_kwDOJl1IZM55yii9",
      "number": 57,
      "title": "Persist workspace assignments without modifying the config",
      "user": {
        "login": "vfaberd",
        "id": 32452658,
        "node_id": "MDQ6VXNlcjMyNDUyNjU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/32452658?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vfaberd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2023-12-15T09:33:01Z",
      "updated_at": "2025-06-20T22:49:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, thank you for this amazing tool! I love how lightweight and unobtrusive it is.\r\n\r\n**Question:**\r\nIs there a way to persist assignments to workspaces other than adding each individual app to the config? I have a lot of apps that I do not use often and that are specific to only one machine. Consequently, I'd rather avoid cluttering my config with these apps. However, I still want them to remain in the workspaces where I put them after reboots or application restarts.\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/57/reactions",
        "total_count": 37,
        "+1": 37,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/28",
      "id": 2022066791,
      "node_id": "I_kwDOJl1IZM54hkpn",
      "number": 28,
      "title": "Feature request: make it possible to distinguish left and right modifiers (left cmd, right cmd, left alt, right alt)",
      "user": {
        "login": "lknop",
        "id": 12010266,
        "node_id": "MDQ6VXNlcjEyMDEwMjY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/12010266?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lknop",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 27,
      "created_at": "2023-12-02T14:44:21Z",
      "updated_at": "2025-11-20T07:14:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "AeroSpace seems to intercept all shortcuts with Option key. However, in some international layouts Option is used to write accented letters (e.g. Ō, Ł). It would be great if there was an option to differentiate between left and right Option key, and match bindings only with one of them, passing the unmatched ones to the OS for default handling.\r\n\r\nNote: I am using 0.5 beta. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/28/reactions",
        "total_count": 87,
        "+1": 87,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/24",
      "id": 2017518552,
      "node_id": "I_kwDOJl1IZM54QOPY",
      "number": 24,
      "title": "Implement `stack` layout",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        },
        "1": {
          "id": 8833150849,
          "node_id": "LA_kwDOJl1IZM8AAAACDn8vgQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/ui",
          "name": "ui",
          "color": "b2a6c4",
          "default": false,
          "description": "The issue involves working on UI"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2023-11-29T22:14:23Z",
      "updated_at": "2025-06-24T10:36:10Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Accordion layout has a few problems:\n1. Containers that are placed inside accordion layout don't look nice https://github.com/nikitabobko/AeroSpace/issues/899\n2. It cannot \"raise windows\" without focusing them https://github.com/nikitabobko/AeroSpace/issues/567\n3. It's hard to tell which windows are in the accordion without actively cycling the accordion\n\nA separate layout `stack` which is rendered with indicators (e.g. like in `stackline` https://github.com/nikitabobko/AeroSpace/issues/24#issuecomment-1872588387) would be useful and would resolve those problems",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/24/reactions",
        "total_count": 9,
        "+1": 9,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/16",
      "id": 1989386161,
      "node_id": "I_kwDOJl1IZM52k5-x",
      "number": 16,
      "title": "Support `tree` CLI command to return the whole tree",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 10,
      "created_at": "2023-11-12T12:44:21Z",
      "updated_at": "2025-06-20T22:49:56Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Reference: https://man.archlinux.org/man/extra/i3-wm/i3-msg.1.en\r\n\r\n\r\n- [x] `list-workspaces`\r\n- [x] `list-windows [--all-workspaces] [--all-displays]`\r\n- [x] `list-apps`\r\n- [x] `list-monitors`\r\n- [ ] `tree [--json] [--floating-windows-as-tiling-windows] [--flatten-workspace-tree]`\r\n- [x] `focus --window-id 312`\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/16/reactions",
        "total_count": 24,
        "+1": 24,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/12",
      "id": 1978010314,
      "node_id": "I_kwDOJl1IZM515grK",
      "number": 12,
      "title": "Feature request \"focus follow mouse\" / \"mouse follow focus\"",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 8749200263,
          "node_id": "LA_kwDOJl1IZM8AAAACCX4zhw",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/mouse",
          "name": "mouse",
          "color": "ef07ff",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 29,
      "created_at": "2023-11-05T22:46:48Z",
      "updated_at": "2025-10-03T09:30:30Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "- [ ] focus follow mouse\r\n- [x] mouse follow focus https://github.com/nikitabobko/AeroSpace/issues/12#issuecomment-2254162063",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/12/reactions",
        "total_count": 90,
        "+1": 82,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 8
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/9",
      "id": 1971395065,
      "node_id": "I_kwDOJl1IZM51gRn5",
      "number": 9,
      "title": "resize command: support floating windows",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6399031093,
          "node_id": "LA_kwDOJl1IZM8AAAABfWl3NQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/discussion-needed",
          "name": "discussion-needed",
          "color": "5319e7",
          "default": false,
          "description": "This issue needs to be discussed before moving forward"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2023-10-31T22:37:59Z",
      "updated_at": "2025-06-20T22:49:57Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Right now, the command does nothing when invoked on floating windows",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/9/reactions",
        "total_count": 15,
        "+1": 15,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1156
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/4",
      "id": 1966764069,
      "node_id": "I_kwDOJl1IZM51OnAl",
      "number": 4,
      "title": "Implement floating windows always on top",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2023-10-28T22:56:17Z",
      "updated_at": "2026-02-02T14:39:18Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/4/reactions",
        "total_count": 42,
        "+1": 42,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1918
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/2",
      "id": 1943215473,
      "node_id": "I_kwDOJl1IZM5z0x1x",
      "number": 2,
      "title": "Feature: Implement sticky floating windows",
      "user": {
        "login": "nikitabobko",
        "id": 20517828,
        "node_id": "MDQ6VXNlcjIwNTE3ODI4",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nikitabobko",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 6385292089,
          "node_id": "LA_kwDOJl1IZM8AAAABfJfTOQ",
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace/labels/feature",
          "name": "feature",
          "color": "0E8A16",
          "default": false,
          "description": "Feature proposal"
        }
      },
      "state": "open",
      "locked": true,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 36,
      "created_at": "2023-10-14T11:40:56Z",
      "updated_at": "2025-11-24T22:18:22Z",
      "closed_at": null,
      "author_association": "OWNER",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://i3wm.org/docs/userguide.html#_sticky_floating_windows\n\n- Implement sticky floating windows\n- Implement sticky sidebar windows (feature interaction with: `flatten-workspace-tree`, `close-all-windows-but-current`)\n\nNote to myself: review usages of `visualWorkspace`\n\ntodo:\n- Make browsers PIP windows sticky by default, once this is implemented\n- Make Outlook reminder window sticky by default https://github.com/nikitabobko/AeroSpace/discussions/1251#discussioncomment-12679986",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/2/reactions",
        "total_count": 107,
        "+1": 107,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": [
        1714
      ]
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1932",
      "id": 3243825732,
      "node_id": "PR_kwDOJl1IZM7BWNpE",
      "number": 1932,
      "state": "open",
      "locked": false,
      "title": "list-windows: add --sort option",
      "user": {
        "login": "waj",
        "id": 22697,
        "node_id": "MDQ6VXNlcjIyNjk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/waj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Introduce a new `--sort` flag for the `list-windows` command. Supported values are `recent`, `app-name`, and `window-title`, and multiple values may be specified as a comma-separated list.\r\n\r\nFor backward compatibility, the default sort order is `app-name,window-title`. Using `--sort recent` sorts windows by most recently focused.\r\n\r\nAlthough there was no comments in the discussion, this was motivated by https://github.com/nikitabobko/AeroSpace/discussions/1890.\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] `./run-tests.sh` exits with non-zero exit code.\r\n- [x] Avoid merge commits, always rebase and force push.\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.\r\n",
      "created_at": "2026-02-04T02:38:05Z",
      "updated_at": "2026-02-05T00:07:07Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "fd1a11c939f348a38932923655b153edb6aeb98f",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "waj:sort-windows",
        "ref": "sort-windows",
        "sha": "c53ce23a8a421e7572c6f29671d3f489e342ce3f",
        "user": {
          "login": "waj",
          "id": 22697,
          "node_id": "MDQ6VXNlcjIyNjk3",
          "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/waj",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1136510788,
          "node_id": "R_kgDOQ73HRA",
          "name": "AeroSpace",
          "full_name": "waj/AeroSpace",
          "private": false,
          "owner": {
            "login": "waj",
            "id": 22697,
            "node_id": "MDQ6VXNlcjIyNjk3",
            "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/waj",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/waj/AeroSpace",
          "created_at": "2026-01-17T20:25:24Z",
          "updated_at": "2026-01-17T20:25:24Z",
          "pushed_at": "2026-02-04T02:36:11Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8471,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1932"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1932"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1932"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1932/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1932/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1932/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/c53ce23a8a421e7572c6f29671d3f489e342ce3f"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1927",
      "id": 3230836953,
      "node_id": "PR_kwDOJl1IZM7AkqjZ",
      "number": 1927,
      "state": "open",
      "locked": false,
      "title": "Add `aerospace subscribe` command for real-time event streaming",
      "user": {
        "login": "ojowwalker77",
        "id": 125382352,
        "node_id": "U_kgDOB3ku0A",
        "avatar_url": "https://avatars.githubusercontent.com/u/125382352?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ojowwalker77",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Closes #1514\r\n\r\nAllows external tools (status bars, scripts) to receive real-time event notifications over the existing socket protocol without modifying config.\r\n\r\n## Events\r\n- `focus-changed` - window/workspace/monitor focus\r\n- `workspace-changed` - workspace switches\r\n- `focused-monitor-changed` - monitor focus\r\n- `mode-changed` - binding mode changes\r\n- `window-detected` - new windows\r\n- `binding-triggered` - keybinding executed\r\n\r\n## Usage\r\n```bash\r\naerospace subscribe workspace-changed focus-changed\r\naerospace subscribe --all\r\n```\r\n\r\n## Output (JSON lines)\r\n```json\r\n{\"event\":\"focus-changed\",\"windowId\":1234,\"workspace\":\"1\",\"monitorId\":0}\r\n{\"event\":\"workspace-changed\",\"workspace\":\"2\",\"prevWorkspace\":\"1\"}\r\n```\r\n\r\nInitial state (current focus/mode) is sent on connect. Tested with rapid workspace switching.\r\n\r\n\r\n<img width=\"847\" height=\"718\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d07e515b-351d-4566-b300-a3c8c454def2\" />\r\n",
      "created_at": "2026-01-31T14:10:36Z",
      "updated_at": "2026-02-03T09:58:35Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "94713ef40b36e26b5fce5d07bb6cc9de101f34e8",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ojowwalker77:main",
        "ref": "main",
        "sha": "b152081483f2ca49ff69352efac83bed60c89244",
        "user": {
          "login": "ojowwalker77",
          "id": 125382352,
          "node_id": "U_kgDOB3ku0A",
          "avatar_url": "https://avatars.githubusercontent.com/u/125382352?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ojowwalker77",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1146648800,
          "node_id": "R_kgDORFh44A",
          "name": "AeroSpace",
          "full_name": "ojowwalker77/AeroSpace",
          "private": false,
          "owner": {
            "login": "ojowwalker77",
            "id": 125382352,
            "node_id": "U_kgDOB3ku0A",
            "avatar_url": "https://avatars.githubusercontent.com/u/125382352?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ojowwalker77",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/ojowwalker77/AeroSpace",
          "created_at": "2026-01-31T12:56:44Z",
          "updated_at": "2026-02-02T18:51:16Z",
          "pushed_at": "2026-02-02T18:51:12Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8503,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1927"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1927"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1927"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1927/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1927/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1927/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/b152081483f2ca49ff69352efac83bed60c89244"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        1514
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1926",
      "id": 3230775926,
      "node_id": "PR_kwDOJl1IZM7Akbp2",
      "number": 1926,
      "state": "open",
      "locked": false,
      "title": "Sort Workspaces in UI by persistent-workspaces",
      "user": {
        "login": "fipski",
        "id": 37374368,
        "node_id": "MDQ6VXNlcjM3Mzc0MzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/37374368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/fipski",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "see #1816",
      "created_at": "2026-01-31T13:37:24Z",
      "updated_at": "2026-01-31T13:39:08Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3f982430d5be8f747c6e408ea634f15d9a38af18",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "fipski:order-workspaces-to-persistent-cfg",
        "ref": "order-workspaces-to-persistent-cfg",
        "sha": "d738908c3161a0968febf6c61bab150150131786",
        "user": {
          "login": "fipski",
          "id": 37374368,
          "node_id": "MDQ6VXNlcjM3Mzc0MzY4",
          "avatar_url": "https://avatars.githubusercontent.com/u/37374368?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/fipski",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1146669042,
          "node_id": "R_kgDORFjH8g",
          "name": "AeroSpace",
          "full_name": "fipski/AeroSpace",
          "private": false,
          "owner": {
            "login": "fipski",
            "id": 37374368,
            "node_id": "MDQ6VXNlcjM3Mzc0MzY4",
            "avatar_url": "https://avatars.githubusercontent.com/u/37374368?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/fipski",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/fipski/AeroSpace",
          "created_at": "2026-01-31T13:37:12Z",
          "updated_at": "2026-01-31T13:37:12Z",
          "pushed_at": "2026-01-31T13:37:23Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 9407,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1926"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1926"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1926"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1926/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1926/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1926/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/d738908c3161a0968febf6c61bab150150131786"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1918",
      "id": 3213865717,
      "node_id": "PR_kwDOJl1IZM6_j7L1",
      "number": 1918,
      "state": "open",
      "locked": false,
      "title": "add list-windows --sort-by",
      "user": {
        "login": "kim-raaschou",
        "id": 4394730,
        "node_id": "MDQ6VXNlcjQzOTQ3MzA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4394730?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kim-raaschou",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": " Add `--sort-by dfs-index` flag to `list-windows` command\r\nAddresses [issue #491](https://github.com/nikitabobko/AeroSpace/issues/491).\r\n Non-Breaking Change ✅\r\n- Default sorting unchanged (alphabetical by app name and title)\r\n- Opt-in flag: `--sort-by dfs-index` preserves DFS traversal order\r\n- Consistent with existing `focus --dfs-index` command ([PR #464](https://github.com/nikitabobko/AeroSpace/pull/464))\r\n Features\r\n\r\n**1. `--sort-by dfs-index` flag**\r\n- Preserves DFS order from `allLeafWindowsRecursive`\r\n- Works with `--format` and `--json`\r\n- Incompatible with `--count`\r\n\r\n**2. DFS structure change detection**\r\n- Triggers `exec-on-workspace-change` when window tree structure changes\r\n- Enables dynamic workspace monitoring (e.g., status bars)\r\n- `AEROSPACE_FOCUSED_WORKSPACE == AEROSPACE_PREV_WORKSPACE` indicates DFS change (not workspace switch)",
      "created_at": "2026-01-27T09:57:54Z",
      "updated_at": "2026-01-27T14:14:14Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "cf15876211139021893ce0852b50789f6abf7288",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "kim-raaschou:feature/add-dfs-sort-by",
        "ref": "feature/add-dfs-sort-by",
        "sha": "b90b97884a6ecd4a0f3bba4fe46d76d47e84cb99",
        "user": {
          "login": "kim-raaschou",
          "id": 4394730,
          "node_id": "MDQ6VXNlcjQzOTQ3MzA=",
          "avatar_url": "https://avatars.githubusercontent.com/u/4394730?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/kim-raaschou",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1143197818,
          "node_id": "R_kgDORCPQeg",
          "name": "AeroSpace",
          "full_name": "kim-raaschou/AeroSpace",
          "private": false,
          "owner": {
            "login": "kim-raaschou",
            "id": 4394730,
            "node_id": "MDQ6VXNlcjQzOTQ3MzA=",
            "avatar_url": "https://avatars.githubusercontent.com/u/4394730?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/kim-raaschou",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/kim-raaschou/AeroSpace",
          "created_at": "2026-01-27T09:32:36Z",
          "updated_at": "2026-01-27T09:32:36Z",
          "pushed_at": "2026-01-27T14:01:44Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8483,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1918"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1918"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1918"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1918/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1918/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1918/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/b90b97884a6ecd4a0f3bba4fe46d76d47e84cb99"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        4
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1914",
      "id": 3201803291,
      "node_id": "PR_kwDOJl1IZM6-16Qb",
      "number": 1914,
      "state": "open",
      "locked": false,
      "title": "Fix focus jumping when same-app floating windows closes",
      "user": {
        "login": "jperras",
        "id": 20675,
        "node_id": "MDQ6VXNlcjIwNjc1",
        "avatar_url": "https://avatars.githubusercontent.com/u/20675?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jperras",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\n\r\nSkip focus recalculation when a floating window (dialog) is destroyed if it belongs to the same app as the currently focused window.\r\n\r\nThis fixes Emacs child frames (posframes, completion popups, etc.) causing focus to jump to another application when they close.\r\n\r\n## References\r\n\r\nFixes #776\r\nFixes #1220\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] `./run-tests.sh` exits with non-zero exit code.\r\n- [x] Avoid merge commits, always rebase and force push.\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.\r\n",
      "created_at": "2026-01-23T04:10:55Z",
      "updated_at": "2026-01-23T04:10:55Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "9f32c283cece5eda52f8230d6c0e7498a071f545",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "jperras:fix-focus-jump-same-app-dialog-window-close",
        "ref": "fix-focus-jump-same-app-dialog-window-close",
        "sha": "0642972b24299e19f29828b015c67d0c75deb61a",
        "user": {
          "login": "jperras",
          "id": 20675,
          "node_id": "MDQ6VXNlcjIwNjc1",
          "avatar_url": "https://avatars.githubusercontent.com/u/20675?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/jperras",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1140279648,
          "node_id": "R_kgDOQ_dJYA",
          "name": "AeroSpace",
          "full_name": "jperras/AeroSpace",
          "private": false,
          "owner": {
            "login": "jperras",
            "id": 20675,
            "node_id": "MDQ6VXNlcjIwNjc1",
            "avatar_url": "https://avatars.githubusercontent.com/u/20675?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/jperras",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/jperras/AeroSpace",
          "created_at": "2026-01-23T04:03:36Z",
          "updated_at": "2026-01-23T04:03:36Z",
          "pushed_at": "2026-01-23T04:07:59Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8476,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1914"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1914"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1914"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1914/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1914/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1914/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/0642972b24299e19f29828b015c67d0c75deb61a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        7,
        1,
        776,
        1220
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1908",
      "id": 3184532178,
      "node_id": "PR_kwDOJl1IZM690BrS",
      "number": 1908,
      "state": "open",
      "locked": false,
      "title": "Allow persistent fullscreen mode",
      "user": {
        "login": "waj",
        "id": 22697,
        "node_id": "MDQ6VXNlcjIyNjk3",
        "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/waj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Add support for windows that stay in fullscreen mode even when another window in the same workspace is focused. This can be done by passing the `--persistent` flag to the `fullscreen` command.\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] `./run-tests.sh` exits with non-zero exit code.\r\n- [x] Avoid merge commits, always rebase and force push.\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.\r\n",
      "created_at": "2026-01-17T20:38:13Z",
      "updated_at": "2026-01-21T15:27:29Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "5cb082b4339ed8e3f28505a4a74cfe0753b3d016",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "waj:persistent-fullscreen",
        "ref": "persistent-fullscreen",
        "sha": "53afd37abddf64a51578d086beddd85349b8ea73",
        "user": {
          "login": "waj",
          "id": 22697,
          "node_id": "MDQ6VXNlcjIyNjk3",
          "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/waj",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1136510788,
          "node_id": "R_kgDOQ73HRA",
          "name": "AeroSpace",
          "full_name": "waj/AeroSpace",
          "private": false,
          "owner": {
            "login": "waj",
            "id": 22697,
            "node_id": "MDQ6VXNlcjIyNjk3",
            "avatar_url": "https://avatars.githubusercontent.com/u/22697?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/waj",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/waj/AeroSpace",
          "created_at": "2026-01-17T20:25:24Z",
          "updated_at": "2026-01-17T20:25:24Z",
          "pushed_at": "2026-02-04T02:36:11Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8471,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1908"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1908"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1908"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1908/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1908/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1908/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/53afd37abddf64a51578d086beddd85349b8ea73"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1872",
      "id": 3132499817,
      "node_id": "PR_kwDOJl1IZM66tidp",
      "number": 1872,
      "state": "open",
      "locked": false,
      "title": "Add app-specific modes with inheritance",
      "user": {
        "login": "richard134",
        "id": 25685300,
        "node_id": "MDQ6VXNlcjI1Njg1MzAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/richard134",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "## Summary\r\n\r\nAdd support for app-specific keyboard modes that automatically activate when a specific application is focused.\r\n\r\nCloses #1454\r\n\r\n## How it works\r\n\r\nApp-specific modes are regular modes with three new optional properties:\r\n\r\n- **`app`** - Bundle ID that triggers automatic mode switching when that app is focused\r\n- **`inherits`** - Parent mode to inherit bindings from (avoids duplicating all your main bindings)\r\n- **`unbind`** - List of inherited bindings to remove (lets keys pass through to the app)\r\n\r\n```toml\r\n[mode.emacs]\r\n    app = 'org.gnu.Emacs'\r\n    inherits = 'main'\r\n    unbind = ['alt-h', 'alt-j', 'alt-k', 'alt-l']\r\n\r\n[mode.emacs.binding]\r\n    alt-x = 'exec-and-forget echo emacs-specific'\r\n```\r\n\r\n### Automatic mode switching\r\n\r\n- When an app with a matching bundle ID is focused, AeroSpace switches to that mode\r\n- When focus moves to an app without a matching mode, AeroSpace returns to `main`\r\n- Manual mode switches (e.g., `mode service`) override auto-switching until returning to `main`\r\n\r\n### Inheritance\r\n\r\nModes can inherit bindings from a parent mode. The child mode gets all parent bindings, and can:\r\n- Override specific bindings by redefining them\r\n- Remove specific bindings using `unbind`\r\n- Add new bindings\r\n\r\nInheritance chains are supported (e.g., `child` inherits from `base` which inherits from `main`). Circular inheritance is detected and reported as a config error.\r\n\r\n## New config options\r\n\r\n| Property | Type | Description |\r\n|----------|------|-------------|\r\n| `mode.<name>.app` | string | Bundle ID that triggers this mode |\r\n| `mode.<name>.inherits` | string | Parent mode to inherit bindings from |\r\n| `mode.<name>.unbind` | array | List of inherited bindings to remove |\r\n\r\n## Examples\r\n\r\n### Pass keys through to Emacs\r\n```toml\r\n[mode.emacs]\r\n    app = 'org.gnu.Emacs'\r\n    inherits = 'main'\r\n    unbind = ['alt-h', 'alt-j', 'alt-k', 'alt-l']\r\n```\r\n\r\n### Add Finder-specific binding\r\n```toml\r\n[mode.finder]\r\n    app = 'com.apple.finder'\r\n    inherits = 'main'\r\n\r\n[mode.finder.binding]\r\n    ctrl-n = 'exec-and-forget open ~/Downloads'\r\n```",
      "created_at": "2025-12-27T20:41:55Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "bd280cdb51a870255c410f7be1cbcc54ab056f01",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "richard134:feature-app-specific-shortcuts",
        "ref": "feature-app-specific-shortcuts",
        "sha": "6d26d8000c8300cd99cb02c6cafe08999cf112f5",
        "user": {
          "login": "richard134",
          "id": 25685300,
          "node_id": "MDQ6VXNlcjI1Njg1MzAw",
          "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/richard134",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1120542568,
          "node_id": "R_kgDOQsofaA",
          "name": "AeroSpace",
          "full_name": "richard134/AeroSpace",
          "private": false,
          "owner": {
            "login": "richard134",
            "id": 25685300,
            "node_id": "MDQ6VXNlcjI1Njg1MzAw",
            "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/richard134",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/richard134/AeroSpace",
          "created_at": "2025-12-21T12:51:00Z",
          "updated_at": "2025-12-21T12:51:00Z",
          "pushed_at": "2025-12-27T20:29:27Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 9272,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1872"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1872"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1872"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1872/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1872/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1872/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/6d26d8000c8300cd99cb02c6cafe08999cf112f5"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        1454
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1863",
      "id": 3121139552,
      "node_id": "PR_kwDOJl1IZM66CM9g",
      "number": 1863,
      "state": "open",
      "locked": false,
      "title": "Add Vim-like focus history navigation (back/forward)",
      "user": {
        "login": "richard134",
        "id": 25685300,
        "node_id": "MDQ6VXNlcjI1Njg1MzAw",
        "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/richard134",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Implements Vim-like focus history navigation (focus back/focus forward) and makes focus-back-and-forth resilient to closed windows by using the shared history stack.\r\n\r\nCloses #1024",
      "created_at": "2025-12-21T23:15:48Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "richard134:feature/1024-focus-history-navigation",
        "ref": "feature/1024-focus-history-navigation",
        "sha": "364dd1e8c09a4cabfbcffcb1d9f16547441e8c08",
        "user": {
          "login": "richard134",
          "id": 25685300,
          "node_id": "MDQ6VXNlcjI1Njg1MzAw",
          "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/richard134",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1120542568,
          "node_id": "R_kgDOQsofaA",
          "name": "AeroSpace",
          "full_name": "richard134/AeroSpace",
          "private": false,
          "owner": {
            "login": "richard134",
            "id": 25685300,
            "node_id": "MDQ6VXNlcjI1Njg1MzAw",
            "avatar_url": "https://avatars.githubusercontent.com/u/25685300?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/richard134",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/richard134/AeroSpace",
          "created_at": "2025-12-21T12:51:00Z",
          "updated_at": "2025-12-21T12:51:00Z",
          "pushed_at": "2025-12-27T20:29:27Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 9272,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1863"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1863"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1863"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1863/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1863/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1863/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/364dd1e8c09a4cabfbcffcb1d9f16547441e8c08"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        1024
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1860",
      "id": 3118237623,
      "node_id": "PR_kwDOJl1IZM653Ie3",
      "number": 1860,
      "state": "open",
      "locked": false,
      "title": "feat: add app-id-regex-substring matcher for window filtering",
      "user": {
        "login": "oomathias",
        "id": 465790,
        "node_id": "MDQ6VXNlcjQ2NTc5MA==",
        "avatar_url": "https://avatars.githubusercontent.com/u/465790?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/oomathias",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "**What:** \r\n\r\nAllows regex matching on bundle ID for `on-window-detected` callback.\r\n\r\n```ini\r\n[[on-window-detected]]\r\n  if.app-id-regex-substring = '^com\\.apple\\.'\r\n  run = ['layout floating']\r\n```\r\n\r\n**Why:** \r\n\r\nEnable targeting multiple related apps with patterns like \"com.apple.*\" instead of exact bundle ID matches.\r\n\r\n**How:**\r\n- Adds appIdRegexSubstring property with case-insensitive regex parsing\r\n- Matches when regex is nil fail\r\n- Updates description and equality implementations\r\n- Includes test coverage\r\n\r\n**Use cases:**\r\n- \"com.apple.*\" targets all Apple applications\r\n- \"com.company.*\" targets all apps from specific vendor\r\n- \".*slack.*\" matches apps containing \"slack\" in bundle ID\r\n\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] `./run-tests.sh` exits with non-zero exit code.\r\n- [x] Avoid merge commits, always rebase and force push.\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.\r\n",
      "created_at": "2025-12-19T17:21:11Z",
      "updated_at": "2026-02-01T22:18:47Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "1e8c3baae4d5a9be33b49b2a3c3a1aebbc1f123c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "oomathias:feat-app-id-regex",
        "ref": "feat-app-id-regex",
        "sha": "4ef0ee910b0a11b2f432ff7be8d017ae12de3770",
        "user": {
          "login": "oomathias",
          "id": 465790,
          "node_id": "MDQ6VXNlcjQ2NTc5MA==",
          "avatar_url": "https://avatars.githubusercontent.com/u/465790?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/oomathias",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1119598235,
          "node_id": "R_kgDOQru2mw",
          "name": "AeroSpace",
          "full_name": "oomathias/AeroSpace",
          "private": false,
          "owner": {
            "login": "oomathias",
            "id": 465790,
            "node_id": "MDQ6VXNlcjQ2NTc5MA==",
            "avatar_url": "https://avatars.githubusercontent.com/u/465790?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/oomathias",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/oomathias/AeroSpace",
          "created_at": "2025-12-19T14:29:37Z",
          "updated_at": "2025-12-19T14:29:37Z",
          "pushed_at": "2026-02-01T22:18:46Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8486,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": false,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1860"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1860"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1860"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1860/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1860/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1860/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/4ef0ee910b0a11b2f432ff7be8d017ae12de3770"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1778",
      "id": 2960777610,
      "node_id": "PR_kwDOJl1IZM6weeGK",
      "number": 1778,
      "state": "open",
      "locked": false,
      "title": "Add %{window-parent-container-orientation} and %{workspace-root-container-orientation} interpolation variables",
      "user": {
        "login": "KYash03",
        "id": 112984584,
        "node_id": "U_kgDOBrwCCA",
        "avatar_url": "https://avatars.githubusercontent.com/u/112984584?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/KYash03",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] The GitHub Actions CI must pass (you can fix failures after submitting a PR).\r\n---\r\nCloses #1772. First PR here, so please do let me know if I've missed anything!",
      "created_at": "2025-10-29T21:24:13Z",
      "updated_at": "2026-01-02T09:15:45Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "KYash03:feature/add-orientation-interpolation-variables",
        "ref": "feature/add-orientation-interpolation-variables",
        "sha": "602eed2244a44fa68e7dc24d97c3ebb21fcc7aeb",
        "user": {
          "login": "KYash03",
          "id": 112984584,
          "node_id": "U_kgDOBrwCCA",
          "avatar_url": "https://avatars.githubusercontent.com/u/112984584?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/KYash03",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1086017570,
          "node_id": "R_kgDOQLtQIg",
          "name": "AeroSpace",
          "full_name": "KYash03/AeroSpace",
          "private": false,
          "owner": {
            "login": "KYash03",
            "id": 112984584,
            "node_id": "U_kgDOBrwCCA",
            "avatar_url": "https://avatars.githubusercontent.com/u/112984584?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/KYash03",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/KYash03/AeroSpace",
          "created_at": "2025-10-29T20:38:23Z",
          "updated_at": "2025-10-29T20:38:23Z",
          "pushed_at": "2025-10-29T21:44:59Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8503,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1778"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1778"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1778"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1778/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1778/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1778/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/602eed2244a44fa68e7dc24d97c3ebb21fcc7aeb"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        1772
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1723",
      "id": 2861975175,
      "node_id": "PR_kwDOJl1IZM6qlkaH",
      "number": 1723,
      "state": "open",
      "locked": false,
      "title": "[Feature] Alias for combinations (#224)",
      "user": {
        "login": "lheiskan",
        "id": 189382,
        "node_id": "MDQ6VXNlcjE4OTM4Mg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/189382?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lheiskan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Extends `[key-mapping.key-notation-to-key-code]` to support defining aliases for modifier combinations (e.g., hyper key).\r\n\r\nExample config:\r\n```toml\r\n[key-mapping.key-notation-to-key-code]\r\nhyper = 'ctrl-alt-shift-cmd'\r\n\r\n[mode.main.binding]\r\nhyper-c = 'workspace c'\r\n```\r\n\r\nMixing modifiers and keys in a single alias is not supported. Invalid combinations are checked and result in configuration error messages.\r\n\r\nChange introduces `KeyOrModifier` enum to represent either single keys or modifier combinations.\r\n\r\nImplements: https://github.com/nikitabobko/AeroSpace/issues/224\r\nRelated: https://github.com/nikitabobko/AeroSpace/pull/389\r\nRelated: https://github.com/nikitabobko/AeroSpace/pull/1223\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] The GitHub Actions CI must pass (you can fix failures after submitting a PR).\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.\r\n",
      "created_at": "2025-09-25T21:17:27Z",
      "updated_at": "2026-01-26T15:34:04Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "lheiskan:hyper",
        "ref": "hyper",
        "sha": "60f445ecb15a4a7133aee46cfeef8f2559a91d6e",
        "user": {
          "login": "lheiskan",
          "id": 189382,
          "node_id": "MDQ6VXNlcjE4OTM4Mg==",
          "avatar_url": "https://avatars.githubusercontent.com/u/189382?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/lheiskan",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1064224048,
          "node_id": "R_kgDOP27FMA",
          "name": "AeroSpace",
          "full_name": "lheiskan/AeroSpace",
          "private": false,
          "owner": {
            "login": "lheiskan",
            "id": 189382,
            "node_id": "MDQ6VXNlcjE4OTM4Mg==",
            "avatar_url": "https://avatars.githubusercontent.com/u/189382?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/lheiskan",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/lheiskan/AeroSpace",
          "created_at": "2025-09-25T18:08:03Z",
          "updated_at": "2025-09-25T18:08:03Z",
          "pushed_at": "2026-01-26T15:52:12Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8503,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1723"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1723"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1723"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1723/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1723/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1723/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/60f445ecb15a4a7133aee46cfeef8f2559a91d6e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1714",
      "id": 2847316753,
      "node_id": "PR_kwDOJl1IZM6ptpsR",
      "number": 1714,
      "state": "open",
      "locked": false,
      "title": "Transition to `CGEvent.tapCreate` for hotkey bindings (#1012)",
      "user": {
        "login": "NMAC427",
        "id": 9914734,
        "node_id": "MDQ6VXNlcjk5MTQ3MzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/9914734?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NMAC427",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Replace the Carbon based HotKey library with `CGEvent.tapCreate` as layed out in #1012.\r\nAs a consequence, we get direct access to all key-down events, and can choose to handle them based on the current modifier state and key code. Therefore, in addition to #1012, this change also addresses all of the following issues / feature requests:\r\n\r\n- #28\r\n- #1011\r\n- #1472\r\n\r\nThe primary user facing changes are as follows:\r\n- Added new modifiers `lcmd`, `rcmd`, `lalt`, `ralt`, `lctrl`, `rctrl`, `lshift`, `rshift`, and `fn`.\r\n- Add `key-mapping.match-key-event-by` to choose between matching events based on key codes or key symbols.\r\n\r\n## PR checklist\r\n\r\n- [x] Explain your changes in the relevant commit messages rather than in the PR description. The PR description must not contain more information than the commit messages (except for images and other media).\r\n- [x] Each commit must explain what/why/how and motivation in its description. https://cbea.ms/git-commit/\r\n- [x] Don't forget to link the appropriate issues/discussions in commit messages (if applicable).\r\n- [x] Each commit must be an atomic change (a PR may contain several commits). Don't introduce new functional changes together with refactorings in the same commit.\r\n- [x] `./run-tests.sh` exits with non-zero exit code.\r\n- [x] Avoid merge commits, always rebase and force push.\r\n\r\nFailure to follow the checklist with no apparent reasons will result in silent PR rejection.",
      "created_at": "2025-09-21T17:54:01Z",
      "updated_at": "2026-01-23T18:24:25Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b0e0822fc9331cef48a9de480294529a82233dcd",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "NMAC427:cgevent",
        "ref": "cgevent",
        "sha": "7dad5d33929dfd49515e1681a8eb6f4e0a778273",
        "user": {
          "login": "NMAC427",
          "id": 9914734,
          "node_id": "MDQ6VXNlcjk5MTQ3MzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/9914734?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/NMAC427",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 984192964,
          "node_id": "R_kgDOOqmXxA",
          "name": "AeroSpace",
          "full_name": "NMAC427/AeroSpace",
          "private": false,
          "owner": {
            "login": "NMAC427",
            "id": 9914734,
            "node_id": "MDQ6VXNlcjk5MTQ3MzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/9914734?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/NMAC427",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/NMAC427/AeroSpace",
          "created_at": "2025-05-15T14:37:23Z",
          "updated_at": "2025-12-10T11:44:28Z",
          "pushed_at": "2026-01-05T18:14:30Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8490,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1714"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1714"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1714"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1714/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1714/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1714/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/7dad5d33929dfd49515e1681a8eb6f4e0a778273"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1,
        2
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1708",
      "id": 2843627230,
      "node_id": "PR_kwDOJl1IZM6pfk7e",
      "number": 1708,
      "state": "open",
      "locked": false,
      "title": "Implement #1687 - Add %{all} format variables to lists queries",
      "user": {
        "login": "BenjaminBini",
        "id": 1637397,
        "node_id": "MDQ6VXNlcjE2MzczOTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1637397?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/BenjaminBini",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Add %{all} format variable support to commands listing Aerospace objects :\r\n* `list-windows`\r\n* `list-workspaces`\r\n* `list-apps`\r\n* `list-monitors`\r\n\r\nIncludes relevant tests and doc.\r\n\r\nMore details in commit description.",
      "created_at": "2025-09-19T12:08:04Z",
      "updated_at": "2026-01-10T14:27:17Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "1b38900ef82c7bf8c44604c7b0b564a5109b6c9c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "BenjaminBini:issue-1687",
        "ref": "issue-1687",
        "sha": "1a4b9974c9f41d987585dd526cc9c68fd325675a",
        "user": {
          "login": "BenjaminBini",
          "id": 1637397,
          "node_id": "MDQ6VXNlcjE2MzczOTc=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1637397?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/BenjaminBini",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1057654410,
          "node_id": "R_kgDOPwqGig",
          "name": "AeroSpace",
          "full_name": "BenjaminBini/AeroSpace",
          "private": false,
          "owner": {
            "login": "BenjaminBini",
            "id": 1637397,
            "node_id": "MDQ6VXNlcjE2MzczOTc=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1637397?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/BenjaminBini",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/BenjaminBini/AeroSpace",
          "created_at": "2025-09-16T03:13:19Z",
          "updated_at": "2025-09-16T03:52:30Z",
          "pushed_at": "2026-01-10T14:26:27Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8487,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1708"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1708"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1708"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1708/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1708/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1708/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/1a4b9974c9f41d987585dd526cc9c68fd325675a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1665",
      "id": 2793508946,
      "node_id": "PR_kwDOJl1IZM6mgZBS",
      "number": 1665,
      "state": "open",
      "locked": false,
      "title": "Allow multiple entries for app_id in 'on-window-detected' block",
      "user": {
        "login": "thapakazi",
        "id": 1695906,
        "node_id": "MDQ6VXNlcjE2OTU5MDY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1695906?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/thapakazi",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Summary: **Add array support for app-id on on-window-detect block**\r\n\r\nCurrently, we have to write:\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'com.google.Chrome'\r\nrun = 'move-node-to-workspace b'\r\n[[on-window-detected]]\r\nif.app-id = 'com.brave.Browser\r\nrun = 'move-node-to-workspace b'\r\n```\r\n\r\n\r\nWith this change we can write:\r\n```\r\n[[on-window-detected]]\r\nif.app-id = [\r\n          'com.google.Chrome',\r\n          'com.brave.Browser'\r\n          ]\r\nrun = 'move-node-to-workspace b'\r\n```\r\n\r\nIssue: https://github.com/nikitabobko/AeroSpace/issues/660\r\n\r\n\r\n## PR checklist\r\n\r\n\r\n- [x]  modified [WindowDetectedCallbackMatcher](https://github.com/nikitabobko/AeroSpace/pull/1665/files#diff-215d0ecb3d68996f0ec7838e3baa35f407b05127d06668df75625597043459e3R28-R29) to support the array of app ids.\r\n- [x]  Added test\r\n- [x] Updated doc\r\n- [x] Tested config change on my local aerospace.toml setup\r\n- [x] Issue link: https://github.com/nikitabobko/AeroSpace/issues/660\r\n\r\nKinda new to Swift, please let me know if anything additional needed for this. Thanks 🙏",
      "created_at": "2025-09-02T17:49:14Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "thapakazi:main",
        "ref": "main",
        "sha": "69fb4ec27a85eb2dd1d4231ca6ef265623e702fa",
        "user": {
          "login": "thapakazi",
          "id": 1695906,
          "node_id": "MDQ6VXNlcjE2OTU5MDY=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1695906?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/thapakazi",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1048574029,
          "node_id": "R_kgDOPn_4TQ",
          "name": "AeroSpace",
          "full_name": "thapakazi/AeroSpace",
          "private": false,
          "owner": {
            "login": "thapakazi",
            "id": 1695906,
            "node_id": "MDQ6VXNlcjE2OTU5MDY=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1695906?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/thapakazi",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/thapakazi/AeroSpace",
          "created_at": "2025-09-01T16:58:32Z",
          "updated_at": "2025-09-17T18:38:07Z",
          "pushed_at": "2025-09-17T18:38:02Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8441,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1665"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1665"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1665"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1665/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1665/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1665/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/69fb4ec27a85eb2dd1d4231ca6ef265623e702fa"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1618",
      "id": 2729110597,
      "node_id": "PR_kwDOJl1IZM6iquxF",
      "number": 1618,
      "state": "open",
      "locked": false,
      "title": "Add command right click functionality for window resizing like in i3wm",
      "user": {
        "login": "tymscar",
        "id": 3742502,
        "node_id": "MDQ6VXNlcjM3NDI1MDI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3742502?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tymscar",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "![screen-recording-pr](https://github.com/user-attachments/assets/8571e654-b0fc-4862-9cbc-faa9f3953883)\r\n\r\nThis PR adds the right click drag feature from i3wm.\r\nThe user should be able to command right-click and drag on any window, and it will resize in the correct direction. If you drag to the left from the left side, you make it bigger, for example.\r\n\r\nI have gotten it quite smooth, and as far as I can tell, it actually circumvents the issue that arises when you manually resize a window over another one, and they switch spaces. I can't replicate that with this method. This method runs at the refresh rate of your fastest monitor, or if that fails, I default it to 60fps.\r\n\r\nI have also made it so when you hold Command, it doesn't pass through the right-click to the window under it. That was annoying because while dragging, I would by mistake click on Back or something.\r\n\r\nFixes issue https://github.com/nikitabobko/AeroSpace/issues/206",
      "created_at": "2025-08-07T22:12:39Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "3b2ddd94c435c2e84bf22c4a4c1cd1c560dd3103",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {
        "0": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "tymscar:add-right-click-resize",
        "ref": "add-right-click-resize",
        "sha": "2e5f7637f27935775d150d074b00a36f4017b685",
        "user": {
          "login": "tymscar",
          "id": 3742502,
          "node_id": "MDQ6VXNlcjM3NDI1MDI=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3742502?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/tymscar",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1034119042,
          "node_id": "R_kgDOPaNngg",
          "name": "AeroSpace",
          "full_name": "tymscar/AeroSpace",
          "private": false,
          "owner": {
            "login": "tymscar",
            "id": 3742502,
            "node_id": "MDQ6VXNlcjM3NDI1MDI=",
            "avatar_url": "https://avatars.githubusercontent.com/u/3742502?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/tymscar",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/tymscar/AeroSpace",
          "created_at": "2025-08-07T21:57:28Z",
          "updated_at": "2025-11-30T14:13:43Z",
          "pushed_at": "2025-11-30T18:00:49Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8427,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1618"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1618"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1618"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1618/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1618/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1618/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/2e5f7637f27935775d150d074b00a36f4017b685"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1564",
      "id": 2673797196,
      "node_id": "PR_kwDOJl1IZM6fXuhM",
      "number": 1564,
      "state": "open",
      "locked": false,
      "title": "Store the state (windows, workspaces, layout) on change and restore on startup",
      "user": {
        "login": "grothkopp",
        "id": 25702,
        "node_id": "MDQ6VXNlcjI1NzAy",
        "avatar_url": "https://avatars.githubusercontent.com/u/25702?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/grothkopp",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Hello,\r\nit's me again ;)\r\nDuring development it became extremely annoying to restore my \"layouts\" manually everytime I had to restart Aerospace after a new compile.\r\nSo I vibe-coded* this PR which stores the state in a dotfile and restores it on startup.\r\nIt's very helpful to me so I wanted to share it. Again I don't know if this fits in with the overall architecture, but maybe it can become usable (and mergeable) with some changes?\r\n\r\n* I know how to code, but I have no experience with swift.",
      "created_at": "2025-07-17T12:23:39Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "grothkopp:save-and-restore-state",
        "ref": "save-and-restore-state",
        "sha": "8b0e9a22ae220d2e145e6473dcaeb01057b2d0c3",
        "user": {
          "login": "grothkopp",
          "id": 25702,
          "node_id": "MDQ6VXNlcjI1NzAy",
          "avatar_url": "https://avatars.githubusercontent.com/u/25702?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/grothkopp",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1007137553,
          "node_id": "R_kgDOPAezEQ",
          "name": "AeroSpace",
          "full_name": "grothkopp/AeroSpace",
          "private": false,
          "owner": {
            "login": "grothkopp",
            "id": 25702,
            "node_id": "MDQ6VXNlcjI1NzAy",
            "avatar_url": "https://avatars.githubusercontent.com/u/25702?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/grothkopp",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/grothkopp/AeroSpace",
          "created_at": "2025-06-23T14:15:38Z",
          "updated_at": "2025-07-21T08:02:32Z",
          "pushed_at": "2025-07-21T08:02:28Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8385,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 4,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 4,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1564"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1564"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1564"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1564/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1564/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1564/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/8b0e9a22ae220d2e145e6473dcaeb01057b2d0c3"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1529",
      "id": 2651098333,
      "node_id": "PR_kwDOJl1IZM6eBIzd",
      "number": 1529,
      "state": "open",
      "locked": false,
      "title": "Add error message + docs to stdin commands",
      "user": {
        "login": "noam-sol",
        "id": 104713896,
        "node_id": "U_kgDOBj3OqA",
        "avatar_url": "https://avatars.githubusercontent.com/u/104713896?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/noam-sol",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "[cmd(workspace): add error message](https://github.com/nikitabobko/AeroSpace/commit/729ef7de3f1959a337fafa8f1791094243a69755) \r\n\r\nAlign 'workspace' cmd with 'move-node-to-workspace'.\r\n\r\n[docs(move-node-to-workspace): describe stdin usage](https://github.com/nikitabobko/AeroSpace/commit/6ba5d6e2c8dd945b1d216abe5904eac6714a3e79) \r\n\r\nSimilar to docs/aerospace-workspace.adoc\r\n\r\n## Test plan\r\n1. tested with -\r\n```bash\r\n# current-workspace=4\r\necho \"1\\n2\" | ./.debug/aerospace workspace prev # fail (now with an error message)\r\necho \"1\\n2\\n4\" | ./.debug/aerospace workspace prev # success\r\n\r\n```\r\n\r\n2. built docs -\r\n<img width=\"880\" alt=\"Screenshot 2025-07-09 at 1 01 15\" src=\"https://github.com/user-attachments/assets/a0bbedfb-8c4b-4771-83bb-0c5290a2f855\" />\r\n\r\n",
      "created_at": "2025-07-08T22:02:26Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "b16967458286b6d782d4d78739004303144fe967",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "noam-sol:workspace-cmd-err-and-docs",
        "ref": "workspace-cmd-err-and-docs",
        "sha": "6ba5d6e2c8dd945b1d216abe5904eac6714a3e79",
        "user": {
          "login": "noam-sol",
          "id": 104713896,
          "node_id": "U_kgDOBj3OqA",
          "avatar_url": "https://avatars.githubusercontent.com/u/104713896?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/noam-sol",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 981063641,
          "node_id": "R_kgDOOnnX2Q",
          "name": "AeroSpace",
          "full_name": "noam-sol/AeroSpace",
          "private": false,
          "owner": {
            "login": "noam-sol",
            "id": 104713896,
            "node_id": "U_kgDOBj3OqA",
            "avatar_url": "https://avatars.githubusercontent.com/u/104713896?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/noam-sol",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/noam-sol/AeroSpace",
          "created_at": "2025-05-10T08:58:33Z",
          "updated_at": "2025-07-08T21:17:45Z",
          "pushed_at": "2025-07-08T21:56:15Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 9099,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1529"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1529"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1529"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1529/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1529/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1529/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/6ba5d6e2c8dd945b1d216abe5904eac6714a3e79"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1440",
      "id": 2544773098,
      "node_id": "PR_kwDOJl1IZM6Xrifq",
      "number": 1440,
      "state": "open",
      "locked": false,
      "title": "Implement sizing via percentages",
      "user": {
        "login": "ernesto-jimenez",
        "id": 1005,
        "node_id": "MDQ6VXNlcjEwMDU=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1005?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ernesto-jimenez",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This tackles issue https://github.com/nikitabobko/AeroSpace/issues/397",
      "created_at": "2025-05-26T20:10:40Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "ernesto-jimenez:percent-resize",
        "ref": "percent-resize",
        "sha": "befbedb94e0e98d6d1228da12a5678445533df5a",
        "user": {
          "login": "ernesto-jimenez",
          "id": 1005,
          "node_id": "MDQ6VXNlcjEwMDU=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1005?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/ernesto-jimenez",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 990681873,
          "node_id": "R_kgDOOwybEQ",
          "name": "AeroSpace",
          "full_name": "ernesto-jimenez/AeroSpace",
          "private": false,
          "owner": {
            "login": "ernesto-jimenez",
            "id": 1005,
            "node_id": "MDQ6VXNlcjEwMDU=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1005?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/ernesto-jimenez",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/ernesto-jimenez/AeroSpace",
          "created_at": "2025-05-26T13:25:12Z",
          "updated_at": "2025-05-26T13:25:12Z",
          "pushed_at": "2025-11-23T15:52:27Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8517,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 1,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 1,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1440"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1440"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1440"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1440/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1440/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1440/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/befbedb94e0e98d6d1228da12a5678445533df5a"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1410",
      "id": 2517705562,
      "node_id": "PR_kwDOJl1IZM6WESNa",
      "number": 1410,
      "state": "open",
      "locked": false,
      "title": "update guide structure and language",
      "user": {
        "login": "mvllow",
        "id": 1474821,
        "node_id": "MDQ6VXNlcjE0NzQ4MjE=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1474821?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mvllow",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This pull request updates the structure and language of the current guide. I am happy to iterate and take any feedback or hand this over if this direction is not preferred. I'm also not familiar with AsciiDoc so the syntax could possibly be improved.\r\n\r\nThe goal was to fix grammar and sentence structure / overall flow. Each section was massaged rather than completely rewriting or rethinking the entire document. Two sections were merged into one:\r\n\r\n```diff\r\n- A note on mission control\r\n- A note on ‘Displays have separate Spaces’\r\n+ macOS integration\r\n```\r\n\r\nIssue #1345 mentioned the guide and commands. This only tackles the guide, for now. If desired, I'll do a similar treatment to commands.\r\n\r\nRef #1345 ",
      "created_at": "2025-05-13T21:34:28Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "mvllow:restructure-guide",
        "ref": "restructure-guide",
        "sha": "55d49cdb35d197dfb2abe7f15fdb5b6d40a4d717",
        "user": {
          "login": "mvllow",
          "id": 1474821,
          "node_id": "MDQ6VXNlcjE0NzQ4MjE=",
          "avatar_url": "https://avatars.githubusercontent.com/u/1474821?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/mvllow",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 982897580,
          "node_id": "R_kgDOOpXTrA",
          "name": "AeroSpace",
          "full_name": "mvllow/AeroSpace",
          "private": false,
          "owner": {
            "login": "mvllow",
            "id": 1474821,
            "node_id": "MDQ6VXNlcjE0NzQ4MjE=",
            "avatar_url": "https://avatars.githubusercontent.com/u/1474821?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/mvllow",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/mvllow/AeroSpace",
          "created_at": "2025-05-13T15:07:36Z",
          "updated_at": "2025-05-13T15:07:36Z",
          "pushed_at": "2025-10-31T02:10:17Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 9243,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1410"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1410"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1410"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1410/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1410/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1410/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/55d49cdb35d197dfb2abe7f15fdb5b6d40a4d717"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1349",
      "id": 2483506071,
      "node_id": "PR_kwDOJl1IZM6UB0uX",
      "number": 1349,
      "state": "open",
      "locked": false,
      "title": "Add --when-visible (focus|swap) option to the summon-workspace command [updated]",
      "user": {
        "login": "awwaiid",
        "id": 8642,
        "node_id": "MDQ6VXNlcjg2NDI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8642?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/awwaiid",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This is an updated version of https://github.com/nikitabobko/AeroSpace/pull/681, [edit] rebasing on main. I enabled the code mentioned in the other PR comment:\r\n\r\n```\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = ['move-mouse window-lazy-center']\r\n```\r\n\r\nand everything is working the way it should -- the mouse cursor stays on the monitor where it started. I've been using this for a bit and all is working GREAT!! Thank you @ilyaluk!\r\n\r\nI'd be happy to add anything else you might need to make this mergeable, let me know!",
      "created_at": "2025-04-26T19:35:52Z",
      "updated_at": "2026-01-24T19:31:31Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "e5788e9ee5d2d14bb5f5b43ed969b7ebf017aa97",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "awwaiid:summon-workspace-action",
        "ref": "summon-workspace-action",
        "sha": "6634441a2b9222a5e6f68394be67015244730509",
        "user": {
          "login": "awwaiid",
          "id": 8642,
          "node_id": "MDQ6VXNlcjg2NDI=",
          "avatar_url": "https://avatars.githubusercontent.com/u/8642?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/awwaiid",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 973341047,
          "node_id": "R_kgDOOgQBdw",
          "name": "AeroSpace",
          "full_name": "awwaiid/AeroSpace",
          "private": false,
          "owner": {
            "login": "awwaiid",
            "id": 8642,
            "node_id": "MDQ6VXNlcjg2NDI=",
            "avatar_url": "https://avatars.githubusercontent.com/u/8642?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/awwaiid",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/awwaiid/AeroSpace",
          "created_at": "2025-04-26T19:22:39Z",
          "updated_at": "2025-04-26T19:22:39Z",
          "pushed_at": "2026-01-24T18:20:24Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8483,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "18545c29f93d7a9b8a2af6b98dee29f8558dad18",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1349"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1349"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1349"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1349/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1349/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1349/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/6634441a2b9222a5e6f68394be67015244730509"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1344",
      "id": 2481412318,
      "node_id": "PR_kwDOJl1IZM6T51je",
      "number": 1344,
      "state": "open",
      "locked": false,
      "title": "adds note about KeePassXC in common pitfalls",
      "user": {
        "login": "audishos",
        "id": 11764548,
        "node_id": "MDQ6VXNlcjExNzY0NTQ4",
        "avatar_url": "https://avatars.githubusercontent.com/u/11764548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/audishos",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "re. getting stuck in secure input mode, disabling `option` key binding",
      "created_at": "2025-04-25T11:58:40Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "aa363621ea4074f2e46e88f7d5bbfc1f05fd2e54",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "audishos:keepass-xc-pitfall-doc",
        "ref": "keepass-xc-pitfall-doc",
        "sha": "c7778ddad09930af6f06cbeff58b5c5fc4e389e7",
        "user": {
          "login": "audishos",
          "id": 11764548,
          "node_id": "MDQ6VXNlcjExNzY0NTQ4",
          "avatar_url": "https://avatars.githubusercontent.com/u/11764548?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/audishos",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 972631433,
          "node_id": "R_kgDOOfktiQ",
          "name": "AeroSpace",
          "full_name": "audishos/AeroSpace",
          "private": false,
          "owner": {
            "login": "audishos",
            "id": 11764548,
            "node_id": "MDQ6VXNlcjExNzY0NTQ4",
            "avatar_url": "https://avatars.githubusercontent.com/u/11764548?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/audishos",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/audishos/AeroSpace",
          "created_at": "2025-04-25T11:54:36Z",
          "updated_at": "2025-04-25T11:54:36Z",
          "pushed_at": "2025-04-25T11:58:01Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8100,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1344"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1344"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1344"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1344/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1344/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1344/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/c7778ddad09930af6f06cbeff58b5c5fc4e389e7"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1269",
      "id": 2445276847,
      "node_id": "PR_kwDOJl1IZM6Rv_av",
      "number": 1269,
      "state": "open",
      "locked": false,
      "title": "feat(config): Add window count and workspace pattern support for dyna…",
      "user": {
        "login": "xand3r40r93",
        "id": 65961104,
        "node_id": "MDQ6VXNlcjY1OTYxMTA0",
        "avatar_url": "https://avatars.githubusercontent.com/u/65961104?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xand3r40r93",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "…mic gaps\r\n\r\nEnhance DynamicConfigValue to support window count and workspace pattern matching in per-monitor configurations. This allows for more granular control over gaps based on the number of windows and workspace names.\r\n\r\nKey changes:\r\n- Add windows and workspace parameters for PerMonitorValue\r\n- Implement window count aware gap configurations\r\n- Add workspace pattern matching support\r\n- Update documentation with new configuration examples\r\n- Add comprehensive test coverage",
      "created_at": "2025-04-08T08:50:59Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "xand3r40r93:dynamic-gaps",
        "ref": "dynamic-gaps",
        "sha": "bf7c8a6f496de575497f6079064318cf28cb19f8",
        "user": {
          "login": "xand3r40r93",
          "id": 65961104,
          "node_id": "MDQ6VXNlcjY1OTYxMTA0",
          "avatar_url": "https://avatars.githubusercontent.com/u/65961104?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/xand3r40r93",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 961318363,
          "node_id": "R_kgDOOUyN2w",
          "name": "AeroSpace",
          "full_name": "xand3r40r93/AeroSpace",
          "private": false,
          "owner": {
            "login": "xand3r40r93",
            "id": 65961104,
            "node_id": "MDQ6VXNlcjY1OTYxMTA0",
            "avatar_url": "https://avatars.githubusercontent.com/u/65961104?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/xand3r40r93",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/xand3r40r93/AeroSpace",
          "created_at": "2025-04-06T08:59:20Z",
          "updated_at": "2025-04-08T08:44:58Z",
          "pushed_at": "2025-04-11T15:08:58Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 7364,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1269"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1269"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1269"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1269/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1269/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1269/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/bf7c8a6f496de575497f6079064318cf28cb19f8"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1156",
      "id": 2365161896,
      "node_id": "PR_kwDOJl1IZM6M-YGo",
      "number": 1156,
      "state": "open",
      "locked": false,
      "title": "Support resizing floating windows.",
      "user": {
        "login": "MediosZ",
        "id": 24819143,
        "node_id": "MDQ6VXNlcjI0ODE5MTQz",
        "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MediosZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "May close #9 \r\n\r\nI’ve noticed that resizing floating windows can be done independently of other cases, so I’ve written some separate code to handle it. \r\n\r\nI’m introducing a new concept called the ‘leading axis’ to handle resizing options like ‘smart | smart-opposite’. The leading axis is the longer axis of the floating window, like the X-axis if the width is greater than the height.\r\n\r\nWith ‘resize smart’, the leading axis will be adjusted while keeping the aspect ratio of the window the same.\r\n\r\nAnd with ‘resize smart-opposite’, the non-leading axis will be adjusted.",
      "created_at": "2025-02-28T18:23:51Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "6d27a85723a19a48ded35520ec878337daef855a",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "MediosZ:resize-floating",
        "ref": "resize-floating",
        "sha": "5ab99cd37c2955d3f8a2f13a22e3576cf2eca269",
        "user": {
          "login": "MediosZ",
          "id": 24819143,
          "node_id": "MDQ6VXNlcjI0ODE5MTQz",
          "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MediosZ",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 922588449,
          "node_id": "R_kgDONv2VIQ",
          "name": "AeroSpace",
          "full_name": "MediosZ/AeroSpace",
          "private": false,
          "owner": {
            "login": "MediosZ",
            "id": 24819143,
            "node_id": "MDQ6VXNlcjI0ODE5MTQz",
            "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/MediosZ",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/MediosZ/AeroSpace",
          "created_at": "2025-01-26T16:03:20Z",
          "updated_at": "2025-11-29T12:06:55Z",
          "pushed_at": "2025-11-29T12:06:30Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8402,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1156"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1156"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1156"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1156/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1156/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1156/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/5ab99cd37c2955d3f8a2f13a22e3576cf2eca269"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        9
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1117",
      "id": 2345998672,
      "node_id": "PR_kwDOJl1IZM6L1RlQ",
      "number": 1117,
      "state": "open",
      "locked": false,
      "title": "Add automatically-unhide-macos-hidden-apps-exceptions config option.",
      "user": {
        "login": "MediosZ",
        "id": 24819143,
        "node_id": "MDQ6VXNlcjI0ODE5MTQz",
        "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/MediosZ",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Fix #1041 \r\n\r\nI tested both Raycast shortcuts and Discord, and they will not be unhidden automatically with `automatically-unhide-macos-hidden-apps-exceptions=['com.github.wez.wezterm', 'com.hnc.Discord']`\r\n\r\n\r\nCurrently, apps in exceptions will remember the workspace where they launched. When you reopen the app, it always appears on that workspace and focuses on that workspace.\r\n",
      "created_at": "2025-02-20T02:33:48Z",
      "updated_at": "2026-01-02T02:04:20Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "MediosZ:fix-1041",
        "ref": "fix-1041",
        "sha": "87af4da1f0320574be3902afede04bb7b651dcc6",
        "user": {
          "login": "MediosZ",
          "id": 24819143,
          "node_id": "MDQ6VXNlcjI0ODE5MTQz",
          "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/MediosZ",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 922588449,
          "node_id": "R_kgDONv2VIQ",
          "name": "AeroSpace",
          "full_name": "MediosZ/AeroSpace",
          "private": false,
          "owner": {
            "login": "MediosZ",
            "id": 24819143,
            "node_id": "MDQ6VXNlcjI0ODE5MTQz",
            "avatar_url": "https://avatars.githubusercontent.com/u/24819143?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/MediosZ",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/MediosZ/AeroSpace",
          "created_at": "2025-01-26T16:03:20Z",
          "updated_at": "2025-11-29T12:06:55Z",
          "pushed_at": "2025-11-29T12:06:30Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 8402,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1117"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/1117"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1117"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/1117/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1117/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/1117/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/87af4da1f0320574be3902afede04bb7b651dcc6"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        1
      ]
    },
    {
      "url": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/681",
      "id": 2171191083,
      "node_id": "PR_kwDOJl1IZM6Bab8r",
      "number": 681,
      "state": "open",
      "locked": false,
      "title": "Add `--when-visible (focus|swap)` option to the summon-workspace command",
      "user": {
        "login": "lynaghk",
        "id": 147919,
        "node_id": "MDQ6VXNlcjE0NzkxOQ==",
        "avatar_url": "https://avatars.githubusercontent.com/u/147919?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/lynaghk",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "First, let me say AeroSpace is really cool! I've been trying to relive my XMonad memories on Mac [for years](https://kevinlynagh.com/organizing-windows/) and am excited about the possibilities with AeroSpace.\r\n\r\nThis PR implements the swapping behavior discussed in https://github.com/nikitabobko/AeroSpace/issues/603.\r\n\r\nI could be misunderstanding the AeroSpace internals, but it doesn't seem like this feature is blocking on workspace renaming. I've tested it locally with multiple monitors and tiling / accordion layouts and it seemed to work as intended. (Note: I have not attempted to wire up any automated tests, though would be happy to do so if you'd like me to.)\r\n\r\nEven though in that issue you said you wanted `swap` to be the default behavior, in the PR I have `focus` as the default for backwards compatibility.\r\n\r\nFinally, I live and work in Oud-West, so if you would prefer to discuss in person --- beverages are on me =D",
      "created_at": "2024-11-09T21:38:19Z",
      "updated_at": "2026-01-24T19:35:03Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "lynaghk:summon-workspace-action",
        "ref": "summon-workspace-action",
        "sha": "56734b2c7154372f0c913fc352e349d6f76a3513",
        "user": {
          "login": "lynaghk",
          "id": 147919,
          "node_id": "MDQ6VXNlcjE0NzkxOQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/147919?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/lynaghk",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 885974269,
          "node_id": "R_kgDONM7k_Q",
          "name": "AeroSpace",
          "full_name": "lynaghk/AeroSpace",
          "private": false,
          "owner": {
            "login": "lynaghk",
            "id": 147919,
            "node_id": "MDQ6VXNlcjE0NzkxOQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/147919?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/lynaghk",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": true,
          "url": "https://api.github.com/repos/lynaghk/AeroSpace",
          "created_at": "2024-11-09T21:17:53Z",
          "updated_at": "2024-11-10T11:02:04Z",
          "pushed_at": "2024-11-10T11:02:34Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 7352,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Swift",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "nikitabobko:main",
        "ref": "main",
        "sha": "10b5906db3791cb7d1b2b04264cb313c68c02bd7",
        "user": {
          "login": "nikitabobko",
          "id": 20517828,
          "node_id": "MDQ6VXNlcjIwNTE3ODI4",
          "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nikitabobko",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 643647588,
          "node_id": "R_kgDOJl1IZA",
          "name": "AeroSpace",
          "full_name": "nikitabobko/AeroSpace",
          "private": false,
          "owner": {
            "login": "nikitabobko",
            "id": 20517828,
            "node_id": "MDQ6VXNlcjIwNTE3ODI4",
            "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nikitabobko",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "AeroSpace is an i3-like tiling window manager for macOS",
          "fork": false,
          "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
          "created_at": "2023-05-21T20:20:17Z",
          "updated_at": "2026-02-05T02:55:17Z",
          "pushed_at": "2026-02-03T13:04:09Z",
          "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
          "size": 12632,
          "stargazers_count": 18646,
          "watchers_count": 18646,
          "language": "Swift",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": false,
          "has_pages": true,
          "has_discussions": true,
          "forks_count": 406,
          "archived": false,
          "disabled": false,
          "open_issues_count": 185,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {
            "0": "apple",
            "1": "i3",
            "2": "i3wm",
            "3": "mac",
            "4": "macos",
            "5": "swift",
            "6": "tiling",
            "7": "tiling-window-manager",
            "8": "window-manager"
          },
          "visibility": "public",
          "forks": 406,
          "open_issues": 185,
          "watchers": 18646,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/681"
        },
        "html": {
          "href": "https://github.com/nikitabobko/AeroSpace/pull/681"
        },
        "issue": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/681"
        },
        "comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/issues/681/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/681/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/pulls/681/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/nikitabobko/AeroSpace/statuses/56734b2c7154372f0c913fc352e349d6f76a3513"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [
    {
      "id": "D_kwDOJl1IZM4Aj5A3",
      "number": 1922,
      "title": "Recommendation to visualize focused windows",
      "body": "Like many people, I use the borders service to highlight the focused window. I recently discovered an app called \"HazeOver,\" which offers a great alternative. Personally, I prefer it over borders, as it makes identifying windows much quicker on large screens. You can also create an exception list. I use both borders and HazeOver together, which allows for more versatile use cases. It’s also available via SetApp.\r\nhttps://hazeover.com/",
      "created_at": "2026-01-30T12:46:32Z",
      "updated_at": "2026-02-04T19:56:40Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj5qV",
      "number": 1925,
      "title": "Re-enable Option/Alt + Shift + Left/Right Arrow Keys for text selection",
      "body": "By default, at least on Mac (and I believe it's also true for Windows), using Option + Shift and Left/Right arrow lets me select text by word. This is an addition to the normal Option + Left/Right which lets me jump my cursor by word, and adding shift simply lets me select the text.\r\n\r\nSince a lot of Aerospace shortcuts work on Alt-Shift, is there a way to unbind these specific key combinations so I can regain this text selection functionality?",
      "created_at": "2026-01-31T07:50:49Z",
      "updated_at": "2026-02-04T19:48:56Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ArionMiles",
        "avatar_url": "https://avatars.githubusercontent.com/u/13501594?u=6a3fa19e28012b0443d503956af4046acf224152&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcaT4",
      "number": 679,
      "title": "What is y'all's approach to fullscreen games that utilize a lot of the keyboard?",
      "body": "For example, at the moment, I'm playing Factorio. There's a lot of complex keybinds, especially (and unusually amongst games, in my experience) a lot that use <kbd>Alt</kbd>, that overlap with my Aerospace config substantially.\r\n\r\nVarious fixes for this include:\r\n\r\n1. (terrible) Remap _all_ of of a game's offending keys (quite arduous, and even potentially nearly impossible if there's enough operations that need to stay close to the homerow while playing …);\r\n\r\n2. (terrible) quit Aerospace when you're going to play;\r\n\r\n3. (bad) manually switch to a mode/profile that disables most operations while playing, then switch back to `main` when you want your keybinds restored;\r\n\r\n4. (less bad) switch to a mode with less functionality automatically when one of <some set of games> is launched;\r\n\r\n5. (maybe best?) configure some games to launch into native macOS fullscreen, and (I don't even know if Aerospace can do this?) disable Aerospace's keybinds when the native-fullscreen game is focused?\r\n\r\nNone of these seem easy; what have y'all been doing?",
      "created_at": "2024-11-08T21:46:09Z",
      "updated_at": "2026-02-04T19:43:05Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArNuH",
        "body": "> 3\\. (bad) manually switch to a mode/profile that disables most operations while playing, then switch back to `main` when you want your keybinds restored;\r\n\r\nI suggest to use a slightly different approach. Use a vim-like config: https://github.com/nikitabobko/AeroSpace/discussions/620\r\n\r\n```toml\r\n[mode.main.binding]\r\nctrl-space = ['mode alt']\r\n\r\n# 'alt' binding mode declaration\r\n[mode.alt.binding]\r\nesc = ['mode main']\r\n```\r\n\r\nThen set all your aerospace binding in the `alt binding` mode\r\n\r\nThis way should give you more flexibility and less chance of key binding collision"
      },
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeQXv",
      "number": 1070,
      "title": "Render the textual AXTitle over the visible sliver of accordion'd windows",
      "body": "At the moment, accordioned windows can be … very difficult to differentiate:\r\n\r\n<img width=\"411\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f7be86f1-4e01-4e70-aa57-f0b501610619\" />\r\n\r\nWhat is hiding back there? With a poor working memory, I have no idea what will happen if I run my `focus up` command. I just kinda have to cycle it until I get what I want (unless I actually forgot where it is, and it's in the _other_ accordion to the left. 😅)\r\n\r\nThat is, of course, the downside of accordions - but I think it could be mitigated by rendering a little label on all \"mostly obscured\" accordion folds, containing whatever the accessibility `AXTitle` provided by that app contains.\r\n\r\nStretch goals:\r\n\r\n* Ability to define the font-size / relative position;\r\n* ability to disable it for certain windows w/ a command;\r\n* ability to have them hidden until you hold a particular key (i.e. all of my Aerospace hotkeys start with `Alt+`, so having the titles hidden until I start holding `Alt` would make a lot of sense.)\r\n\r\nNote: I understand that this is a stretch, as for pretty much any other 'visual rendering' stuff, Aerospace has said nope and left it to be implemented externally (i.e. [active borders](https://github.com/FelixKratz/JankyBorders)); but in this case, I really do think Aerospace itself is the correct location - it controls the accordion'ing, it knows which windows are mostly shadowed, and most importantly, it knows the _direction_ of the accordion (i.e. whether to render horizontal text or vertical text.) Any external 'draw little accessibility titles on windows' tool would need some pretty deep integration w/ Aerospace to avoid rendering titles that aren't necessary, to decide where to draw them, and to decide whether to draw them vertically or horizontally.",
      "created_at": "2025-02-08T14:03:10Z",
      "updated_at": "2026-02-04T19:41:34Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AenuX",
      "number": 1159,
      "title": "Stable monitor assignment when there's multiple copies of the same monitor",
      "body": "I'm trying to use `workspace-to-monitor-force-assignment` to keep certain windows on my vertical display; but it keeps getting shuffled onto another display during reboot. `)=`\r\n\r\n```\r\n[workspace-to-monitor-force-assignment]\r\n0 = 'main'\r\n7 = 'Pro Display XDR (1)'\r\nU = 'U13NA'\r\n...\r\n```\r\n\r\nAt the moment, whatever 'name' Aerospace gets for attached monitors seems to be something assigned by the system at boot; and that assignment seems to be mutable. (Sometimes, my left monitor is named “Pro Display XDR (1)” and my right is “Pro Display XDR (2)”; other times they're shuffled in another way.)\r\n\r\nWould it be possible to match on another property of the monitor that is more immutable? I see an OS UID (although for all I know that'd also be unstable) as well as the display's serial number as potential options.\r\n\r\n----\r\n\r\n(To be clear, this is an issue without `workspace-to-monitor-force-assignment` configured at all; I'm trying to use `workspace-to-monitor-force-assignment` to _work around it_. The best improvement would be Aerospace transparently handling monitor-location-and-identity more in a more stable fashion; but I don't see how that's possible without user-input.)\r\n\r\nAdditional situations where this presents (some more annoying than others), as search-result keywords:\r\n\r\n- **Disconnecting/reconnecting a display.** This is the worst one for me; one of my monitors fully turns itself off every time the input appears/disappears, which plays poorly with macOS display-sleep and Aerospace - it means all of my windows get shuffled every time my computer locks!\r\n\r\n- **Rearranging in the macOS “Displays” settings.** Every single one-pixel adjustment of the displays seems to result in the name-assignment by macOS getting reshuffled; it's bad enough that I have to quit Aerospace before messing with the display-arrangement; otherwise all of my windows are randomly shuffling between the displays (including the display-settings window I'm trying to interact with!) every three-to-five-seconds. Oof! (This one isn't so bad during everyday use, though; hopefully one shouldn't have to rearrange their display-settings too often.)\r\n\r\n- **Rotating a display** that supports automatic OS rotation, like Apple's XDR. This might suck for users who rotate their displays often; but that's not me right now. `(=`\r\n",
      "created_at": "2025-03-01T03:03:22Z",
      "updated_at": "2026-02-04T19:37:23Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj6c-",
      "number": 1928,
      "title": "Setup Memory",
      "body": "Howdy ! Big AeroSpace face here.\r\n\r\nThere is one thing that could be better which is that every time that I unplug my screens, everything is sent to random places. And it can happen a few times a week, you know grab your laptop to order groceries in the kitchen type of thing.\r\n\r\nAnyways, it would be nice if I could 'save setup' in aerospace, and it'd save which program goes to which workspace, then I could 'restore setup' when I want and AeroSpace would put things back into their places. \r\n\r\nThanks!",
      "created_at": "2026-02-01T10:22:23Z",
      "updated_at": "2026-02-04T19:32:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "azr",
        "avatar_url": "https://avatars.githubusercontent.com/u/1024852?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj845",
      "number": 1931,
      "title": "One-shot, single-keystroke 'mode' bindings / default bindings for unbound keys in a given mode.",
      "body": "A continuous frustration I've got with my AeroSpace config right now, is that there's a few setting modes (basically the ones from the default config, slightly tweaked) that are intended to perform a single action, then return to default mode. For instance, \"service mode\" from the default config: I may invoke it to get a second 'layer' of rarer commands (reload config; set window to floating; etc.), but I never want to *stay* in it, even when it's correctly invoked.\r\n\r\nWorse, it's (apparently) easy to accidentally invoke - the regularity with which I find myself in a \"huh, my AeroSpace bindings aren't responding\" state, reflexively try them a few times in a row, then finally look up at the menubar and see that I'm in the \"service\" binding and thus it's waiting for one of the, like, five bindings that actually exist in that mode (and ignoring everything else), is somewhat embarrassing.\r\n\r\nI'd love to fix this so that *every* key that isn't an explicit service-mode binding is just a no-op that returns to the main mode … but that'd balloon my config in a ridiculous way, adding a binding for every single possible chord that's simply `'mode main'`. Ew.\r\n\r\n----\r\n\r\nIt'd be nice to either have a \"setting\" for binding modes, that causes them to capture every keystroke (and then issue \\<configured default binding\\>) ...\r\n\r\n\r\n```toml\r\n[mode.service.binding]\r\ndefault = 'mode main'\r\n```\r\n\r\n... or, perhaps, a flag for the `mode` command, that makes it one-shot:\r\n\r\n```toml\r\n[mode.main.binding]\r\nalt-shift-o = 'mode --oneshot service'\r\n```\r\n\r\n... i.e. the mode only stays active until the next chord is received, and if it's not bound to anything in that mode, you're immediately returned to the current (active-when-invoking) mode.",
      "created_at": "2026-02-03T18:32:53Z",
      "updated_at": "2026-02-04T19:25:27Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj-Gj",
      "number": 1933,
      "title": "Completely disable interaction with a particular (process/binary/application-ID) at a low level",
      "body": "It'd be nice to be able to completely exclude a particular application/process from AeroSpace at a fundamental level - prevent AeroSpace from trying to manage its windows, or even send any AX messages to it.\r\n\r\nThis'd be useful:\r\n\r\n1. as an escape-hatch from breakage/incompleteness in AeroSpace itself, i.e. with apps that behave very poorly when managed or respond poorly to accessibility APIs (I'm having a version of this error with the Orion browser, although obviously I'd prefer to hunt it down and get it fixed to just yeeting it out of my entire window-manager, an escape-hatch is a nice option when you need to just Get Something Done);\r\n\r\n2. for development/debugging purposes. As I'm sure many of us AeroSpace users are, I'm a dev myself; and it noises up logs/traces/dumps to have my device-under-test being queried by AeroSpace constantly, much less having its window moved/resized/rearranged/etc. I could quit AreoSpace, of course, in those situations … but it's my global window-management solution, and that would mean losing/relearning my muscle-memory for the entire period of debugging/development, which is less-than-ideal.\r\n\r\n----\r\n\r\nIf this functionality is welcome, I'm open to submitting a PR; I mildly expect it'd be pretty simple to implement, and I've already spent some time in the codebase. As it's primarily a developer-tool and/or last-ditch escape hatch, I don't think it needs to be very configurable or polished - whatever's easiest to implement - prolly starting with just a config-key that adds additional bundle-IDs to skip over in `getOrRegister`, although I haven't spelunked that deeply.\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/blob/18545c29f93d7a9b8a2af6b98dee29f8558dad18/Sources/AppBundle/tree/MacApp.swift#L40-L50",
      "created_at": "2026-02-04T19:22:58Z",
      "updated_at": "2026-02-04T19:22:58Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj5De",
      "number": 1923,
      "title": "Exception list for move-mouse command",
      "body": "**Problem:**\r\n\r\nSome apps like Autodesk Fusion 360 are not compatible with the `move-mouse window-lazy-center` command for the focused window hook.\r\n\r\n**Idea:**\r\n\r\nAn exception list for mouse movement on focused window should be implemented.\r\n\r\nSomething like this:\r\n\r\n```\r\nmove-mouse window-lazy-center --except com.autodesk.fusion360\r\n```\r\n\r\nFeature idea follows after this discussion: https://github.com/nikitabobko/AeroSpace/discussions/1644#discussioncomment-15638892",
      "created_at": "2026-01-30T13:18:15Z",
      "updated_at": "2026-02-04T17:18:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A74MW",
        "body": "I think it should be implemented via shell-like combinators:\r\n```toml\r\non-focus-changed = 'not test --app-bundle-id com.autodesk.fusion360 && move-mouse window-lazy-center'\r\n```\r\n\r\nTracking issue for shell-like combinators: #278 "
      },
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfKVy",
      "number": 1262,
      "title": "1 px gap at the bottom when outer gap is 0",
      "body": "When outer gaps are set to 0, there is a 1-px-tall gap at the bottom of the screen. This gap is sometimes distracting. When a window is full screened, this gap disappears.\r\n\r\n<img width=\"600\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2e93e2c1-8bc6-4dd2-a1a7-69113394f1a0\" />\r\n\r\nI get that some windows are hidden at the bottom right corner. But I think this bottom gap can be removed.",
      "created_at": "2025-04-05T06:05:07Z",
      "updated_at": "2026-02-04T15:00:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BigBrotherJu",
        "avatar_url": "https://avatars.githubusercontent.com/u/47515692?u=150d1ea1bdcfe8079a9244e5476c2e26b4a716c2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj7sB",
      "number": 1930,
      "title": "Where is @?",
      "body": "if Aerospace ist running my @ alt+l doesn´t work anymore.  no changes made to settings. just opened it after brew install. QWERTZ keyboard with german lang. macos 26.2 (25C56)\r\n\r\n\r\n\r\n",
      "created_at": "2026-02-02T16:40:19Z",
      "updated_at": "2026-02-04T06:13:27Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "fokkerone",
        "avatar_url": "https://avatars.githubusercontent.com/u/96452?u=49b034b729fae4693b0c4f8eaa088c3f14ba5549&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj7lt",
      "number": 1929,
      "title": "Preview App windows open in the same workspace",
      "body": "### Body\n\nI’m experiencing an issue with the macOS Preview app when opening files (mostly PDFs). Each file opens in a new window, but not in the currently active workspace. Instead, the window always opens in the workspace where the first Preview window was ever created, and macOS automatically switches me to that workspace.\r\nThis makes working across multiple workspaces very disruptive.\r\n\r\nmacOS version: Sequoia 15.6\r\nSteps to reproduce\r\n1. Open any file using the Preview app.\r\n2. Switch to a different workspace.\r\n3. Open another file with Preview.\r\n\r\nExpected result:\r\n\r\nThe new file opens in the current workspace.\r\n\r\nActual result:\r\n\r\nThe file opens in the workspace where the oldest Preview window exists, and macOS automatically switches to that workspace.\r\n\r\nAdditional information:\r\n\r\nI’ve attached a short video that demonstrates the issue.\r\nhttps://github.com/user-attachments/assets/1b92503b-b7de-496d-9193-06acbec40201\r\n\r\n",
      "created_at": "2026-02-02T15:01:09Z",
      "updated_at": "2026-02-04T06:01:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bogdan-developer",
        "avatar_url": "https://avatars.githubusercontent.com/u/84404029?u=d42dae5cd19454b25a95aa0adcb41038554c0904&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjdC3",
      "number": 1875,
      "title": "Floating windows are disappearing often when moving between workspaces.",
      "body": "### Body\n\nHi,\r\n\r\nI work with about 50% floating windows and I probably encounter problems that other users don't...\r\n\r\nA few times a day, when moving between workspaces, floating windows disappear (I guess moved outside the viewable area).  In order to see them again I have to:\r\n 1. select them by other means (e.g. alt-tab) - I still don't see them at this point.\r\n 2. press alt-t (to tile them) - I see them tiled.\r\n 3. press alt-t again to make then float - now they are floating back in the viewable area.\r\n\r\nIt started a few weeks ago (don't remember exactly when as I'm not working on mac daily) and about the time it started, I updated both MacOS (Tahoe - 26.1) and AeroSpace itself. \r\n\r\nSteps to reproduce: Work for a while with many floating windows on multiple workspaces, it should happen within a couple of hours.\r\n\r\nExpected result: All floating windows in a workspace should be visible\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n\r\nThanks\r\n",
      "created_at": "2025-12-30T09:10:38Z",
      "updated_at": "2026-02-03T15:30:17Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "babysnakes",
        "avatar_url": "https://avatars.githubusercontent.com/u/31975?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfFq3",
      "number": 1251,
      "title": "Floating window to be present in all workspaces",
      "body": "I went through the [guide](https://nikitabobko.github.io/AeroSpace/guide) and [commands](https://nikitabobko.github.io/AeroSpace/commands) pages and couldn't find this, so I assume this feature is not available at the moment.\r\n\r\n### Description\r\n\r\nAs a user, I'd like to be able to make a specific floating window appear on all workspaces.\r\n\r\n### Use case\r\nOutlook has its own popup window for calendar event reminders, here is how it looks like:\r\n![Screenshot 2025-03-31 at 10 44 09](https://github.com/user-attachments/assets/c489b9a4-f0f5-498f-8990-e26bbd5c2d76)\r\n\r\nThis is very useful to not miss an important meeting. This popup is supposed to be visible regardless of which virtual desktop is currently selected. With AeroSpace enabled, though, there's no visual notification that a meeting is about to start unless you switch to the workspace where the window appeared.\r\n\r\n### Possible solution\r\n\r\nAdd a command to make a window present in all workspaces, which can be used in [on-window-detected](https://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback) callback.",
      "created_at": "2025-03-31T13:17:17Z",
      "updated_at": "2026-02-03T07:44:52Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "amiv1",
        "avatar_url": "https://avatars.githubusercontent.com/u/1240012?u=870e2df6fd3b11c4692af4aa55dcb745928b6724&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj5jd",
      "number": 1924,
      "title": "exec sets wrong env variables on intel mac",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n\r\nAdd this line to your aerospace.toml on intel mac\r\n\r\n```\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n]\r\n``` \r\n\r\nExpected result: sketchybar should trigger\r\nActual result: sketchybar does not trigger\r\n\r\nthis also affects exec-and-forget\r\n\r\n### Additional info\r\n\r\nThe problem is that on Intel macs, Homebrew installs binaries in a different location:\r\n\r\nhttps://docs.brew.sh/FAQ#why-is-the-default-installation-prefix-opthomebrew-on-apple-silicon\r\n\r\n`/opt/homebrew/bin` is for arm, `/usr/local/bin` on x86\r\n\r\nit would be nice of the intel homebrew install path of `/usr/local/bin` was added to the default PATH\r\nhttps://github.com/nikitabobko/AeroSpace/blob/18545c29f93d7a9b8a2af6b98dee29f8558dad18/Sources/AppBundle/config/parseExecEnvVariables.swift#L15\r\n\r\nalso happy to send a pr for this\r\n\r\n### Workaround\r\n\r\n```\r\n[exec.env-vars]\r\n    PATH = '/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'\r\n```\r\n",
      "created_at": "2026-01-31T02:33:56Z",
      "updated_at": "2026-01-31T02:34:47Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nicks",
        "avatar_url": "https://avatars.githubusercontent.com/u/278641?u=82110b31ee9ba45532132df4bf125f9bf1235964&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac0AI",
      "number": 756,
      "title": "How to create pre-defined layouts with apps specific positions",
      "body": "Thank you for all of the awesome work on AeroSpace. I really enjoy using it everyday.\r\n\r\nI am trying to figure out if there is a way to create \"pre-defined layouts\". For example, I would like a \"Zoom\" layout that automatically tiles the following apps in a specific layout:\r\n\r\n![Screenshot 2024-11-25 at 05 12 59@2x](https://github.com/user-attachments/assets/f3e56920-db47-4934-9c50-cc1e3acba00c)\r\n\r\nI would like to trigger this layout using a keyboard shortcut (e.g. `alt` + `shift` + `z`)",
      "created_at": "2024-11-25T13:13:16Z",
      "updated_at": "2026-01-30T23:45:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "SamEdwardes",
        "avatar_url": "https://avatars.githubusercontent.com/u/18248949?u=06493072752521108a46107a37f70b183c267f47&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhbwC",
      "number": 1644,
      "title": "Per-app filter for on-focus-changed",
      "body": "Hello.\r\n\r\nI'm using `on-focus-changed = ['move-mouse window-lazy-center']` to replicate focus follows mouse behavior.\r\n\r\nThe problem is that on certain QT-based apps like Autodesk Fusion 360 this causes problems, such as inability to select context menu items.\r\n\r\nCan you please suggest me some workaround to skip this behavior for certain windows/apps?",
      "created_at": "2025-08-20T02:57:00Z",
      "updated_at": "2026-01-30T16:32:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "x1unix",
        "avatar_url": "https://avatars.githubusercontent.com/u/9203548?u=4bb49bb48e032a50f6ba73f155b80b83d4a4712e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgyQ1",
      "number": 1562,
      "title": "[[on-window-detected]] callback with if.app-id = 'com.github.Electron' inconsistently failing",
      "body": "### Body\n\nI have this bit of config;\r\n```toml\r\n[[on-window-detected]]\r\n    if.app-id = 'com.github.Electron'\r\n    run = 'move-node-to-workspace D'\r\n```\r\n\r\nso when I run a local dev build of an Electron app it should be sent to workspace D. This used to work consistently (I think on version 0.16) but since then I have found around 50% of the time when a new Electron window is created, it appears in the currently focused workspace and the callback doesn't move it to workspace D.\r\n\r\nI'm not sure how best to debug this flakiness and get a consistent repro but happy to try if someone can point me in the right direction.\r\n\r\nI have not seen this behavior with any of my other apps or [[on-window-detected]] callbacks.\r\n\r\nExpected result: consistent workspace assignment\r\nActual result: inconsistency, sometimes it works and sometimes the new Electron window stays in the currently focused workspace\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n",
      "created_at": "2025-07-17T10:25:46Z",
      "updated_at": "2026-01-29T12:57:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jasonleelunn",
        "avatar_url": "https://avatars.githubusercontent.com/u/61010854?u=c713f1f13c39b5c624f23a57fc777a46a007b915&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj3Kl",
      "number": 1920,
      "title": "Quitting [terminal started] Electron app crashed AeroSpace",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Have AeroSpace and Sketchybar started\r\n2. Start up Electron app via terminal. Open multiple windows. All Electron app windows occupy a single space. \r\n3. Cmd+q while Electron app is focused to quit app. \r\n\r\nExpected result:\r\nApp quits, aerospace stays running.\r\n\r\nActual result:\r\nAerospace crashes.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n```\r\n\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Value is already destroyed\r\nVersion: 0.20.2-Beta\r\nGit hash: 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nrefreshSessionEvent:  socketServer\r\nDate: 2026-01-28 18:35:49 +0000\r\nThread name: AxAppThread PID: 15514 ID: com.github.Electron\r\nIs main thread: false\r\naxTaskLocalAppThreadToken: PID: 15514 ID: com.github.Electron\r\nmacOS version: Version 14.8.3 (Build 23J220)\r\nCoordinate: AppBundle/ThreadGuardedValue.swift:10:42 threadGuarded\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104f7d4ac $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2056\r\n1   AeroSpace                           0x0000000104e16d30 $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_Tg5 + 244\r\n2   AeroSpace                           0x0000000104e1a99c $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_TG5 + 28\r\n3   AeroSpace                           0x0000000104ddbb60 $s9AppBundle03MacA0C10withWindow33_EF43F3E35B745B4CDFE17DB804FA328CLLyxSgs6UInt32V_AFSo14AXUIElementRefa_AA10RunLoopJobCtYbKctYaKlFAfLYbKcfU_AA4RectV_TG5TA + 24\r\n4   AeroSpace                           0x0000000104e16208 $sSo8NSThreadC9AppBundleE9runInLoopyxxAC03RunF3JobCYbKcYaKlFxyYaKXEfU_yScCyxs5Error_pGXEfU_yAFYbcfU_AC4RectVSg_Tg5 + 168\r\n5   AeroSpace                           0x0000000104dbfdc0 $s9AppBundle13RunLoopAction33_A4959B6FE60031823DBA1501F5438AC4LLC6actionyyF + 216\r\n6   AeroSpace                           0x0000000104dbfdfc $s9AppBundle13RunLoopAction33_A4959B6FE60031823DBA1501F5438AC4LLC6actionyyFTo + 24\r\n7   Foundation                          0x000000018be0f028 __NSThreadPerformPerform + 264\r\n8   CoreFoundation                      0x000000018acbe3b8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28\r\n9   CoreFoundation                      0x000000018acbe34c __CFRunLoopDoSource0 + 176\r\n10  CoreFoundation                      0x000000018acbe0bc __CFRunLoopDoSources0 + 244\r\n11  CoreFoundation                      0x000000018acbcca8 __CFRunLoopRun + 828\r\n12  CoreFoundation                      0x000000018acbc314 CFRunLoopRunSpecific + 608\r\n13  CoreFoundation                      0x000000018ad3a33c CFRunLoopRun + 64\r\n14  AeroSpace                           0x0000000104dc6a14 $s9AppBundle03MacA0C13getOrRegisteryACSgSo20NSRunningApplicationCYaKFZyyYbcfU_yyXEfU_ + 1100\r\n15  AeroSpace                           0x0000000104dc6594 $s9AppBundle03MacA0C13getOrRegisteryACSgSo20NSRunningApplicationCYaKFZyyYbcfU_ + 120\r\n16  AeroSpace                           0x0000000104dc6298 $sIegh_IeyBh_TR + 28\r\n17  Foundation                          0x000000018bdeabb0 __NSThread__start__ + 716\r\n18  libsystem_pthread.dylib             0x000000018abdef3c _pthread_start + 136\r\n19  libsystem_pthread.dylib             0x000000018abd9d24 thread_start + 8\r\n\r\n```",
      "created_at": "2026-01-28T18:43:58Z",
      "updated_at": "2026-01-30T09:56:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A7qCJ",
        "body": "Thanks! It's the first time I see this kind of crash. Created a tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1921"
      },
      "user": {
        "login": "jinusean",
        "avatar_url": "https://avatars.githubusercontent.com/u/6874981?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeuV1",
      "number": 1193,
      "title": "Focus previous window after closing the child",
      "body": "**How to make AeroSpace to focus the previous window after a child window was closed?**\r\n\r\ni.e. I've opened an image in Preview from Finder, when I close Preview - instead of focusing Finder's image folder it randomly selects a random app inside the current workspace\r\n\r\nRepro:\r\n1. Open a workspace with N apps in it + Finder. All in floating mode\r\n2. Open Finder\r\n3. Navigate a folder with images\r\n4. Open an image (with Preview)\r\n5. Close an image (CTRL + W)\r\n6. Focus randomly selects an app from the current workspace, not the parent Finder window which the Preview was launched from from\r\n\r\nDemo:\r\nHere what I'm talking about. After pressing CMD+W to close window aerospace focuses on a random app within workspace instead of previously focused window, meaning the kitty window opened before\r\n\r\nin that case random app was Finder but I didn't found any logic of how it chooses apps\r\n\r\n![Image](https://github.com/user-attachments/assets/58f198c2-86fd-41c1-aed7-125f7966aa2e)\r\n",
      "created_at": "2025-03-08T13:09:41Z",
      "updated_at": "2026-01-28T20:03:14Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "EmpathyZeroed",
        "avatar_url": "https://avatars.githubusercontent.com/u/189291184?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj1_r",
      "number": 1919,
      "title": "Command to re-trigger `on-window-detected` rules for existing windows",
      "body": "## Problem Statement\r\n\r\nAfter several hours of work, my workspaces become disorganized because I frequently move windows between workspaces during my workflow. Currently, there's no straightforward way to reorganize all windows back to their designated workspaces based on existing `on-window-detected` rules.\r\n\r\n## Current Behavior\r\n\r\n- `on-window-detected` rules work perfectly when windows are **first created**\r\n- `reload-config` reloads the configuration but **does not re-trigger** `on-window-detected` rules for existing windows\r\n- The only way to reorganize windows is to **fully restart Aerospace** (quit and relaunch the application)\r\n\r\n## Desired Behavior\r\n\r\nA command (e.g., `reapply-window-rules` or similar) that:\r\n1. Iterates through all currently open windows\r\n2. Re-evaluates them against existing `on-window-detected` rules\r\n3. Moves windows to their designated workspaces based on those rules\r\n\r\nThis would allow users to quickly reset their workspace organization without a full application restart.\r\n\r\n## Use Case\r\n\r\n```toml\r\n# My current config\r\n[[on-window-detected]]\r\nif.app-id = 'com.brave.Browser'\r\nrun = ['move-node-to-workspace 1']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nrun = ['move-node-to-workspace 2']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Terminal'\r\nrun = ['move-node-to-workspace 3']\r\n```\r\n\r\nAfter working for a few hours, I'd like to press a keybinding (e.g., `alt-shift-r`) that executes:\r\n```toml\r\nalt-shift-r = 'reapply-window-rules'\r\n```\r\n\r\nThis would instantly reorganize all windows according to my `on-window-detected` rules.\r\n\r\n## Alternative Solutions Considered\r\n\r\n1. **Manual script** - Loop through windows and apply rules via scripting, but this duplicates configuration logic and need to make something than parse the your aerospace toml in case you add a new on-chain-detected. \r\n2. **Full restart** - Works but disrupts workflow and is slower than necessary\r\n3. **`reload-config`** - Already exists but doesn't re-trigger window detection rules\r\n\r\n## Proposed Implementation\r\n\r\nAdd a new command that:\r\n- Can be bound to a keyboard shortcut\r\n- Re-runs `on-window-detected` evaluation for all existing windows\r\n- Optionally: `reload-config --reapply-rules` flag to combine both actions? \r\n\r\n## Benefits\r\n\r\n- Maintains clean workspace organization throughout the day\r\n- No need for full application restart",
      "created_at": "2026-01-27T17:21:32Z",
      "updated_at": "2026-01-28T13:30:34Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Ethnical",
        "avatar_url": "https://avatars.githubusercontent.com/u/23560242?u=9ed72d81ef2ef3f0b627c89a24c0e86e9108ff75&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj1Zf",
      "number": 1917,
      "title": "Feature: ignore-focus-from config to prevent focus-stealing apps",
      "body": "## Problem\n\nSome background apps/services steal focus when they activate, disrupting workflow. For example, Logitech's `LogiPluginService` activates when plugging/unplugging devices, causing AeroSpace to switch workspaces unexpectedly.\n\n## Proposed Solution\n\nNew config option `ignore-focus-from` that accepts an array of app bundle IDs to ignore focus events from:\n\n```toml\nignore-focus-from = ['com.logi.pluginservice']\n```\n\n## Implementation\n\nI've implemented this in my fork: https://github.com/noomz/AeroSpace/tree/ignore-focus-from\n\n- Filters focus events in `GlobalObserver.onNotif()` before any downstream processing\n- Uses `Set<String>` for O(1) lookup (called on every focus event)\n- Config check happens inside `@MainActor` Task block to safely access config\n\n## Use Cases\n\n- Logitech software (`com.logi.pluginservice`) - activates on device connect/disconnect\n- Other background utilities that occasionally steal focus\n- System services that shouldn't trigger workspace switches\n\nLooking for feedback on this approach.",
      "created_at": "2026-01-27T07:53:55Z",
      "updated_at": "2026-01-27T07:53:55Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "noomzopendream",
        "avatar_url": "https://avatars.githubusercontent.com/u/149568231?u=d2fc78db45203dc947f8a56c375a804ad8946931&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aj1Vk",
      "number": 1916,
      "title": "FreeTube PIP Window",
      "body": "I saw issue #2 and all of the different script workarounds people made for various pip windows in various apps, yet I can't seem to get it to work with a pip window in FreeTube. Does anyone happen to know how I could make it work? ",
      "created_at": "2026-01-27T06:29:19Z",
      "updated_at": "2026-01-27T10:36:43Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bengalbroys",
        "avatar_url": "https://avatars.githubusercontent.com/u/122663585?u=7dbf1b5329c0191bf13d9ae22f404b1829026699&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjD2K",
      "number": 1830,
      "title": "Ghostty tabs treated as windows.",
      "body": "### Body\n\nHello! first of all, thank you for your incredible work with AeroSpace! It feels super comfortable and intuitive to use. \r\n\r\nI found an issue tho, which is kinda annoying to me because I live on the terminal:\r\n\r\nSteps to reproduce:\r\n1. On macOS 26.1, open a Ghostty window and create a second tab\r\n\r\nhttps://github.com/user-attachments/assets/698354c1-824f-4c04-9737-ceb696be078a\r\n\r\nExpected result: Ghostty window takes up the entire screen\r\nActual result:  Screen is split treating tabs as different windows\r\n\r\n### Additional info\r\n\r\n```shell\r\n~\r\n❯❯❯ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n\r\n~\r\n❯❯❯ ghostty +version\r\nGhostty 1.2.3\r\n\r\nVersion\r\n  - version: 1.2.3\r\n  - channel: stable\r\nBuild Config\r\n  - Zig version   : 0.14.1\r\n  - build mode    : builtin.OptimizeMode.ReleaseFast\r\n  - app runtime   : apprt.Runtime.none\r\n  - font engine   : font.main.Backend.coretext\r\n  - renderer      : renderer.generic.Renderer(renderer.Metal)\r\n  - libxev        : kqueue\r\n\r\n~\r\n❯❯❯ sw_vers -productVersion\r\n26.1\r\n```\r\n",
      "created_at": "2025-11-29T11:39:20Z",
      "updated_at": "2026-01-27T03:52:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5qam",
        "body": "This is a known limitation of most of most tiling window managers on mac due to how accessibility api works. https://github.com/nikitabobko/AeroSpace/issues/68"
      },
      "user": {
        "login": "SharliBeicon",
        "avatar_url": "https://avatars.githubusercontent.com/u/24566191?u=5165e32fe5441bf29c6175686ea073f11c6ad562&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zW",
      "number": 997,
      "title": "Request: more modifiers",
      "body": "Would it be possible to add more modifier keys? For example caps lock, § or fn?",
      "created_at": "2024-10-13T21:01:14Z",
      "updated_at": "2026-01-26T10:12:03Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kontofikcyjne",
        "avatar_url": "https://avatars.githubusercontent.com/u/29614752?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajxfg",
      "number": 1913,
      "title": "Crashing on startup",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Unsure what changed, was working previously. I get this error on startup:\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: nil\r\nDate: 2026-01-23 00:19:50 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.2 (Build 25C56)\r\nCoordinate: AppBundle/initAppBundle.swift:16:18 initAppBundle()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001010b15cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2036\r\n1   AeroSpace                           0x00000001011193b0 $s6Common5check__4file4line6column8functionySb_SSyXKSSS2iSStF + 92\r\n2   AeroSpace                           0x0000000100f3734c $s9AppBundle04initaB0yyFyyYaKcfU_TY4_ + 112\r\n3   AeroSpace                           0x0000000100ed84d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n4   libswift_Concurrency.dylib          0x00000002913172fd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```",
      "created_at": "2026-01-23T00:28:13Z",
      "updated_at": "2026-01-24T03:43:30Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "human37",
        "avatar_url": "https://avatars.githubusercontent.com/u/48261561?u=092c58de3c1e442e046f232ccf508a7513535e02&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajxc1",
      "number": 1912,
      "title": "Docs/Guide website is out-of-date",
      "body": "### Body\r\n\r\n`auto-reload-config` was added recently as a feature and an option in default-config.toml, however it doesn't appear in the website's version, it needs a rebuild.",
      "created_at": "2026-01-22T22:41:04Z",
      "updated_at": "2026-01-22T22:52:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "maromalo",
        "avatar_url": "https://avatars.githubusercontent.com/u/54760464?u=c1eb9a67a2fba5a50b1dc52fa382d1ad2c8efc51&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajwaa",
      "number": 1911,
      "title": "Declarative layouts",
      "body": "Maybe this is related to https://github.com/nikitabobko/AeroSpace/issues/260 and https://github.com/nikitabobko/AeroSpace/issues/465, but I'm not entirely sure.\r\n\r\nI'd like to have some way to specify layouts for some workspaces. For example, my primary working workspace could be defined as something like:\r\n\r\n```\r\nh_tiles\r\n  v_tiles\r\n    h_tiles [terminal]\r\n    h_accordion [browsers]\r\n  v_accordion [editors]\r\n```\r\n\r\nNames between brackets could be used as a target to move nodes. So for example I could declare an `on-window-detected` rule to move editors and run `move-node-to-workspace W.editors`. \r\n\r\nOf course this might imply that named nodes (or nodes that contain named ones) should never be normalized, so this might be a little tricky.\r\n\r\nIs this solved already in any other window manager?",
      "created_at": "2026-01-21T23:26:27Z",
      "updated_at": "2026-01-22T10:51:55Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "waj",
        "avatar_url": "https://avatars.githubusercontent.com/u/22697?u=8ce8d3ce1ab1bfa36ff1cecf7cb60d193706afda&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjwOr",
      "number": 1910,
      "title": "apps from other workspaces join with apps in my current active workspace",
      "body": "I'm facing a bug where apps/windows from other workspaces would suddenly join with the apps/windows in my current active workspace. How can I fix this? It's happening very arbitrarily and I can't figure out why. I have a single monitor (my laptop display). ",
      "created_at": "2026-01-21T18:34:07Z",
      "updated_at": "2026-01-22T02:19:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenhuang1964",
        "avatar_url": "https://avatars.githubusercontent.com/u/87556616?u=df93864acde55902721e86f5bec23c79ddd64fbf&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjvTk",
      "number": 1909,
      "title": "Apple Music when in miniplayer mode is treated like a full window",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open any app\r\n  - We need 2 windows side by side with one being apple music\r\n1. Open Apple Music app\r\n3. Toggle mini-player:\r\n  - `Window > Switch to MiniPlayer`\r\n\r\nExpected result:\r\n<img width=\"5113\" height=\"1414\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c67ed91b-84a3-48f7-bf3d-a3a617f543e7\" />\r\n\r\n- The Expected result can be achieved by dragging the size of the other window until its big enough for the MiniPlayer to fill only a section of the screen\r\n\r\nActual result:\r\n<img width=\"5120\" height=\"1410\" alt=\"image\" src=\"https://github.com/user-attachments/assets/89caeeda-857a-47ab-bbb6-b3843027bf8b\" />\r\n\r\n<img width=\"5112\" height=\"1410\" alt=\"image\" src=\"https://github.com/user-attachments/assets/5f3e886b-da2f-40bf-a1dd-4033292449c3\" />\r\n\r\n\r\n- By default though, it opens as if it is a full size app and opening other apps or moving the app around will preserve the equal window sizes\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2026-01-20T21:51:03Z",
      "updated_at": "2026-01-21T10:14:56Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mattcoleanderson",
        "avatar_url": "https://avatars.githubusercontent.com/u/49250378?u=dfb2bdcde30c2ab5b5001704e3ff872cf2cd0e49&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiJ6E",
      "number": 1727,
      "title": "Conflict with \"AltTab\" - really thin previews",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have AltTab installed with thumbnail preview mode selected\r\n2. Have Tahoe 26.0 installed\r\n3.\r\n\r\nExpected result: see thumbnail previews of all open windows/applications\r\nActual result: all thumbnail previews (except for windows/apps in current \"space\") are really thin\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-09-28T08:28:10Z",
      "updated_at": "2026-01-19T09:33:09Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TaylorJKing",
        "avatar_url": "https://avatars.githubusercontent.com/u/45841003?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjraA",
      "number": 1905,
      "title": "Create new window of Omnifocus without Switching Spaces (Applescript)",
      "body": "This is more of an applescript question than an aerospace question, but it does involve Aerospace workspace switching behavior.\r\n\r\nI have a key binding (in a mode) to open a new window of Omnifocus.  I couldn't really suss out how to open a new window via applescript except for actually having Applescript fire the keyboard shortcut for \"New Window\".  This works, but it does so by bringing Omnifocus as currently selected app, which causes aerospace to switch to a workspace where an Omnifocus window is already open first, and it creates the new window there.  The desired behavior is to create the new window in the workspace I'm currently in with no workspace switching.\r\n\r\nWhat would be a different way of creating a new window... or can I alter the aerospace behavior where switching to an app automatically switches to a workspace containing a window of that app?\r\n\r\nHere's the relevant binding in my aerospace.toml:\r\n\r\n```toml\r\n# Bit of a hack with keyboard shortcuts since 'make new document window' creates a new tab\r\nf = ['''exec-and-forget osascript -e '\r\nif application \"Omnifocus\" is running then\r\n    tell application \"OmniFocus\"\r\n        activate\r\n        tell application \"System Events\"\r\n            tell process \"OmniFocus\"\r\n                keystroke \"n\" using {option down, command down}\r\n            end tell\r\n        end tell\r\n    end tell\r\nelse\r\n    tell application \"OmniFocus\"\r\n        activate\r\n    end tell\r\nend if\r\n'\r\n''', 'mode main']\r\n```\r\n\r\nAny ideas?  I would have preferred to do `make new document window` but this creates a MacOS native tab instead (which has other problems, see #68)",
      "created_at": "2026-01-16T11:47:29Z",
      "updated_at": "2026-01-16T21:40:23Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A7NgF",
        "body": "Answered this myself with just applescript.  For omnifocus specifically, I have to use the following\r\n```applescript\r\ntell application \"OmniFocus\"\r\n\ttell default document\r\n\t\tmake new document window\r\n\tend tell\r\nend tell\r\n```\r\nThough I'm still curious if it's possible to change the behavior of aerospace where switching to application doesn't automatically switch to a workspace containing that application.\r\n"
      },
      "user": {
        "login": "whaley",
        "avatar_url": "https://avatars.githubusercontent.com/u/166648?u=5e393b22507fb4d04fed191eb6214c6f46b33057&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajr3e",
      "number": 1907,
      "title": "Urgent windows",
      "body": "Today a friend of mine told me about the concept of urgent windows in linux (I forgot what DE/WM they were using).\r\n\r\nBut basically the idea is that you can use some commands/notification to mark a window (for example a terminal) as urgent, and the you'd have a way to visually see the space that has a urgent window, for example by making the space red here:\r\n\r\n<img width=\"270\" height=\"94\" alt=\"CleanShot 2026-01-16 at 19 39 40@2x\" src=\"https://github.com/user-attachments/assets/950ef0db-0803-4a6a-831f-473adcf1bd7f\" />\r\n\r\nand also a shortcut to jump to the most recent urgent window (it could be a stack too)\r\n\r\nI think most of this could be built as a plugin/external command for aerospace, but wanted to share the idea in case it is interesting for others and I'd also like to know if there's a way to maybe customise this ui a bit:\r\n\r\n<img width=\"135\" height=\"47\" alt=\"image\" src=\"https://github.com/user-attachments/assets/279b1f0d-3a6c-44a0-955b-e94099acdbd9\" />\r\n\r\n😊",
      "created_at": "2026-01-16T19:41:33Z",
      "updated_at": "2026-01-16T19:41:33Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "patrick91",
        "avatar_url": "https://avatars.githubusercontent.com/u/667029?u=e35958a75ac1f99c81b4bc99e22db8cd665ae7f0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajr20",
      "number": 1906,
      "title": "Cursor update messes with aerospace",
      "body": "### Body\n\nSteps to reproduce:\r\nInstall cursor and use it\r\n\r\nExpected result:\r\nBehaves as a regular window\r\n\r\nActual result:\r\nAerospace cannot see Cursor at all (neither through list-apps or list-windows). If Cursor has focus, Aerospace will not complete any commands or functions, and commands list `aerospace list-apps` will just run indefinitely.\r\n\r\n### Additional info\r\n\r\nThis only started after I updated Cursor today. Previously it functioned fine.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n",
      "created_at": "2026-01-16T19:26:48Z",
      "updated_at": "2026-01-16T19:26:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "travisp",
        "avatar_url": "https://avatars.githubusercontent.com/u/165698?u=a8baf2b5424beeb84c0705ced39ffd4213ef268a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjHSm",
      "number": 1838,
      "title": "Projects as tabs in IntelliJ vs ghost windows?",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. In MacOS \"System Setting\" under \"Desktop & Dock\" under Windows set \"Prefer tabs when opening documents\" to \"Always\".\r\n2. In newest IntelliJ open project A, additionally open project B and select \"New Window\".\r\n\r\nExpected result: Aerospace treats tabbed projects in one IntelliJ window as one window.\r\nActual result: Aerospace treats the one IntelliJ windows as 2 windows, one of them is not visible (aka ghost window).\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n\r\n❯ aerospace list-apps\r\n81393 | com.jetbrains.intellij                    | IntelliJ IDEA <--- one app\r\n66776 | com.microsoft.teams2                      | Microsoft Teams\r\n75835 | ch.protonmail.desktop                     | Proton Mail\r\n69037 | com.googlecode.iterm2                     | iTerm2\r\n65775 | com.microsoft.edgemac                     | Microsoft Edge\r\n75910 | com.spotify.client                        | Spotify\r\n\r\naerospace list-windows --all\r\n8382 | IntelliJ IDEA     | <projectA> <--- first window\r\n8396 | IntelliJ IDEA     | <projectB> <--- second window\r\n5503 | Microsoft Edge    | <title>\r\n5704 | Microsoft Teams   | <title>\r\n7894 | Proton Mail       | Proton Mail\r\n7925 | Spotify           | Spotify Premium\r\n6534 | iTerm2            | aerospace list-windows --all\r\n```\r\n\r\nAny exisiting workarounds for that or is this a bug?\r\nNot 100% sure but maybe this is same as https://github.com/nikitabobko/AeroSpace/discussions/627.",
      "created_at": "2025-12-03T17:53:32Z",
      "updated_at": "2026-01-16T07:19:57Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "c0desurfer",
        "avatar_url": "https://avatars.githubusercontent.com/u/11145838?u=63973db6e50d1564fc216d3f45dedb10066e14fb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjqSg",
      "number": 1904,
      "title": "[Need help] Window focus by hotkey triggers annoying window moving and resizing",
      "body": "For the past two to three weeks, a problem has occurred whenever a window is focused using a mapped key in Aerospace, regardless of whether the `focus` or `workspace` command is used.\r\n\r\nThe sequence is as follows:\r\n\r\n1. the window becomes focused,\r\n2. then after about half a second it flickers due to a quick resize and move,\r\n3. and finally snaps back to its defined position and size.\r\n\r\nAlthough the process happens quickly, the flickering is bothersome.\r\n\r\n* The Aerospace configuration has been checked and reverted to an older version with no change,\r\n* system settings have been reviewed with many macOS key mappings disabled,\r\n* and all third-party apps have been closed,\r\n* yet no solution has been found.\r\n\r\nThe issue occurs on `macOS 26.2 25C56 arm64` with Aerospace\r\n\r\n```sh\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n```\r\n\r\nIt is unclear whether the cause is the latest macOS update or the new Aerospace version or something else.\r\n\r\nDid anyone experience the same issue?\r\n\r\n\r\n_Update 1:_ I tested the 0.19 versions of Aerospace, and the effect remains the same. I conclude that the issue isn’t due to Aerospace updates in recent weeks.",
      "created_at": "2026-01-15T15:03:55Z",
      "updated_at": "2026-01-16T00:24:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A7LKf",
        "body": "Just found a misconfiguration in my system."
      },
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjlPI",
      "number": 1900,
      "title": "Aerospace steals focus when clicking iTerm2 hotkey windows on other monitors",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Attach two monitors and open some windows on them.\r\n2. Open an iTerm2 hotkey window on one monitor, configured to be pinned and floating.\r\n3. Focus something on the other monitor.\r\n4. Click on the iTerm window.\r\n\r\nExpected result: Focus returns to the clicked iTerm window.\r\n\r\nActual result: Focus very briefly returns to iTerm, then is switched to the window behind it (at the clicked position).\r\n\r\n### Additional info\r\n\r\n- Changing the other relevant-looking iTerm settings for the hotkey window/profile doesn't have any effect.\r\n\r\n- Using `aerospace focus-monitor` also won't focus iTerm's hotkey windows, but that's understandable, as Aerospace seems to be entirely unaware of them.\r\n\r\n- Aerospace being completely unaware of iTerm's hotkey windows generally results in the most-useful behavior, but in this particular case, it interferes with normal operation by focusing a different window after I specifically click on iTerm.",
      "created_at": "2026-01-09T23:43:08Z",
      "updated_at": "2026-01-15T16:37:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jirassimok",
        "avatar_url": "https://avatars.githubusercontent.com/u/18540209?u=47634b9a5b6148c91326dbc4ed4ab06b393c0d81&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjpvB",
      "number": 1903,
      "title": "find my app window takes up extra space",
      "body": "### Body\n\nthe app seems to extend past the window size \r\n\r\n<img width=\"156\" height=\"104\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e1ff1857-f331-4bd8-a03f-8dbbc0197bf5\" />",
      "created_at": "2026-01-15T03:26:53Z",
      "updated_at": "2026-01-15T03:26:53Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "8pxl",
        "avatar_url": "https://avatars.githubusercontent.com/u/56054380?u=e6d813932923733b0238f46e81aa7f07ccbd364a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AckTD",
      "number": 707,
      "title": "Gaps Specific to workspace",
      "body": "I know we can have [gaps specific to monitors](https://nikitabobko.github.io/AeroSpace/guide#key-mapping) and I know we can [assign workspaces to monitors](https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors), \r\n\r\nI'm looking for a increase the gaps on a single workspace only. The reason behind is is that I record my screen for videos but need to only record a sub-set of the screen. Having larger gaps on the outer will allow me to adjust them so the windows fit in the recording area.\r\n\r\n\r\n",
      "created_at": "2024-11-15T14:08:20Z",
      "updated_at": "2026-01-14T05:02:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wesbos",
        "avatar_url": "https://avatars.githubusercontent.com/u/176013?u=1d436e62dc32dbbf1bfefb4d658cd67553154c42&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zO",
      "number": 995,
      "title": "Add DFS index to list-windows output for easier scripting",
      "body": "Focus already supports targeting a window by the DFS index. To allow easier scripting it would be helpful to expose a window's current DFS index when using `list-windows`. Given that, one could easily implement something like https://github.com/nikitabobko/AeroSpace/issues/248 in userland.",
      "created_at": "2024-11-06T09:45:19Z",
      "updated_at": "2026-01-13T20:41:10Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "renke",
        "avatar_url": "https://avatars.githubusercontent.com/u/25464?u=535a353f2b7e6023695f513de46a6dd34ed00061&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjnVO",
      "number": 1902,
      "title": "Sometimes when i click on a browser tab to navigate to it the cursor jumps and drags the tab into a new window.",
      "body": "### Body\n\nSteps to reproduce:\r\n\r\nSometimes if i click on a browser tab, the cursor will jump a significant distance from where it was, dragging the tab along with it, creating a new window for the tab.  And we know what a pain it is to drag a browser tab back into the parent browser when it's constantly trying to realign the windows.\r\n\r\nI can't say for certain but I think i have only had this issue with Chrome, but chrome is my \"work\" browser, so it's whati mostly use on my computer.\r\n\r\nI have not figured out how to reproduce this consistently, it seems to only sometimes happen.  I assume this is because I have multiple displays and i don't haven't  ‘Displays have separate Spaces’ disabled.  I have tried disabling it, but i don't like the side effects of having it disabled.  I also have multiple chrome windows open on multiple displays.  Usually doing my main work in display 2 (center display), and having some reference information on display 1 or 3 (left and right flank)\r\n\r\n\r\n### Additional info\r\nMacos Tahoe Version 26.3 Beta (25D5087f) (this issue was also happening under Sequoia)\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n",
      "created_at": "2026-01-12T21:45:28Z",
      "updated_at": "2026-01-12T21:45:28Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Anaxagoras-bc",
        "avatar_url": "https://avatars.githubusercontent.com/u/68827938?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afj4B",
      "number": 1371,
      "title": "Custom Osascript to Launch Terminal and Switch Window Does Not Work as Expected (without `sleep` for >= 1 seconds)",
      "body": "### Add a body\r\n\r\nSteps to reproduce:\r\n1. Have the following keybinding in the config (`fzf` required)\r\n    ```toml\r\n    [mode.main.binding]\r\n        alt-w = '''exec-and-forget\r\n        osascript -e ' tell application \"Terminal\"\r\n            do script \"aerospace focus --window-id $(aerospace list-windows --all | fzf | cut -d \\\" \\\" -f 1); exit\"\r\n            activate\r\n        end tell'\r\n        '''\r\n    ```\r\n2. Execute `alt-w`, pick a window in another workspace\r\n\r\nExpected result: It should focus the window you picked\r\n\r\nActual result: It switches to the workspace of the window you picked and immediately switches back to the workspace you executed the `alt-w` keybinding in\r\n\r\n## More Explanation\r\n\r\nFirst of all, thanks for developing this amazing tool, Aerospace makes using macOS so much more productive and enjoyable, especially as a big i3/Sway fan.\r\n\r\nSo my goal was to keep the Aerospace keybindings as similar as possible to my i3/Sway config, and one of the keybinding I use often is `Super + w` to launch Rofi window switcher.\r\nBut with the keybinding I made above, it switches to the window I choose then immediately switches back to the workspace I executed the script in.\r\nWhen the window is in the same workspace, it works as expected.\r\n\r\nNow, I did find a \"fix\" to this, and that is adding `sleep` of ~~greater than or equal to 0.89 seconds (I tested it up to two decimal points)~~ value > 1s after `aerospace focus` command, something like: `do script \"aerospace focus --window-id $(aerospace list-windows --all | fzf | cut -d \\\" \\\" -f 1); sleep 1 && exit\"`\r\n\r\n~~I found any value less than 0.89 will reproduce the same behavior, just with the delay (e.g., displays the window you picked for 0.88 seconds, then switches back to the workspace).~~\r\nSo upon more testing, I could not figure out the exact `sleep` value i needed (I was able to bypass the bug with 0.88 one time, and reproduce the bug with 0.89 one time). But my point still stands, if you input small enough value, such as 0.5s of sleep, it will always reproduce the behavior, whereas value over 1s will make the script work as expected reliably.\r\n\r\nIs this an inherent processing limitation of Aerospace (e.g., it takes a certain amount of time, say 0.89s to finalize the window focus)? Or the behavior itself (switching back a workspace) a bug?\r\n\r\n## Additional info\r\n\r\n```\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n```",
      "created_at": "2025-05-02T15:30:07Z",
      "updated_at": "2026-01-12T07:04:33Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axp1B",
        "body": "Appreciate the detailed issue and running your own experiments with `sleep`\r\n\r\nUnfortunately, it's a dark area\r\n\r\nWhen a window closes, AeroSpace tries to keep workspace of the window focused\r\nhttps://github.com/nikitabobko/AeroSpace/issues/1097\r\nNot sure how your use case can be solved. AeroSpace could be more intelligent and \"whitelist\" its own `focus` command, but it needs to be thought more thoroughly.\r\n\r\nAs @zhenpewu correctly pointed, you might want to keep and eye on https://github.com/nikitabobko/AeroSpace/issues/510 \r\n\r\nAnd I will add more issue to the list of your issue to pay attention to: https://github.com/nikitabobko/AeroSpace/issues/236 Which is the workflow you are trying to implement but is provided natively"
      },
      "user": {
        "login": "theopn",
        "avatar_url": "https://avatars.githubusercontent.com/u/63016528?u=e234e010a929ed82feab760e73c19ff123c2ca43&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajjf0",
      "number": 1896,
      "title": "Slow Resizing of Windows in macOS 26.2",
      "body": "Steps to reproduce:\r\n1. On Workspace 1, have an application open full width like a browser i.e. Chrome. Hit CMD+N to open a new Browser window. \r\n2. Wait about 1s to see the proper 50/50 split happen\r\n3.See correct 50/50 split\r\n\r\nExpected result: Should split near instant instead of 1s delay\r\nActual result: Has resizing delay of about 1s\r\n\r\n### Additional info\r\n\r\nThis happend since upgrading to MacOS 26.2. Before it was 100% fine and fast.  \r\n\r\nmacOS 26.2\r\nApple M2 Pro\r\n32GB RAM\r\n\r\nIt also happens on jump to different workspace and then the application (like iTerm) is shown small like default size and after 1s or so resized to fill full space available. \r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.1-Beta 66d16c068a49a6a679bde16407673d07ca10c4c0\r\n```\r\nLike this, it's barely usable and I'm really frustrated as I really like to continue using aerospace. \r\n",
      "created_at": "2026-01-08T05:18:13Z",
      "updated_at": "2026-01-10T13:27:39Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "michaelwapp",
        "avatar_url": "https://avatars.githubusercontent.com/u/19573520?u=5ca432f758286651a80013ca16e8ecb1f38d2090&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai2jw",
      "number": 1800,
      "title": "Easydict Translation window opens in a different workspace when using multiple workspaces",
      "body": "### Body\n\nDescription:\r\nI encountered an issue when using Easydict (https://github.com/tisfeng/Easydict\r\n) for screenshot translation. Since this is a free software, it should be easy to reproduce. I’ve already confirmed that the issue is not caused by the shortcut keys. If you need `aerospace debug-windows`, please let me know.\r\n\r\nSteps to reproduce:\r\n\r\n1. In workspace A, take a screenshot using Easydict (via the shortcut key). The translation window appears next to the mouse cursor.\r\n\r\n2. Switch to workspace B and take another screenshot using the same method.\r\n\r\n3. Observe that the translation window automatically jumps back to workspace A instead of appearing next to the mouse cursor.\r\n\r\nExpected result:\r\nThe translation window should always appear next to the mouse cursor in the current workspace.\r\n\r\nActual result:\r\nThe translation window opens in workspace A even when taking a screenshot in workspace B, forcing constant workspace switching.\r\n\r\n### Additional info\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609",
      "created_at": "2025-11-13T08:50:03Z",
      "updated_at": "2026-01-10T08:29:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "realDGD",
        "avatar_url": "https://avatars.githubusercontent.com/u/144976081?u=154753bac6097d416b08bd6fa09739c415769d43&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjlYO",
      "number": 1901,
      "title": "Is it possible to configure a hotkey to jump to a browser tab (chrome or firefox tab)?",
      "body": "I have started using browser windows a lot instead of browser tabs because I can assign an Aerospace workspace to a browser window not a browser tab. So I create a browser window for each one of my frequently used website, for example, gmail, github, etc. & I assign each of these browser window a hotkey so that I can jump to them using a hotkey.\r\n\r\n**The problem is the creating browser windows (chrome) hogs memory!**\r\n\r\n1. Am I using Aerospace correctly for this particular use case?\r\n2. How are the users of Aerospace tackling this issue? **Can I assign an Aerospace workspace to a browser tab? So that I can directly jump to it using a hotkey?**",
      "created_at": "2026-01-10T06:25:50Z",
      "updated_at": "2026-01-10T06:25:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shibisuriya",
        "avatar_url": "https://avatars.githubusercontent.com/u/69033713?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zA",
      "number": 991,
      "title": "Some processes don't register in list-apps or list-windows",
      "body": "Some processes/windows don't get picked up by Aerospace.\r\n\r\nThis is not _that_ surprising for some processes - I encountered this with `mpv` and given that it doesn't even come close to using a macOS-native GUI, it's not shocking. But, `IINA` is supposed to be a macOS-native GUI frontend for `mpv` and also doesn't show up.\r\n\r\nWith both apps showing windows in the background, neither show up in aerospace's query commands:\r\n\r\n```\r\n$ iina && mpv --player-operation-mode=pseudo-gui & aerospace list-apps && echo && aerospace list-windows --all\r\n[1] 13242\r\n14266 | com.apple.finder                  | Finder\r\n14437 | com.apple.Safari                  | Safari\r\n14720 | net.kovidgoyal.kitty              | kitty\r\n75355 | com.apple.iCal                    | Calendar\r\n75783 | com.apple.Music                   | Music\r\n81677 | com.apple.mail                    | Mail\r\n85755 | com.microsoft.rdc.macos           | Microsoft Remote Desktop\r\n59055 | com.apple.Notes                   | Notes\r\n25845 | com.apple.MobileSMS               | Messages\r\n34649 | com.google.Chrome                 | Google Chrome\r\n38343 | com.apple.Preview                 | Preview\r\n\r\n5297  | Calendar | Calendar\r\n14962 | Finder   | Desktop\r\n14911 | Mail     | Yesterday – 2 messages\r\n1371  | Safari   | New Issue · nikitabobko/AeroSpace\r\n1552  | kitty    | tmux - zsh\r\n$\r\n```\r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [ X ] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - list-apps\r\n  - list-windows\r\n  - ...\r\n- [ X ] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [ X ] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - process\r\n  - window\r\n  - ...\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "created_at": "2024-10-08T18:40:31Z",
      "updated_at": "2026-01-09T21:37:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "globalshrug",
        "avatar_url": "https://avatars.githubusercontent.com/u/3487945?u=5b40ada093c147a02151f1903682b1c8ac9fb948&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajkpl",
      "number": 1899,
      "title": "Outlook has some kind of invisible floating window messing up moving focus around",
      "body": "I will start by stating that this is not always a problem but occurs after Outlook has been running for a while. I have to restart outlook to make this issue go away.\r\n\r\n**Steps to reproduce:**\r\n\r\n1. My setup:\r\n  * Two workspaces A and B\r\n  * Have Outlook on A\r\n  * Have a vertical stack of windows on B with Window 1, Window 2 and Window 3\r\n2. Use `focus up` and `focus down` to navigate the stack on B\r\n\r\n**Expected result:**\r\n\r\n`focus down` should navigate the stack like so:\r\n\r\n1. Window 1\r\n2. Window 2\r\n3. Window 3\r\n\r\n`focus up` should navigate back up.\r\n\r\n**Actual result:**\r\n\r\n`focus down` moves focus to Outlook every other time:\r\n\r\n1. Window 1\r\n2. Outlook\r\n3. Window 2\r\n5. Outlook\r\n6. Window 3\r\n\r\n`focus up` moves focus as expected:\r\n\r\n1. Window 3\r\n2. Window 2\r\n3. Window 1\r\n\r\n### Additional info\r\n\r\nThis is a work computer with VPN so I think it is related to that or the SSO signin process which spawns a floating window for me to log into. But due to how we've set things up those windows resolves themselves and disappears after a second or two.\r\n\r\nI can be helpful in troubleshooting this if needed (once the issue re-appears)",
      "created_at": "2026-01-09T09:22:14Z",
      "updated_at": "2026-01-09T13:01:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yngvedh",
        "avatar_url": "https://avatars.githubusercontent.com/u/1963918?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjkVE",
      "number": 1898,
      "title": "Expansion of env variable in exec array not working?",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1.  ENV variable is defined and accessible. File exists\r\n```\r\n$ aerospace list-exec-env-vars | grep XDG\r\nXDG_CONFIG_HOME=/Users/oliver/.config\r\n\r\n$ ls $XDG_CONFIG_HOME/aerospace/make-frontmost.sh\r\n/Users/oliver/.config/aerospace/make-frontmost.sh\r\n```\r\n\r\n2.  Have config key binding using env variable\r\n```\r\ncmd-ctrl-1 = [\r\n  'exec-and-forget ${XDG_CONFIG_HOME}/aerospace/make-frontmost.sh md.obsidian',\r\n  'exec-and-forget ${XDG_CONFIG_HOME}/aerospace/position-frontmost.sh',\r\n]\r\n\r\n```\r\n\r\n3. Execute command\r\n\r\nExpected result:\r\nCommand is executed\r\n\r\nActual result:\r\nNothing happens unless I hardcode the paths\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n\r\n```\r\n",
      "created_at": "2026-01-08T23:36:55Z",
      "updated_at": "2026-01-08T23:37:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "oschrenk",
        "avatar_url": "https://avatars.githubusercontent.com/u/52898?u=162b7f68ddc78f646cc6d72831172e6195b856f8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjkJp",
      "number": 1897,
      "title": "Built in display flips out with 2 external monitors",
      "body": "### Body\n\nI have two ultrawide monitors, one above the other, and then the MBP off to the right side. 99% of the time I'm using the external monitors, but I can't just close the MBP because I use the webcam on occasion.\r\n\r\n```\r\n                      \r\n ┌─────────────┐      \r\n │             │      \r\n │ Ultrawide 1 │      \r\n │             │      \r\n └─────────────┘      \r\n ┌─────────────┐      \r\n │             │      \r\n │ UltraWide 2 │┌───┐ \r\n │             ││MBP│ \r\n └─────────────┘└───┘ \r\n                      \r\n```\r\n\r\nThis happens even when using the default config.\r\n\r\nWhenever I switch Monitor `1` to another workspace than the one it started with, then the built-in display rapidly flickers back-and-forth between whatever it was showing before and the contents of the workspace that used to be on Monitor 1. Switching it back to the previous workspace and it the built-in display calms down and shows the workspace it was before, but all the windows now on Monitor 1 have been resized.\r\n\r\nSteps to reproduce:\r\n1. Three displays in an L-shape\r\n2. Put some windows in the Workspace A on Monitor 1, and some in the built-in display. \r\n3. Switch Monitor 1 to a Workspace B\r\n\r\nExpected result: Monitor 1 would show Workspace B, built-in display would remain the same.\r\nActual result: Monitor 1 switches as expected, but the built-in display flickers between Workspace A and whatever it was showing before.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n\r\n$ aerospace list-monitors\r\n1 | DELL U3415W (1)\r\n2 | DELL U3415W (2)\r\n3 | Built-in Retina Display\r\n```\r\n",
      "created_at": "2026-01-08T18:27:27Z",
      "updated_at": "2026-01-08T18:27:27Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "paul",
        "avatar_url": "https://avatars.githubusercontent.com/u/184?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgYMM",
      "number": 1489,
      "title": "Auto default container orientation does not work on tall monitor",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Set the following configuration:\r\n`default-root-container-orientation = 'auto'`\r\n2. Setup a vertical monitor - set rotation to 90 degrees in monitor setting (System Settings -> Display -> Rotation)\r\n3. Open two application windows on the monitor\r\n\r\nExpected result: \r\nAccording to default config\r\n```\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\n```\r\n\r\nI expect horizontal orientation on wide monitors (which works correctly) and vertical orientation on tall monitors.\r\n\r\nActual result:\r\nTall monitor still defaults to horizontal orientation.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ system_profiler SPDisplaysDataType\r\n\r\nGraphics/Displays:\r\n\r\n    Apple M1 Pro:\r\n\r\n      Chipset Model: Apple M1 Pro\r\n      Type: GPU\r\n      Bus: Built-In\r\n      Total Number of Cores: 14\r\n      Vendor: Apple (0x106b)\r\n      Metal Support: Metal 3\r\n      Displays:\r\n        LG UltraFine:\r\n          Resolution: 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus)\r\n          UI Looks like: 2560 x 1440 @ 60.00Hz\r\n          Main Display: Yes\r\n          Mirror: Off\r\n          Online: Yes\r\n          Rotation: Supported\r\n          Automatically Adjust Brightness: Yes\r\n        LG UltraFine:\r\n          Resolution: 2880 x 5120\r\n          UI Looks like: 1440 x 2560 @ 60.00Hz\r\n          Mirror: Off\r\n          Online: Yes\r\n          Rotation: 90\r\n          Automatically Adjust Brightness: Yes\r\n\r\n$ aerospace -v\r\n\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\nCan I do anything else to debug the issue? \r\nHow does aerospace get monitor dimensions?",
      "created_at": "2025-06-24T08:09:52Z",
      "updated_at": "2026-01-07T19:03:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "a-alak",
        "avatar_url": "https://avatars.githubusercontent.com/u/77401305?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajexz",
      "number": 1884,
      "title": "Ghost window, to have half screen empty",
      "body": "Hello. I use one monitor in vertical position, and in one of the workspaces it would be useful to have the half top of the screen with an application, and the half bottom empty (it helps in neck position, and the size of the window is quite irrelevant for this app). \r\n\r\nI usually open spotify and put it there, down, to make room. But that does not make much sense to waste resources just for tiling windows.\r\n\r\nIs there something I am missing?\r\n\r\nThanks",
      "created_at": "2026-01-02T10:10:16Z",
      "updated_at": "2026-01-07T17:20:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A64sK",
        "body": "Created tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1895"
      },
      "user": {
        "login": "cx-alberto-simoes",
        "avatar_url": "https://avatars.githubusercontent.com/u/104087721?u=a94da1a83a3d468cf6da191fd0e4b16a0d6827e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjjCW",
      "number": 1893,
      "title": "Define virtual monitors for wide or vertical screens",
      "body": "I use my MacBook with various monitor setups. Sometimes, when working on widescreen monitors, I mentally divide them into two or three sections. What if Aerospace could be used to define virtual monitors within the space of a named monitor? This way, widescreens could function like two or three monitors placed side by side, and vertically oriented monitors could act like stacked displays. The LG DualUp, for instance, could be used as two monitors positioned one above the other.\r\n\r\nAdditionally, the full-screen feature could be set to `strict` (full screen meaning the area of a single monitor, even a virtual one) or to `physical`, where a window spans across all virtual monitors. Alternative naming could be `virtual` for `strict` and `monitor` for `physical` ...",
      "created_at": "2026-01-07T15:51:00Z",
      "updated_at": "2026-01-07T16:04:56Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjiYl",
      "number": 1892,
      "title": "Order workspaces in commands according to persistent-workspaces config option",
      "body": "### Body\n\nSteps to reproduce:\r\n1. enable persistent-workspaces\r\n2. use the command `workspace next/prev` or `move-node-to-workspace next/prev`\r\n\r\n```\r\npersistent-workspaces = [\r\n    \"一\",\r\n    \"二\",\r\n    \"三\",\r\n    \"四\",\r\n    \"五\",\r\n    \"六\",\r\n    \"七\",\r\n    \"八\",\r\n    \"九\",\r\n    \"十\",\r\n]\r\n```\r\n\r\nExpected result:\r\n\r\njump in order of the defined order in the persistent-workspaces list\r\n\r\nActual result:\r\n\r\njumps in order of UTF-8 code\r\n\r\n### Additional info\r\n\r\nI'd expect this command to also honor the order:\r\n\r\n```\r\naerospace list-workspaces --all\r\n一\r\n七\r\n三\r\n九\r\n二\r\n五\r\n八\r\n六\r\n十\r\n四\r\n```\r\n\r\nI'm not sure if there are other commands that would need to honor this order, but these are what I noticed in my config.\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347",
      "created_at": "2026-01-06T23:24:03Z",
      "updated_at": "2026-01-07T10:14:55Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A630A",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1816"
      },
      "user": {
        "login": "Riyyi",
        "avatar_url": "https://avatars.githubusercontent.com/u/1911807?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai_xr",
      "number": 1817,
      "title": "v0.20.0-Beta",
      "body": "**Improvements**\r\n- [85fb9779](https://github.com/nikitabobko/AeroSpace/commit/85fb977905b47a0183f1927486a214244ec27406) Performance: avoid unnecessary AX requests for focusing windows (affects apps that are slow at answering `AXRaiseAction` AX requests. For instance, Godot)\r\n- [#1486](https://github.com/nikitabobko/AeroSpace/issues/1486) Show an indication when macOS Secure Input is on. By @mobile-ar\r\n- [#1617](https://github.com/nikitabobko/AeroSpace/issues/1617) [#1658](https://github.com/nikitabobko/AeroSpace/discussions/1658) [#1710](https://github.com/nikitabobko/AeroSpace/discussions/1710) [#1271](https://github.com/nikitabobko/AeroSpace/issues/1271) [#221](https://github.com/nikitabobko/AeroSpace/issues/221) [#1667](https://github.com/nikitabobko/AeroSpace/discussions/1667) [c71c243298](https://github.com/nikitabobko/AeroSpace/commit/c71c24329871a9014a4410291e71e3247f2767ac) Improve dialog/popup heuristics (Compatibility with: Zebar, VSCode, Screen Studio, CleanShot X, browser PIPs, Slack, and how the hell knows what else)\r\n  - [#1617](https://github.com/nikitabobko/AeroSpace/issues/1617) [#2](https://github.com/nikitabobko/AeroSpace/issues/2) Ignore browser PIP windows by default\r\n  - New heuristic logic might break existing properly working applications. Please report issues\r\n- [#413](https://github.com/nikitabobko/AeroSpace/issues/413) Improve the _optimal hide corner_ algorithm\r\n- [#1495](https://github.com/nikitabobko/AeroSpace/issues/1495) Better config error reporting dialog. By @mobile-ar\r\n- [#1494](https://github.com/nikitabobko/AeroSpace/issues/1493) `volume` command now shows volume indicator. By @mobile-ar\r\n\r\n**Bug fixes**\r\n- [#521](https://github.com/nikitabobko/AeroSpace/issues/521) Fix bug: `focus` command didn't work when all windows were floating\r\n- [#1771](https://github.com/nikitabobko/AeroSpace/issues/1771) Fix bug: Sometimes detaching Chrome Tabs yields a floating window since Tahoe\r\n- [#1813](https://github.com/nikitabobko/AeroSpace/issues/1813) Ignore iTerm2 hotkey window\r\n- [#1613](https://github.com/nikitabobko/AeroSpace/issues/1613) [#1588](https://github.com/nikitabobko/AeroSpace/issues/1588) Fix crashes\r\n\r\n**New features**\r\n- [#999](https://github.com/nikitabobko/AeroSpace/issues/999) New `persistent-workspaces` config option\r\n- [#1656](https://github.com/nikitabobko/AeroSpace/issues/1656) [#1161](https://github.com/nikitabobko/AeroSpace/issues/1161) Support more interpolation variables in `list-monitors`, `list-windows`, `list-workspaces`. By @alewis001\r\n- [#711](https://github.com/nikitabobko/AeroSpace/issues/711#issuecomment-3222556176) Add i3-ordered menubar style. By @mobile-ar\r\n- [#1494](https://github.com/nikitabobko/AeroSpace/issues/1494) Add `fullscreen` mode indication in menubar. By @mobile-ar\r\n- [#20](https://github.com/nikitabobko/AeroSpace/issues/20) Lift `on-window-detected.run` limitations\r\n- [#390](https://github.com/nikitabobko/AeroSpace/issues/390) Implement `on-mode-changed` callback\r\n\r\n**Breaking changes**\r\n- [#1683](https://github.com/nikitabobko/AeroSpace/issues/1683) Make users explicitly supply `--stdin` flag to `workspace`/`move-node-to-workspace` commands when stdin is used. By @Gai-H\r\n\r\n\\- Nikita Bobko, 24 November 2025\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/nikitabobko/AeroSpace/releases/tag/v0.20.0-Beta'>v0.20.0-Beta</a>.</em>",
      "created_at": "2025-11-24T22:08:51Z",
      "updated_at": "2026-01-07T08:59:02Z",
      "category": {
        "name": "announcements-releases",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjiPc",
      "number": 1891,
      "title": "Dedicated app workspace users: What's your way of temporarily add another app to the workspace?",
      "body": "Hi everyone, I'm trying to use aerospace for dedicated app workspaces. I really like the idea, trying if it might help me focus more on one specific task.\r\n\r\nFor example\r\n\r\n**shortcut + D**(ev) = Visual Studio Code\r\n**shortcut + M**(ail) = Mail client\r\n**shortcut + C**(hat) = Discord or MS Teams depending on which system etc.\r\n**shortcut + F**(iles) = Finder\r\n**shortcut + T**(erminal) = Terminal\r\n**shortcut + B**(rowser) = Browser\r\n\r\nAll those apps will open automatically in the corresponding workspace via `[[on-window-detected]]` when first launched.\r\n\r\nNow let's say I want a browser window on my \"mail client\" workspace temporarily for some reason. \r\n\r\nThis would be my current workflow.\r\n\r\n- be on the Mail workspace and realize that I need a browser window long enough that switching back and forth isn't worth it.\r\n- shortcut + B to switch to the browser workspace that has one open window.\r\n- Command + N to create a new browser window.\r\n- Move that new, empty browser window to the mail workspace M via shortcut.\r\n- Do the thing\r\n- Command W to close the browser window\r\n\r\nI could also temporarily move the \"main\" browser window to the mail workspace. But I like the idea of having a fixed browser window with specific tabs open on the browser workspace at all times. (maybe that's a little crazy?)\r\n\r\nI assume I could write some script to do this for the browser window specifically, but I'd have to do that for every app that has a dedicated workspace then + add more shortcut keys.\r\n\r\nAm I missing something? How do you do this?\r\n",
      "created_at": "2026-01-06T18:54:12Z",
      "updated_at": "2026-01-06T20:32:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "itsamemarkus",
        "avatar_url": "https://avatars.githubusercontent.com/u/34944988?u=dfec0f202b10aa425b7ab29e3680499c6e16e9a3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjiCD",
      "number": 1890,
      "title": "Focus most recent window by app",
      "body": "Is there a way to figure out which window of a certain app was the most recently focused?\r\n\r\nI like to have shortcuts to quickly focus certain apps, but I also use instances of the same app stacked in an accordion, for example many VSCode windows of different projects. I'm currently using `list-windows` to find windows by app but the problem is that I'm just using the first one in the list.\r\n\r\nAnother option would be to add properties like `window-is-focused` and `window-is-visible` to `list-windows` so I can figure out which window is the one at the \"top\" of the accordion.",
      "created_at": "2026-01-06T14:29:40Z",
      "updated_at": "2026-01-06T14:29:40Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "waj",
        "avatar_url": "https://avatars.githubusercontent.com/u/22697?u=8ce8d3ce1ab1bfa36ff1cecf7cb60d193706afda&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjiBK",
      "number": 1889,
      "title": "Windows from other workspaces showing in corner of a different workspace",
      "body": "<img width=\"623\" height=\"384\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1034da4f-9963-4d17-97c7-1092ad6d47c9\" />\r\n<img width=\"346\" height=\"288\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1d601de1-1761-4de0-83a8-7f69cd1354b8\" />\r\n\r\n\r\nWhy are windows showing on wrong workspaces, in this screenshot you can see a window thats in workspace 2 showing in corner of workspace 1. I followed https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement and my monitors have free space on bottom right or bottom left as guide asks. \r\n\r\nI also have all the other settings set correctly such as `System Settings → Desktop & Dock → Group windows by application (on)` and `System Settings → Desktop & Dock → Displays have separate Spaces (off)`",
      "created_at": "2026-01-06T14:09:32Z",
      "updated_at": "2026-01-06T14:09:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "neonvoidx",
        "avatar_url": "https://avatars.githubusercontent.com/u/25580051?u=0b1420e488e193e81056aeab169bd8080ead8a39&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjhrO",
      "number": 1888,
      "title": "Detaching Chromium (Helium) tab yields a floating window",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Detach tab from the browser\r\n2. Window floats and does not get tiled\r\n\r\nExpected result:\r\nDetached tab should be treated like new window, just like in Google Chrome\r\n\r\nActual result:\r\nDetached tab floats and does not get tiled\r\n\r\n### Additional info\r\nLooks like https://github.com/nikitabobko/AeroSpace/issues/1771 fixed issue only for Google Chrome\r\n\r\nHelium: https://github.com/imputnet/helium\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\nAeroSpace.app server version: 0.20.2-Beta 1a8128c53b231bac7e46917468d50b4f15ad30f7\r\n```\r\n",
      "created_at": "2026-01-06T05:13:31Z",
      "updated_at": "2026-01-06T05:13:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "daugvinasr",
        "avatar_url": "https://avatars.githubusercontent.com/u/13218290?u=4d2778e75245db895d5560fdaced665b6b960dda&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfzLj",
      "number": 1422,
      "title": "Expose current mode (e.g. “Service Mode”) via CLI or environment variable for integration with SketchyBar",
      "body": "Hello folks, \r\n\r\nI’d like to request a way to access the current active mode in Aerospace (such as “Service Mode”, “Presentation Mode”, etc.) programmatically — ideally through one of the following:\r\n\t•\tA command like aerospace mode returning the current mode as plain text\r\n\t•\tA trigger/hook that could be used with SketchyBar (e.g., sketchybar --trigger aerospace_mode_changed)\r\n\r\nThis would make it easy to display the current mode in SketchyBar alongside space IDs, which is where Aerospace already shows it in the system menubar.\r\n\r\nLet me know if this is something you’d consider supporting, or if there’s a workaround I’m missing.\r\nThanks again for all your awesome tools!\r\n\r\nBest regards, Jan\r\n",
      "created_at": "2025-05-16T18:18:58Z",
      "updated_at": "2026-01-05T13:58:26Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hoffmannjan",
        "avatar_url": "https://avatars.githubusercontent.com/u/3756160?u=d3b82385da6e870ccafeeefc7e925f0c8ea86e6b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjKQq",
      "number": 1845,
      "title": "Aerospace crashes while waking up with external displayes",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Two external displays with the built-in display (MacBook) open\r\n2. The OS sleeps\r\n3. Wakes up the OS\r\n\r\nExpected result:\r\n* Working normally\r\n\r\nActual result:\r\n* After I logged on, the Aerospace appears to have crashed.\r\n\r\n### Additional info\r\n\r\n[crash.txt](https://github.com/user-attachments/files/24010171/crash.txt)\r\n",
      "created_at": "2025-12-07T02:51:44Z",
      "updated_at": "2026-01-05T04:56:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aht8n",
      "number": 1669,
      "title": "Brew updates & bin / cli getting removed?",
      "body": "Sometimes, it looks like my bin unlinks, thus making all the CLI flags unrecognized. the actual app still works perfectly. I think this might be due to the brew update overriding my application folder?",
      "created_at": "2025-09-04T06:33:36Z",
      "updated_at": "2026-01-04T20:27:28Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "trentshaines",
        "avatar_url": "https://avatars.githubusercontent.com/u/46075308?u=3203e6be297645c9ff1b7fcaefe97275c173c965&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae0XT",
      "number": 1205,
      "title": "Alt key bindings stop working randomly",
      "body": "Recently I've been encountering this problem where my alt-{key} bindings stop working. When I first boot, everything works as expected. Eventually, these bindings will just stop working and instead produce alt character text output such as:\r\n\r\nalt-1: ¡\r\nalt-2: ™\r\nalt-3: £\r\netc.\r\n\r\nI've tried messing with my keyboard settings and text input sources, but this hasn't helped. It also doesn't explain why these bindings work perfectly fine for an arbitrary amount of time and then just stop working. AeroSpace has been excellent up until now and I really want to resolve this!",
      "created_at": "2025-03-13T20:30:20Z",
      "updated_at": "2026-01-04T19:53:26Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLpI",
        "body": "This also started happening to me in two different (but similarly configured) machines a few weeks ago, and it has been driving me crazy.\r\n\r\nA reboot fixed the issue, but it always came back after a random amount of time.\r\n\r\nI've waited until it happened and started closing all programs that have shortcuts one by one.\r\n\r\nIn my case, it was KeePassXC, even just running in the background, that was somehow breaking my `opt` shortcuts after a while. Restarting it makes AeroSpace work correctly again.\r\n\r\nThe cause is probably https://github.com/keepassxreboot/keepassxc/issues/11906.\r\nIf I try to use one of my `opt` AerosSpace shortcuts when a password field is in focus, I get the exact same broken behavior. So this does seem related to secure input.\r\n\r\nIf KeePassXC is also the culprit in your case, you can try downgrading to 2.7.9."
      },
      "user": {
        "login": "audishos",
        "avatar_url": "https://avatars.githubusercontent.com/u/11764548?u=5077fd07081ee9f1f35c6ef9c3ea21ebbf9e7eb5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjgBU",
      "number": 1887,
      "title": "Research the ability to set the screenshare tile when on facetime to float (currently no app-ID for screensharing module, seems to be a PiP)",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Screenshare on Facetime\r\n2. Screen sharing tile cannot be changed to float\r\n\r\nExpected result: ability to add app-ID for screen sharing tile to be changed to float\r\nActual result: not possible",
      "created_at": "2026-01-04T07:05:19Z",
      "updated_at": "2026-01-04T07:05:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tomzhengy",
        "avatar_url": "https://avatars.githubusercontent.com/u/186881673?u=edd949cc93b40f3dad2760498d9548b5f133ceb1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgXJL",
      "number": 1483,
      "title": "Why is it that \"floating\" application quite often hides on the very corner of the screen?",
      "body": "### Body\n\nI'm using a an external monitor with my macbook m2, and i often open/close the lid and very often when i open it up, connected to my external monitor, log in - i find (floating) apps like teams and outlook hiding at the bottom corners - almost impossible to see with the naked eye. \r\n\r\n\r\n\r\nSteps to reproduce:\r\n1. add this to your config\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.Outlook'\r\nrun = ['layout floating']\r\n\r\n\r\n2.reload config\r\n3.and await outlook hides it self when you open/close your mac\r\n\r\nExpected result:\r\ni expect floating apps not to hide themselves\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n```\r\n",
      "created_at": "2025-06-23T08:10:20Z",
      "updated_at": "2026-01-02T11:59:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idelice",
        "avatar_url": "https://avatars.githubusercontent.com/u/59118341?u=974664b47efff07e496b5e902cdec2306a525a09&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjCtO",
      "number": 1825,
      "title": "Aerospace does not startup on Tahoe",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Install Aerospace\r\n2. Take aerospace.toml and adapt\r\n4. Start aerospace\r\n\r\nExpected result: Used to use aerospace before, it just started and everything worked.\r\nActual result: Now it doesn't start at all, but I get a crash report:\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: nil\r\nDate: 2025-11-27 18:36:19 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.2 (Build 25C5048a)\r\nCoordinate: AppBundle/initAppBundle.swift:16:18 initAppBundle()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100b1d5cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2036\r\n1   AeroSpace                           0x0000000100b853b0 $s6Common5check__4file4line6column8functionySb_SSyXKSSS2iSStF + 92\r\n2   AeroSpace                           0x00000001009a334c $s9AppBundle04initaB0yyFyyYaKcfU_TY4_ + 112\r\n3   AeroSpace                           0x00000001009444d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n4   libswift_Concurrency.dylib          0x000000028056a2fd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-11-27T18:39:53Z",
      "updated_at": "2026-01-02T11:43:07Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DonaldVl",
        "avatar_url": "https://avatars.githubusercontent.com/u/2305473?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjDr8",
      "number": 1827,
      "title": "Feature: cycle window size (like Raycast, when window can't be moved)",
      "body": "Raycast cycles common sizes (½, ⅓, ⅔) when a window can't move further in a direction. I implemented similar functionality for Aerospace, but the current APIs could make it easier. (Or even supported it out of the box!)\r\n\r\n### My implementations: https://gist.github.com/Leftium/14026b69b98125ff547974dcb1c52332\r\n- `aerospace-cycle-size` always cycles width/height (or autodetected axis).\r\n- `aerospace-move-or-cycle-size` moves the window if possible; otherwise cycles the window's size\r\n\r\n\r\n### How size size cycling would look if baked directly into Aerospace:\r\n- new `cycle-size` command that takes a list of sizes like `[50%, 33%, 67%]`\r\n  - Tracks/calculates current size, then resizes to next size (looping back to first size if currently last size).\r\n  - Floating windows would only resize if \"snapped\" to an edge. The edge determines the resize axis.\r\n- move command conditionally cycles window size\r\n  - `move left --cycle-sizes 50%,33%,67%`\r\n  - only cycles if move would have no effect\r\n\r\n### Aerospace API wishlist:\r\nThe following APIs would simplify my current implementation:\r\n- [resize](https://nikitabobko.github.io/AeroSpace/commands#resize) command accepts percentage/fractional sizes (like `33%` or `1/3`)\r\n  - Right now, I calculate the size based on the screen's resolution.\r\n  - I only use size cycling at the \"top\" level, but this would open up size cycling in more complex nested layouts.\r\n  - API to get logical screen resolution\r\n    - Currently using osascript to get screen dimensions\r\n    - not needed if percentage/fractional sizes supported\r\n  - Related links:\r\n    - https://github.com/nikitabobko/AeroSpace/pull/1440\r\n    - https://github.com/nikitabobko/AeroSpace/discussions/839\r\n- API to get layout tree and/or window's position in container.\r\n  - Lacking this, workaround to conditionally move a window or cycle its size:\r\n    - Try moving a window in a direction.\r\n    - If layout tree unchanged and window at same position, then cycle size.\r\n  - OR: if move command returned an error when no windows were moved, cycle size could be conditionally called.\r\n- API to determine if window is floating\r\n  - Because size cycling behavior changes if floating (move command acts more like Windows snap + Raycast cycling)\r\n- [resize or similar command for floating windows](https://github.com/nikitabobko/AeroSpace/issues/9)\r\n  - currently resizing via Hammerspoon\r\n\r\n\r\n\r\n",
      "created_at": "2025-11-29T03:18:32Z",
      "updated_at": "2026-01-02T02:28:24Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5twi",
        "body": "> `aerospace-cycle-size` always cycles width/height (or autodetected axis).\r\n\r\nThanks, created an issue for `cycle-size` command: https://github.com/nikitabobko/AeroSpace/issues/1834\r\n\r\n> `aerospace-move-or-cycle-size` moves the window if possible; otherwise cycles the window's size\r\n\r\nThis command is unnecessary. It can be achieved like this: `aerospace move right --boundaries-action fail || aerospace cycle-size 20% 50%` (especially, once aerospace parser supports the basic shell combinators out of the box: #278)\r\n\r\n> API to get layout tree and/or window's position in container. \r\n\r\n#16 \r\n\r\n> OR: if move command returned an error when no windows were moved, cycle size could be conditionally called.\r\n\r\n`aerospace move right --boundaries-action fail`\r\n\r\n> API to determine if window is floating \r\n\r\n`aerospace list-windows --focused --format '%{window-layout}'`\r\n\r\n"
      },
      "user": {
        "login": "Leftium",
        "avatar_url": "https://avatars.githubusercontent.com/u/381217?u=6cc06a38267be72f998f20656fdf749949c5c364&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjWPp",
      "number": 1861,
      "title": "Bitwarden extension window not floating",
      "body": "### Body\n\nI use Vivaldi with Bitwarden for passwords. The extension can open windows, and I try to make them floating, here are the relevant config bits:\r\n\r\n```ini\r\n[[on-window-detected]]\r\n  if.app-id = 'com.vivaldi.Vivaldi'\r\n  run = 'move-node-to-workspace A'\r\n  check-further-callbacks = true\r\n[[on-window-detected]]\r\n  if.window-title-regex-substring = 'Bitwarden'\r\n  run = 'layout floating'\r\n```\r\n\r\nNot sure if I'm doing something stupid, but the Bitwarden window always opens tiled. Here is the `window-debug` for that window:\r\n\r\n```\r\ncom.vivaldi.Vivaldi.1881 ||| {\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXActivationPoint\" : \"<AXValue 0x945a296b0> {value = x:-1.000000 y:957.000000 type = kAXValueCGPointType}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXCancelButton\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXCloseButton\" : {\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXEnabled\" : 1,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXParent\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXRole\" : \"AXButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXSubrole\" : \"AXCloseButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTitle\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxFailed\" : \"get.AXTitle\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\"\r\ncom.vivaldi.Vivaldi.1881 |||   },\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXDefaultButton\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXDocument\" : \"\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXFocused\" : 0,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXFrame\" : \"<AXValue 0x943d68dc0> {value = x:1469.000000 y:924.000000 w:730.000000 h:923.000000 type = kAXValueCGRectType}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXFullScreen\" : 0,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXFullScreenButton\" : {\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXEnabled\" : 1,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXParent\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXRole\" : \"AXButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTitle\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxFailed\" : \"get.AXTitle\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.vivaldi.Vivaldi.1881 |||   },\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXGrowArea\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXMain\" : 1,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXMinimizeButton\" : {\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXEnabled\" : 1,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXParent\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXRole\" : \"AXButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXSubrole\" : \"AXMinimizeButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTitle\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxFailed\" : \"get.AXTitle\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.vivaldi.Vivaldi.1881 |||   },\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXMinimized\" : 0,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXModal\" : 0,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXParent\" : \"<AXUIElement Application 0x945a55a10> {pid=733}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXPosition\" : \"<AXValue 0x945a28d80> {value = x:1469.000000 y:924.000000 type = kAXValueCGPointType}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXProxy\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXRole\" : \"AXWindow\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXSections\" : [\r\ncom.vivaldi.Vivaldi.1881 |||     \"{\\n    SectionDescription = Content;\\n    SectionObject = \\\"<AXUIElement 0x945a57cf0> {pid=733}\\\";\\n    SectionUniqueID = AXContent;\\n}\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"{\\n    SectionObject = \\\"<AXUIElement 0x945a55a10> {pid=733}\\\";\\n    SectionUniqueID = AXContainer;\\n}\"\r\ncom.vivaldi.Vivaldi.1881 |||   ],\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXSize\" : \"<AXValue 0x945a296b0> {value = w:730.000000 h:923.000000 type = kAXValueCGSizeType}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXSubrole\" : \"AXStandardWindow\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXTitle\" : \"Bitwarden - Vivaldi\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXTitleUIElement\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXToolbarButton\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||   \"AXZoomButton\" : {\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXEnabled\" : 1,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXParent\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXRole\" : \"AXButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTitle\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxFailed\" : \"get.AXTitle\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.vivaldi.Vivaldi.1881 |||   },\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AXApp\" : {\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXExtrasMenuBar\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXFocusedUIElement\" : \"AXUIElement(AxWindowId=1881, title=\\\"Login\\\", role=\\\"AXMenuItem\\\", subrole=nil)\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXFocusedWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXFrame\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXFrontmost\" : 0,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXFunctionRowTopLevelElements\" : [\r\ncom.vivaldi.Vivaldi.1881 ||| \r\ncom.vivaldi.Vivaldi.1881 |||     ],\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXMainWindow\" : \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXMenuBar\" : \"<AXUIElement 0x945a57b40> {pid=733}\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXPosition\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXRole\" : \"AXApplication\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXSize\" : null,\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXTitle\" : \"Vivaldi\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"AXWindows\" : [\r\ncom.vivaldi.Vivaldi.1881 |||       \"AXUIElement(AxWindowId=1881, title=\\\"Bitwarden - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.vivaldi.Vivaldi.1881 |||       \"AXUIElement(AxWindowId=61, title=\\\"AeroSpace Commands - Vivaldi\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\"\r\ncom.vivaldi.Vivaldi.1881 |||     ],\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxFailed\" : \"isWritable.AXFunctionRowTopLevelElements, get.AXFrame, isWritable.AXFrame, get.AXExtrasMenuBar, isWritable.AXExtrasMenuBar, get.AXSize, isWritable.AXSize, get.AXPosition, isWritable.AXPosition\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxIgnored\" : \"AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\",\r\ncom.vivaldi.Vivaldi.1881 |||     \"Aero.AxWritable\" : \"AXFrontmost\"\r\ncom.vivaldi.Vivaldi.1881 |||   },\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.appBundleId\" : \"com.vivaldi.Vivaldi\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.nsApp.activationPolicy\" : \"regular\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.nsApp.appBundlePath\" : \"file:///Applications/Vivaldi.app/\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.nsApp.execPath\" : \"file:///Applications/Vivaldi.app/Contents/MacOS/Vivaldi\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.pid\" : 733,\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.version\" : \"7.7.3851.66\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.App.versionShort\" : \"7.7.3851.66\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AxFailed\" : \"isWritable.AXFrame, get.AXGrowArea, isWritable.AXActivationPoint, get.AXProxy, get.AXDefaultButton, get.AXTitleUIElement, get.AXCancelButton, get.AXToolbarButton\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AxIgnored\" : \"AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AxUiElementWindowType\" : \"window\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AxUiElementWindowType_isDialogHeuristic\" : false,\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.AxWritable\" : \"AXFullScreen, AXPosition, AXSections, AXMain, AXMinimized, AXSize\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.axWindowId\" : 1881,\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.macOS.version\" : \"Version 26.3 (Build 25D5087f)\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.on-window-detected\" : [\r\ncom.vivaldi.Vivaldi.1881 |||     {\r\ncom.vivaldi.Vivaldi.1881 |||       \"commands\" : \"move-node-to-workspace A\",\r\ncom.vivaldi.Vivaldi.1881 |||       \"matcher\" : \"appId=\\\"com.vivaldi.Vivaldi\\\"\"\r\ncom.vivaldi.Vivaldi.1881 |||     },\r\ncom.vivaldi.Vivaldi.1881 |||     {\r\ncom.vivaldi.Vivaldi.1881 |||       \"commands\" : \"layout floating\",\r\ncom.vivaldi.Vivaldi.1881 |||       \"matcher\" : \"windowTitleRegexSubstring=Regex\"\r\ncom.vivaldi.Vivaldi.1881 |||     }\r\ncom.vivaldi.Vivaldi.1881 |||   ],\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.treeNodeParent\" : \"Optional(AppBundle.TilingContainer)\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.windowLevel\" : \"{\\\"normalWindow\\\":{}}\",\r\ncom.vivaldi.Vivaldi.1881 |||   \"Aero.workspace\" : \"A\"\r\ncom.vivaldi.Vivaldi.1881 ||| }\r\n```\r\n\r\nSteps to reproduce:\r\n1. Configure aerospace to float windows with Bitwarden in the name.\r\n2. Open a Bitwarden child window from Vivaldi.\r\n\r\n\r\nExpected result: float the window\r\nActual result: it stays tiled.\r\n\r\n### Additional info\r\n\r\n```shell\r\nerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n",
      "created_at": "2025-12-20T06:34:04Z",
      "updated_at": "2026-01-02T02:12:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "iandol",
        "avatar_url": "https://avatars.githubusercontent.com/u/153905?u=4b004842535cb54540b43a57ec430075f300f787&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajar6",
      "number": 1867,
      "title": "Crash on app start (tahoe 26.1)",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Launch AeroSpace.app in Tahoe 26.1\r\n2. Observe the crash message\r\n3.\r\n\r\nExpected result: App works\r\nActual result: App doesn't launch\r\n\r\nMight be related to https://github.com/nikitabobko/AeroSpace/discussions/1855\r\n\r\nIt was working before, it just stopped working and doesn't work even after reboots, killing every other app, etc.\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: nil\r\nDate: 2025-12-26 16:59:07 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.1 (Build 25B78)\r\nCoordinate: AppBundle/initAppBundle.swift:16:18 initAppBundle()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000102c995cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2036\r\n1   AeroSpace                           0x0000000102d013b0 $s6Common5check__4file4line6column8functionySb_SSyXKSSS2iSStF + 92\r\n2   AeroSpace                           0x0000000102b1f34c $s9AppBundle04initaB0yyFyyYaKcfU_TY4_ + 112\r\n3   AeroSpace                           0x0000000102ac04d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n4   libswift_Concurrency.dylib          0x0000000280a1e7c1 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n",
      "created_at": "2025-12-26T17:03:38Z",
      "updated_at": "2026-01-01T23:08:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s4k",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/discussions/1825"
      },
      "user": {
        "login": "mrmans0n",
        "avatar_url": "https://avatars.githubusercontent.com/u/534307?u=fb18f723385198f142d373ffcfb3266f2b3794c5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjaKZ",
      "number": 1864,
      "title": "AeroSpace Runtime Error for unknown reason",
      "body": "### Body\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: server is disabled\r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: nil\r\nDate: 2025-12-25 19:28:32 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 14.8.3 (Build 23J220)\r\nCoordinate: AppBundle/refresh.swift:91:85 checkServerIsEnabledOrDie\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x000000010100e144 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2056\r\n1   AeroSpace                           0x0000000100e47a74 $s9AppBundle15RunSessionGuardV25checkServerIsEnabledOrDieACvgZTf4d_n + 224\r\n2   AeroSpace                           0x0000000100e2b52c $s9AppBundle04initaB0yyFyyYaKcfU_TY6_ + 24\r\n3   AeroSpace                           0x0000000100dcc4d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n4   libswift_Concurrency.dylib          0x00000002565a70f9 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\nComputer was idle and restarted due unknown error. Maybe this reboot caused this error",
      "created_at": "2025-12-25T19:32:18Z",
      "updated_at": "2026-01-01T22:20:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s2f",
        "body": "Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1881"
      },
      "user": {
        "login": "mishazawa",
        "avatar_url": "https://avatars.githubusercontent.com/u/7611372?u=137c8453276f70b0be0eada3b49d225cd1bdfac3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjeZs",
      "number": 1879,
      "title": "firefox and thunderbird want to start in safe mode",
      "body": "Hi all, I am new here, coming from Linux/Sway. I would like to replicate my sway setup where I launch apps with a simple key binding, like alt+t for thunderbird and alt+f for firefox. In sway I would just kill the window with cmd-q. Initially this seemed very similar in AeroSpace, with\r\n`alt+t  = 'exec-and-forget open -a /Applications/Thunderbird.app'`\r\nand then just do control+q as this seems to be the shortcut to close most apps in macos (and this works with spotify or wezterm). But if I do this with Firefox or Thunderbird, the applications want to start in safe mode. If I close the Firefox or Thunderbird with the red x close button on the macos window bar, I can use the shortcut to start the apps in normal mode. ",
      "created_at": "2026-01-01T16:48:14Z",
      "updated_at": "2026-01-01T22:06:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s2A",
        "body": "OK, I already found a simple solution. I just added\r\nalt+q = 'close' \r\nand this closes the window in a way that I can open it again with alt+t"
      },
      "user": {
        "login": "bjvca",
        "avatar_url": "https://avatars.githubusercontent.com/u/4040212?u=c4cf2822c9df922d1f9d24c7566744276bb56079&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aja1M",
      "number": 1869,
      "title": "[show-n-tell] I built a TUI for aerospace: https://github.com/magicmark/spacelist",
      "body": "https://github.com/magicmark/spacelist :)\r\n\r\n<img width=\"982\" height=\"741\" alt=\"screenshot\" src=\"https://github.com/user-attachments/assets/dbb645bf-866a-458b-a9c7-3642e1636b2f\" />\r\n\r\nBonus: I mapped [launcher.sh](https://github.com/magicmark/spacelist/blob/main/launcher.sh) to alt-s to have it pop into the center of the screen (still working on distributing this script as a flag)",
      "created_at": "2025-12-26T23:35:54Z",
      "updated_at": "2026-01-01T22:02:02Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "magicmark",
        "avatar_url": "https://avatars.githubusercontent.com/u/1590756?u=6bd0174a801c65d548e3306aec13d672cb97f709&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjaNu",
      "number": 1865,
      "title": "runtime error for no reason",
      "body": "### Body\n\nSteps to reproduce:\r\n1. I dont know actually\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102c5a598 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000102ab9120 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 396\r\n    2   AeroSpace                           0x0000000102ab930c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000102a2f5cc $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY9_ + 588\r\n    4   AeroSpace                           0x0000000102a2da65 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTQ1_ + 1\r\n    5   AeroSpace                           0x0000000102a2ffe1 $s9AppBundle11ModeCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000102a197ad $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTf4ngn_nTQ1_ + 1\r\n    7   AeroSpace                           0x0000000102a58c01 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    9   AeroSpace                           0x0000000102a913ed $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x000000028403c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x000000028403c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000102a88ddd $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x000000028403c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000028403c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x0000000102a7c19d $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg503$s9a39Bundle12activateModeyySSSgYaKFyycfU0_yyp5KcfU_sP13YbKScMYcXEfU_SSAA13HotkeyBindingVTf1nnnc_nTQ1_ + 1\r\n    18  AeroSpace                           0x0000000102a58751 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x0000000102a184d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000028407083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-12-25 22:56:09 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.7.2 (Build 24G325)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000102c5a144 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2056\r\n1   AeroSpace                           0x0000000102ab9418 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000102a2f5cc $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY9_ + 588\r\n3   AeroSpace                           0x0000000102a2da65 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTQ1_ + 1\r\n4   AeroSpace                           0x0000000102a2ffe1 $s9AppBundle11ModeCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000102a197ad $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTf4ngn_nTQ1_ + 1\r\n6   AeroSpace                           0x0000000102a58c01 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n8   AeroSpace                           0x0000000102a913ed $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x000000028403c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x000000028403c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x0000000102a88ddd $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000102a18af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x000000028403c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x000000028403c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x0000000102a7c19d $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg503$s9a39Bundle12activateModeyySSSgYaKFyycfU0_yyp5KcfU_sP13YbKScMYcXEfU_SSAA13HotkeyBindingVTf1nnnc_nTQ1_ + 1\r\n17  AeroSpace                           0x0000000102a58751 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x0000000102a184d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000028407083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-12-25T23:16:52Z",
      "updated_at": "2026-01-01T21:40:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s0x",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "EvolveArt",
        "avatar_url": "https://avatars.githubusercontent.com/u/12902455?u=ee5a9f2c1ed29fe7fb883a93579588f50ccc017d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajah0",
      "number": 1866,
      "title": "Major battery drainage",
      "body": "### Body\n\nLately, I got major battery drainage and I suspect Areospace involved in this.\r\n\r\n![telegram-cloud-photo-size-4-5931710549064354670-y](https://github.com/user-attachments/assets/3d5a0cc4-3873-4c79-89c5-d8fd7c869262)\r\n\r\n<img width=\"610\" height=\"160\" alt=\"image\" src=\"https://github.com/user-attachments/assets/afb9c886-839d-41e8-807f-34fa8f0b0a19\" />\r\n\r\n\r\nIn addition to that, I noticed a bug - sometimes on the bottom right of my screen, I see flickering animation (from Aerospace windows)\r\n![CleanShot 2025-12-26 at 17 37 55](https://github.com/user-attachments/assets/99c2f3ea-5b67-4e91-882d-2c89051cb7f4)\r\n\r\nAeroSpace v0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n\r\nAny help would be appreciated.\r\nThank you!",
      "created_at": "2025-12-26T10:42:32Z",
      "updated_at": "2026-01-01T21:39:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s0v",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/545\r\n\r\nThough I am curious what app it's that actively resists being moved to the corner?"
      },
      "user": {
        "login": "Thyless",
        "avatar_url": "https://avatars.githubusercontent.com/u/73272772?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajaup",
      "number": 1868,
      "title": "Focus previously focused monitor?",
      "body": "Hello,\r\n\r\nI have a use case in which I would like to focus the previously focused monitor. After reading the docs, I am not sure\r\nif such a feature exists?\r\n\r\nMy suggestion would be this, which would focus the previous monitor. A more verbose option\r\nwould be `previously-focused`.\r\n\r\n```sh\r\naerospace focus-monitor last\r\n```\r\n\r\nThis does not work well with 3 monitors.\r\n\r\n```sh\r\naerospace focus-monitor prev||aerospace focus-monitor next\r\n```\r\n\r\nFor now I am using this hacky solution to get the previously focused monitor.\r\n\r\n```sh\r\nexec-on-workspace-change = ['/bin/bash', '-c','~/.config/aerospace/aerospace.sh' ]\r\n\r\n[exec]\r\ninherit-env-vars = true\r\n[exec.env-vars] \r\nPATH = '/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}'\r\nXDG_CONFIG_HOME = '${HOME}/.config'\r\nVARS = '${HOME}/.config/aerospace/.vars'\r\n\r\nsome-key =  'exec-and-forget source $VARS;aerospace focus-monitor $PREV_MON'\r\n```\r\n\r\naerospace.sh\r\n\r\n```sh\r\n    PMON=$(aerospace list-workspaces --all --format \"%{workspace}@%{monitor-id}\" | grep \"^$AEROSPACE_PREV_WORKSPACE@\" | cut -d\"@\" -f2)\r\n    CURRENT_MON=$(aerospace list-monitors --json --focused | jq -r '.[].\"monitor-id\"')\r\n    if [ \"$CURRENT_MON\" != \"$PMON\" ];then # If we do not switch in the same monitor to another WS\r\n        gsed -i -r \"s/^PREV_MON=.*/PREV_MON=$PMON/\" \"$VARS\"\r\n    fi\r\n```\r\n\r\nIs there a better way?\r\n\r\nThanks",
      "created_at": "2025-12-26T18:42:58Z",
      "updated_at": "2026-01-01T21:38:41Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6s0q",
        "body": "Created an issue: https://github.com/nikitabobko/AeroSpace/issues/1880"
      },
      "user": {
        "login": "rickswe",
        "avatar_url": "https://avatars.githubusercontent.com/u/76216665?u=8c1f0535e59828c41d1c26d25ac2f9cb3232b7f7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjbdW",
      "number": 1873,
      "title": "Can you remove lettered workspaces?",
      "body": "```\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\nafter-login-command = [\r\n  'exec-and-forget sketchybar --reload',\r\n]\r\n\r\n# TODO: Customize these commands to launch your own status bar or other startup applications.\r\n# NOTE: 'exec-and-forget' runs a command in the background without waiting for it to finish.\r\nafter-startup-command = [\r\n  'exec-and-forget sketchybar --reload',\r\n  'exec-and-forget sketchybar --bar topmost=on',\r\n  'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0',\r\n]\r\non-focus-changed = [\r\n  \"move-mouse window-lazy-center\",\r\n  \"exec-and-forget sketchybar --trigger aerospace_workspace_change\"\r\n]\r\n\r\n# 'after-startup-command' is run after 'after-login-command'\r\nexec-on-workspace-change = [\r\n  \"/bin/bash\",\r\n  \"-c\",\r\n  \"sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE\",\r\n]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = false\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# NOTE: These settings automatically center the mouse cursor on the focused window or monitor.\r\n# This is a personal preference. Comment out or remove these lines if you don't like this behavior.\r\n\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# [key-mapping]\r\n# preset = 'qwerty'\r\n\r\n# TODO: Customize your gaps and monitor names here.\r\n# To find your monitor names, run the command: aerospace list-monitors\r\n# NOTE: The last value in each list (e.g., '5') is the fallback for any monitor not explicitly named.\r\n\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical = 10\r\nouter.left = 10\r\nouter.bottom = 10\r\nouter.top = 10\r\nouter.right = 10\r\n\r\n# 'main' binding mode declaration\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n# NOTE: This config uses 'alt' as the main modifier key (Mod Key).\r\n\r\n[mode.main.binding]\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# Normalizations\r\nalt-ctrl-h = 'split horizontal'\r\nalt-ctrl-v = 'split vertical'\r\nalt-f = 'macos-native-fullscreen'\r\nalt-s = 'layout v_accordion'\r\nalt-w = 'layout h_accordion'\r\nalt-e = 'layout tiles horizontal vertical'\r\nalt-shift-space = 'layout floating tiling'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = ['move-node-to-workspace 1', 'workspace 1', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-2 = ['move-node-to-workspace 2', 'workspace 2', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-3 = ['move-node-to-workspace 3', 'workspace 3', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-4 = ['move-node-to-workspace 4', 'workspace 4', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-5 = ['move-node-to-workspace 5', 'workspace 5', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-6 = ['move-node-to-workspace 6', 'workspace 6', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-7 = ['move-node-to-workspace 7', 'workspace 7', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-8 = ['move-node-to-workspace 8', 'workspace 8', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\nalt-shift-9 = ['move-node-to-workspace 9', 'workspace 9', 'exec-and-forget sketchybar --trigger aerospace_workspace_change']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# TODO: Change or Delete 'LEN T2424zA' to your primary or secondary monitor name if you want to pin workspaces.\r\n# Run 'aerospace list-monitors' to find the name.\r\n# NOTE: This forces workspaces A, B, C, and D to always appear on a specific monitor.\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#assign-to-workspaces-to-monitors\r\n# [workspace-to-monitor-force-assignment]\r\n# A = 'LEN T2424zA'\r\n# B = 'LEN T2424zA'\r\n# C = 'LEN T2424zA'\r\n# D = 'LEN T2424zA'\r\n\r\n# 'service' binding mode declaration.\r\n# NOTE: This mode is activated by pressing 'alt-shift-semicolon'. It contains less common commands.\r\n# Press 'esc' to return to 'main' mode.\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\n# esc = ['reload-config', 'mode main']\r\n# r = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n# f = [\r\n#   'layout floating tiling',\r\n#   'mode main',\r\n# ] # Toggle between floating and tiling layout\r\nalt-b = ['exec-and-forget sketchybar --reload', 'mode main']\r\n# backspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n#s = ['layout sticky tiling', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\ndown = 'volume down'\r\nup = 'volume up'\r\nshift-down = ['volume set 0', 'mode main']\r\n\r\n# Move applications to specific workspace\r\n# NOTE: The following rules automatically move apps to workspaces or make them float when they open.\r\n# Use 'aerospace list-apps' to find the 'app-id' and 'app-name' for your own applications.\r\n# Format of 'aerospace list-apps': Process ID | App ID | App Name\r\n\r\n# TODO: Add your own utility apps here that you always want to float.\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'SFSymbols|Finder|Microsoft AutoUpdate|Activity Monitor|ImageOptim|AppCleaner|parentapp'\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.mitchellh.ghostty\"\r\nrun = [\"layout tiling\"]\r\n\r\n# TODO: Customize or delete the following app-to-workspaces rules to match your workflow.\r\n\r\n# Move to Workspace 4 - Editing\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Final Cut Pro|OBS Studio|Motion|Compressor'\r\nrun = ['move-node-to-workspace 4']\r\n\r\n# Move to Workspace 5 - Gaming\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'NVIDIA|Boosteroid'\r\nrun = ['move-node-to-workspace 5']\r\n\r\n# Move to Workspace 6 - Work/Office Apps\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Microsoft Edge|Microsoft Teams|Microsoft Outlook'\r\nrun = ['move-node-to-workspace 6']\r\n\r\n[[on-window-detected]]\r\nrun = \"exec-and-forget sketchybar --trigger aerospace_workspace_change\"\r\n```\r\n\r\nI only want there to be active workspaces from 1-9 but all a-z are active. Also when I switch an app from an empty workspace to a full workspace, it doesnt update sketchybar and remove the workspace",
      "created_at": "2025-12-28T10:20:31Z",
      "updated_at": "2026-01-01T21:25:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AirMarshal",
        "avatar_url": "https://avatars.githubusercontent.com/u/39638189?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjeCf",
      "number": 1877,
      "title": "Is there a way to use `isDialogHeuristic` with `if`?",
      "body": "I like to have my regular apps assigned to workspaces with\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'com.todoist.mac.Todoist'\r\nrun = ['move-node-to-workspace P']\r\n```\r\n\r\nHowever, in the example above, this results in the global quick-entry for Todoist being moved from my current workspace to workspace P. I used debug-windows to look for ways I could key into the window title for the quick entry, but unfortunately, the title isn't differentiated from other potential window titles.\r\n\r\nLuckily, the global quick-entry is correctly identified as a dialog with `isDialogHeuristic`. Is there a way to key off of this in the `on-window-detected` block? Basically, I'd like to do `if.is-dialog = false`, but this doesn't work.\r\n\r\nAny ideas?",
      "created_at": "2025-12-31T21:28:06Z",
      "updated_at": "2026-01-01T21:24:18Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6sz_",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/103\r\n\r\n---\r\n\r\nI am currently leaning towards:\r\n```toml\r\n[[on-window-detected]]\r\nif = 'test --is-dialog'\r\nrun = 'move-node-to-workspace P'\r\n```\r\n\r\nWheres `test` is a new subcommand which will be likely introduced in scope of #278 "
      },
      "user": {
        "login": "basepi",
        "avatar_url": "https://avatars.githubusercontent.com/u/702318?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ajdwl",
      "number": 1876,
      "title": "MacOS 26.2 breaking aerospace?",
      "body": "### Body\n\nI updated my mac to 26.2 from 26.1 and aerospace is not functioning at all close to what it was in 26.1\r\nnavigation between windows in the current workspace is buggy, the windows layout of tiles is completly broken and the accordion is not fully utilizing the screen space.\r\nalos the worksapce number is not fully updating when changing apps so it confuses inner window movements. it is jsut a bit weird",
      "created_at": "2025-12-31T09:57:35Z",
      "updated_at": "2025-12-31T09:57:35Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bro-adm",
        "avatar_url": "https://avatars.githubusercontent.com/u/88341155?u=ca8152a9df8906c8296da6f18585eb031a522a94&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIwq",
      "number": 633,
      "title": "Is there an easy way to make just one specific window floating and centered in the current monitor/workspace?",
      "body": "I tried using the following bash script (called with a keyboard shortcut that is then executed by Raycast):\r\n\r\n```\r\n#!/bin/bash\r\n\r\n# Required parameters:\r\n# @raycast.schemaVersion 1\r\n# @raycast.title yekuake-omni\r\n# @raycast.mode silent\r\n\r\n# Optional parameters:\r\n# @raycast.icon 🤖\r\n\r\nnu -c \"emacsclient -s /Users/oscarvarto/.local/run/emacs/server -n -e '(yequake-toggle \"\\\"\"yequake-omni & scratch\"\\\"\")'\" &&\r\n  aerospace move left &&\r\n  aerospace layout floating\r\n```\r\n\r\nIt kind-of works, because it creates the emacs buffer and puts it horizontally centered for a specific starting state of my Windows (a terminal and an always present Emacs frame). _But_ Aerospace creates the window, modifies the tiling to make space for this newly created window, then moves it and changes the window to float.\r\n\r\nThe end result with all the window moving is very uncomfortable/distracting. Is there a way to suppress all the window animation/movements (sort of showing the end result window at a centered position only)? Maybe this is not possible, just wondering...\r\n\r\nBy the way, I am using \"Reduce motion\" ON in my `Accessibility > Display` setttings.",
      "created_at": "2024-07-27T19:26:55Z",
      "updated_at": "2025-12-30T12:05:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "oscarvarto",
        "avatar_url": "https://avatars.githubusercontent.com/u/1676245?u=4b55e7041a0e5c778c4cbcbaca57c4600a189c57&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AclqD",
      "number": 712,
      "title": "Profiles for different workplace setups",
      "body": "Hi,\r\n\r\nI have a question about creating two different workplace profiles in aerospace.\r\n\r\nIn the office, I use two 27” external displays, while at home, I have a single 37” external display. Unfortunately, my “on-windows-detect” settings don’t work seamlessly across both setups.\r\n\r\nI considered creating two different modes and assigning specific “on-windows-detect” settings to each, but it seems there’s no “if” condition available for [this mode](https://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback).\r\n\r\nThe only workaround I could think of is creating two separate configuration files and loading them based on the location.\r\n\r\nIs there a more elegant solution to achieve this?\r\n\r\nThanks",
      "created_at": "2024-11-16T16:56:09Z",
      "updated_at": "2025-12-30T10:04:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Speed1",
        "avatar_url": "https://avatars.githubusercontent.com/u/11215021?u=a4f485bf55d3c5a540dee7afdbf730b11cbeb17d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjbiK",
      "number": 1874,
      "title": "Change window tiling behavior to not appear halfway outside the screen",
      "body": "When using Aerospace on my 14 inch macbook I noticed a common problem: very often when opening more than one app (two apps) the right app very often enda up outside the screen. I understand that macos windows cant always be resized to a size smaller than half the screen, but placing half the window outside the screen is unintuitive. I would suggest overlapping the windows instead so that when you click a window that window appears om top.",
      "created_at": "2025-12-28T13:23:37Z",
      "updated_at": "2025-12-28T13:23:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Gittykittymitty",
        "avatar_url": "https://avatars.githubusercontent.com/u/144851385?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah_ii",
      "number": 1699,
      "title": "Alerts are treated as windows",
      "body": "### Body\n\nSteps to reproduce:\r\n\r\n1. Enable Tiling mode in Aerospace.\r\n2. Open an arbitrary directory with text files in Sublime Text (the editor window should fill the screen).\r\n3. Press Cmd+Shift+F to Find in Files and define some existing text fragment to replace.\r\n4. Press Replace.\r\n\r\nExpected result: A confirmation alert (a small modal dialog window) should pop up in front of the editor window, similar to the \"Do you want to save the changes...\" dialog. Here is what I'd expect:\r\n\r\n<img width=\"3840\" height=\"2160\" alt=\"CleanShot 2025-09-17 at 15 18 02@2x\" src=\"https://github.com/user-attachments/assets/d2db7571-e125-433e-bb4e-74663cdc23de\" />\r\n\r\nActual result: The editor window is resized to fill the left half of the screen, while the alert appears on the right side of the screen, as if it were a separate window or application.\r\n\r\n<img width=\"3840\" height=\"2160\" alt=\"CleanShot 2025-09-17 at 15 16 29@2x\" src=\"https://github.com/user-attachments/assets/d96d21d2-07c3-4131-a2c6-23d4cfaf1ee7\" />\r\n\r\nSimilar use case: if the Sublime Text window is on the secondary screen, the alert pops up on the primary screen instead of in front of the editor window.\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nmacOS 15.6.1 (24G90)",
      "created_at": "2025-09-17T13:20:05Z",
      "updated_at": "2025-12-28T10:19:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6lB6",
        "body": "Can't reproduce on 0.20.0-Beta. Sublime 'replace' dialog is treated as dialog.\r\n\r\nI guess you have the rule in `on-window-detected` to tile all Sublime Text windows (well, then it's expected behavior that this dialog is tiled)"
      },
      "user": {
        "login": "dreikanter",
        "avatar_url": "https://avatars.githubusercontent.com/u/126636?u=db75fccefe7f810904d7de246cf38f6b265a4303&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aja7Z",
      "number": 1870,
      "title": "Why are workspaces created for disconnected monitors?",
      "body": "Hello,\r\n\r\nI am using this config:\r\n\r\n```sh\r\n[workspace-to-monitor-force-assignment]\r\n# Monitor 1\r\n\"A\" = [1]\r\n\"B\" = [1]\r\n\"C\" = [1]\r\n\"D\" = [1]\r\n\"E\" = [1]\r\n\"F\" = [1]\r\n\r\n\r\n# Monitor 2\r\n\r\n\"G\" = [2]\r\n\"H\" = [2]\r\n\"I\" = [2]\r\n\"J\" = [2]\r\n\"K\" = [2]\r\n\"L\" = [2]\r\n\r\n\r\n# Monitor 3\r\n\r\n\"M\" = ['27D1']\r\n\"N\" = ['27D1']\r\n\"O\" = ['27D1']\r\n\"P\" = ['27D1']\r\n\"Q\" = ['27D1']\r\n\"R\" = ['27D1']\r\n```\r\n\r\nAt work I can be connected to  2 monitors. However, at home I have 3 monitors.\r\nWhen monitor 27D1 is not connected I don't think the workspaces should be created.\r\nNow when it's disconnected I have those extra workspaces M-R on one of my two monitors.\r\n\r\nI am aware that you can use patterns as well:\r\n\r\n```text\r\n    6 = ['secondary', 'dell']        # You can specify multiple patterns.\r\n                                     #   The first matching pattern will be used\r\n```\r\n\r\nFor now I'm just commenting out the monitors that are not connected at the time I start my Mac.\r\n\r\nIs there a solution to this? \r\n\r\nThanks",
      "created_at": "2025-12-27T05:35:14Z",
      "updated_at": "2025-12-27T06:07:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rickswe",
        "avatar_url": "https://avatars.githubusercontent.com/u/76216665?u=8c1f0535e59828c41d1c26d25ac2f9cb3232b7f7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhAYU",
      "number": 1601,
      "title": "Issue with my spanish keyboard layout",
      "body": "In my spanish keyboard layout I have an issue. You see, since of the way key codes work I imagine, some keys get treated like they were other keys. For example, in an usual QWERTY layout the key after l is ; if im right, but for me its ñ. But aerospace still treats it like a normal QWERTY layout and assumes ñ is ; (im guessing since of physical key codes). Is there a way to fix this?",
      "created_at": "2025-07-29T17:41:24Z",
      "updated_at": "2025-12-25T21:14:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "xblazegmd",
        "avatar_url": "https://avatars.githubusercontent.com/u/134009745?u=4477e13a16245b51e80cf7d67e3ea983539390b1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeGVI",
      "number": 1048,
      "title": "Flickering between workspaces on window close",
      "body": "When closing a window, if there is another window of that same application in another workspace, it will jump to that before jumping back quickly to where it should be (the workspace where the window was closed). It is a quick flicker, but still noticeable and jarring. This seems to happen for any application: Kitty, Chrome, Finder. I haven't found any other bug report or post describing this exact problem.\r\n\r\nI am on the latest version of aerospace and macOS. This happens with the example config too. ",
      "created_at": "2025-01-29T17:40:46Z",
      "updated_at": "2025-12-24T15:01:16Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "m12y",
        "avatar_url": "https://avatars.githubusercontent.com/u/9025487?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjJy0",
      "number": 1843,
      "title": "Switching between workspaces via keyboard shortcuts (Option + 1,2,3,4) has stopped working when app is selected",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Latest version of macOS and aerospace\r\n2. Focus an app/window (ghostty, Cursor, etc)\r\n3. Press shortcut to switch workspace\r\n\r\nExpected result:\r\nSwitching workspace\r\nActual result:\r\nNothing happens. It requires me to unfocus the app (click desktop/wallpaper) for it to work\r\n\r\nAnyone else has this problem?\r\n",
      "created_at": "2025-12-06T16:14:59Z",
      "updated_at": "2025-12-23T18:20:26Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6eZy",
        "body": "Apparently the bug was introduced by Sequoia and the fix is to just remap Option to another key like Cmd or Cntrl"
      },
      "user": {
        "login": "ReyNeill",
        "avatar_url": "https://avatars.githubusercontent.com/u/100320820?u=f9a3798f24cb804f2d4e29aace4487ef962f3a16&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjQaM",
      "number": 1852,
      "title": "Windows jump to Main Monitor when switching Workspaces on Secondary Monitor (despite \"Separate Spaces\" enabled)",
      "body": "### EDIT: I read the manual and learned this is regular behavior, sorry but I cant delete this post\r\n\r\n\r\n### Body\r\n\r\nSteps to reproduce:\r\nConnect two monitors: Main (Ultrawide) and Secondary (Portable).\r\nConfigure aerospace.toml to force-assign workspaces 1-5 to Main and 6-9 to Secondary (see config below).\r\nEnsure \"Displays have separate Spaces\" is enabled in macOS System Settings (restarted to confirm).\r\nManually create 4 spaces on the Secondary monitor via Mission Control.\r\nOpen a window (e.g., Terminal or Browser) on Workspace 6 (Secondary monitor).\r\nFocus Workspace 6, then execute the command to switch to Workspace 7 (workspace 7).\r\n\r\nExpected result:\r\nFocus should switch to Workspace 7 on the Secondary monitor. The window on Workspace 6 should disappear (hidden), and Workspace 7 should appear empty on the Secondary monitor. The Main monitor should remain unaffected.\r\n\r\nActual result:\r\nThe window originally on Workspace 6 (Secondary) visually \"jumps\" or overlays onto Workspace 1 on the Main monitor. The Secondary monitor often switches to the correct workspace, but the window management logic forces the content to the wrong screen during the transition.\r\n\r\nAdditional info\r\n```\r\n$ aerospace -v\r\naerospace 0.20.0-Beta\r\n```\r\nMonitor Configuration: \r\n`aerospace list-monitors `\r\noutput:\r\n```\r\n1 | LC49G95T     | (Main)\r\n2 | MSI MP161 E2 | (Secondary)\r\n```\r\nRelevant Config (aerospace.toml):\r\n\r\nIni, TOML\r\n\r\n```\r\n[workspace-to-monitor-force-assignment]\r\n    # Workspaces 1-5 go to Main (LC49G95T) -> fallback to Built-in\r\n    1 = ['^LC49G95T.*', '^Built-in.*']\r\n    2 = ['^LC49G95T.*', '^Built-in.*']\r\n    3 = ['^LC49G95T.*', '^Built-in.*']\r\n    4 = ['^LC49G95T.*', '^Built-in.*']\r\n    5 = ['^LC49G95T.*', '^Built-in.*']\r\n    \r\n    # Workspaces 6-9 go to Secondary (MSI) -> fallback to Main (LC49G95T) -> fallback to Built-in\r\n    6 = ['^MSI.*', '^LC49G95T.*', '^Built-in.*']\r\n    7 = ['^MSI.*', '^LC49G95T.*', '^Built-in.*']\r\n    8 = ['^MSI.*', '^LC49G95T.*', '^Built-in.*']\r\n    9 = ['^MSI.*', '^LC49G95T.*', '^Built-in.*']\r\n```\r\nTroubleshooting already performed (Issue persists):\r\n\r\n[x] Verified \"Displays have separate Spaces\" is ON and rebooted.\r\n[x] defaults read com.apple.spaces spans-displays returns 0.\r\n[x] \"Automatically rearrange Spaces\" is OFF.\r\n[x] \"When switching to an application, switch to a Space...\" is OFF.\r\n[x] Stage Manager is OFF.\r\n[x] Verified app \"Assign To\" is set to \"None\" in Dock options.\r\n[x] Tested removing fallback monitors (setting 6 = '^MSI.*' only), but the issue persists.",
      "created_at": "2025-12-12T19:03:54Z",
      "updated_at": "2025-12-23T09:42:16Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "patplue",
        "avatar_url": "https://avatars.githubusercontent.com/u/45387470?u=17911f649d29aa9f08621b0b629eb06212f032c4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjViP",
      "number": 1859,
      "title": "Crash on switching to next app window",
      "body": "### Body\r\n\r\n# Steps to reproduce:\r\n1. On an external monitor, the first screen active (#5 in my setup), 3 floating app windows, 3 regular (don't ask 😅).\r\n2. Try to change focus to next app using `alt+right` keybind.\r\n3. Crash.\r\n\r\n# Expected result:\r\nNo crash.\r\n\r\n# Actual result:\r\nCrash. This is reproducible. Happened again after AeroSpace restart. Status bar shows screens, layouts stay in place, aerospace unresponsive (does not react to key presses to move windows).\r\n\r\n# Additional info\r\n- app version: 0.20.0-Beta\r\n- installed through Homebrew\r\n- mac os: Tahoe 26.2\r\n- macbook pro 16\" with M1 Pro and 16gb\r\n\r\n# Crash report:\r\n```\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000105106598 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000104f65120 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 396\r\n    2   AeroSpace                           0x0000000104f6530c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000104edaba8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY4_ + 324\r\n    4   AeroSpace                           0x0000000104ed9a65 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTQ1_ + 1\r\n    5   AeroSpace                           0x0000000104edbfe1 $s9AppBundle11ModeCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000104ec57ad $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTf4ngn_nTQ1_ + 1\r\n    7   AeroSpace                           0x0000000104f04c01 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    9   AeroSpace                           0x0000000104f3d3ed $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x00000002816f62b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x00000002816f5f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000104f34ddd $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x00000002816f62b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x00000002816f5f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x0000000104f2819d $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg503$s9a39Bundle12activateModeyySSSgYaKFyycfU0_yyp5KcfU_sP13YbKScMYcXEfU_SSAA13HotkeyBindingVTf1nnnc_nTQ1_ + 1\r\n    18  AeroSpace                           0x0000000104f04751 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x0000000104ec44d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000028172f2fd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-12-19 07:37:51 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.2 (Build 25C56)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000105106144 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2056\r\n1   AeroSpace                           0x0000000104f65418 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000104edaba8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY4_ + 324\r\n3   AeroSpace                           0x0000000104ed9a65 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTQ1_ + 1\r\n4   AeroSpace                           0x0000000104edbfe1 $s9AppBundle11ModeCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000104ec57ad $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTf4ngn_nTQ1_ + 1\r\n6   AeroSpace                           0x0000000104f04c01 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n8   AeroSpace                           0x0000000104f3d3ed $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x00000002816f62b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x00000002816f5f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x0000000104f34ddd $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000104ec4af1 $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_Sb_TG5TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x00000002816f62b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x00000002816f5f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x0000000104f2819d $s9AppBundle15runLightSession__4bodyx6Common07RefreshE5EventO_AA03RunE5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg503$s9a39Bundle12activateModeyySSSgYaKFyycfU0_yyp5KcfU_sP13YbKScMYcXEfU_SSAA13HotkeyBindingVTf1nnnc_nTQ1_ + 1\r\n17  AeroSpace                           0x0000000104f04751 $s9AppBundle12activateModeyySSSgYaKFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x0000000104ec44d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000028172f2fd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```",
      "created_at": "2025-12-19T07:49:12Z",
      "updated_at": "2025-12-22T11:51:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6bme",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "pawelkata",
        "avatar_url": "https://avatars.githubusercontent.com/u/962904?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjR4K",
      "number": 1855,
      "title": "Crashing on start with 0.20.0-Beta on Tahoe",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Install via brew\r\n2. add config to ~/.config/aerospace/aerospace.toml <--- added the example one\r\n3. Start Aerospace\r\n\r\nExpected result: Running Aerospace\r\nActual result: Crash\r\n\r\n### Additional info\r\nMessage: \r\nVersion: 0.20.0-Beta\r\nGit hash: 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nrefreshSessionEvent: nil\r\nDate: 2025-12-15 10:45:54 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.2 (Build 25C56)\r\nCoordinate: AppBundle/initAppBundle.swift:16:18 initAppBundle()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001024055cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2036\r\n1   AeroSpace                           0x000000010246d3b0 $s6Common5check__4file4line6column8functionySb_SSyXKSSS2iSStF + 92\r\n2   AeroSpace                           0x000000010228b34c $s9AppBundle04initaB0yyFyyYaKcfU_TY4_ + 112\r\n3   AeroSpace                           0x000000010222c4d5 $s9AppBundle14GlobalObserverO7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n4   libswift_Concurrency.dylib          0x0000000287adf2fd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: Unknown. The server is not running",
      "created_at": "2025-12-15T10:51:31Z",
      "updated_at": "2025-12-22T06:03:58Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "latisen",
        "avatar_url": "https://avatars.githubusercontent.com/u/19386155?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjW3N",
      "number": 1862,
      "title": "Auto-float windows that fight with AeroSpace's resizing (like Proxmox console windows)",
      "body": "Proxmox's console windows will auto-fit to the terminal size so the (e.g. Firefox) window size keeps changing unless I manually float the window. I wonder how practical it would be to auto-detect this situation (repeated resize) and auto-float the window. 🤔",
      "created_at": "2025-12-21T11:16:16Z",
      "updated_at": "2025-12-21T11:18:34Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "XA21X",
        "avatar_url": "https://avatars.githubusercontent.com/u/784551?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adh86",
      "number": 884,
      "title": "Workspace Ordering",
      "body": "I believe workspaces are just ordered alphabetically, but is it possible to change that? For example, I want to have workspace 0 after 9 (since it's after it on the keyboard).",
      "created_at": "2024-12-24T17:33:29Z",
      "updated_at": "2025-12-19T21:21:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6X58",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1816"
      },
      "user": {
        "login": "rin-senpai",
        "avatar_url": "https://avatars.githubusercontent.com/u/31785428?u=d1dea82faec90f0c5a7c5304fa61d823c1254420&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzjS",
      "number": 976,
      "title": "Support for azerty keyboards",
      "body": "Hello,\r\n\r\nIs it possible to add the azerty configuration to Aerospace?\r\n\r\n\"\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\"\r\n\r\nIn addition, numbers and signs are reversed on azerty keyboards.\r\n\r\nHere's an illustration:\r\nhttps://www.journaldulapin.com/wp-content/uploads/2017/12/02-2.png\r\n\r\nAlso for azerty windows keyboards the configuration is as follows:\r\nhttps://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/KB_France.svg/1000px-KB_France.svg.png\r\n\r\nCan we add the following signs :\r\n| N   | APPLE   | Windows   |\r\n| --- | ------- | --------- |\r\n| 1   | &       | &         |\r\n| 2   | é       | é         |\r\n| 3   | \"       | \"         |\r\n| 4   | '       | '         |\r\n| 5   | (       | (         |\r\n| 6   | §       | -         |\r\n| 7   | è       | è         |\r\n| 8   | !       | _         |\r\n| 9   | ç       | ç         |\r\n| 0   | à       | à         |\r\n| --- | ------- | --------- |\r\n\r\nThanks in advance.",
      "created_at": "2024-04-03T12:08:49Z",
      "updated_at": "2025-12-19T17:17:02Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "KevinFalzone",
        "avatar_url": "https://avatars.githubusercontent.com/u/73254293?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjUQJ",
      "number": 1857,
      "title": "cmd+t on finder opens invisible window",
      "body": "### Body\n\nSteps to reproduce:\r\n1.go to finder with alt + h j k l .. (focus the window)\r\n2. press cmd + t which i think opens new tab but its an invisible windows, dont know how to get rid of it ( but i have a bind to close last window with alt shift q like in glazeWM which actually closes the invisible window\r\n\r\n\r\nExpected result: self explanatory, no invisible window or actually 2nd working finder \r\nActual result: invisible window\r\n\r\n### Additional info\r\n-",
      "created_at": "2025-12-17T20:59:28Z",
      "updated_at": "2025-12-22T15:30:35Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6Tgm",
        "body": "duplicate of https://github.com/nikitabobko/AeroSpace/issues/68"
      },
      "user": {
        "login": "vsvito420",
        "avatar_url": "https://avatars.githubusercontent.com/u/29019667?u=b67c928460d0c8ba9931d2d29890463ade35150a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai-0k",
      "number": 1814,
      "title": "i3's Scratchpad for Aerospace",
      "body": "Hi, i've made and bash implementation of i3's scratchpad for aerospace and wanted to share it with you)\r\nAlso would be nice if it's functionality will be native\r\n\r\n\r\n[scratchpad.sh](https://github.com/user-attachments/files/23700479/scratchpad.sh)\r\n\r\n\r\n```\r\n#!/usr/bin/env bash\r\nset -euo pipefail\r\n\r\n# ------------------------------------------------------------\r\n# Scratchpad FIFO Manager for Aerospace\r\n#\r\n# Features:\r\n# 1. Send any focused window to a scratchpad workspace (FIFO queue)\r\n# 2. Show windows from scratchpad one by one (next window appears, previous hides)\r\n# 3. Ensures windows are floating and raised above others\r\n# 4. Prevents duplicate entries in scratchpad\r\n# 5. Automatically removes closed windows from the queue\r\n# 6. Repeated 'send' on the same window removes it from the queue\r\n# ------------------------------------------------------------\r\n\r\nCOMMAND=\"${1:-}\"\r\nSCRATCHPAD=\"S\"\r\nFIRST_WS=\"1\"\r\nCURRENT_WS=$(aerospace list-workspaces --focused)\r\nQUEUE_DIR=\"$HOME/.config/aerospace/aerospace-scratchpad\"\r\nQUEUE_FILE=\"$QUEUE_DIR/queue\"\r\n\r\nmkdir -p \"$QUEUE_DIR\"\r\ntouch \"$QUEUE_FILE\"\r\n\r\n# ------------------------------------------------------------\r\n# Queue helpers\r\n# ------------------------------------------------------------\r\n\r\n# Adds a window ID to the end of the queue\r\nqueue_add() {\r\n    echo \"$1\" >> \"$QUEUE_FILE\"\r\n}\r\n\r\n# Removes a window ID from the queue\r\nqueue_remove() {\r\n    grep -vx \"$1\" \"$QUEUE_FILE\" > \"$QUEUE_FILE.tmp\" || true\r\n    mv \"$QUEUE_FILE.tmp\" \"$QUEUE_FILE\"\r\n}\r\n\r\n# Returns all window IDs in the queue\r\nqueue_all() {\r\n    cat \"$QUEUE_FILE\"\r\n}\r\n\r\n# Returns the first window ID in the queue\r\nqueue_first() {\r\n    head -n1 \"$QUEUE_FILE\"\r\n}\r\n\r\n# Returns the next window ID in the queue after the given window ID\r\nqueue_next_after() {\r\n    local current=\"$1\"\r\n    local list=($(queue_all))\r\n    for i in \"${!list[@]}\"; do\r\n        if [[ \"${list[$i]}\" == \"$current\" ]]; then\r\n            if (( i + 1 < ${#list[@]} )); then\r\n                echo \"${list[$((i+1))]}\"\r\n                return\r\n            fi\r\n        fi\r\n    done\r\n\r\n    # Return empty string if current is last\r\n    echo \"\"\r\n}\r\n\r\n# ------------------------------------------------------------\r\n# Window helpers\r\n# ------------------------------------------------------------\r\n\r\n# Returns true if the window exists in Aerospace\r\nwindow_exists() {\r\n    aerospace list-windows --all --format \"%{window-id}\" | grep -q \"$1\"\r\n}\r\n\r\n# Returns true if the window exists on the current workspace\r\nwindow_in_current_ws() {\r\n    aerospace list-windows --workspace \"$CURRENT_WS\" --format \"%{window-id}\" | grep -q \"$1\"\r\n}\r\n\r\n# Ensures the window is floating and ignores errors if it already is\r\nensure_floating() {\r\n    local id=\"${1:-}\"\r\n\r\n    # Do nothing if empty\r\n    [ -z \"$id\" ] && return 0\r\n\r\n    # Do nothing if window does not exist\r\n    if ! aerospace list-windows --all --format \"%{window-id}\" | grep -qx \"$id\"; then\r\n        return 0\r\n    fi\r\n\r\n    # Make floating, ignore errors\r\n    aerospace layout floating --window-id \"$id\" >/dev/null 2>&1 || true\r\n\r\n    return 0\r\n}\r\n\r\n# Returns the currently focused window ID\r\nget_focused_window_id() {\r\n    aerospace list-windows --focused --format \"%{window-id}\"\r\n}\r\n\r\n# ------------------------------------------------------------\r\n# Scratchpad operations\r\n# ------------------------------------------------------------\r\n\r\n# Removes a window from the queue and returns it to the current workspace if it was hidden\r\nunsend_window() {\r\n    local id=\"$1\"\r\n    queue_remove \"$id\"\r\n\r\n    # If window is currently on scratchpad workspace, move it back to first workspace\r\n    if aerospace list-windows --workspace \"$SCRATCHPAD\" --format \"%{window-id}\" | grep -qx \"$id\"; then\r\n        aerospace move-node-to-workspace \"$FIRST_WS\" --window-id \"$id\"\r\n        ensure_floating \"$id\"\r\n        aerospace focus --window-id \"$id\"\r\n    fi\r\n}\r\n\r\n# Sends the currently focused window to the scratchpad queue\r\n# If the window is already in the queue, remove it instead (toggle behavior)\r\nsend_focused_to_scratchpad() {\r\n    local id\r\n    id=$(get_focused_window_id)\r\n    [ -z \"$id\" ] && return 0\r\n\r\n    # Toggle: if window already in queue, remove it\r\n    if queue_all | grep -qx \"$id\"; then\r\n        unsend_window \"$id\"\r\n        return 0\r\n    fi\r\n\r\n    # Otherwise, add to queue and move to scratchpad\r\n    queue_add \"$id\"\r\n    ensure_floating \"$id\"\r\n    aerospace move-node-to-workspace \"$SCRATCHPAD\" --window-id \"$id\"\r\n}\r\n\r\n# Hides a window to the scratchpad workspace\r\nhide_window() {\r\n    local id=\"$1\"\r\n    ensure_floating \"$id\"\r\n    aerospace move-node-to-workspace \"$SCRATCHPAD\" --window-id \"$id\"\r\n}\r\n\r\n# Shows a window from the scratchpad on the current workspace\r\nshow_window() {\r\n    local id=\"$1\"\r\n    aerospace move-node-to-workspace \"$CURRENT_WS\" --window-id \"$id\"\r\n    ensure_floating \"$id\"\r\n    aerospace focus --window-id \"$id\"\r\n}\r\n\r\n# Returns the currently visible scratchpad window on the current workspace\r\nget_current_visible_window() {\r\n    for id in $(queue_all); do\r\n        if window_in_current_ws \"$id\"; then\r\n            echo \"$id\"\r\n            return\r\n        fi\r\n    done\r\n    echo \"\"\r\n}\r\n\r\n# Removes windows from the queue if they are closed\r\ncleanup_queue() {\r\n    local list=($(queue_all))\r\n    > \"$QUEUE_FILE\"\r\n    for id in \"${list[@]}\"; do\r\n        if window_exists \"$id\"; then\r\n            echo \"$id\" >> \"$QUEUE_FILE\"\r\n        fi\r\n    done\r\n}\r\n\r\n# Shows the next window in the FIFO queue and hides the current one\r\nshow_next_window() {\r\n    cleanup_queue\r\n    local current\r\n    current=$(get_current_visible_window)\r\n    local next=\"\"\r\n    \r\n    if [ -z \"$current\" ]; then\r\n        next=$(queue_first)\r\n    else\r\n        next=$(queue_next_after \"$current\")\r\n    fi\r\n\r\n    [ -n \"$current\" ] && hide_window \"$current\"\r\n    [ -n \"$next\" ] && show_window \"$next\"\r\n}\r\n\r\n# ------------------------------------------------------------\r\n# Entrypoint\r\n# ------------------------------------------------------------\r\n\r\nmain() {\r\n    case \"$COMMAND\" in\r\n        send)\r\n            send_focused_to_scratchpad\r\n            ;;\r\n        show)\r\n            show_next_window\r\n            ;;\r\n        *)\r\n            echo \"Usage: $0 {send|show}\"\r\n            exit 1\r\n            ;;\r\n    esac\r\n}\r\n\r\nmain\r\n```\r\n",
      "created_at": "2025-11-24T02:07:33Z",
      "updated_at": "2025-12-17T20:40:54Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nasonovdanila",
        "avatar_url": "https://avatars.githubusercontent.com/u/55660449?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhmEe",
      "number": 1658,
      "title": "VScode is treated as a dialog/floating",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open VScode\r\n2. VScode is acting as a dialog and floating around and can be had to focus/find\r\n\r\nExpected result:\r\nVScode should be treated as a window\r\n\r\nActual result:\r\nVScode is treated as a dialog\r\n\r\n### Additional info\r\n\r\nI could fix this by adding:\r\n```toml\r\n[[on-window-detected]]\r\n    if.app-id = 'com.microsoft.VSCode'\r\n    run = 'layout tiling'\r\n```\r\n\r\nShould I create a PR and update [isDialogHeuristic](https://github.com/nikitabobko/AeroSpace/blob/ed17fc02f5b42449184ec3209cc15cab25fa091b/Sources/AppBundle/util/AxUiElementMockEx.swift#L6) and just add:\r\n\r\n```swift\r\nif id == \"com.microsoft.VSCode\" {\r\n  return true\r\n}\r\n```\r\n\r\nOr is it more to it?\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-08-27T12:48:00Z",
      "updated_at": "2025-12-17T18:09:06Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2Ty0",
        "body": "I now realized that I had `\"window.nativeFullScreen\": false,` in my vscode config which means that vscode don't gets its own (native) workspace when I press the green full screen button.\r\nIf I set `\"window.nativeFullScreen\": true,` it works without `run = 'layout tiling'`.\r\n\r\nSorry for reporting this but now you know about `window.nativeFullScreen` :) "
      },
      "user": {
        "login": "oskarkivra",
        "avatar_url": "https://avatars.githubusercontent.com/u/48908693?u=2f26cb88d4103dd06e4f5781a3fd77c8acdc7bb6&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgPCn",
      "number": 1472,
      "title": "Supporting multiple input sources",
      "body": "Currently the official support for non standard keyboards (dvorak, colemak, multilingual etc) is through the `key-mapping` config.\r\n\r\nThis works great if I'm using the dvorak mode on my native keyboard, or using the standard US input source when on an external keyboard which already remaps things. However, when actively switching between layouts I currently have to edit my config to change `key-mapping` then save and reload my config each time.\r\n\r\nIt would be great if aerospace allowed you to define more than one `key-mapping` similar to binding modes and then allowed the menu bar or CLI to toggle them. I think this would allow folks to use whatever other tool (hammerspoon maybe) to switch the layout to match their use when they see fit.",
      "created_at": "2025-06-13T14:32:28Z",
      "updated_at": "2025-12-16T18:51:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "drewhayward",
        "avatar_url": "https://avatars.githubusercontent.com/u/24550162?u=2a6c94a276e26caea266090c5f41d83d7045a298&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjR82",
      "number": 1856,
      "title": "workspace-to-monitor-force-assignment with 'main' and 'secondary' patterns not working as expected",
      "body": "## What's happening (Actual behavior)\r\n\r\nMy config specifies:\r\n- Workspaces 6, 7, 8, 9 → go to `'secondary'` monitors\r\n- Workspace M → go to `'main'` monitor\r\n\r\nBut what's actually happening:\r\n- Workspaces **6-9 appear on my main monitor** (Built-in Retina Display)\r\n- Workspaces **10-11 appear on my secondary monitors** (ASUS VG32VQ1B and VG248)\r\n- This is the **opposite** of what I configured\r\n\r\n## What I'm expecting (Expected behavior)\r\n\r\n- Workspaces **6-9 should appear on my secondary/external monitors**\r\n- Workspace **M should appear on my main/built-in monitor**\r\n- Workspaces 10-11 shouldn't be assigned anywhere since I never configured them\r\n\r\n## The Config\r\n\r\n```toml\r\n[workspace-to-monitor-force-assignment]\r\n6 = 'secondary'\r\n7 = 'secondary'\r\n8 = 'secondary'\r\n9 = 'secondary'\r\nM = 'main'\r\n```\r\n\r\n## Environment\r\n\r\n- AeroSpace version: 0.19.2-Beta (d246f250)\r\n- macOS: Sonoma or later\r\n- Multiple monitors: 3 total\r\n\r\nMonitor setup (from `aerospace list-monitors`):\r\n1. Built-in Retina Display\r\n2. ASUS VG32VQ1B\r\n3. VG248\r\n\r\n## Root Cause\r\n\r\nThe generic patterns `'main'` and `'secondary'` in `workspace-to-monitor-force-assignment` appear to be either:\r\n1. **Reversed** - main/secondary logic is backwards\r\n2. **Not matching correctly** - the pattern matching is broken\r\n3. **Inverted internally** - AeroSpace's definition doesn't match expectations\r\n\r\nUsing specific monitor names as a workaround works, but breaks portability when switching between different sets of monitors.",
      "created_at": "2025-12-15T12:23:10Z",
      "updated_at": "2025-12-15T12:28:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Echarnus",
        "avatar_url": "https://avatars.githubusercontent.com/u/9265969?u=2d2e0c16daab1fbe0ce0d022fd7aa807ebb891ff&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjRnZ",
      "number": 1854,
      "title": "Hot corner to switch workspaces",
      "body": "Is it possible to set a hot corner to switch to a previous workspace? What about to view current workspaces in an expose-like view?\n\nI'm new and came from Totalspaces2, so was wondering if Aerospace had these 2 convenient functionalities.",
      "created_at": "2025-12-15T03:35:26Z",
      "updated_at": "2025-12-15T03:37:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Christopner",
        "avatar_url": "https://avatars.githubusercontent.com/u/10664325?u=57827ed650b8555b96a8bda4573b586a85d5fd0a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aegpz",
      "number": 1120,
      "title": "Same workspace key to switch previous",
      "body": "When I switch to workspace S with option + s then repressing the same keys should go back to previous workspace similar to what option + tab does, that way I don't have to remember if it is workspace x or workspace 1 what I used last, particularly default workspace like 1 is not very easy to tap or remember\r\n\r\nAlso considering, the current workspace is displayed as icon on top it is easy to repress to go back, and Aerospace allows most number of workspaces possible by default, many times I go to empty workspace trying to remember previous ones like what mnemonic I used is it s for safari or t for term, and finally using option tab or mac mission control shortcuts or trackpad to get to other windows",
      "created_at": "2025-02-21T11:17:16Z",
      "updated_at": "2025-12-15T03:20:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvAzb",
        "body": "`workspace --auto-back-and-forth`"
      },
      "user": {
        "login": "santhoshr",
        "avatar_url": "https://avatars.githubusercontent.com/u/2510419?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjRT7",
      "number": 1853,
      "title": "swap monitors (i.e. swap focused workspace from monitor a <--> focused workspace from monitor b)",
      "body": "I have a common use case where I will keep slack, zoom, teams, etc on one monitor and a working project on another (e.g. vim, etc.)\r\n\r\nit would be really powerful if I could quickly swap in a performant way (swap, doing something quick, and then swap back).\r\n\r\ni used an LLM to help me generate a binding to \"o\" after some trial and error. wondering if there's a better way to do this (and perhaps a way that might be more performant?)\r\n\r\n```\r\no = [\r\n  '''exec-and-forget bash -c '\r\nset -e\r\n\r\nmonitors=$(aerospace list-monitors --format \"%{monitor-id}\")\r\n[ $(echo \"$monitors\" | wc -l | tr -d \" \") -eq 2 ] || exit 0\r\n\r\nfocused_monitor=$(aerospace list-monitors --focused --format \"%{monitor-id}\")\r\nother_monitor=$(echo \"$monitors\" | grep -v \"^${focused_monitor}$\" | head -1)\r\n\r\n# Get visible workspaces (may be empty or 0)\r\nfocused_ws=$(aerospace list-workspaces --monitor \"$focused_monitor\" --visible || true)\r\nother_ws=$(aerospace list-workspaces --monitor \"$other_monitor\" --visible || true)\r\n\r\n# Normalize workspace 0 → empty\r\n[ \"$focused_ws\" = \"0\" ] && focused_ws=\"\"\r\n[ \"$other_ws\" = \"0\" ] && other_ws=\"\"\r\n\r\n# Count windows on each monitor\r\nfocused_windows=$(aerospace list-windows --monitor \"$focused_monitor\" | wc -l | tr -d \" \")\r\nother_windows=$(aerospace list-windows --monitor \"$other_monitor\" | wc -l | tr -d \" \")\r\n\r\n# CASE 1: both monitors have windows → illusion swap\r\nif [ \"$focused_windows\" -gt 0 ] && [ \"$other_windows\" -gt 0 ]; then\r\n  aerospace focus-monitor \"$other_monitor\"\r\n  aerospace summon-workspace \"$focused_ws\"\r\n\r\n  aerospace focus-monitor \"$focused_monitor\"\r\n  aerospace summon-workspace \"$other_ws\"\r\n  exit 0\r\nfi\r\n\r\n# CASE 2: focused has windows, other is empty → move focused ws\r\nif [ \"$focused_windows\" -gt 0 ] && [ \"$other_windows\" -eq 0 ]; then\r\n  aerospace focus-monitor \"$other_monitor\"\r\n  aerospace summon-workspace \"$focused_ws\"\r\n  aerospace focus-monitor \"$focused_monitor\"\r\n  exit 0\r\nfi\r\n\r\n# CASE 3: other has windows, focused is empty → pull theirs\r\nif [ \"$focused_windows\" -eq 0 ] && [ \"$other_windows\" -gt 0 ]; then\r\n  aerospace summon-workspace \"$other_ws\"\r\n  exit 0\r\nfi\r\n\r\n# CASE 4: both empty → do nothing\r\nexit 0\r\n'\r\n''',\r\n  \"mode main\"\r\n]\r\n```",
      "created_at": "2025-12-14T14:03:04Z",
      "updated_at": "2025-12-14T14:03:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bcp-dev-ops",
        "avatar_url": "https://avatars.githubusercontent.com/u/96540378?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhKPy",
      "number": 1611,
      "title": "Aerospace acting very laggy and slow when Godot 4.3 is opened on a Macbook m1 pro (Godot 4.4 doesnt work at all with Aerospace)",
      "body": "\r\n\r\nWhenever Godot is opened Aerospace becomes very unresponsive,  keyboard window switching becomes painfully slow and even the icon on the menu bar becomes almost unresponsive. Im running a Macbook m1 pro on macos 15.0,  Aerospace 0.19.2 and have tried how Godot 4.4 (their latest build) behaves and its even worse. Window is completely ignoring the existence of Aerospace. WHen I switch workspaces the Godot 4.4 window stays prevalent as if nothing happened ignoring all other tiled windows.\r\n",
      "created_at": "2025-08-06T12:06:10Z",
      "updated_at": "2025-12-14T08:31:13Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "markbabin",
        "avatar_url": "https://avatars.githubusercontent.com/u/177857914?u=ef6d15a87f9074dd1c35a41b4c557e52f52539e8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjHiU",
      "number": 1840,
      "title": "Resizing / Moving single Windows",
      "body": "Hello,\r\nI know... why coming up with a single window scenario when Aerospace is all about tiling windows...\r\nWell sometimes, I just like to open an application on my 49\" monitor and use it while it only takes a third of the screen's width. From what I saw - I can not really interact with single windows except for letting them float. \r\nSo my question is: Would it be possible to move and resize single windows around my screen when there is only one window, but let the tiling magic kick in as soon as I have more? Or does anyone use Aerospace in combination with another tool that solves this?\r\nThanks",
      "created_at": "2025-12-04T00:45:02Z",
      "updated_at": "2025-12-13T20:38:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wbhminnt",
        "avatar_url": "https://avatars.githubusercontent.com/u/30465254?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiO",
      "number": 959,
      "title": "Aerospace not registering key presses on letter keys",
      "body": "**Describe the bug**\r\nAerospace works great for a majority of the time. It suddenly stops tracking keyboard letter and number keys but chorded keys with modifiers will still work. It seems to have been caused by connecting to a monitor. I don't have a repo steps, but when it happens, it happens and it's not clear how to fix it.\r\n\r\n**Known solution**\r\nI stopped using Aerospace for now because it's not reliable enough at the moment. I wish I could help in anyway to improve it's reliability.\r\n\r\n**Steps to Reproduce**\r\nUse my config for a while and use an external monitor it'll eventually happen (maybe):\r\n\r\n```toml\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = false\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 8\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# on-focused-monitor-changed = ['move-mouse window-lazy-center']\r\n# on-focus-changed = ['move-mouse window-force-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        0\r\nouter.right =      0\r\n\r\n#\r\n# Bindings\r\n#\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\nctrl-alt-cmd-shift-space = ['mode alt']\r\n\r\n# ctrl-alt-cmd-shift-h = ['focus --boundaries-action stop left', 'move-mouse window-force-center']\r\n# ctrl-alt-cmd-shift-j = ['focus --boundaries-action stop down', 'move-mouse window-force-center']\r\n# ctrl-alt-cmd-shift-k = ['focus --boundaries-action stop up', 'move-mouse window-force-center']\r\n# ctrl-alt-cmd-shift-l = ['focus --boundaries-action stop right', 'move-mouse window-force-center']\r\n# ctrl-alt-cmd-shift-u = 'workspace prev'\r\n# ctrl-alt-cmd-shift-i = 'workspace next'\r\n# ctrl-alt-cmd-shift-p = ['focus-monitor prev', 'move-mouse window-force-center']\r\n# ctrl-alt-cmd-shift-n = ['focus-monitor next', 'move-mouse window-force-center']\r\n\r\n[mode.alt.binding]\r\n# ctrl-alt-cmd-shift-space = ['mode main']\r\nspace = ['mode main']\r\nesc = ['mode main']\r\nbacktick = ['reload-config', 'mode main']\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nslash = 'layout horizontal vertical'\r\n# Stack or unstack windows\r\ns = 'layout tiles accordion'\r\n\r\n#\r\n# Navigation\r\n#\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nh = ['focus --boundaries-action stop left', 'move-mouse window-force-center']\r\nj = ['focus --boundaries-action stop down', 'move-mouse window-force-center']\r\nk = ['focus --boundaries-action stop up', 'move-mouse window-force-center']\r\nl = ['focus --boundaries-action stop right', 'move-mouse window-force-center']\r\nu = 'workspace prev'\r\ni = 'workspace next'\r\np = ['focus-monitor prev', 'move-mouse monitor-force-center']\r\nn = ['focus-monitor next', 'move-mouse monitor-force-center']\r\n\r\nctrl-alt-cmd-shift-h = ['workspace prev']\r\nctrl-alt-cmd-shift-l = ['workspace next']\r\nctrl-alt-cmd-shift-k = ['focus-monitor prev', 'move-mouse window-force-center']\r\nctrl-alt-cmd-shift-j = ['focus-monitor next', 'move-mouse window-force-center']\r\n\r\nc = ['move-mouse window-force-center']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\n1 = 'workspace 1'\r\n2 = 'workspace 2'\r\n3 = 'workspace 3'\r\n4 = 'workspace 4'\r\n5 = 'workspace 5'\r\n6 = 'workspace 6'\r\n7 = 'workspace 7'\r\n8 = 'workspace 8'\r\n9 = 'workspace 9'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\ntab = 'workspace-back-and-forth'\r\n\r\n#\r\n# Moving\r\n#\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nshift-h = 'move left'\r\nshift-j = 'move down'\r\nshift-k = 'move up'\r\nshift-l = 'move right'\r\nshift-u = 'move-node-to-workspace prev'\r\nshift-i = 'move-node-to-workspace next'\r\nshift-p = 'move-workspace-to-monitor prev'\r\nshift-n = 'move-workspace-to-monitor next'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nshift-1 = 'move-node-to-workspace 1'\r\nshift-2 = 'move-node-to-workspace 2'\r\nshift-3 = 'move-node-to-workspace 3'\r\nshift-4 = 'move-node-to-workspace 4'\r\nshift-5 = 'move-node-to-workspace 5'\r\nshift-6 = 'move-node-to-workspace 6'\r\nshift-7 = 'move-node-to-workspace 7'\r\nshift-8 = 'move-node-to-workspace 8'\r\nshift-9 = 'move-node-to-workspace 9'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nshift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n#\r\n# Resizing\r\n#\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nminus = 'resize smart -64'\r\nequal = 'resize smart +64'\r\nshift-minus = 'resize smart -128'\r\nshift-equal = 'resize smart +128'\r\n\r\n#\r\n# Other\r\n#\r\n\r\nshift-r = ['flatten-workspace-tree', 'mode alt'] # reset layout\r\n#s = ['layout sticky tiling', 'mode alt'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n# Toggle fullscreen window\r\nf = ['fullscreen']\r\n# Float window (above)\r\na = ['layout floating']\r\n# Tile window\r\nt = ['layout tiling']\r\n\r\n\r\n#\r\n# Modes\r\n#\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nm = 'mode merge'\r\nr =  'mode resize'\r\nw = 'mode workspace'\r\ny = 'mode yank'\r\n\r\n\r\n[mode.merge.binding]\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nh = ['join-with left', 'mode alt']\r\nj = ['join-with down', 'mode alt']\r\nk = ['join-with up', 'mode alt']\r\nl = ['join-with right', 'mode alt']\r\n\r\n[mode.resize.binding]\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nr = 'mode alt'\r\nh = ['resize width -64']\r\nj = ['resize height -64']\r\nk = ['resize height +64']\r\nl = ['resize width +64']\r\nshift-h = ['resize width -8']\r\nshift-j = ['resize height -8']\r\nshift-k = ['resize height +8']\r\nshift-l = ['resize width +8']\r\n\r\n[mode.workspace.binding]\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nw = 'mode alt'\r\nh = ['workspace prev', 'move-mouse window-force-center']\r\nl = ['workspace next', 'move-mouse window-force-center']\r\nj = ['focus-monitor next', 'move-mouse window-force-center']\r\nk = ['focus-monitor prev', 'move-mouse window-force-center']\r\ny = 'mode yank-workspace'\r\nshift-h = ['move-node-to-workspace prev']\r\nshift-l = ['move-node-to-workspace next']\r\nshift-k = ['move-node-to-monitor prev']\r\nshift-j = ['move-node-to-monitor next']\r\n\r\n[mode.yank.binding]\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nh = ['move-node-to-workspace prev', 'mode alt', 'move-mouse window-force-center']\r\nl = ['move-node-to-workspace next', 'mode alt', 'move-mouse window-force-center']\r\np = ['move-node-to-monitor prev', 'focus-monitor prev', 'mode alt', 'move-mouse monitor-force-center']\r\nn = ['move-node-to-monitor next', 'focus-monitor next', 'mode alt', 'move-mouse monitor-force-center']\r\n\r\n[mode.yank-workspace.binding]\r\nspace = 'mode main'\r\nesc = 'mode workspace'\r\nh = ['move-node-to-workspace prev', 'mode workspace', 'move-mouse window-force-center']\r\nl = ['move-node-to-workspace next', 'mode workspace', 'move-mouse window-force-center']\r\nj = ['move-node-to-monitor next', 'mode workspace', 'move-mouse window-force-center']\r\nk = ['move-node-to-monitor prev', 'mode workspace', 'move-mouse window-force-center']\r\np = ['move-workspace-to-monitor prev', 'focus-monitor prev', 'mode workspace', 'move-mouse monitor-force-center']\r\nn = ['move-workspace-to-monitor next', 'focus-monitor next', 'mode workspace', 'move-mouse monitor-force-center']\r\n\r\n\r\n#\r\n# Application-specific configurations\r\n#\r\n\r\n# [[on-window-detected]]\r\n# run = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Code - Insiders|Cursor|Simulator|Warp|Xcode'\r\nrun = ['layout tiling', 'move-node-to-workspace 2']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Sublime Merge'\r\nrun = ['layout tiling', 'move-node-to-workspace 3']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Slack|Mailspring|Calendar|zoom.us'\r\nrun = ['layout tiling', 'move-node-to-workspace 4']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Signal|Discord|Messages'\r\nru\r\n```",
      "created_at": "2024-11-20T19:14:28Z",
      "updated_at": "2025-12-12T22:11:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "samholmes",
        "avatar_url": "https://avatars.githubusercontent.com/u/517469?u=be2374ee92c6a09058e11d679853cbb00fcd2a81&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjPfK",
      "number": 1851,
      "title": "Windows keep getting shuffled around",
      "body": "### Body\n\nMy windows keep getting shuffled around my monitors when I unlock my laptop. I have 2 additional monitors set up right now, quite a lot of windows in different stacks with acordions etc, but it seems everytime I unlock (some) of my windows move monitor or shuffle around.\r\n\r\nAny idea why?\r\n\r\n### Additional info\r\n\r\n```shell\r\n❯ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n",
      "created_at": "2025-12-11T18:59:37Z",
      "updated_at": "2025-12-11T18:59:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Davincible",
        "avatar_url": "https://avatars.githubusercontent.com/u/25869544?u=647ba423e238ee173aedd6e4537afec853b7d31d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjPT7",
      "number": 1850,
      "title": "Supporting custom display names",
      "body": "I have a floating office situation monitor display problem where I keep switching otherwise physically identical monitors And I need sometimes between the two or three different spots that I switch within the office a way to differentiate aerospace configuration based on the physical location I'm inside. \r\n\r\nI think that to that that end I can use the [BetterDisplay](https://github.com/waydabber/BetterDisplay) macOS application which allows me to rename individual monitors based on their serial ID and give them custom names. \r\n\r\nWhile that application seems to remember the monitors individually in a reasonable way, it appears like `aerospace list-monitors` does not detect those names in any way.\r\n\r\nIs this a reasonable ask to expect aerospace to have custom support for better displays monitor naming functionality? ",
      "created_at": "2025-12-11T14:35:59Z",
      "updated_at": "2025-12-11T14:35:59Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "damageboy",
        "avatar_url": "https://avatars.githubusercontent.com/u/125730?u=56d71ee480ee7648ad82b1064e82983be65fc8de&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjPMK",
      "number": 1849,
      "title": "Move floating windows around screen",
      "body": "Would love a command to move a floating window's xy position around the screen. If that exists already or there's a tool that gets that done, pls point me in that direction. Thank you",
      "created_at": "2025-12-11T11:45:06Z",
      "updated_at": "2025-12-11T11:45:06Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "iamgideonidoko",
        "avatar_url": "https://avatars.githubusercontent.com/u/54052461?u=e94c1c5485392790424faca4aa58e1e908ab36a2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgwkK",
      "number": 1555,
      "title": "Add metrics and logs to help debug sluggish behavior",
      "body": "Sometimes Aerospace seems to slow down for me (especially first thing in the morning) where each workspace switch can take up to a second or more and the switches gets queued up where it'll flash multiple switches at once.\r\n\r\nI am hoping to add a feature for Aerospace to include some logs to help narrow down the issue?",
      "created_at": "2025-07-15T17:13:35Z",
      "updated_at": "2025-12-11T10:58:10Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tomwang2011",
        "avatar_url": "https://avatars.githubusercontent.com/u/10409124?u=8921b4e175e5ae8187c41756d3bc929b44a70ab2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiXyU",
      "number": 1741,
      "title": "Old windows not being cleared out, tiling fails?",
      "body": "### Body\r\n\r\nRecently I keep having to restart AS as over time (possibly linked to sleep/wake cycle), but without a clear trigger, AS starts to include invisible windows into its tiling, for example my workspace 1 is usually just for kitty, I have only 1 open visible window but the window list shows:\r\n\r\n```shell\r\n ➪ aerospace list-windows --workspace \"1\"\r\n1077 | BetterTouchTool | \r\n1081 | BetterTouchTool | \r\n1764 | BetterTouchTool | \r\n1788 | BetterTouchTool | \r\n1811 | BetterTouchTool | \r\n1823 | BetterTouchTool | \r\n1855 | BetterTouchTool | \r\n1857 | BetterTouchTool | \r\n1859 | BetterTouchTool | \r\n1952 | Finder          | \r\n1955 | Finder          | \r\n1920 | Script Debugger | \r\n1981 | Script Debugger | \r\n1962 | Script Debugger | \r\n1973 | Script Debugger | \r\n1083 | SecurityAgent   | \r\n1686 | SecurityAgent   | \r\n132  | kitty           | \r\n149  | kitty           | \r\n154  | kitty           | \r\n1750 | kitty           | ɛaerospace\r\n```\r\n\r\nRestart only AS and my window list now looks like this with proper tiling:\r\n\r\n```shell\r\nε ➪ aerospace list-windows --workspace \"1\"\r\n1750 | kitty | ɛaerospace\r\n```\r\n\r\nI know there is an open issue for apps with native macOS tabs causing invisible windows, but this is not that (kitty doesn't use native tabs). It seems it keeps old windows or apps that were closed (script debugger is not even running) in the list.\r\n\r\nSteps to reproduce:\r\n1. Use AS in Tahoe?\r\n2. Open and close apps and windows, needs time for the bug to trigger.\r\n3. Not clearly reproducible but happens to me almost every day after several hours of work\r\n\r\nExpected result: do not have many old closed windows in the tiling list.\r\nActual result: tiling keeps invisible windows\r\n\r\n### Additional info\r\n\r\n```shell\r\nε ◎ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-11T01:31:20Z",
      "updated_at": "2025-12-09T13:05:10Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A35dL",
        "body": "The current suspect is https://github.com/nikitabobko/AeroSpace/issues/1615\r\n\r\nTry to (force) quit applications one by one to see if there is any hanging application that prevents AS from collecting dead windows"
      },
      "user": {
        "login": "iandol",
        "avatar_url": "https://avatars.githubusercontent.com/u/153905?u=4b004842535cb54540b43a57ec430075f300f787&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AivsS",
      "number": 1790,
      "title": "Add \"--boundaries\" option for \"focus-back-and-forth\" command",
      "body": "I would like the option to limit [focus-back-and-forth](https://nikitabobko.github.io/AeroSpace/commands#focus-back-and-forth)  to going back and forth on the current workspace only instead of jumping between workspaces. \r\n\r\nI've found that if I truly wanted to swap between workspaces, `workspace-back-and-forth` is better as the last thing that was focused on the other workspace is still focused when you return.",
      "created_at": "2025-11-05T10:09:30Z",
      "updated_at": "2025-12-09T11:36:10Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A6A1-",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1024\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/942\r\nhttps://github.com/nikitabobko/AeroSpace/issues/278\r\n\r\n```toml\r\nalt-tab = 'list-focus-history-stack --windows --workspace focused --prev | focus --window-id -'\r\n```\r\n\r\nTracking issues: https://github.com/nikitabobko/AeroSpace/issues/1024, https://github.com/nikitabobko/AeroSpace/issues/278"
      },
      "user": {
        "login": "keabarnes",
        "avatar_url": "https://avatars.githubusercontent.com/u/6176760?u=4b369f42283fadf564528f1b89449a28ab9c433d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiwuA",
      "number": 1794,
      "title": "MacOS 26.1. - Aerospace cannot be started",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Run aerospace on MacOS 26.1.\r\n2. Try to start it\r\n\r\nExpected result: Aerospace is running and working\r\nActual result: Aerospace does not even leave a log trace. It's like it was never started. You can start it as much as so you want but it seems to be non responsive like MacOS cannot open the app.",
      "created_at": "2025-11-06T10:48:52Z",
      "updated_at": "2025-12-08T17:33:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "denisvanmorgan",
        "avatar_url": "https://avatars.githubusercontent.com/u/25617934?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjLH4",
      "number": 1848,
      "title": "Commands to memorize and restore the mouse cursor position within the display/workspace",
      "body": "The current version only provides positioning the cursor to the center. It's tedious to reposition the cursor every time I switch between workspaces.\r\n\r\nThe desired functionality may be achieved by calling external utilities from Aerospace hooks, but it's best to be provided by Aerospace itself.",
      "created_at": "2025-12-07T19:23:09Z",
      "updated_at": "2025-12-07T19:23:09Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjK4-",
      "number": 1847,
      "title": "Aerospace focuses itself",
      "body": "Aerospace focuses itself, removing focus from the actual focused window.\r\n\r\n```shell\r\nlukahasch@mac:~/.config/ > sudo log stream --predicate 'process == \"WindowServer\" AND (eventMessage CONTAINS \"Focus\" OR eventMessage CONTAINS \"Front\")' --info --style compact\r\nFiltering the log data using \"process == \"WindowServer\" AND (composedMessage CONTAINS \"Focus\" OR composedMessage CONTAINS \"Front\")\"\r\nTimestamp               Ty Process[PID:TID]\r\n2025-12-07 15:48:15.767 I  WindowServer[386:e7b] [com.apple.SkyLight:processes] 0[SetFrontProcess]: Making 0x0-0x54054 the front process in session 0x186b1\r\n^C\r\nlukahasch@mac:~/.config/ > lsappinfo info -app ASN:0x0-0x54054\r\n\"AeroSpace\" ASN:0x0-0x54054:\r\n    bundleID=\"bobko.aerospace\"\r\n    bundle path=\"/nix/store/nnaa2ngahmzp3bmb3n6cljbxpcndnf4r-aerospace-0.20.0-Beta/Applications/AeroSpace.app\"\r\n    executable path=\"/nix/store/nnaa2ngahmzp3bmb3n6cljbxpcndnf4r-aerospace-0.20.0-Beta/Applications/AeroSpace.app/Contents/MacOS/AeroSpace\"\r\n    pid = 1183 type=\"UIElement\" flavor=3 Version=[ NULL ]  fileType=\"APPL\" creator=\"????\" Arch=ARM64\r\n    parentASN=ASN:0x1-0x49b:\r\n    launch time =  60 seconds ago, 2025/12/07 15:47:35 ( 1 minutes, 0.44158 seconds ago )\r\n    checkin time = 60 seconds ago, 2025/12/07 15:47:35 ( 1 minutes, 0.382081 seconds ago )\r\n    launch to checkin time: 0.05951 seconds\r\n```\r\n\r\nAerospace version:\r\n```shell\r\nlukahasch@mac:~/.config/ > aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n\r\nAerospace config:\r\n```toml\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = ['move-mouse window-lazy-center']\r\n\r\n[key-mapping]\r\n    preset = 'qwerty'\r\n\r\n[gaps]\r\n    inner.horizontal = 20\r\n    inner.vertical = 20\r\n    outer.left = 20\r\n    outer.bottom = 20\r\n    outer.top = 20\r\n    outer.right = 20\r\n\r\n[mode.main.binding]\r\n    cmd-1 = \"workspace 1\"\r\n    cmd-2 = \"workspace 2\"\r\n    cmd-3 = \"workspace 3\"\r\n    cmd-4 = \"workspace 4\"\r\n    cmd-5 = \"workspace 5\"\r\n    cmd-6 = \"workspace 6\"\r\n    cmd-7 = \"workspace 7\"\r\n    cmd-8 = \"workspace 8\"\r\n\r\n    cmd-ctrl-1 = \"move-node-to-workspace 1\"\r\n    cmd-ctrl-2 = \"move-node-to-workspace 2\"\r\n    cmd-ctrl-3 = \"move-node-to-workspace 3\"\r\n    cmd-ctrl-4 = \"move-node-to-workspace 4\"\r\n    cmd-ctrl-5 = \"move-node-to-workspace 5\"\r\n    cmd-ctrl-6 = \"move-node-to-workspace 6\"\r\n    cmd-ctrl-7 = \"move-node-to-workspace 7\"\r\n    cmd-ctrl-8 = \"move-node-to-workspace 8\"\r\n\r\n    ctrl-h = \"focus left\"\r\n    ctrl-l = \"focus right\"\r\n    ctrl-k = \"focus up\"\r\n    ctrl-j = \"focus down\"\r\n\r\n    ctrl-cmd-h = \"move left\"\r\n    ctrl-cmd-l = \"move right\"\r\n    ctrl-cmd-k = \"move up\"\r\n    ctrl-cmd-j = \"move down\"\r\n\r\n    cmd-shift-h = 'join-with left'\r\n    cmd-shift-j = 'join-with down'\r\n    cmd-shift-k = 'join-with up'\r\n    cmd-shift-l = 'join-with right'\r\n\r\n    cmd-shift-p = \"resize smart +50\"\r\n    cmd-shift-m = \"resize smart -50\"\r\n    cmd-shift-b = \"balance-sizes\"\r\n\r\n    cmd-shift-f = \"layout floating\"\r\n    cmd-shift-t = \"layout tiling\"\r\n\r\n[[on-window-detected]]\r\n    if.app-name-regex-substring = 'spotify'\r\n    run = ['move-node-to-workspace 2']\r\n\r\n[[on-window-detected]]\r\n    if.app-name-regex-substring = 'whatsapp'\r\n    run = ['move-node-to-workspace 3']\r\n\r\n[[on-window-detected]]\r\n    if.app-name-regex-substring = 'safari'\r\n    if.during-aerospace-startup = true\r\n    run = ['move-node-to-workspace 4']\r\n```\r\nThe value of enable-normalization-flatten-containers does not impact the bug.\r\nThe values of on-focused-monitor-changed and on-focus-changed do not impact the bug.\r\n\r\nPotential useful information:\r\n```shell\r\n\r\n#!/bin/bash\r\n\r\necho \"---- START $(date) ----\"\r\n\r\nwhile true; do\r\n  ts=$(date '+%Y-%m-%d %H:%M:%S')\r\n\r\n  front=$(osascript -e '\r\n    tell application \"System Events\"\r\n      try\r\n        return name of first application process whose frontmost is true\r\n      on error\r\n        return \"ERR\"\r\n      end try\r\n    end tell\r\n  ' 2>/dev/null)\r\n\r\n  keyowner=$(osascript -e '\r\n    tell application \"System Events\"\r\n      repeat with p in application processes\r\n        try\r\n          if exists window 1 of p then\r\n            if focused of window 1 of p is true then\r\n              return name of p\r\n            end if\r\n          end if\r\n        end try\r\n      end repeat\r\n      return \"NONE\"\r\n    end tell\r\n  ' 2>/dev/null)\r\n\r\n  winfocus=$(osascript -e '\r\n    tell application \"System Events\"\r\n      try\r\n        return focused of window 1 of (first application process whose frontmost is true)\r\n      on error\r\n        return \"ERR\"\r\n      end try\r\n    end tell\r\n  ' 2>/dev/null)\r\n\r\n  axelem=$(osascript -e '\r\n    tell application \"System Events\"\r\n      try\r\n        return value of attribute \"AXFocusedUIElement\" of (first application process whose frontmost is true)\r\n      on error\r\n        return \"ERR\"\r\n      end try\r\n    end tell\r\n  ' 2>/dev/null)\r\n\r\n  echo \"$ts FRONT=$front KEYOWNER=$keyowner WINFOCUS=$winfocus AX=$axelem\"\r\ndone\r\n```\r\n```shell\r\n2025-12-07 15:57:00 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:01 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:02 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:02 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:03 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:04 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:04 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:05 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:05 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:06 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:07 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:07 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:08 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:08 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:09 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:10 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n2025-12-07 15:57:10 FRONT=ghostty KEYOWNER=zed WINFOCUS=false AX=text area 1 of group 1 of group 1 of window ./diag.sh of application process ghostty\r\n``\r\nThe bug happened at around 2025-12-07 15:57:09.",
      "created_at": "2025-12-07T14:57:43Z",
      "updated_at": "2025-12-07T14:58:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lukahasch",
        "avatar_url": "https://avatars.githubusercontent.com/u/100469145?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjKQD",
      "number": 1844,
      "title": "move mouse after swap not as expected",
      "body": "Steps to reproduce:\r\n1.  `shift-f6 = ['swap left --wrap-around', 'move-mouse window-lazy-center', ]`\r\n\r\nExpected result:\r\n1. swaps window with left one to the left\r\n2. moves mouse to the new location on the left (same focused window)\r\n\r\nActual result:\r\n1. swaps window as expected\r\n2. but mouse is delayed by one operation\r\n\r\n\r\nhttps://github.com/user-attachments/assets/7d24408f-140a-4985-bf5b-f6fa4bbddc08\r\n\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n\r\n```\r\n",
      "created_at": "2025-12-07T02:09:58Z",
      "updated_at": "2025-12-07T02:10:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "devidw",
        "avatar_url": "https://avatars.githubusercontent.com/u/68775926?u=3991d83aa67b2979a66c0ddb5aaa68400ae34621&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhRlX",
      "number": 1631,
      "title": "Aerospace not executing some commands with 5 keys",
      "body": "### Body\n\nHi,\r\n\r\nI have the exact same config between 2 Mac M1 config (toml file can be found here https://github.com/alexandre-thauvin/dotfiles/blob/master/macos/config/aerospace/aerospace.toml)\r\nHowever on one of them Aerospace is acting weirdly.\r\n\r\nSome commands are just not executed. E.g. move left/right/up/down or move to workspace 1/2 (3/4/5 are ok weirdly...)\r\nI have tried to troubleshoot and as soon as I remove one of the key in the command, e.g. ctrl or alt then everything works. But the combination of 5 keys (ctrl-alt-cmd-shift-number/arrow) seems to create some bugs.\r\n\r\n-> Why it works totally fine one of my mac but not the other?\r\n-> Why this works:\r\n```\r\nctrl-alt-cmd-shift-3 = ['move-node-to-workspace 3', 'workspace 3']\r\nctrl-alt-cmd-shift-4 = ['move-node-to-workspace 4', 'workspace 4']\r\nctrl-alt-cmd-shift-5 = ['move-node-to-workspace 5', 'workspace 5']\r\n```    \r\n and this doesn't:\r\n```\r\nctrl-alt-cmd-shift-1 = ['move-node-to-workspace 1', 'workspace 1']\r\nctrl-alt-cmd-shift-2 = ['move-node-to-workspace 2', 'workspace 2']\r\n````\r\nSteps to reproduce:\r\n1. Use a 5 commands to move a window (right/left) or workspace \r\n\r\nExpected result:\r\nDo the command\r\nActual result:\r\nDo not do the command.\r\n### Additional info\r\n```\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-08-13T07:02:38Z",
      "updated_at": "2025-12-06T16:15:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alexandre-thauvin",
        "avatar_url": "https://avatars.githubusercontent.com/u/27420929?u=65912530e9b21ab6399b20d9b37b573b0d334b96&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfTXV",
      "number": 1302,
      "title": "Create empty workspace on the current monitor",
      "body": "I would like to create a new empty workspace on the current monitor instead of the main one.\r\n\r\nFrom the [multi-monitor documentation](https://nikitabobko.github.io/AeroSpace/guide#multiple-monitors)\r\n\r\n> The only difference between AeroSpace and i3 is switching to empty workspaces. When you switch to an empty workspace, AeroSpace puts the workspace on an assigned monitor; i3 puts the workspace on currently active monitor.\r\n\r\nNow one idea would be `workspace 10;move-workspace-to-monitor <var>`. The challenge here is not knowing if the workspace exists yet, which one the current monitor is and where the workspace should be moved to. Additionally you might have to figure out the current workspace on the main monitor to switch that monitor back to after the the workspace move. The move to another display would also be visually disruptive.\r\n\r\nIt might be hackable with a shell script, but feels like a lot logic is needed over having a feature flag like `workspace 10 --create-on-current-if-not-existing` or any more native way.",
      "created_at": "2025-04-15T15:07:04Z",
      "updated_at": "2025-12-06T15:58:47Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "volker-fr",
        "avatar_url": "https://avatars.githubusercontent.com/u/4174391?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiawo",
      "number": 1745,
      "title": "Workspace is falsely split as if it spanned two workspaces",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Move window A to an empty workspace\r\n2. Move window B to the same workspace\r\n3. Focus on that workspace\r\n\r\nExpected result: the windows are in a tiling or accordion layout together on the screen at the same time\r\nActual result: \r\nThe windows are in a layout together, but actually appear on different \"screens\".  Using `alt+<vim directional key>` can be used to focus between them, but we jump between two screens within the layout.\r\n\r\n\r\nhttps://github.com/user-attachments/assets/66baa8d5-7353-46c8-a233-241f014a30b8\r\n\r\n\r\n### Additional info\r\nOS: MacOS 15.1\r\nMonitors: one external monitor, laptop is shut while docker\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-13T14:52:01Z",
      "updated_at": "2025-12-05T23:44:53Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idiomattic",
        "avatar_url": "https://avatars.githubusercontent.com/u/63416154?u=d73a1dca7f1b00b877aed42d8c5a131f55e888f1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjJS5",
      "number": 1842,
      "title": "Incorrect window placement and phantoms for closed windows",
      "body": "### Body\n\nI'm experiencing two bugs very frequently, but not consistently all the time: sometimes aerospace just seems to work normally for a while, then they appear every single time for a while. It's consistent across apps.\r\n\r\n1. New windows (e.g., kitty \"New OS Window\" or Arc \"New Window\") are often not positioned correctly until any aerospace action is done. The windows just sit in the middle of the screen. They are _not_ floating; e.g., moving snaps them into the grid. The aerospace action can even be changing modes with a keybind.\r\n2. Closed windows leave an invisible \"shell\" that reserves space and can be focused, but has no window there, and with an id but no name in `aerospace list-windows`. `aerospace close <id>` fixes this.\r\n\r\nThis only happened recently, maybe when I upgraded to `0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347`\r\n\r\n# Workaround\r\n\r\nI found this so annoying that I wrote a script to workaround this for me every time it happens.\r\n\r\n```nushell\r\n#!/usr/bin/env nu\r\n\r\n# Aerospace (or _someone_) has a bug where it reserves space for invisible windows after they're actually closed. I've seen this with kitty and arc. These windows have the empty string as title.\r\n# This is really no fix, just a workaround.\r\n\r\naerospace list-windows --all --json |\r\n  from json |\r\n  where window-title == \"\" |\r\n  each {|row| aerospace close --window-id $row.window-id}\r\n```\r\n\r\nThis can be called from a keybinding or I just brute-forced it by executing it on every focus change via\r\n\r\n```toml\r\non-focus-changed = ['exec-and-forget cd; .local/bin/aerospace-fix-invisible-windows.nu']\r\n```\r\n\r\nThis gets rid of both issue 1. and 2. for me.\r\n\r\n# Info\r\n\r\n```\r\n❯ aerospace --version\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n\r\nI don't use `aerospace close` to close windows but the OS's naive window closing. (mainly so that Cmd-W can close tabs in my browser but windows otherwise)\r\n\r\nPotentially related to #1582 and #1615 .\r\n",
      "created_at": "2025-12-05T19:13:38Z",
      "updated_at": "2025-12-05T19:13:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sschuldenzucker",
        "avatar_url": "https://avatars.githubusercontent.com/u/1100776?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjFsZ",
      "number": 1835,
      "title": "Combining balance-sizes and resize in a keybind",
      "body": "### Body\n\nI recently got an ultra-wide monitor at 5120x1440. I typically have three columns (two accordions on either side of my primary window). By focusing my center window then running `balance-sizes` and `resize width 2560`, my primary window becomes a proper 16:9 (roughly, anyway) and centered on my display.\r\n\r\nHowever, when binding these commands together in a key bind results in strange behavior. The window becomes MUCH larger than the specified 2560.\r\n\r\nSteps to reproduce:\r\n1. Given the following configuration, adjusting the 2560 as appropriate for your display...\r\n    ```\r\n    [mode.resize.binding]\r\n    esc = [\"mode main\"]\r\n\r\n    b = [\"balance-sizes\", \"mode main\"]\r\n    r = [\"resize width 2560\", \"mode main\"]\r\n    k = [\"balance-sizes\", \"resize width 2560\", \"mode main\"]\r\n    ```\r\n2. Create a 3-column layout, and run the `b` bind.\r\n3. Focus the center window\r\n4. Run the `r` bind.\r\n5. Run the `k` bind.\r\n\r\nExpected result:\r\n- On running the `b` bind, make the 3 columns equal width\r\n- On running the `r` bind, resize the center window to 2560 wide\r\n- On running the `k` bind, first ensure the 3 columns are equal width, then resize the center window to 2560 wide\r\n\r\nActual result:\r\n- On `b`, three columns are made equal width ✅ \r\n- On `r`, the center window becomes 2560 wide ✅ \r\n- On `k`, the center window becomes MUCH wider than 2560 ❌ \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\n<details>\r\n<summary><code>aerospace.toml</code></summary>\r\n\r\n```toml\r\naccordion-padding = 90\r\nafter-login-command = []\r\nafter-startup-command = []\r\ndefault-root-container-layout = \"tiles\"\r\ndefault-root-container-orientation = \"auto\"\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\nexec-on-workspace-change = [\"/nix/store/zpqzz136dvfv9npbzyx31bwhnx7f929h-zsh-5.9/bin/zsh\", \"-c\", \"/usr/bin/osascript -e \\\"tell application id \\\\\\\"tracesOf.Uebersicht\\\\\\\" to refresh widget id \\\\\\\"simple-bar-index-jsx\\\\\\\"\\\"\"]\r\non-focus-changed = [\"exec-and-forget osascript -e 'tell application id \\\"tracesOf.Uebersicht\\\" to refresh widget id \\\"simple-bar-index-jsx\\\"'\"]\r\non-focused-monitor-changed = [\"move-mouse monitor-lazy-center\"]\r\nstart-at-login = false\r\n\r\n[gaps.inner]\r\nhorizontal = 10\r\nvertical = 10\r\n\r\n[gaps.outer]\r\nbottom = 10\r\nleft = 10\r\nright = 10\r\ntop = 0\r\n\r\n[key-mapping]\r\npreset = \"qwerty\"\r\n\r\n[mode.main.binding]\r\nalt-1 = \"workspace 1\"\r\nalt-2 = \"workspace 2\"\r\nalt-3 = \"workspace 3\"\r\nalt-4 = \"workspace 4\"\r\nalt-5 = \"workspace 5\"\r\nalt-6 = \"workspace 6\"\r\nalt-7 = \"workspace 7\"\r\nalt-8 = \"workspace 8\"\r\nalt-9 = \"workspace 9\"\r\nalt-cmd-space = \"workspace --auto-back-and-forth 1\"\r\nalt-h = \"focus left\"\r\nalt-j = \"focus down\"\r\nalt-k = \"focus up\"\r\nalt-l = \"focus right\"\r\nalt-r = [\"mode resize\"]\r\nalt-s = [\"mode service\"]\r\nalt-shift-1 = \"move-node-to-workspace 1\"\r\nalt-shift-2 = \"move-node-to-workspace 2\"\r\nalt-shift-3 = \"move-node-to-workspace 3\"\r\nalt-shift-4 = \"move-node-to-workspace 4\"\r\nalt-shift-5 = \"move-node-to-workspace 5\"\r\nalt-shift-6 = \"move-node-to-workspace 6\"\r\nalt-shift-7 = \"move-node-to-workspace 7\"\r\nalt-shift-8 = \"move-node-to-workspace 8\"\r\nalt-shift-9 = \"move-node-to-workspace 9\"\r\nalt-shift-h = \"move left\"\r\nalt-shift-j = \"move down\"\r\nalt-shift-k = \"move up\"\r\nalt-shift-l = \"move right\"\r\nalt-shift-slash = \"layout horizontal vertical\"\r\nalt-slash = \"layout tiles accordion\"\r\nalt-z = \"fullscreen\"\r\n\r\n[mode.resize.binding]\r\nalt-h = [\"resize width -100\"]\r\nalt-j = [\"resize height -100\"]\r\nalt-k = [\"resize height +100\"]\r\nalt-l = [\"resize width +100\"]\r\nb = [\"balance-sizes\", \"mode main\"]\r\nesc = [\"mode main\"]\r\nk = [\"balance-sizes\", \"resize width 2560\", \"mode main\"]\r\nr = [\"resize width 2560\", \"mode main\"]\r\n\r\n[mode.service.binding]\r\nalt-h = [\"join-with left\", \"mode main\"]\r\nalt-j = [\"join-with down\", \"mode main\"]\r\nalt-k = [\"join-with up\", \"mode main\"]\r\nalt-l = [\"join-with right\", \"mode main\"]\r\nesc = [\"mode main\"]\r\nf = [\"layout floating tiling\", \"mode main\"]\r\nr = [\"flatten-workspace-tree\", \"mode main\"]\r\n\r\n[[on-window-detected]]\r\nrun = [\"move-node-to-workspace 1\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.mitchellh.ghostty\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.obsproject.obs-studio\"\r\nwindow-title-regex-substring = \"Projector\"\r\n\r\n[[on-window-detected]]\r\ncheck-further-callbacks = true\r\nrun = [\"move-node-to-workspace 2\"]\r\n\r\n[on-window-detected.if]\r\nworkspace = \"1\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout tiling\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.raycast.macos\"\r\nwindow-title-regex-substring = \"AI Chat\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.apple.finder\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.downstairsgeek.crc\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.1password.1password\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.mosyle.macos.business\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.flexibits.fantastical2.mac\"\r\n\r\n[[on-window-detected]]\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-id = \"com.cocoatech.PathFinder-setapp\"\r\n\r\n[workspace-to-monitor-force-assignment]\r\n9 = 2\r\n\r\n```\r\n</details>\r\n",
      "created_at": "2025-12-02T04:44:21Z",
      "updated_at": "2025-12-02T12:46:44Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5vHf",
        "body": "Thanks, I confirm it's a bug https://github.com/nikitabobko/AeroSpace/issues/1837"
      },
      "user": {
        "login": "adamgoose",
        "avatar_url": "https://avatars.githubusercontent.com/u/611068?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjF-d",
      "number": 1836,
      "title": "Fatal Runtime error",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Connect DisplayLink hub with displaylink manager\r\n2. Boom\r\n\r\nExpected result: Everything works\r\nActual result: Boom\r\n\r\n### Additional info\r\n\r\n```shell\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102256278 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001020c79d4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x00000001020c7c80 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000102049b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n    4   AeroSpace                           0x000000010204c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x000000010204a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000102031751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n    7   AeroSpace                           0x0000000102073df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n    8   AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x00000001020dfb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000298a312b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000298a30f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001020de6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x0000000298a312b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000298a30f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x00000001020dd669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001020739c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001020305bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x0000000298a6a7c1 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-12-02 11:32:13 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.1 (Build 25B78)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 4\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001022557dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001020c7d8c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000102049b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n3   AeroSpace                           0x000000010204c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x000000010204a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000102031751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n6   AeroSpace                           0x0000000102073df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n7   AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x00000001020dfb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000298a312b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000298a30f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001020de6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000102030b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000298a312b1 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x0000000298a30f3d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x00000001020dd669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001020739c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001020305bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x0000000298a6a7c1 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n",
      "created_at": "2025-12-02T11:35:23Z",
      "updated_at": "2025-12-02T11:58:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5vBs",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "Tomstiani",
        "avatar_url": "https://avatars.githubusercontent.com/u/69791195?u=1146f4b4a156dfbef5aa1942f3ac224857c6068e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjC6t",
      "number": 1826,
      "title": "High CPU on M3 (air) - 30% pretty constant",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Run Aerospace, wait a minute or so\r\n2. CPU usage for AeroSpace stays around 30%\r\n3. Quit / start / same\r\n\r\nExpected result: TBH, 30% seems high I am not sure what it should be \"normally\"\r\nActual result: my battery seemed to disspapear\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n```\r\n",
      "created_at": "2025-11-28T03:18:45Z",
      "updated_at": "2025-12-02T01:37:07Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "smcavoy",
        "avatar_url": "https://avatars.githubusercontent.com/u/1228561?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjFIP",
      "number": 1833,
      "title": "Every time aerospace is enabled / disabled it will re-ask for permission, even if nothing changed.",
      "body": "### Body\n\nThe current problem appear when I restart aerospace, I ran an anaylisis on the codebase to understand better.  Here it is\r\n\r\n\r\nAeroSpace calls `tccutil reset Accessibility bobko.aerospace` on every startup when `AXIsProcessTrustedWithOptions` returns false, causing users to repeatedly grant accessibility permissions.\r\n\r\n## Code Location\r\n\r\n`Sources/AppBundle/util/accessibility.swift` lines 6-16:\r\n\r\n```swift\r\n@MainActor\r\nfunc checkAccessibilityPermissions() {\r\n    let options = [axTrustedCheckOptionPrompt: true]\r\n    if !AXIsProcessTrustedWithOptions(options as CFDictionary) {\r\n        resetAccessibility() // Because macOS doesn't reset it for us when the app signature changes...\r\n        terminateApp()\r\n    }\r\n}\r\n\r\nprivate func resetAccessibility() {\r\n    _ = try? Process.run(URL(filePath: \"/usr/bin/tccutil\"), arguments: [\"reset\", \"Accessibility\", aeroSpaceAppId])\r\n}\r\n```\r\n\r\n## Problem\r\n\r\nWhile the comment explains this is intentional (\"Because macOS doesn't reset it for us when the app signature changes\"), this creates a frustrating loop:\r\n\r\n1. User installs/updates AeroSpace\r\n2. User grants accessibility permission\r\n3. Next time toggle/restart AeroSpace, `AXIsProcessTrustedWithOptions` returns false (signature mismatch with stale TCC entry)\r\n4. AeroSpace resets TCC and terminates\r\n5. User must grant permission again\r\n6. Repeat on every restart/toggle\r\n\r\nThe TCC database entry becomes \"stale\" because it was granted for a previous code signature, but the reset removes it entirely rather than updating it.\r\n\r\n\r\n~ aerospace  -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n➜ ~\r\n\r\n",
      "created_at": "2025-12-01T13:25:18Z",
      "updated_at": "2025-12-01T19:00:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "adelin-b",
        "avatar_url": "https://avatars.githubusercontent.com/u/23508913?u=55dac5a5323d58a4c33a42849927088718d75669&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjE5P",
      "number": 1831,
      "title": "Weird Flashing when switching focus",
      "body": "### Body\n\nSteps to reproduce:\r\nI get weird flashing and moving of windows when i switch focus between tiles\r\nhttps://github.com/user-attachments/assets/ec46e7f4-37ac-41c5-b38c-61eff94706c0\r\n\r\nExpected result:\r\nActual result:\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n❯ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-12-01T08:29:26Z",
      "updated_at": "2025-12-01T09:18:57Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zucram",
        "avatar_url": "https://avatars.githubusercontent.com/u/5426869?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiBNV",
      "number": 1705,
      "title": "Mouse centers to wrong window when multiple windows of the same application are on separate workspaces across multiple monitors",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Create 3 unique workspaces numbered 1,2,3 (order possibly matters) across 3 monitors.\r\n2. Place two instances of the same application (i.e. Chrome) on workspace 1 and 2.\r\n3. Move the mouse or use hotkeys to go from monitor 3 to the application on monitor 2.\r\n\r\nExpected result: \r\nNothing, the mouse should move to the new window without triggering the centering event.\r\n\r\nIf centering when switching workspaces is intended functionality the mouse should center on the correct window and not jump between the instances.\r\n\r\nIdeally, the moving the mouse from one window to another should not trigger the centering functionality of the on-focused-monitor-changed event. \r\n\r\nActual result:\r\nThe mouse initially focuses on the correct window but then switches to the wrong window on monitor 1. If the mouse is moved during the time it’s incorrectly centered on that window, it will select it as the new focus.\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\n```\r\naccordion-padding = 30\r\nafter-login-command = []\r\nafter-startup-command = []\r\ndefault-root-container-layout = \"tiles\"\r\ndefault-root-container-orientation = \"horizontal\"\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\nexec-on-workspace-change = []\r\non-focus-changed = []\r\non-focused-monitor-changed = [\"move-mouse monitor-lazy-center\"]\r\nstart-at-login = false\r\n\r\n[exec]\r\ninherit-env-vars = true\r\n\r\n[gaps.inner]\r\nhorizontal = 10\r\nvertical = 10\r\n\r\n[gaps.outer]\r\nbottom = 10\r\nleft = 10\r\nright = 10\r\ntop = 10\r\n\r\n[key-mapping]\r\npreset = \"qwerty\"\r\n\r\n[mode.main.binding]\r\nalt-1 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}1\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-2 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}2\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-3 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}3\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-4 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}4\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-5 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}5\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-6 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}6\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-7 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}7\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-8 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}8\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-9 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}9\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-ctrl-j = \"move-node-to-monitor next --wrap-around --focus-follows-window\"\r\nalt-ctrl-k = \"move-node-to-monitor prev --wrap-around --focus-follows-window\"\r\nalt-down = \"resize height +100\"\r\nalt-enter = \"exec-and-forget open -a \\\"Kitty\\\"\"\r\nalt-f = \"fullscreen\"\r\nalt-j = \"focus --boundaries workspace --boundaries-action wrap-around-the-workspace dfs-next --ignore-floating\"\r\nalt-k = \"focus --boundaries workspace --boundaries-action wrap-around-the-workspace dfs-prev --ignore-floating\"\r\nalt-left = \"resize width -100\"\r\nalt-n = \"exec-and-forget open -a \\\"Kitty\\\" --args -e nvim -c VimwikiIndex\"\r\nalt-q = \"close\"\r\nalt-r = \"exec-and-forget open -a \\\"Kitty\\\" --args -e lfub\"\r\nalt-right = \"resize width +100\"\r\nalt-shift-1 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}1\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-2 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}2\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-3 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}3\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-4 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}4\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-5 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}5\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-6 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}6\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-7 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}7\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-8 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}8\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-9 = \"exec-and-forget bash -lc '\\n  monitorId=$(aerospace list-monitors --focused --format \\\"%{monitor-id}\\\" 2>/dev/null | head -1\\n)\\n  targetWorkspace=\\\"${monitorId}9\\\"\\n  aerospace move-node-to-workspace \\\"$targetWorkspace\\\"\\n  aerospace summon-workspace \\\"$targetWorkspace\\\"\\n'\\n\"\r\nalt-shift-j = \"swap dfs-next --wrap-around\"\r\nalt-shift-k = \"swap dfs-prev --wrap-around\"\r\nalt-shift-left = \"focus-monitor --wrap-around left\"\r\nalt-shift-q = \"exec-and-forget sysact\"\r\nalt-shift-r = \"exec-and-forget open -a \\\"Kitty\\\" --args -e htop\"\r\nalt-shift-right = \"focus-monitor --wrap-around right\"\r\nalt-shift-s = \"exec-and-forget bash -lc \\\"screencapture -i -c\\\"\"\r\nalt-shift-tab = \"focus-monitor --wrap-around left\"\r\nalt-space = \"layout floating tiling\"\r\nalt-tab = \"focus-monitor --wrap-around right\"\r\nalt-up = \"resize height -100\"\r\nalt-w = \"exec-and-forget open -a \\\"Google Chrome\\\"\"\r\n\r\n[[on-window-detected]]\r\ncheck-further-callbacks = false\r\nrun = [\"layout floating\"]\r\n\r\n[on-window-detected.if]\r\napp-name-regex-substring = \"(Microsoft Outlook|CalendarAgent|kuandoHUB)\"\r\nwindow-title-regex-substring = \"Reminder\"\r\n\r\n[[on-window-detected]]\r\ncheck-further-callbacks = true\r\nrun = \"layout tiling\"\r\n\r\n[on-window-detected.if]\r\n\r\n[workspace-to-monitor-force-assignment]\r\n11 = \"1\"\r\n12 = \"1\"\r\n13 = \"1\"\r\n14 = \"1\"\r\n15 = \"1\"\r\n16 = \"1\"\r\n17 = \"1\"\r\n18 = \"1\"\r\n19 = \"1\"\r\n21 = \"2\"\r\n22 = \"2\"\r\n23 = \"2\"\r\n24 = \"2\"\r\n25 = \"2\"\r\n26 = \"2\"\r\n27 = \"2\"\r\n28 = \"2\"\r\n29 = \"2\"\r\n31 = \"3\"\r\n32 = \"3\"\r\n33 = \"3\"\r\n34 = \"3\"\r\n35 = \"3\"\r\n36 = \"3\"\r\n37 = \"3\"\r\n38 = \"3\"\r\n39 = \"3\"\r\n41 = \"4\"\r\n42 = \"4\"\r\n43 = \"4\"\r\n44 = \"4\"\r\n45 = \"4\"\r\n46 = \"4\"\r\n47 = \"4\"\r\n48 = \"4\"\r\n49 = \"4\"\r\n51 = \"5\"\r\n52 = \"5\"\r\n53 = \"5\"\r\n54 = \"5\"\r\n55 = \"5\"\r\n56 = \"5\"\r\n57 = \"5\"\r\n58 = \"5\"\r\n59 = \"5\"\r\n61 = \"6\"\r\n62 = \"6\"\r\n63 = \"6\"\r\n64 = \"6\"\r\n65 = \"6\"\r\n66 = \"6\"\r\n67 = \"6\"\r\n68 = \"6\"\r\n69 = \"6\"\r\n71 = \"7\"\r\n72 = \"7\"\r\n73 = \"7\"\r\n74 = \"7\"\r\n75 = \"7\"\r\n76 = \"7\"\r\n77 = \"7\"\r\n78 = \"7\"\r\n79 = \"7\"\r\n81 = \"8\"\r\n82 = \"8\"\r\n83 = \"8\"\r\n84 = \"8\"\r\n85 = \"8\"\r\n86 = \"8\"\r\n87 = \"8\"\r\n88 = \"8\"\r\n89 = \"8\"\r\n91 = \"9\"\r\n92 = \"9\"\r\n93 = \"9\"\r\n94 = \"9\"\r\n95 = \"9\"\r\n96 = \"9\"\r\n97 = \"9\"\r\n98 = \"9\"\r\n99 = \"9\"\r\n```",
      "created_at": "2025-09-18T22:31:32Z",
      "updated_at": "2025-12-01T07:23:44Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Buttars",
        "avatar_url": "https://avatars.githubusercontent.com/u/17345308?u=d06da69e65efbe417e01ec60dcdd4ce650ec7207&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aip49",
      "number": 1777,
      "title": "Allow users to choose between QWERTY and QWERTZ",
      "body": "## Summary\r\n\r\nAerospace currently uses keybinds optimized for QWERTY keyboards (e.g., `alt+[`, `alt+]`). On QWERTZ keyboards (common in Germany, Austria, Switzerland), these special characters are in completely different positions, making the default keybinds awkward or impossible to use efficiently.\r\n\r\n## Problem\r\n\r\nOn QWERTZ keyboards:\r\n- Keys like `;`require `shift+,`\r\n- This means `alt-shift-semicolon` binding becomes `alt-shift-shift-,`, which doesn't work\r\n- Many special characters like `@`, `~`, `{`, `}`, `|`, `\\` are in different positions than QWERTY\r\n- The `Z` and `Y` keys are swapped\r\n- Umlauts (ä, ö, ü) occupy additional key positions, shifting other characters\r\n\r\nThis makes the out-of-the-box experience frustrating for QWERTZ users, who need to rebind many keybinds to work with their keyboard layout.\r\n\r\n## Use Case\r\n\r\nAs a German user with a QWERTZ keyboard, I want to:\r\n- Use intuitive keybinds that match my physical keyboard layout\r\n- Have a preset configuration optimized for QWERTZ layouts\r\n\r\n## Current Workaround\r\n\r\nUsers must manually rebind keybinds in their config file to use keys that are easily accessible on QWERTZ, but this:\r\n- Requires understanding the entire default config\r\n- Takes significant time to set up\r\n- May not be obvious to new users why some keybinds wont work\r\n\r\n## Additional Context\r\n\r\nThis affects users in:\r\n- Germany\r\n- Austria  \r\n- Switzerland\r\n- Czech Republic\r\n- Hungary\r\n- Other Central European countries using QWERTZ\r\n\r\nGiven macOS's international user base, having better keyboard layout support would significantly improve accessibility for non-US users.",
      "created_at": "2025-10-29T11:24:55Z",
      "updated_at": "2025-11-30T08:37:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Kazuto",
        "avatar_url": "https://avatars.githubusercontent.com/u/25435034?u=cde1133f7c48fd666ddf2bcb4a745a6bb39667a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdLrG",
      "number": 839,
      "title": "Resize to relative screen size",
      "body": "I would like a command that lets me resize a window to 1/3 of the screen and inversely the other one to 2/3. Since I work with different external monitors (with different resolutions) relative instead of absolute numbers would be great.\r\n\r\nIf this is already achievable I would appreciate a cue into the right direction.",
      "created_at": "2024-12-10T13:12:46Z",
      "updated_at": "2025-11-29T11:19:45Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4bbG",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/397"
      },
      "user": {
        "login": "domvo",
        "avatar_url": "https://avatars.githubusercontent.com/u/17209506?u=103c49a3b9440ec9dd52dc95319bcac20aef6ce1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjD1C",
      "number": 1829,
      "title": "Half my move commands stop working",
      "body": "I have my move commands setup like this:\r\n\r\n```\r\nctrl-cmd-alt-left = 'move left'\r\nctrl-cmd-alt-down = 'move down'\r\nctrl-cmd-alt-up = 'move up'\r\nctrl-cmd-alt-right = 'move right'\r\n```\r\n\r\nTurns out that up and down still work, but left and right stopped working. I have no clue why.\r\n\r\nI installed ShortcutDetective and that is properly picking up that up and down are caught by Aerospace. Left and right are not caught by anybody…\r\n\r\nAnybody an idea?",
      "created_at": "2025-11-29T10:54:49Z",
      "updated_at": "2025-11-29T10:57:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alper",
        "avatar_url": "https://avatars.githubusercontent.com/u/72429?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjDs4",
      "number": 1828,
      "title": "Change window gaps at runtime",
      "body": "I use SketchyBar, and sometimes I need to hide it during my workflow. There is no documentation on how to change the gaps between windows during runtime using a shortcut. I tried searching everywhere, but there seems to be no such option.",
      "created_at": "2025-11-29T04:34:45Z",
      "updated_at": "2025-11-29T04:34:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "IvanKoskov",
        "avatar_url": "https://avatars.githubusercontent.com/u/186393278?u=309c1a678eb161aa04f979d23a55c1b96bb630a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjCky",
      "number": 1824,
      "title": "pgadmin4 makes aerospace freeze since v.0.20.0-Beta",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Having pgadmin4 installed and aerospace v0.20.0-Beta.\r\n2. Open it.\r\n3. Aerospace is frozen: cannot switch workpaces, pgadmin4 window seems not focused.\r\n\r\nExpected result: Before v0.20.0-beta, pgadmin4 was working as expected (window focused etc..)\r\nActual result: After v0.20.0-beta, aerospace bugs.\r\n\r\n### Additional info\r\n\r\nClosing pgadmin4 makes aerospace working again (can switch workspace).\r\n\r\nSeems like it's linked with pgadmin4 popup that appears before the app is really started, and how aerospace handles this since this latest update.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-11-27T15:03:49Z",
      "updated_at": "2025-11-27T23:44:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Valentin1311",
        "avatar_url": "https://avatars.githubusercontent.com/u/72311773?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5Nb",
      "number": 989,
      "title": "AeroSpace has trouble navigating between Orion Browser windows and the space where it lives.",
      "body": "\r\nhttps://github.com/user-attachments/assets/9a7b5c41-45d2-49d3-abe3-5dd3cde4b1ac\r\n\r\nIt happens when clicking on the windows, opening tabs. moving to a space with orion, and etc. I don't know if there are any other Orion + AeroSpace users around, but if you do please let me know below if this also happens to you. If this happens with other applications and there is a workaround, please let me know.\r\n\r\nVersion: AeroSpace v0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\n\r\nhttps://kagi.com/orion/",
      "created_at": "2025-01-17T18:37:47Z",
      "updated_at": "2025-11-27T17:06:58Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "brunoti",
        "avatar_url": "https://avatars.githubusercontent.com/u/6011421?u=4e7071c856688ee4ccceceda6ffa23ae22d991cd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjCW5",
      "number": 1823,
      "title": "`exec-and-forget` bindings with `||` for focus→workspace fallback broken in 0.20.0-Beta",
      "body": "In AeroSpace 0.19.2-Beta the following binding pattern reliably switched workspaces when focus in a direction failed:\r\n```\r\nctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace next']\r\n```\r\nAfter upgrading to 0.20.0-Beta this no longer triggers the fallback workspace switch in real usage, even though the same command chain works when executed directly in a shell (zsh). Attempts to tweak focus parameters did not restore prior behavior.\r\n\r\n## Affected Bindings\r\n```toml\r\nctrl-alt-cmd-h = ['exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev']\r\nctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace next']\r\n```\r\n\r\n## Expected Behavior (from 0.19.2-Beta usage)\r\n- When `focus <direction>` cannot move (edge reached) with `--boundaries-action fail`, the command exits non-zero causing the `||` fallback to execute (workspace change).\r\n\r\n## Actual Behavior in 0.20.0-Beta\r\n- `focus <direction>` fails when at workspace boundary (no window to focus), but the `||` fallback does not execute - workspace does not switch despite focus returning an error.\r\n- Shell execution still behaves as expected, confirming the fallback logic itself is fine when parsed by zsh.\r\n\r\n## Other `||` Bindings Still Working\r\nBindings that chain non-focus commands with `||` (e.g. move + workspace fallback such as:\r\n```toml\r\nctrl-alt-cmd-shift-h = ['exec-and-forget aerospace move left --boundaries all-monitors-outer-frame --boundaries-action stop || aerospace move-node-to-workspace 1 --focus-follows-window']\r\n```\r\ncontinue to behave as expected. The issue seems specific to directional `focus` calls not failing where failure was previously relied upon. I know this is a different scenario but I am using this since I can not move nodes across workspaces on the same monitor for now with that binding.\r\n\r\n## Reproduction Steps\r\n1. Have exactly two workspaces (e.g. 1 with VS Code, 2 with a terminal).\r\n2. On workspace 1, focus a window at the extreme right edge.\r\n3. Press `ctrl-alt-cmd-l` with the original binding (no explicit `--boundaries`).\r\n4. Observe: No workspace switch occurs (focus returns exit code 0, fallback not triggered).\r\n5. Run the equivalent in terminal:\r\n   ```bash\r\n   aerospace focus right --boundaries-action fail || aerospace workspace next\r\n   ```\r\n   If truly at boundary, workspace changes (shell handles `||`).\r\n6. (Optional verification) Run same focus chain in terminal; observe fallback triggers when focus truly fails.\r\n\r\n\r\n## Environment\r\n- Machine: MacBook Air M2 16GB\r\n- macOS: 26.1 (Build 25B78)\r\n- Install method: Homebrew Cask upgrade (`brew upgrade aerospace`)\r\n- AeroSpace Version Transition: 0.19.2-Beta → 0.20.0-Beta\r\n- Config file location: `~/.aerospace.toml`\r\n- Reproduced on: Two separate MacBook Air M2 machines with identical macOS 26.1 (Build 25B78), identical AeroSpace config (file diff = 0), identical workspace/window setup.\r\n\r\n---\r\n\r\n## Appendix: Test Automation\r\n\r\n<details>\r\n<summary>Test Script (aerospace-bug-test.sh)</summary>\r\n\r\n```bash\r\n#!/bin/zsh\r\n\r\n# AeroSpace 0.19 -> 0.20 Beta Bug Test Script\r\n# This script documents the regression in conditional command execution\r\n\r\nLOG_FILE=\"aerospace-bug-report-$(date +%Y%m%d-%H%M%S).log\"\r\n\r\n# Function to log with timestamp\r\nlog() {\r\n    echo \"[$(date '+%Y-%m-%d %H:%M:%S')] $*\" | tee -a \"$LOG_FILE\"\r\n}\r\n\r\n# Function to log section headers\r\nlog_section() {\r\n    echo \"\" | tee -a \"$LOG_FILE\"\r\n    echo \"========================================\" | tee -a \"$LOG_FILE\"\r\n    echo \"$1\" | tee -a \"$LOG_FILE\"\r\n    echo \"========================================\" | tee -a \"$LOG_FILE\"\r\n}\r\n\r\n# Function to test aerospace commands\r\ntest_aerospace_commands() {\r\n    local version_label=\"$1\"\r\n    log_section \"Testing AeroSpace Commands - $version_label\"\r\n    \r\n    log \"Current AeroSpace version:\"\r\n    aerospace --version 2>&1 | tee -a \"$LOG_FILE\"\r\n    \r\n    log \"\"\r\n    log \"Test 1: Focus left with fallback to workspace prev\"\r\n    log \"Command: aerospace focus left --boundaries-action fail || aerospace workspace prev\"\r\n    log \"Expected: Should focus left, or if that fails, go to previous workspace\"\r\n    log \"Executing...\"\r\n    \r\n    # Execute and capture both stdout and stderr\r\n    aerospace focus left --boundaries-action fail 2>&1 | tee -a \"$LOG_FILE\"\r\n    local exit_code=$?\r\n    log \"Exit code: $exit_code\"\r\n    \r\n    if [ $exit_code -ne 0 ]; then\r\n        log \"First command failed (expected), trying fallback...\"\r\n        aerospace workspace prev 2>&1 | tee -a \"$LOG_FILE\"\r\n        log \"Fallback exit code: $?\"\r\n    fi\r\n    \r\n    sleep 2\r\n    \r\n    log \"\"\r\n    log \"Test 2: Focus right with fallback to workspace next\"\r\n    log \"Command: aerospace focus right --boundaries-action fail || aerospace workspace next\"\r\n    log \"Expected: Should focus right, or if that fails, go to next workspace\"\r\n    log \"Executing...\"\r\n    \r\n    aerospace focus right --boundaries-action fail 2>&1 | tee -a \"$LOG_FILE\"\r\n    exit_code=$?\r\n    log \"Exit code: $exit_code\"\r\n    \r\n    if [ $exit_code -ne 0 ]; then\r\n        log \"First command failed (expected), trying fallback...\"\r\n        aerospace workspace next 2>&1 | tee -a \"$LOG_FILE\"\r\n        log \"Fallback exit code: $?\"\r\n    fi\r\n    \r\n    sleep 2\r\n    \r\n    log \"\"\r\n    log \"Test 3: Testing the actual config binding simulation\"\r\n    log \"Simulating: exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev\"\r\n    \r\n    # Test in subshell like exec-and-forget would\r\n    (aerospace focus left --boundaries-action fail || aerospace workspace prev) 2>&1 | tee -a \"$LOG_FILE\"\r\n    log \"Combined command exit code: $?\"\r\n    \r\n    sleep 2\r\n    \r\n    log \"\"\r\n    log \"Test 4: Verifying workspace commands work independently\"\r\n    log \"Command: aerospace workspace prev\"\r\n    aerospace workspace prev 2>&1 | tee -a \"$LOG_FILE\"\r\n    log \"Exit code: $?\"\r\n    \r\n    sleep 1\r\n    \r\n    log \"Command: aerospace workspace next\"\r\n    aerospace workspace next 2>&1 | tee -a \"$LOG_FILE\"\r\n    log \"Exit code: $?\"\r\n}\r\n\r\n# Start logging\r\nlog_section \"AeroSpace Bug Report - Conditional Command Regression\"\r\nlog \"Report generated on: $(date)\"\r\nlog \"Testing machine: $(hostname)\"\r\n\r\nlog_section \"System Information\"\r\nlog \"macOS Version:\"\r\nsw_vers | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Hardware:\"\r\nsystem_profiler SPHardwareDataType | grep -E \"Model Name|Model Identifier|Chip|Memory\" | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Shell:\"\r\necho \"$SHELL\" | tee -a \"$LOG_FILE\"\r\n$SHELL --version 2>&1 | head -1 | tee -a \"$LOG_FILE\"\r\n\r\nlog_section \"Homebrew Information\"\r\nlog \"Homebrew version:\"\r\nbrew --version | head -1 | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Current AeroSpace formula info:\"\r\nbrew info aerospace 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\nlog_section \"Current AeroSpace Installation (Before Update)\"\r\nlog \"Installed version:\"\r\naerospace --version 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Installation path:\"\r\nwhich aerospace | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Binary info:\"\r\nfile \"$(which aerospace)\" | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Current workspaces:\"\r\naerospace list-workspaces --all 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Current monitors:\"\r\naerospace list-monitors 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\n# Test commands with current version (0.19.x)\r\ntest_aerospace_commands \"Version 0.19.x (BEFORE UPDATE)\"\r\n\r\n# Confirm update\r\nlog_section \"Preparing to Update AeroSpace\"\r\nlog \"Current version should be working. Now updating to 0.20 beta...\"\r\nlog \"\"\r\nlog \"⚠️  IMPORTANT: This script will now update AeroSpace to version 0.20 beta\"\r\nlog \"Press ENTER to continue with the update, or Ctrl+C to abort...\"\r\nread\r\n\r\nlog_section \"Updating AeroSpace to 0.20 Beta\"\r\nlog \"Running: brew upgrade aerospace\"\r\nbrew upgrade aerospace 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Update completed. Waiting 3 seconds for AeroSpace to restart...\"\r\nsleep 3\r\n\r\nlog_section \"AeroSpace Installation (After Update)\"\r\nlog \"New version:\"\r\naerospace --version 2>&1 | tee -a \"$LOG_FILE\"\r\n\r\nlog \"\"\r\nlog \"Verifying installation:\"\r\nwhich aerospace | tee -a \"$LOG_FILE\"\r\nfile \"$(which aerospace)\" | tee -a \"$LOG_FILE\"\r\n\r\n# Test commands with new version (0.20 beta)\r\ntest_aerospace_commands \"Version 0.20 Beta (AFTER UPDATE)\"\r\n\r\nlog_section \"Test Summary\"\r\nlog \"Bug Report Details:\"\r\nlog \"- Problematic bindings in config:\"\r\nlog \"  1. ctrl-alt-cmd-h = ['exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev']\"\r\nlog \"  2. ctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace next']\"\r\nlog \"\"\r\nlog \"Expected behavior (0.19.x):\"\r\nlog \"- When focus command fails, the fallback workspace command executes\"\r\nlog \"\"\r\nlog \"Actual behavior (0.20 beta):\"\r\nlog \"- The || (OR) operator appears to not work correctly in exec-and-forget\"\r\nlog \"- Fallback command does not execute when first command fails\"\r\nlog \"\"\r\nlog \"Config file location: ~/.aerospace.toml\"\r\n\r\nlog_section \"Test Complete\"\r\nlog \"Log file saved to: $LOG_FILE\"\r\nlog \"\"\r\nlog \"Next steps:\"\r\nlog \"1. Review the log file\"\r\nlog \"2. Submit issue at: https://github.com/nikitabobko/AeroSpace/issues\"\r\nlog \"3. Attach this log file to the issue\"\r\n\r\necho \"\"\r\necho \"==========================================\"\r\necho \"Test complete! Log saved to: $LOG_FILE\"\r\necho \"==========================================\"\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>Full Test Log Output (aerospace-bug-report-20251127-100208.log)</summary>\r\n\r\n```\r\n========================================\r\nAeroSpace Bug Report - Conditional Command Regression\r\n========================================\r\n[2025-11-27 10:02:08] Report generated on: Thu Nov 27 10:02:08 CET 2025\r\n[2025-11-27 10:02:08] Testing machine: Vituss-MacBook-Air.local\r\n\r\n========================================\r\nSystem Information\r\n========================================\r\n[2025-11-27 10:02:08] macOS Version:\r\nProductName:            macOS\r\nProductVersion:         26.1\r\nBuildVersion:           25B78\r\n[2025-11-27 10:02:08] \r\n[2025-11-27 10:02:08] Hardware:\r\n      Model Name: MacBook Air\r\n      Model Identifier: Mac14,2\r\n      Chip: Apple M2\r\n      Memory: 16 GB\r\n[2025-11-27 10:02:09] \r\n[2025-11-27 10:02:09] Shell:\r\n/bin/zsh\r\nzsh 5.9 (arm64-apple-darwin25.0)\r\n\r\n========================================\r\nHomebrew Information\r\n========================================\r\n[2025-11-27 10:02:09] Homebrew version:\r\nHomebrew 5.0.3\r\n[2025-11-27 10:02:09] \r\n[2025-11-27 10:02:09] Current AeroSpace formula info:\r\n✔︎ JSON API formula_tap_migrations.jws.json\r\n✔︎ JSON API cask_tap_migrations.jws.json\r\n✔︎ JSON API cask.jws.json\r\n✔︎ JSON API formula.jws.json\r\n==> aerospace: 0.19.2-Beta\r\nhttps://github.com/nikitabobko/AeroSpace\r\nInstalled\r\n/opt/homebrew/Caskroom/aerospace/0.19.2-Beta (8.9MB)\r\n  Installed on 2024-08-19 at 08:48:11\r\nFrom: https://github.com/nikitabobko/homebrew-tap/blob/HEAD/Casks/aerospace.rb\r\n==> Name\r\nAeroSpace\r\n==> Description\r\nAeroSpace is an i3-like tiling window manager for macOS\r\n==> Artifacts\r\nAeroSpace-v0.19.2-Beta/AeroSpace.app (App)\r\nAeroSpace-v0.19.2-Beta/shell-completion/zsh/_aerospace -> /opt/homebrew/share/zsh/site-functions/_aerospace (Binary)\r\nAeroSpace-v0.19.2-Beta/shell-completion/bash/aerospace -> /opt/homebrew/etc/bash_completion.d/aerospace (Binary)\r\nAeroSpace-v0.19.2-Beta/shell-completion/fish/aerospace.fish -> /opt/homebrew/share/fish/vendor_completions.d/aerospace.fish (Binary)\r\nAeroSpace-v0.19.2-Beta/bin/aerospace (Binary)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-debug-windows.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-enable.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-exec-and-forget.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-flatten-workspace-tree.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-focus-back-and-forth.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-focus-monitor.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-focus.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-fullscreen.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-join-with.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-layout.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-apps.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-exec-env-vars.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-modes.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-monitors.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-windows.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-list-workspaces.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-macos-native-fullscreen.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-macos-native-minimize.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-mode.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-move-mouse.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-move-node-to-monitor.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-move-node-to-workspace.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-move-workspace-to-monitor.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-move.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-reload-config.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-resize.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-split.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-summon-workspace.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-swap.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-trigger-binding.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-volume.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-workspace-back-and-forth.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-workspace.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-balance-sizes.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-close-all-windows-but-current.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-close.1 (Manpage)\r\nAeroSpace-v0.19.2-Beta/manpage/aerospace-config.1 (Manpage)\r\n\r\n========================================\r\nCurrent AeroSpace Installation (Before Update)\r\n========================================\r\n[2025-11-27 10:02:19] Installed version:\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n[2025-11-27 10:02:19] \r\n[2025-11-27 10:02:19] Installation path:\r\n/opt/homebrew/bin/aerospace\r\n[2025-11-27 10:02:19] \r\n[2025-11-27 10:02:19] Binary info:\r\n/opt/homebrew/bin/aerospace: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]\r\n/opt/homebrew/bin/aerospace (for architecture x86_64):  Mach-O 64-bit executable x86_64\r\n/opt/homebrew/bin/aerospace (for architecture arm64):   Mach-O 64-bit executable arm64\r\n[2025-11-27 10:02:19] \r\n[2025-11-27 10:02:19] Current workspaces:\r\n1\r\n2\r\n[2025-11-27 10:02:19] \r\n[2025-11-27 10:02:19] Current monitors:\r\n1 | Built-in Retina Display\r\n\r\n========================================\r\nTesting AeroSpace Commands - Version 0.19.x (BEFORE UPDATE)\r\n========================================\r\n[2025-11-27 10:02:19] Current AeroSpace version:\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n[2025-11-27 10:02:19] \r\n[2025-11-27 10:02:19] Test 1: Focus left with fallback to workspace prev\r\n[2025-11-27 10:02:19] Command: aerospace focus left --boundaries-action fail || aerospace workspace prev\r\n[2025-11-27 10:02:19] Expected: Should focus left, or if that fails, go to previous workspace\r\n[2025-11-27 10:02:19] Executing...\r\n[2025-11-27 10:02:19] Exit code: 0\r\n[2025-11-27 10:02:21] \r\n[2025-11-27 10:02:21] Test 2: Focus right with fallback to workspace next\r\n[2025-11-27 10:02:21] Command: aerospace focus right --boundaries-action fail || aerospace workspace next\r\n[2025-11-27 10:02:21] Expected: Should focus right, or if that fails, go to next workspace\r\n[2025-11-27 10:02:21] Executing...\r\n[2025-11-27 10:02:21] Exit code: 0\r\n[2025-11-27 10:02:23] \r\n[2025-11-27 10:02:23] Test 3: Testing the actual config binding simulation\r\n[2025-11-27 10:02:23] Simulating: exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev\r\n[2025-11-27 10:02:23] Combined command exit code: 0\r\n[2025-11-27 10:02:25] \r\n[2025-11-27 10:02:25] Test 4: Verifying workspace commands work independently\r\n[2025-11-27 10:02:25] Command: aerospace workspace prev\r\n[2025-11-27 10:02:25] Exit code: 0\r\n[2025-11-27 10:02:26] Command: aerospace workspace next\r\n[2025-11-27 10:02:26] Exit code: 0\r\n\r\n========================================\r\nPreparing to Update AeroSpace\r\n========================================\r\n[2025-11-27 10:02:27] Current version should be working. Now updating to 0.20 beta...\r\n[2025-11-27 10:02:27] \r\n[2025-11-27 10:02:27] ⚠️  IMPORTANT: This script will now update AeroSpace to version 0.20 beta\r\n[2025-11-27 10:02:27] Press ENTER to continue with the update, or Ctrl+C to abort...\r\n\r\n\r\n========================================\r\nUpdating AeroSpace to 0.20 Beta\r\n========================================\r\n[2025-11-27 10:02:40] Running: brew upgrade aerospace\r\n==> Auto-updating Homebrew...\r\nAdjust how often this is run with `$HOMEBREW_AUTO_UPDATE_SECS` or disable with\r\n`$HOMEBREW_NO_AUTO_UPDATE=1`. Hide these hints with `$HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).\r\n==> Auto-updated Homebrew!\r\nUpdated 3 taps (nikitabobko/tap, homebrew/core and homebrew/cask).\r\n==> New Formulae\r\ne1s: TUI for managing AWS ECS, inspired by k9s\r\ngit-xet: Git LFS plugin that uploads and downloads using the Xet protocol\r\ngitlogue: Cinematic Git commit replay tool\r\nqqqa: Fast, stateless LLM for your shell: qq answers; qa runs commands\r\nxleak: Terminal Excel viewer with an interactive TUI\r\n==> New Casks\r\naks-desktop: Azure Kubernetes Service desktop application\r\naerospace@0.19.2\r\nrocketman-choices-packager: Utility for customising installer package choices\r\n\r\nYou have 6 outdated formulae and 3 outdated casks installed.\r\nError: Cask 'macvim-app' definition is invalid: 'conflicts_with' stanza failed with: Calling conflicts_with formula: is disabled! There is no replacement.\r\n==> Fetching downloads for: nikitabobko/tap/aerospace\r\n✔︎ Cask aerospace (0.20.0-Beta)\r\n==> Upgrading 1 outdated package:\r\nnikitabobko/tap/aerospace 0.19.2-Beta -> 0.20.0-Beta\r\n==> Upgrading aerospace\r\n==> Backing App 'AeroSpace.app' up to '/opt/homebrew/Caskroom/aerospace/0.19.2-Beta/AeroSpace-v0.19.2-Beta/AeroSpace.app'\r\n==> Removing App '/Applications/AeroSpace.app'\r\n==> Unlinking Binary '/opt/homebrew/share/zsh/site-functions/_aerospace'\r\n==> Unlinking Binary '/opt/homebrew/etc/bash_completion.d/aerospace'\r\n==> Unlinking Binary '/opt/homebrew/share/fish/vendor_completions.d/aerospace.fish'\r\n==> Unlinking Binary '/opt/homebrew/bin/aerospace'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-debug-windows.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-enable.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-exec-and-forget.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-flatten-workspace-tree.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-focus-back-and-forth.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-focus-monitor.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-focus.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-fullscreen.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-join-with.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-layout.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-apps.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-exec-env-vars.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-modes.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-monitors.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-windows.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-list-workspaces.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-macos-native-fullscreen.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-macos-native-minimize.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-mode.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-move-mouse.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-move-node-to-monitor.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-move-node-to-workspace.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-move-workspace-to-monitor.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-move.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-reload-config.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-resize.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-split.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-summon-workspace.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-swap.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-trigger-binding.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-volume.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-workspace-back-and-forth.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-workspace.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-balance-sizes.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-close-all-windows-but-current.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-close.1'\r\n==> Unlinking Manpage '/opt/homebrew/share/man/man1/aerospace-config.1'\r\n==> Moving App 'AeroSpace.app' to '/Applications/AeroSpace.app'\r\n==> Linking Binary 'aerospace' to '/opt/homebrew/bin/aerospace'\r\n==> Linking Binary '_aerospace' to '/opt/homebrew/share/zsh/site-functions/_aerospace'\r\n==> Linking Binary 'aerospace' to '/opt/homebrew/etc/bash_completion.d/aerospace'\r\n==> Linking Binary 'aerospace.fish' to '/opt/homebrew/share/fish/vendor_completions.d/aerospace.fish'\r\n==> Purging files for version 0.19.2-Beta of Cask aerospace\r\n🍺  aerospace was successfully upgraded!\r\n[2025-11-27 10:03:57] \r\n[2025-11-27 10:03:58] Update completed. Waiting 3 seconds for AeroSpace to restart...\r\n\r\n========================================\r\nAeroSpace Installation (After Update)\r\n========================================\r\n[2025-11-27 10:04:01] New version:\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n[2025-11-27 10:04:01] \r\n[2025-11-27 10:04:01] Verifying installation:\r\n/opt/homebrew/bin/aerospace\r\n/opt/homebrew/bin/aerospace: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]\r\n/opt/homebrew/bin/aerospace (for architecture x86_64):  Mach-O 64-bit executable x86_64\r\n/opt/homebrew/bin/aerospace (for architecture arm64):   Mach-O 64-bit executable arm64\r\n\r\n========================================\r\nTesting AeroSpace Commands - Version 0.20 Beta (AFTER UPDATE)\r\n========================================\r\n[2025-11-27 10:04:01] Current AeroSpace version:\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n[2025-11-27 10:04:01] \r\n[2025-11-27 10:04:01] Test 1: Focus left with fallback to workspace prev\r\n[2025-11-27 10:04:01] Command: aerospace focus left --boundaries-action fail || aerospace workspace prev\r\n[2025-11-27 10:04:01] Expected: Should focus left, or if that fails, go to previous workspace\r\n[2025-11-27 10:04:01] Executing...\r\nWarning: AeroSpace client/server versions don't match\r\n    - aerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n    - AeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n    Possible fixes:\r\n    - Restart AeroSpace.app (server restart is required after each update)\r\n    - Reinstall and restart AeroSpace (corrupted installation)\r\n[2025-11-27 10:04:01] Exit code: 0\r\n[2025-11-27 10:04:03] \r\n[2025-11-27 10:04:03] Test 2: Focus right with fallback to workspace next\r\n[2025-11-27 10:04:03] Command: aerospace focus right --boundaries-action fail || aerospace workspace next\r\n[2025-11-27 10:04:03] Expected: Should focus right, or if that fails, go to next workspace\r\n[2025-11-27 10:04:03] Executing...\r\nWarning: AeroSpace client/server versions don't match\r\n    - aerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n    - AeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n    Possible fixes:\r\n    - Restart AeroSpace.app (server restart is required after each update)\r\n    - Reinstall and restart AeroSpace (corrupted installation)\r\n[2025-11-27 10:04:03] Exit code: 0\r\n[2025-11-27 10:04:05] \r\n[2025-11-27 10:04:05] Test 3: Testing the actual config binding simulation\r\n[2025-11-27 10:04:05] Simulating: exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev\r\nWarning: AeroSpace client/server versions don't match\r\n    - aerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n    - AeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n    Possible fixes:\r\n    - Restart AeroSpace.app (server restart is required after each update)\r\n    - Reinstall and restart AeroSpace (corrupted installation)\r\n[2025-11-27 10:04:05] Combined command exit code: 0\r\n[2025-11-27 10:04:08] \r\n[2025-11-27 10:04:08] Test 4: Verifying workspace commands work independently\r\n[2025-11-27 10:04:08] Command: aerospace workspace prev\r\nWarning: AeroSpace client/server versions don't match\r\n    - aerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n    - AeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n    Possible fixes:\r\n    - Restart AeroSpace.app (server restart is required after each update)\r\n    - Reinstall and restart AeroSpace (corrupted installation)\r\n[2025-11-27 10:04:08] Exit code: 0\r\n[2025-11-27 10:04:09] Command: aerospace workspace next\r\n[2025-11-27 10:04:09] Exit code: 0\r\n\r\n========================================\r\nTest Summary\r\n========================================\r\n[2025-11-27 10:04:09] Bug Report Details:\r\n[2025-11-27 10:04:09] - Problematic bindings in config:\r\n[2025-11-27 10:04:09]   1. ctrl-alt-cmd-h = ['exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev']\r\n[2025-11-27 10:04:09]   2. ctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace next']\r\n[2025-11-27 10:04:09] \r\n[2025-11-27 10:04:09] Expected behavior (0.19.x):\r\n[2025-11-27 10:04:09] - When focus command fails, the fallback workspace command executes\r\n[2025-11-27 10:04:09] \r\n[2025-11-27 10:04:09] Actual behavior (0.20 beta):\r\n[2025-11-27 10:04:09] - The || (OR) operator appears to not work correctly in exec-and-forget\r\n[2025-11-27 10:04:09] - Fallback command does not execute when first command fails\r\n[2025-11-27 10:04:09] \r\n[2025-11-27 10:04:09] Config file location: ~/.aerospace.toml\r\n\r\n========================================\r\nTest Complete\r\n========================================\r\n[2025-11-27 10:04:09] Log file saved to: aerospace-bug-report-20251127-100208.log\r\n[2025-11-27 10:04:09] \r\n[2025-11-27 10:04:09] Next steps:\r\n[2025-11-27 10:04:09] 1. Review the log file\r\n[2025-11-27 10:04:09] 2. Submit issue at: https://github.com/nikitabobko/AeroSpace/issues\r\n[2025-11-27 10:04:09] 3. Attach this log file to the issue\r\n\r\n========================================\r\nADDITIONAL TEST: After AeroSpace.app Restart (0.20 Synchronized)\r\n========================================\r\n[2025-11-27 10:05:40] Both CLI and server now on 0.20.0-Beta\r\naerospace CLI client version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\nAeroSpace.app server version: 0.20.0-Beta 1ec4234a25091225ca2442c2d37e45432dd1b347\r\n\r\n[2025-11-27 10:05:41] Test: Focus left with fallback (when at leftmost window)\r\n[2025-11-27 10:05:41] Command: aerospace focus left --boundaries-action fail || aerospace workspace prev\r\n[2025-11-27 10:05:41] Exit code: 0\r\n\r\n[2025-11-27 10:05:43] Test: Focus right with fallback (when at rightmost window)\r\n[2025-11-27 10:05:43] Command: aerospace focus right --boundaries-action fail || aerospace workspace next\r\n[2025-11-27 10:05:43] Exit code: 0\r\n\r\n========================================\r\nDETAILED TEST: Checking Fallback Behavior\r\n========================================\r\n[2025-11-27 10:06:32] Current workspace:\r\n1\r\n\r\n[2025-11-27 10:06:33] Testing focus with --boundaries-action fail explicitly:\r\n[2025-11-27 10:06:33] This should fail when there's no window in that direction\r\n[2025-11-27 10:06:33] Focus left exit code: 0\r\n[2025-11-27 10:06:33] Focus succeeded (there was a window to focus)\r\n\r\n========================================\r\nFINAL NOTES\r\n========================================\r\n[2025-11-27 10:07:37] Test Environment:\r\n- MacBook Air M2, 16GB RAM, macOS 26.1\r\n- AeroSpace upgraded from 0.19.2-Beta to 0.20.0-Beta via Homebrew\r\n\r\n[2025-11-27 10:07:37] Commands tested:\r\n1. aerospace focus left --boundaries-action fail || aerospace workspace prev\r\n2. aerospace focus right --boundaries-action fail || aerospace workspace next\r\n\r\n[2025-11-27 10:07:37] These commands are used in bindings:\r\n- ctrl-alt-cmd-h in main mode\r\n- ctrl-alt-cmd-l in main mode\r\n\r\n[2025-11-27 10:07:38] Expected: When focus fails, workspace command should execute\r\n[2025-11-27 10:07:38] Issue confirmed on second MacBook with same specs\r\n\r\n========================================\r\nEND OF REPORT\r\n========================================\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary>AeroSpace Configuration (~/.aerospace.toml)</summary>\r\n\r\n```toml\r\nafter-startup-command = ['layout v_accordion', 'mode main']\r\nstart-at-login = true\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 20\r\ndefault-root-container-layout = 'accordion'\r\ndefault-root-container-orientation = 'vertical'\r\n\r\nkey-mapping.preset = 'qwerty'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = ['move-mouse window-lazy-center']\r\n\r\n[gaps]\r\ninner.horizontal = 14\r\ninner.vertical =   14\r\nouter.left =       14\r\nouter.bottom =     15\r\nouter.top =        [{ monitor.main = 14 }, { monitor.secondary = 14 }, { monitor.\"BenQ GW2765\"= 52 }, 24]\r\nouter.right =      15\r\n\r\n[mode.main.binding]\r\nctrl-alt-cmd-slash = ['mode service']\r\n\r\nctrl-alt-cmd-minus = ['resize smart -50']\r\nctrl-alt-cmd-equal = ['resize smart +50']\r\n\r\nctrl-alt-cmd-h = ['exec-and-forget aerospace focus left --boundaries-action fail || aerospace workspace prev']\r\nctrl-alt-cmd-j = 'focus --boundaries all-monitors-outer-frame --boundaries-action stop down'\r\nctrl-alt-cmd-k = 'focus --boundaries all-monitors-outer-frame --boundaries-action stop up'\r\nctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace next']\r\n\r\nctrl-alt-cmd-d = ['workspace-back-and-forth']\r\n\r\nctrl-alt-cmd-1 = 'move-node-to-workspace 1 --focus-follows-window'\r\nctrl-alt-cmd-2 = 'move-node-to-workspace 2 --focus-follows-window'\r\n\r\nctrl-alt-cmd-shift-h = ['exec-and-forget aerospace move left --boundaries all-monitors-outer-frame --boundaries-action stop || aerospace move-node-to-workspace 1 --focus-follows-window']\r\nctrl-alt-cmd-shift-j = ['exec-and-forget aerospace move down --boundaries all-monitors-outer-frame --boundaries-action stop || aerospace move-node-to-workspace 2 --focus-follows-window']\r\nctrl-alt-cmd-shift-k = ['exec-and-forget aerospace move up --boundaries all-monitors-outer-frame --boundaries-action stop || aerospace move-node-to-workspace 1 --focus-follows-window']\r\nctrl-alt-cmd-shift-l = ['exec-and-forget aerospace move right --boundaries all-monitors-outer-frame --boundaries-action stop || aerospace move-node-to-workspace 2 --focus-follows-window']\r\n\r\nctrl-alt-cmd-space = 'layout tiles accordion'\r\nctrl-alt-cmd-shift-space = 'layout horizontal vertical'\r\n\r\nctrl-alt-cmd-w = 'layout floating tiling'\r\n\r\n[mode.service.binding]\r\nr = ['reload-config', 'mode main']\r\nq = ['exec-and-forget killall AeroSpace && open -a AeroSpace', 'mode main']\r\ne = ['flatten-workspace-tree', 'mode main']\r\nf = ['layout floating tiling', 'mode main']\r\n\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nctrl-alt-cmd-h = ['move left', 'mode main']\r\nctrl-alt-cmd-j = ['move down', 'mode main']\r\nctrl-alt-cmd-k = ['move up', 'mode main']\r\nctrl-alt-cmd-l = ['move right', 'mode main']\r\n\r\nh = ['workspace --wrap-around prev', 'mode main']\r\nl = ['workspace --wrap-around next', 'mode main']\r\n\r\nesc = ['mode main']\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'secondary'\r\n```\r\n\r\n</details>\r\n",
      "created_at": "2025-11-27T10:22:00Z",
      "updated_at": "2025-11-27T12:54:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5lmE",
        "body": "I think I know what the problem is, please try (pay attention to `--no-stdin` flag):\r\n```\r\nctrl-alt-cmd-l = ['exec-and-forget aerospace focus right --boundaries-action fail || aerospace workspace --no-stdin next']\r\n```"
      },
      "user": {
        "login": "vitusli",
        "avatar_url": "https://avatars.githubusercontent.com/u/159196645?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjB1o",
      "number": 1820,
      "title": "Android Studio \"Find in Files\" popup visible on other workspaces",
      "body": "**Title:** Android Studio \"Find in Files\" popup visible on other workspaces\r\n\r\n## Steps to reproduce:\r\n1. Open Android Studio with a project on workspace 3\r\n2. Open \"Find in Files\" with `Cmd+Shift+F`\r\n3. Switch to another workspace (e.g., workspace 1 with terminal)\r\n\r\n## Expected result:\r\nThe Find in Files popup should stay on workspace 3 with Android Studio.\r\n\r\n## Actual result:\r\nThe Find in Files popup appears visually on workspace 1 (and other workspaces).\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nmacOS: 15.7.1\r\nAndroid Studio: Narwhal Feature Drop 2025.1.2 Canary 7 (AI-252.27397.103.2523.14473358)\r\n\r\n### Debug output for Find in Files (broken):\r\n```\r\n$ aerospace debug-windows --window-id <find-popup-id>\r\n\r\n\"AXSubrole\" : \"AXUnknown\"\r\n\"AXTitle\" : \"\"\r\n\"AXFullScreenButton\" : null\r\n\"Aero.AxUiElementWindowType\" : \"popup\"\r\n\"Aero.treeNodeParent\" : \"Optional(AppBundle.MacosPopupWindowsContainer)\"\r\n\"Aero.workspace\" : \"nil\"\r\n```\r\n\r\n### Debug output for Registry dialog (works correctly):\r\n```\r\n$ aerospace debug-windows --window-id <registry-id>\r\n\r\n\"AXSubrole\" : \"AXStandardWindow\"\r\n\"AXTitle\" : \"Registry\"\r\n\"Aero.AxUiElementWindowType\" : \"dialog\"\r\n\"Aero.treeNodeParent\" : \"Optional(AppBundle.Workspace)\"\r\n\"Aero.workspace\" : \"3\"\r\n```\r\n\r\n### Analysis:\r\nThe Find in Files window has `AXSubrole: \"AXUnknown\"` (bad accessibility metadata from Java/Swing), so AeroSpace classifies it as a \"popup\" and puts it in `MacosPopupWindowsContainer` with no workspace assignment.\r\n\r\nThe window is 1160x881px - much larger than typical popups (autocomplete, tooltips). Other Android Studio dialogs like \"Registry\" have `AXSubrole: \"AXStandardWindow\"` and work correctly.\r\n\r\n### Root cause:\r\n\r\nLooking at [`AxUiElementWindowType.swift`](https://github.com/nikitabobko/AeroSpace/blob/67bd7d25687a27198b9fd2351361af96dfd86051/Sources/AppBundle/model/AxUiElementWindowType.swift#L36), the Find in Files popup fails `isWindowHeuristicOld` because:\r\n\r\n1. It has no accessibility buttons (`closeButtonAttr == nil`, `fullscreenButtonAttr == nil`, etc.)\r\n2. It's not focused when first detected\r\n3. It has `subrole == \"AXUnknown\"` (not `kAXStandardWindowSubrole`, `kAXDialogSubrole`, or `kAXFloatingWindowSubrole`)\r\n4. It has empty title\r\n\r\nSo it returns `false` from `isWindowHeuristicOld` → classified as **popup** → goes to `MacosPopupWindowsContainer` with no workspace.\r\n\r\n### Suggested fix:\r\n\r\nAdd Android Studio / JetBrains handling similar to Firefox, Ghostty, etc. In `isWindowHeuristicOld` or `isWindowHeuristic`:\r\n\r\n```swift\r\n// JetBrains \"Find in Files\" and similar large dialogs have AXUnknown subrole\r\n// but should be treated as windows/dialogs, not popups\r\nif id == .androidStudio || id?.isJetBrains == true {\r\n    let size = get(Ax.sizeAttr)\r\n    if size?.width ?? 0 > 400 && size?.height ?? 0 > 300 {\r\n        return true\r\n    }\r\n}\r\n```\r\n\r\nOr alternatively, treat large `AXUnknown` windows (>400x300) as windows rather than popups for all apps, since real popups (tooltips, autocomplete menus) are typically much smaller.\r\n",
      "created_at": "2025-11-26T20:07:56Z",
      "updated_at": "2025-11-27T10:58:56Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "seanfreiburg",
        "avatar_url": "https://avatars.githubusercontent.com/u/1521912?u=03775f526a04dfe09e5eabefd2efa38fad635a18&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah2TE",
      "number": 1686,
      "title": "Border to highlight floating windows",
      "body": "Hi,\r\n\r\nI currently use [JankyBorders](https://github.com/FelixKratz/JankyBorders) to highlight the active window. What I'd like to do is use a different colour for when the window is floating compared to when it is tiled. Is that possible to do?\r\n\r\nI can use `on-focus-changed` to run a script but I can't find a way in the aerospace cli to find out whether the window is floating or not. There also doesn't appear to be any mention of any variables passed to `on-focus-changed` like `AEROSPACE_FOCUSED_WORKSPACE ` is passed to `exec-on-workspace-change`.\r\n\r\nI also suspect there isn't a trigger/event when the window switches between layouts to once again update the border colour accordingly. \r\n\r\nHave I missed anything in the docs or is what I want to do simply not possible?\r\n\r\nThanks in advance for any help that anyone can provide.\r\n\r\nCheers,\r\nAlex",
      "created_at": "2025-09-09T22:44:10Z",
      "updated_at": "2025-11-27T08:12:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2x9g",
        "body": "> but I can't find a way in the aerospace cli to find out whether the window is floating or not\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/issues/1161"
      },
      "user": {
        "login": "alewis001",
        "avatar_url": "https://avatars.githubusercontent.com/u/3482446?u=ca682c91c1dd3ea2ec519196fd0381b1de1b4e78&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjB6J",
      "number": 1822,
      "title": "BSPWM-like layout",
      "body": "Possibility to have windows arranged in a BSPWM-like fashion with alternating horizontal/vertical layouts that split the screen in a binary tree fashion.\r\nVertical or horizontal layouts are fine up to 2-3 windows, more than that those become cumbersome. I've had good results with other window managers that allow for a \"nesting\" layout.",
      "created_at": "2025-11-26T22:16:46Z",
      "updated_at": "2025-11-26T22:16:47Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gaston-haro",
        "avatar_url": "https://avatars.githubusercontent.com/u/62256733?u=051dd399557625c166d56202f2a7db243c76abbb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai9oF",
      "number": 1810,
      "title": "Crash when cycling focus with floating+tiled windows on 3-monitor setup (AppBundle.MacWindow is already unbound)",
      "body": "### Body\n\nDescription\r\nAeroSpace crashed while I was cycling focus between windows on my MacBook Air’s internal display, in a setup with 3 monitors (LG external, MacBook Air built-in, and iPad via Sidecar).\r\n\r\nAfter the crash I got the runtime error AppBundle.MacWindow is already unbound, and AeroSpace stopped handling windows correctly. Some workspaces became “empty” (no visible windows, even though SketchyBar showed the workspace name) and restarting AeroSpace was unreliable: multiple aerospace processes were spawned and the tiling state was inconsistent until a full restart.\r\n\r\n⸻\r\n\r\nEnvironment\r\n\t•\tAeroSpace version: 0.19.2-Beta\r\n\t•\tmacOS: 26.1 (25B78)\r\n\t•\tMonitor count: 3\r\n\t•\t1× LG external display\r\n\t•\t1× MacBook Air  M4 24 gb built-in display\r\n\t•\t1× iPad Air M3 via Sidecar\r\n\t•\tDisplays have separate Spaces:\r\n\t•\tON when the crash happened (I use the native macOS tiling / mosaic with keyboard shortcuts for floating windows)\r\n\t•\tLater tested also with OFF, but the crash happened with it ON.\r\n\t•\tBorders: running borders via after-startup-command in ~/.aerospace.toml\r\n\r\nIf useful I can also share my ~/.aerospace.toml.\r\n\r\n⸻\r\n\r\nDisplay arrangement\r\n\r\nAt the time of the crash the arrangement was:\r\n\t•\tLG as main display (menu bar)\r\n\t•\tMacBook Air and iPad arranged below, side by side\r\n\r\nI also experimented with other arrangements (LG top, MBA + iPad bottom, etc.), but this specific crash happened while I had 3 monitors active with separate Spaces enabled.\r\n\r\n⸻\r\n\r\nWhat I was doing when the crash happened\r\n\r\nRoughly:\r\n\t1.\t3 monitors active: LG + MacBook Air + iPad (Sidecar).\r\n\t2.\tDisplays have separate Spaces = ON so I could use macOS “mosaic” tiling for floating windows (quarters / halves).\r\n\t3.\tOn the MacBook Air workspace I had a mix of tiled and floating windows (Preview, Finder, Obsidian, etc.).\r\n\t4.\tI started cycling focus between windows using AeroSpace keybindings (focus + mouse-follows-focus config).\r\n\t5.\tWhile cycling between tiled and floating windows on the MBAir monitor, AeroSpace suddenly stopped responding and showed this runtime error:\r\nAppBundle.MacWindow is already unbound. The stacktrace where it was unbound: …\r\n\t6.\tAfter that:\r\n\t•\tSome workspaces appeared “empty” (no visible windows), but applications were still running.\r\n\t•\tSketchyBar showed the workspace names when switching, but no windows were visible in those workspaces.\r\n\t•\tQuitting AeroSpace and restarting it caused multiple aerospace processes to be spawned (visible in Activity Monitor).\r\n\t•\tEven after pkill -x AeroSpace and relaunch, the tiling/focus behavior was broken until a full macOS logout/reboot.\r\n\r\n⸻\r\n\r\nExpected behavior\r\n\t•\tCycling focus between tiled and floating windows on one monitor should not corrupt the internal tree or workspace state.\r\n\t•\tSwitching workspaces should always show the windows that belong to that workspace.\r\n\t•\tRestarting AeroSpace (after a crash) should not leave multiple aerospace processes running, and should restore a consistent tiling state.\r\n\r\n⸻\r\n\r\nActual behavior\r\n\t•\tRuntime error: AppBundle.MacWindow is already unbound (full stacktrace below).\r\n\t•\tSome workspaces became “blank” (no visible windows) even though the apps were running.\r\n[log.rtf](https://github.com/user-attachments/files/23681843/log.rtf)\r\n\r\n\t•\tAeroSpace stopped tiling/focusing windows reliably.\r\n\t•\tMultiple aerospace processes kept appearing after restart attempts (open -an AeroSpace, etc.), until I did a full logout.\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
      "created_at": "2025-11-21T18:08:39Z",
      "updated_at": "2025-11-26T15:24:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5jMJ",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "gmeledj",
        "avatar_url": "https://avatars.githubusercontent.com/u/205817062?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai1A7",
      "number": 1797,
      "title": "Runtime Crash",
      "body": "### Body\n\nSteps to reproduce:\r\nUnsure, macbook was left closed and disconnected overnight, when plugged into monitor this morning I received this crash.\r\n\r\nExpected result: Not crashing\r\nActual result: Crashing\r\n\r\n```error\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: ax(AXMoved)\r\nDate: 2025-11-11 15:18:47 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 53099 ID: com.mitchellh.ghostty\r\nmacOS version: Version 26.0.1 (Build 25A362)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104f617dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104da8f20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x0000000104da8990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x0000000104de0d00 $s9AppBundle9WorkspaceC20forceAssignedMonitorAA0F0_pSgvg + 384\r\n4   AeroSpace                           0x0000000104dd78ac $s9AppBundle9WorkspaceC16workspaceMonitorAA0E0_pvg + 40\r\n5   AeroSpace                           0x0000000104d99eec $s9AppBundle28checkOnFocusChangedCallbacksyyF + 288\r\n6   AeroSpace                           0x0000000104da0e80 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TY1_ + 228\r\n7   AeroSpace                           0x0000000104d3cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   libswift_Concurrency.dylib          0x0000000286060281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   libswift_Concurrency.dylib          0x000000028605ff0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n10  AeroSpace                           0x0000000104da09f1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n11  AeroSpace                           0x0000000104d3cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000286060281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  libswift_Concurrency.dylib          0x000000028605ff0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  AeroSpace                           0x0000000104d9ff59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n15  AeroSpace                           0x0000000104da0711 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n16  AeroSpace                           0x0000000104d3cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x0000000286099dfd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```",
      "created_at": "2025-11-11T16:44:32Z",
      "updated_at": "2025-11-26T13:02:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5jMi",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1613\r\n\r\nFixed in 0.20.0"
      },
      "user": {
        "login": "FreeSamples00",
        "avatar_url": "https://avatars.githubusercontent.com/u/134820811?u=131799f0f316713bd58d6eaed8cf42c0a8f9cdb7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjBad",
      "number": 1819,
      "title": "On my work Mac, it isn't working after 0.17.1",
      "body": "Steps to reproduce:\r\n1. be on my work mac 🤪 \r\n2. install a current version, just tried 0.20.0-Beta (no issues with 0.17.1 though)\r\n\r\nExpected result: Stuff tiling correctly\r\n\r\nActual result: Windows only tile e.g. after a focus command, also when I close windows, their space stays occupied.\r\n\r\nTiling issue screencast here: https://github.com/user-attachments/assets/5745a763-3035-4ba8-bcea-09f3dc17c015\r\n\r\nAnyone seen this before? What can I do to make this work? Tried removing and re-adding Aerospace to the accessibility list, but no change.. The same configuration (dotfile-wise) on my personal Mac works just fine (also same OS version etc) ... is there some software from my company interfering? I don't get it. Would be really nice to have the speed updates from 0.20.0 on my work device as well 🥹",
      "created_at": "2025-11-26T11:42:21Z",
      "updated_at": "2025-11-26T13:12:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5jFG",
        "body": "> on my personal Mac works just fine (also same OS version etc)\r\n\r\nDo you mean same AeroSpace version works fine on your other mac?\r\n\r\n---\r\n\r\nI suspect that you hit this bug: https://github.com/nikitabobko/AeroSpace/issues/1615 One of the other applications is hanging, and it hangs the whole system. Try quitting apps one-by-one to see which one it is (you can start from the most suspicious in cmd-opt-esc menu and/or Activity Monitor)\r\n\r\nAs far as I know, AeroSpace 0.18.5-Beta wasn't affected by #1615 as badly, so you might consider downgrading to 0.18.5-Beta until #1615 is fixed"
      },
      "user": {
        "login": "exic",
        "avatar_url": "https://avatars.githubusercontent.com/u/242107?u=d39042bea8c2c7947de26880602b5a109cf49355&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adqs_",
      "number": 925,
      "title": "layout floating tiling not working sometimes",
      "body": "**Describe the bug**\r\nHi!\r\n\r\nI have a keybind for changing between floating or tiling and is not working with some windows. For my vscode works like a charm but with my spotify windows it doesnt work 90% of the time, rarely does. It always happens when is on floating, not on tiling. Is like aerospace commands wont work on a floating window whatsoever.\r\n\r\nIs stuck on floating and i can't get it back to tiling. Any way i can debug more aerospace to provide logs regarding commands affecting to spotify window?\r\n\r\nTy\r\n",
      "created_at": "2025-01-03T17:07:54Z",
      "updated_at": "2025-11-26T01:49:18Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jiwidi",
        "avatar_url": "https://avatars.githubusercontent.com/u/10882086?u=608566b4385589c418b833dc22102c82b4ac6f49&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acmvy",
      "number": 719,
      "title": "I wrote a script which swaps the two foreground workspaces between monitors",
      "body": "Edit (March 16, 2025):\r\n\r\nWorking on a version which uses summon-workspace to be a lot less janky (no extra focuses required).\r\n\r\nI'm having issues with getting summon-workspace to work though... it seems it sometimes silently fails... and seems to be monitor dependent.\r\n\r\npermalink to this version:\r\n\r\nhttps://github.com/XavierChanth/dotfiles/blob/988c29dbf3d6a9e4ffc602fd568b0e5ebdb15f43/dotfiles/dot-local/bin/aerospace-util.d/swap-workspace-monitors\r\n\r\nOriginal post:\r\n\r\nIt is a little lengthy, so I've pasted the permalink:\r\n\r\nhttps://github.com/XavierChanth/dotfiles/blob/ab35b4907db15daf55134d4d15ad7402f4f87fec/dotfiles/dot-local/bin/aerospace-util.d/swap-workspace-monitors\r\n\r\nThe usage is `path/to/script [--wrap-around] (next|prev)`\r\n\r\n`up|down|right|left` won't work as it depends on `aerospace move-workspace-to-monitor` which doesn't support that.\r\n\r\nIt is a little bit slow, as it has to perform a few aerospace operations... what I have now is the bare minimum aerospace commands required.\r\n \r\nI find myself browsing something on my secondary display and I just quickly want to move it to the main monitor until I find the thing I want to reference, then I swap back.\r\n\r\nIt also handles the case where a workspace is pinned to a monitor and can't be moved. It will restore the original state in that scenario.",
      "created_at": "2024-11-17T17:18:59Z",
      "updated_at": "2025-11-25T21:11:35Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "xavierchanth",
        "avatar_url": "https://avatars.githubusercontent.com/u/33691921?u=093c78eace4fffdf0c160aa58927e75652cb7332&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AjAxA",
      "number": 1818,
      "title": "trying to follow the guide \"Open a new window with AppleScript\"",
      "body": "i would like to start out with i really dont know what im doing\r\ni pasted \r\n\r\nctrl-g = '''exec-and-forget osascript -e '\r\ntell application \"Safari\"\r\n    make new document at end of documents\r\n    activate\r\nend tell'\r\n'''\r\n\r\nat the end of my .aerospace.toml file and when i reload the file i get an error saying \r\n\r\nFailed to parse /Users/edward/.aerospace.toml\r\n\r\non-window-detected[3].ctrl-g: Unknown key\r\n\r\nwhat am i doing wrong?",
      "created_at": "2025-11-25T18:47:31Z",
      "updated_at": "2025-11-25T19:34:23Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5hV1",
        "body": "It is common TOML table headers pitfall. Move hotkey binding to the proper TOML section "
      },
      "user": {
        "login": "IamGrug",
        "avatar_url": "https://avatars.githubusercontent.com/u/179255904?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiCLq",
      "number": 1710,
      "title": "Support `zebar` as another status bar option",
      "body": "https://github.com/glzr-io/zebar/issues/240\r\n\r\nIt would be great if AeroSpace could also support treating zebar as a status bar! I'm not sure if this is blocked by https://github.com/nikitabobko/AeroSpace/issues/2 because currently AeroSpace treats zebar as its own window and tries to tile it. So the other issue is that every time the workspace is changed, we need an `on-workspace-change-callback` to also move the zebar window to the current workspace - to mimic how existing status bars such as sketchybar is shown on all workspaces.",
      "created_at": "2025-09-19T22:57:47Z",
      "updated_at": "2025-11-24T22:13:25Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5bkZ",
        "body": "I think this problem was accidentally fixed by c71c2432\r\n\r\nRegression tests:  46f38e6b91042358565901b011e182de694ef38e"
      },
      "user": {
        "login": "kvnxiao",
        "avatar_url": "https://avatars.githubusercontent.com/u/14130413?u=b6aa2de0017243fdff44a636e0e5741c5b866fbb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai9tY",
      "number": 1811,
      "title": "How to make an app popup anywhere ?",
      "body": "I want to be able to use Supasidebar app to manage my bookmarks. \r\n\r\nCurrently when I toggle the sidebar, aerospace switches to the workspace where supasidebar is running in, but does not allow me to toggle the sidebar from within any of the other workspaces, I want the sidebar to show up on whichever workspace and stay on the workspace where I called it and not switch to another. \r\n\r\nit's basically a popup, the only example I know of of similar expected behavior is raycast, where here in raycast is only stuck at one workspace. \r\n\r\nHow can I keep this app floating, unmanaged by aerospace so that it always shows up on all workspaces. \r\n\r\nI have already this in my config : \r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'com.supasidebar'\r\nrun = 'layout floating'\r\n```\r\n\r\nbut still the same behavior happens. ",
      "created_at": "2025-11-21T20:47:22Z",
      "updated_at": "2025-11-24T14:50:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "miiraheart",
        "avatar_url": "https://avatars.githubusercontent.com/u/26318117?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiudo",
      "number": 1787,
      "title": "Stdin args is required even when a workspace is already specified.",
      "body": "### Body\n\nSteps to reproduce:\r\nCase 1:\r\n1. echo \"1\" | aerospace workspace 1\r\nExpected result: Focus to workspace 1\r\nActual result:\r\n```\r\nERROR: Implicit stdin is detected (stdin is not TTY). Implicit stdin was forbidden in AeroSpace v0.20.0.\r\n1. Please supply '--stdin' flag to make stdin explicit and preserve old AeroSpace behavior\r\n3. You can also use '--no-stdin' flag to behave as if no stdin was supplied\r\nBreaking change issue: https://github.com/nikitabobko/AeroSpace/issues/1683\r\n```\r\n\r\nCase 2: \r\n1. echo \"1\" | aerospace workspace --no-stdin 1\r\nExpected result: Focus workspace 1\r\nActual result:\r\n```\r\n--stdin and --no-stdin require using (next|prev) argument\r\n```\r\n\r\nIm try build aetrospace from source. \r\nThis action check stdin, no-stdin, should only work when user specific next|prev space.",
      "created_at": "2025-11-04T05:30:32Z",
      "updated_at": "2025-11-24T01:00:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4va1",
        "body": "What is the use case of passing input and specifying workspace argument at the same time?"
      },
      "user": {
        "login": "thuanpham582002",
        "avatar_url": "https://avatars.githubusercontent.com/u/95533596?u=dac762faaf18af520db1f9c25d0fef1b97493606&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agzn-",
      "number": 1569,
      "title": "Behaviour change in 0.19.0",
      "body": "### Body\n\nFirst of all, thanks for the amazing software!\r\nMight be related to https://github.com/nikitabobko/AeroSpace/discussions/1282, but not sure!\r\n\r\nSteps to reproduce:\r\n1. Use `iTerm` in hotkey mode (quake style)\r\n2. Workspace 2\r\n3. Trigger hotkey shortcut => Window opens on Workspace 2\r\n4. Switch to Workspace 3\r\n5. Trigger hotkey shortcut => going back to Workspace 2\r\n\r\nExpected result: the window would just open on workspace 3 (behaviour in 0.18.5)\r\n\r\n\r\nhttps://github.com/user-attachments/assets/ba1e6646-2cbe-4545-a6d6-ca14f68121a4\r\n\r\n\r\n\r\nActual result:\r\n\r\n\r\nhttps://github.com/user-attachments/assets/9953a026-03e4-4adb-918f-95ba988efdd0\r\n\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\nAeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\n```\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.googlecode.iterm2'\r\nrun = ['layout floating']           # The callback itself\r\ncheck-further-callbacks = false\r\n```",
      "created_at": "2025-07-18T16:35:35Z",
      "updated_at": "2025-11-23T21:16:15Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5biH",
        "body": "I don't know what exactly changed between 0.18.5 and 0.19.1.\r\n\r\nAnd the log above isn't helpful, unfortunately, because it says that the window is detected in the similar way:\r\n```diff\r\n81a82,83\r\n>   \"Aero.AxUiElementWindowType\" : \"window\",\r\n>   \"Aero.AxUiElementWindowType_isDialogHeuristic\" : false,\r\n83,84c85\r\n<   \"Aero.isDialogHeuristic\" : false,\r\n<   \"Aero.isWindowHeuristic\" : true,\r\n```\r\n\r\nBut I think I figured how hotkey windows could be recognized. Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1813"
      },
      "user": {
        "login": "leipert",
        "avatar_url": "https://avatars.githubusercontent.com/u/2906107?u=5b07a0f7c6d928c9ff5e6a1bd4fd9dd9eee81e41&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai79K",
      "number": 1809,
      "title": "Is it possible to focus a particular program within the active workspace?",
      "body": "I want to bind numbers to specific workspaces, and bind letters to specific programs. e.g. hyper+1 switches to workspace 1, hyper+t focuses ghostty terminal within workspace 1 if it exists in workspace 1, and if ghostty does not exist in workspace 1, then it does nothing, even if ghostty exists on, say, workspace 2.\r\n\r\nThis would be helpful in allowing me to have certain workspaces with just one or two programs side by side in tiling mode, and other workspaces with a bunch of applications open in floating mode, the key bindings for specific programs helpful in the latter for focussing within a workspace with several programs. \r\n\r\nCurrently, if I use `exec-and-forget open -a Finder` on workspace 1 with Finder open on workspace 1 and on open 2, then sometimes the command will switch me to workspace 2 and focus the Finder window open there.\r\n\r\nI want something like `focus-within-workspace Finder`.",
      "created_at": "2025-11-19T21:30:51Z",
      "updated_at": "2025-11-20T16:39:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A5UAD",
        "body": "The following small script can do the job (replace `com.apple.finder` with whatever application you want to)\r\n\r\n```\r\naerospace list-windows --workspace focused --format '%{window-id} %{app-bundle-id}' --json \\\r\n    | jq '.[] | select(.\"app-bundle-id\" == \"com.apple.finder\") | .\"window-id\"' \\\r\n    | sort \\\r\n    | head -1 \\\r\n    | gxargs aerospace focus --window-id\r\n```\r\n\r\n`gxargs` is a GNU version of BSD `xargs` (`brew install findutils`). if the input is empty, the GNU version will run and forward aerospace failed exit code, BSD version won't run anything. It's a subtle difference, I don't know if you care"
      },
      "user": {
        "login": "georgeamccarthy",
        "avatar_url": "https://avatars.githubusercontent.com/u/65653499?u=4bf8bd85ba2c98d1f7c93d7264066d71610625e2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiit9",
      "number": 1757,
      "title": "AeroSpace Soft Fork with Hyprland’s Dwindle Layout & Native macOS Interactive Workspace Bar",
      "body": "For anyone using **AeroSpace** on macOS who’s interested in a **Hyprland-style dwindle layout** or a **centered interactive workspace bar** that blends into the native menu bar, I’ve put together a soft fork called **HyprSpace**.\r\n\r\nIt stays up to date with upstream AeroSpace and adds two main features:\r\n\r\n* **Dwindle layout** – a binary tree tiling mode inspired by Hyprland’s dwindle algorithm.\r\n* **Centered workspace bar** – an optional native macOS menu bar element showing workspace icons and open app indicators.\r\n\r\nEverything else works the same as AeroSpace. The repo is here if you’d like to take a look:\r\n👉 [[github.com/BarutSRB/HyprSpace](https://github.com/BarutSRB/HyprSpace)]\r\n\r\n![HyprSpace Screenshot](https://raw.githubusercontent.com/BarutSRB/HyprSpace/289dfc3487dab445f60a846b1a86e2d98fd34d3b/CleanShot%202025-10-20%20at%2015.18.44%402x.png)\r\n",
      "created_at": "2025-10-21T14:40:55Z",
      "updated_at": "2025-11-19T23:22:48Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BarutSRB",
        "avatar_url": "https://avatars.githubusercontent.com/u/12249659?u=4b1c32e1ab1ea34f9c1bfd3acc07db689d2a21b9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai6Nk",
      "number": 1806,
      "title": "Make a monitor a no go zone?",
      "body": "I have 2 monitors that I use and have Aerospace manage and then a third technically which would be a Wacom Cintiq tablet which is not on unless being used. \r\n\r\nMy issue is that on wake a good amount of windows will be sent there to that \"monitor\" automatically and I then have to select that app and then manually move it to the monitor where it was or needs to be. Is there anyway to make it so that Aerospace says \"no nothing can go here\"?",
      "created_at": "2025-11-18T04:05:13Z",
      "updated_at": "2025-11-19T01:08:28Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TaylorJonesTRT",
        "avatar_url": "https://avatars.githubusercontent.com/u/9523996?u=9c62ba9ec15a5277e242820846dc8efe46da7aab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai6Ze",
      "number": 1807,
      "title": "aerospace_workspace_change triggering multiple times for a single workspace change",
      "body": "### Body\n\nReproducible on any version above 0.17.1\r\n\r\nSteps to reproduce:\r\n1. change between two or more different apps on the same monitor\r\n2. randomly, some workspace changes will cause aerospace_workspace_change to fire 2-3 times\r\n\r\n\r\nExpected result: aerospace_workspace_change fires once per workspace change\r\nActual result: aerospace_workspace_change occasionally fires 2-3 times per workspace change\r\n\r\n### Additional info\r\n\r\nHere, i echo'd events into a file. we should expect to see 1 front_app_switched per front_app_switched event. However, you can see that sometimes aerospace_workspace_change fires more than once.\r\n\r\n```shell\r\naerospace_workspace_change\r\naerospace_workspace_change\r\nfront_app_switched\r\n\r\naerospace_workspace_change\r\nfront_app_switched\r\n\r\naerospace_workspace_change\r\naerospace_workspace_change\r\nfront_app_switched\r\n\r\naerospace_workspace_change\r\nfront_app_switched\r\naerospace_workspace_change\r\n\r\nerospace_workspace_change\r\nfront_app_switched\r\naerospace_workspace_change\r\nfront_app_switched\r\n\r\naerospace_workspace_change\r\nfront_app_switched\r\naerospace_workspace_change\r\naerospace_workspace_change\r\nfront_app_switched\r\naerospace_workspace_change\r\n```\r\n",
      "created_at": "2025-11-18T08:56:33Z",
      "updated_at": "2025-11-18T08:56:34Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Kainoa-h",
        "avatar_url": "https://avatars.githubusercontent.com/u/75926982?u=f288c6e19d77b61a474f4781bea0436abc93f148&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai5ml",
      "number": 1804,
      "title": "Hyprspace layout \"scroll\" sometimes can't correctly resize the window, resulting in overlapping with the window on the right side",
      "body": "### Body\n\nSteps to reproduce:\r\n1.Set layout scroll\r\n2.Open a window in an empty workspace,  then Hyprspace maximized it correctly\r\n<img width=\"2048\" height=\"1280\" alt=\"image\" src=\"https://github.com/user-attachments/assets/07f96a35-aae4-42ee-a9b4-5561ca322491\" />\r\n\r\n3.Open another window on the right,  then Hyprspace focused on it correctly\r\n<img width=\"2048\" height=\"1280\" alt=\"image\" src=\"https://github.com/user-attachments/assets/79fbd29f-e11b-41bc-8c68-a9874d2396da\" />\r\n\r\n4.Focus on the first window, and i found it got wrong width, event can't see the whole window\r\n<img width=\"2048\" height=\"1280\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c4a8a19f-2fbf-4223-8482-d63b928b6997\" />\r\n\r\nExpected result: the focused window inflates to 80 % width; left and right siblings show 10 % each\r\nActual result: the focused window inflates 100% width; left sibling shows 10%, right sibling covered by it\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.4.0 f15f06c84daccaa4220f0e42d9562a1cc53df416\r\nAeroSpace.app server version: 0.4.0 f15f06c84daccaa4220f0e42d9562a1cc53df416\r\n```\r\n",
      "created_at": "2025-11-17T12:43:18Z",
      "updated_at": "2025-11-17T12:43:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "fangjinfeng1997",
        "avatar_url": "https://avatars.githubusercontent.com/u/25128229?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50T",
      "number": 1003,
      "title": "Feature Request: Add Support for 3-Finger Touchpad Gesture to Navigate Active Spaces",
      "body": "Please add support for using the 3-finger touchpad gesture to navigate through active spaces. This would make it easier for users who are mainly reading or viewing content, allowing seamless space switching without relying on keyboard shortcuts.\r\nThank you!\r\n",
      "created_at": "2024-08-23T16:29:33Z",
      "updated_at": "2025-11-17T11:09:54Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "joeonit",
        "avatar_url": "https://avatars.githubusercontent.com/u/85009659?u=17aa38e2748a69fb52744dc003d4c5967fd37a8b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai2ve",
      "number": 1801,
      "title": "Support picture-in-picture window handling in AeroSpace",
      "body": "When using picture-in-picture (PiP) windows on YouTube or other sites, AeroSpace does not show a separate application ID for the PiP window. This makes it difficult to manage the PiP window independently of the main browser window.\r\n\r\nIt would be useful if AeroSpace could either handle PiP windows automatically (e.g., treat them as floating by default) or provide a way to specify rules in `aerospace.toml` to apply floating behavior specifically for PiP windows. Right now, running `aerospace list-apps` after enabling PiP shows the same app ID for both the main window and the PiP window, so there is no obvious way to target the PiP window separately.\r\n\r\nHaving an option to automatically detect PiP windows or define matching rules in the configuration would make it easier to control and interact with them. Thanks!",
      "created_at": "2025-11-13T11:45:39Z",
      "updated_at": "2025-11-17T06:00:11Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shamal",
        "avatar_url": "https://avatars.githubusercontent.com/u/743382?u=f01e11667bb887f74bae80eae9e88f26130bbb6e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcItU",
      "number": 621,
      "title": "Introduce max-width for nodes",
      "body": "Having windows go full-width on large monitors and ultrawides is jarring and undesired. There are a few tickets already on this, but I'd love to contribute my favorite way to solve this. And if the @nikitabobko is willing to merge this, I'm happy to offer a small bounty for the implementation, if that's desired. \r\n\r\nIntroduce `default-node-max-width: 1280`. When set, this gives each new node a maximum width when it is created. On a screen that cannot be filled fully due to this constraint, a new window/node is centered with margins to the edges of the screen. I think would be an elegant improvement for the people that are bothered by this, and should introduce minimal amount of additional complexity to the system. Certainly avoids nasty late night, dark mode for hours, accidentally-flashbang-yourself-with-google.com on a 1800nits display problem which inspired this ticket 😅.\r\n\r\nSome additional considerations:\r\n- Floating windows are unaffected by this\r\n- Nodes that are not connected to the root-container are unaffected by this\r\n- We introduce a new layout command `layout tiling-fullwidth` that allows for hotkeys that disable the constraint. Example: `ctrl-alt-cmd-space = ['layout tiling-fullwidth tiling']`. Windows in this tiling-fullwidth state just ignore the maxwidth attribute\r\n- The resize function should increase the node's maxwidth if its being resized beyond the current maxwidth's size so a node at 1200px width that gets a 'resize smart +200' sets its internal maxwidth to the new size. This means that moving the node later to another screen retains the session desired maxwidth\r\n- resize should learn to set maxwidth for nodes specifically like `resize max-width 800`, this enables setting some types of windows to be constrained by default like so:\r\n-\r\n  ```\r\n  [[on-window-detected]]\r\n  if.app-id = 'com.googlecode.iterm2'\r\n  run = ['layout tiling', 'resize max-width 800']\r\n  ```\r\n  \r\n I *think* that this is a horizontal only thing. Maybe there should be a vertical version of this as well, but I have a hard time coming up with a great use-case for this, so maybe best to just skip it. ",
      "created_at": "2024-08-09T14:17:50Z",
      "updated_at": "2025-11-15T08:04:34Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tobi",
        "avatar_url": "https://avatars.githubusercontent.com/u/347?u=7960534ac523f60d241bb7c7ef986d263ea96170&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai2eZ",
      "number": 1799,
      "title": "Aerosapce not remembering layout when exit full screen video for first time",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have 3 or more windows open in 1 workspace. 1 of those should be able to play a video and can enter full screen. I used IINA and YouTube.\r\n3. Play the video and enter Full screen.\r\n4. When exit full screen, the placement of windows have been changed.\r\n\r\nhttps://youtu.be/fiAHygJuhY4\r\nRefer to the unlisted YouTube video to see the issue. Feel free to ask me for more details.\r\n\r\nExpected result: Windows must remember their postion\r\nActual result: Feels like windows are randomly changing positions whenever I exit a full screen app\r\n\r\n### Additional info\r\n\r\nThis bug is annoying when I have placed windows in order I want, I enter full screen to watch a video and after extiing that video, the windows have become messed up all over again\r\n",
      "created_at": "2025-11-13T06:47:48Z",
      "updated_at": "2025-11-14T11:11:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ChanPyaeAung11",
        "avatar_url": "https://avatars.githubusercontent.com/u/57790540?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai3Vr",
      "number": 1803,
      "title": "hyperhdr makes all windows floating",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1.Install hyperhdr (https://github.com/awawa-dev/HyperHDR)\r\n2.Start hyperhdr\r\n3.Drag window\r\n\r\nExpected result: Windows are tiled\r\nActual result: All windows are floating\r\n\r\n### Additional info\r\n\r\n```shell\r\n❯ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-11-14T04:34:48Z",
      "updated_at": "2025-11-14T04:39:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kadaan",
        "avatar_url": "https://avatars.githubusercontent.com/u/1904898?u=7dd61aed4e1b90725d16037c6dcc6a1c100999b7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai2_O",
      "number": 1802,
      "title": "Add workspace letter or number to mission control view",
      "body": "Started using this a week ago and I'm hooked, it has been a delightful experience even for someone with no tiling window manager experience. I was happy to find there was a solution to mission control not liking how aerospace organizes its windows because that's a feature I still like to use so I can see everything that's open. \r\n\r\nI wanted to start a new discussion about a potential feature addition. I'm not sure if mission control has an API for this purpose but I thought it would be pretty useful to blow up to mission control view and have a character overlay with the workspace the window is in. Two windows of the same app in different workspaces end up grouped together in this view so this would be an edge case to complicate things. I was also thinking there could be an option within this feature for aerospace to \"listen\" to the next key press to navigate to the workspace a user wants. On a Macbook, mission control is already mapped to a function key so to be able to use it as another 'sticky modifier' key that then allows you to select a workspace would integrate well with the existing UI elements and tools macOS offers while making a super minimal UI change to add a character to the mission control view. F3 -> 1 would blow up mission control then allow the user to press key '1' to go to that workspace. I'd be happy to help contribute to this if others find that this feature would be useful and possible.\r\n\r\n<img width=\"2328\" height=\"1308\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1a53c7bd-4e3d-480e-bbee-072bfbed94b8\" />\r\n\r\n",
      "created_at": "2025-11-13T17:06:15Z",
      "updated_at": "2025-11-18T14:08:23Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wiimmers",
        "avatar_url": "https://avatars.githubusercontent.com/u/91842532?u=e16313d1af341b17c37cffa733d3a487ed4d60ca&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ai2YZ",
      "number": 1798,
      "title": "Support MacPorts as an Installation option",
      "body": "Corporate managed macs rarely allow homebrew due to the security concerns with a rootless package manager. MacPorts is a common alternative.\r\n",
      "created_at": "2025-11-13T03:56:36Z",
      "updated_at": "2025-11-13T03:56:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "isaiah-harville",
        "avatar_url": "https://avatars.githubusercontent.com/u/61603275?u=cf92c66c9e2c7790a891448600186f48086884ed&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aijfz",
      "number": 1760,
      "title": "Conditional move that tries `--boundaries-action create-implicit-container` before crossing monitors",
      "body": "## Summary \r\nI'd like to have a single keybinding that first tries to create a container in the *current workspace* (using `--boundaries-action create-implicit-container`), but if there's no space left in that direction, it then moves the window to the *adjacent monitor* (as if using `--boundaries all-monitors-outer-frame`).\r\n\r\n---\r\n\r\n### Example use case\r\nImagine I have a horizontal stack (“accordion”) of windows. When I press `alt-shift-h` (move left):\r\n\r\n1. If there's room in the current workspace, I want AeroSpace to create a new container to the left in the *current* workspace (`--boundaries workspace --boundaries-action create-implicit-container`).\r\n2. If that move fails because we’ve hit the outer frame of the current monitor, then I want it to move the window to the monitor on the left (`--boundaries all-monitors-outer-frame`).\r\n\r\n### What I've tried\r\n\r\n```\r\nalt-shift-h = 'exec-and-forget aerospace move left --boundaries-action create-implicit-container || aerospace move left --boundaries all-monitors-outer-frame'\r\n```\r\n\r\n…but this doesn’t work because `move --boundaries-action create-implicit-container` doesn’t expose a non-zero exit code or failure signal when nothing happened (e.g. when already at the edge), so the `||` fallback never triggers, even though the first move didn’t actually move anything.\r\n\r\n### Potential solution\r\n\r\nTo preserve the existing paradigm of separate `--boundaries` and `--boundaries-action` flags, perhaps something like a `--fail-if-noop` flag so that `||` knows when `create-implicit-container` hasn't done anything.\r\n\r\n```\r\nalt-shift-h = 'exec-and-forget aerospace move left --fail-if-noop --boundaries-action create-implicit-container || aerospace move left --boundaries all-monitors-outer-frame'\r\n```\r\n",
      "created_at": "2025-10-22T10:35:10Z",
      "updated_at": "2025-11-10T12:16:47Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "andrewswait",
        "avatar_url": "https://avatars.githubusercontent.com/u/46371714?u=03e86d4f98acf6ab9ccab95902f3ce20a1270b7e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhR0A",
      "number": 1632,
      "title": "Aerospace does not accept all keys on my keyboard (german \"umlaute\")",
      "body": "### Body\n\nSteps to reproduce:\r\n1. add binding `alt-ö = 'focus right'` to your aerospace config\r\n2. reload config\r\n3. error is thrown `Error while parsing key-value pair: expected '=', saw 'ö' (at line 116, column 5)`\r\n\r\nWhen using aerospace on a german macbook, one loses the ability to create a \"@\" (i copy pasted this from wikipedia :-) ) since the standard keyboard mapping has this on `alt-l` which is also a standard aerospace mapping.\r\n\r\nThe key next to the right of 'l' on a german keyboard is 'ö', and it's a standard key (no fn/alt presses). The aerospace configuration syntax seems straightforward in that I would expect the thing I need to do to remap to 'alt-ö', I'm willing to lose my muscle memory here since I'm typing more  often `@` than moving windows.\r\n\r\nExpected result: I want to be able to use keys on my keyboard in the config.\r\nActual result: aerospace errors out when using standard keys on my keyboard like `ö` .\r\n\r\n### Additional info\r\n\r\n\r\n",
      "created_at": "2025-08-13T12:19:36Z",
      "updated_at": "2025-11-10T06:29:57Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "chris-aeviator",
        "avatar_url": "https://avatars.githubusercontent.com/u/11522213?u=824a17825d9ab018261efc2ad9487fec1c18fabb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aitdk",
      "number": 1785,
      "title": "Dead windows appear again in Tahoe",
      "body": "### Body\n\nSee https://github.com/nikitabobko/AeroSpace/issues/1257 at least 7 people reported having this issue again",
      "created_at": "2025-11-03T01:57:56Z",
      "updated_at": "2025-11-10T03:20:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kyrylchenko",
        "avatar_url": "https://avatars.githubusercontent.com/u/72549318?u=f31e3760a801b61933330a98ceb19785a031d8f4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AizJS",
      "number": 1796,
      "title": "dwindle-single-window-aspect-ratio per monitor",
      "body": "Like the feature...\r\n\r\nHowever, when switching from my work monitor (3:4) to my home setup (macOS native 10.16), it is not possible to use it without changing the configuration.",
      "created_at": "2025-11-09T18:35:11Z",
      "updated_at": "2025-11-09T18:36:16Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kim-raaschou-nielsen",
        "avatar_url": "https://avatars.githubusercontent.com/u/171565239?u=69ef73ac72affdc5c4aabac9dfb5a52349c756e9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiyzq",
      "number": 1795,
      "title": "App Width Not Adjusting",
      "body": "Hello! I'm new with Aerospace and tile management apps in MacOS. I installed via Homebrew and I'm using an external monitor. I have a wide 49\" Samsung monitor, and for some reason when I enable Aerospace, I am only able to see one app at a time. The width goes across the entire screen instead of tiling and allowing other apps to be shown. When I try to manually resize, it immediately full screens again and doesn't stay put. I also tried disconnecting the monitor and trying on my mac but same issue. Running MacOS 15.6.1 on 2021 MBP M1 chip. Anyone know what I am doing wrong?",
      "created_at": "2025-11-09T04:09:38Z",
      "updated_at": "2025-11-09T13:59:27Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jay-garcia",
        "avatar_url": "https://avatars.githubusercontent.com/u/42901330?u=2034cd29f14c9f23f35556fd2f1a1c4d99ff2de1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIs6",
      "number": 620,
      "title": "Vim-like Config",
      "body": "I'd like to share my Aerospace config with the community. I don't know where I can catalog my config, so I'll share it here:\r\n\r\n```toml\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'accordion'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# on-focused-monitor-changed = ['move-mouse window-lazy-center']\r\n# on-focus-changed = ['move-mouse window-force-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        0\r\nouter.right =      0\r\n\r\n#\r\n# Bindings\r\n#\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\nctrl-space = ['mode alt']\r\n\r\n# 'alt' binding mode declaration\r\n[mode.alt.binding]\r\nctrl-space = ['mode alt']\r\nspace = ['mode main']\r\nesc = ['mode alt']\r\nbacktick = ['reload-config', 'mode main']\r\n\r\nslash = 'layout tiles horizontal vertical'\r\ncomma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nh = ['focus --boundaries-action stop left', 'move-mouse window-force-center']\r\nj = ['focus --boundaries-action stop down', 'move-mouse window-force-center']\r\nk = ['focus --boundaries-action stop up', 'move-mouse window-force-center']\r\nl = ['focus --boundaries-action stop right', 'move-mouse window-force-center']\r\n\r\nc = ['move-mouse window-force-center']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nshift-h = 'move left'\r\nshift-j = 'move down'\r\nshift-k = 'move up'\r\nshift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nminus = 'resize smart -64'\r\nequal = 'resize smart +64'\r\nshift-minus = 'resize smart -128'\r\nshift-equal = 'resize smart +128'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nu = 'workspace prev'\r\ni = 'workspace next'\r\nshift-u = 'move-node-to-workspace prev'\r\nshift-i = 'move-node-to-workspace next'\r\n1 = 'workspace 1'\r\n2 = 'workspace 2'\r\n3 = 'workspace 3'\r\n4 = 'workspace 4'\r\n5 = 'workspace 5'\r\n6 = 'workspace 6'\r\n7 = 'workspace 7'\r\n8 = 'workspace 8'\r\n9 = 'workspace 9'\r\n0 = 'workspace 10'\r\np = ['focus-monitor prev', 'move-mouse window-force-center']\r\nn = ['focus-monitor next', 'move-mouse window-force-center']\r\nshift-p = 'move-workspace-to-monitor prev'\r\nshift-n = 'move-workspace-to-monitor next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nshift-1 = 'move-node-to-workspace 1'\r\nshift-2 = 'move-node-to-workspace 2'\r\nshift-3 = 'move-node-to-workspace 3'\r\nshift-4 = 'move-node-to-workspace 4'\r\nshift-5 = 'move-node-to-workspace 5'\r\nshift-6 = 'move-node-to-workspace 6'\r\nshift-7 = 'move-node-to-workspace 7'\r\nshift-8 = 'move-node-to-workspace 8'\r\nshift-9 = 'move-node-to-workspace 9'\r\nshift-0 = 'move-node-to-workspace 10'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\ntab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nshift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\nshift-r = ['flatten-workspace-tree', 'mode alt'] # reset layout\r\n#s = ['layout sticky tiling', 'mode alt'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['fullscreen'] # Toggle between fullscreen\r\nshift-f = ['layout floating tiling', 'mode alt'] # Toggle between floating and tiling layout\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nr =  'mode resize'\r\nsemicolon = 'mode spacial'\r\nw = 'mode workspace'\r\n\r\n[mode.resize.binding]\r\nctrl-space = ['mode binding']\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nr = 'mode alt'\r\nh = ['resize width -64']\r\nj = ['resize height -64']\r\nk = ['resize height +64']\r\nl = ['resize width +64']\r\nshift-h = ['resize width -8']\r\nshift-j = ['resize height -8']\r\nshift-k = ['resize height +8']\r\nshift-l = ['resize width +8']\r\n\r\n[mode.spacial.binding]\r\nctrl-space = ['mode special']\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nh = ['join-with left', 'mode alt']\r\nj = ['join-with down', 'mode alt']\r\nk = ['join-with up', 'mode alt']\r\nl = ['join-with right', 'mode alt']\r\n\r\n[mode.workspace.binding]\r\nctrl-space = ['mode wordspace']\r\nspace = 'mode main'\r\nesc = 'mode alt'\r\nw = 'mode alt'\r\nh = ['workspace prev']\r\nl = ['workspace next']\r\nj = ['focus-monitor next']\r\nk = ['focus-monitor prev']\r\nshift-h = ['move-node-to-workspace prev']\r\nshift-l = ['move-node-to-workspace next']\r\nshift-k = ['move-node-to-monitor prev']\r\nshift-j = ['move-node-to-monitor next']\r\n\r\n#\r\n# Application-specific configurations (optional)\r\n#\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.apple.reminders'\r\n# run = 'layout floating'\r\n```\r\n\r\nOne single command to switch to `alt` mode: `ctrl+space`. Then once in `alt` mode `hjkl` keys to navigate windows. Hold `shift` with these keys to move window. Switch to `resize` mode with `r`. Switch to `workspace` mode with `w`. Backtick always refreshes config. There's `special` mode with `;`, which allows you to merge windows.\r\n\r\nLet me know what you all think of this setup.\r\n\r\nI'm loving Aerospace! I'm happy to contribute some fixes and features where I can, but I'd have to orient myself to the swift project a bit more.",
      "created_at": "2024-08-13T21:02:57Z",
      "updated_at": "2025-11-08T00:38:51Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "samholmes",
        "avatar_url": "https://avatars.githubusercontent.com/u/517469?u=be2374ee92c6a09058e11d679853cbb00fcd2a81&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiuXz",
      "number": 1786,
      "title": "AeroSpace terminates immediately on macOS 15.1 - \"terminating on removal\" after status bar icon hidden",
      "body": "## Bug Description\r\nAeroSpace 0.19.2-Beta immediately exits after launch on macOS 15.1. The app\r\ncannot stay running.\r\n\r\n## Environment\r\n- **macOS**: 26.1 (Build 25B78) - macOS 15.1\r\n- **AeroSpace**: 0.19.2-Beta\r\n- **Install**: Homebrew\r\n\r\n## What Happens\r\n1. Launch AeroSpace.app\r\n2. App exits immediately (within 1 second)\r\n3. Window manager never starts\r\n\r\n## Bug Description\r\nAeroSpace 0.19.2-Beta immediately exits after launch on macOS 15.1. The app\r\ncannot stay running.\r\n\r\n## Environment\r\n- **macOS**: 26.1 (Build 25B78) - macOS 15.1\r\n- **AeroSpace**: 0.19.2-Beta\r\n- **Install**: Homebrew\r\n\r\n## What Happens\r\n1. Launch AeroSpace.app\r\n2. App exits immediately (within 1 second)\r\n3. Window manager never starts\r\n\r\n```bash\r\n$ aerospace --version\r\n\r\naerospace CLI client version: 0.19.2-Beta\r\nd246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n## System Logs\r\n\r\nThe logs show macOS sends NSStatusItemChangeVisibilityAction immediately after\r\nlaunch, causing AeroSpace to terminate:\r\n\r\n2025-11-04 09:41:01.141749 AeroSpace: Received action(s):\r\nNSStatusItemChangeVisibilityAction\r\n2025-11-04 09:41:01.142473 AeroSpace: 0 terminating on removal\r\n2025-11-04 09:41:01.142476 AeroSpace: terminate:\r\n2025-11-04 09:41:01.142613 AeroSpace: App termination approved\r\n2025-11-04 09:41:01.142613 AeroSpace: Termination commencing\r\n\r\n## Analysis\r\n\r\nThis appears to be a macOS 15.1 compatibility issue. The system is\r\nhiding/removing the menu bar icon immediately after launch, which triggers\r\nAeroSpace's exit logic. This behavior is new in macOS 15.1.",
      "created_at": "2025-11-04T01:46:17Z",
      "updated_at": "2025-11-06T12:34:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "channinghsu",
        "avatar_url": "https://avatars.githubusercontent.com/u/20915488?u=ad0b4dee1f706ea4d0c194b02aa12745a5487cc9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiwU_",
      "number": 1793,
      "title": "Aerospace current IPC is slow and should be extended.",
      "body": "Hey there!\r\n\r\nI’m developing an app that integrates with AeroSpace and noticed that tasks executed through configs like:\r\n```toml\r\nexec-on-workspace-change = [\r\n  \"/bin/zsh\",\r\n  \"-c\",\r\n  \"curl -s localhost:43551\"\r\n]\r\n```\r\nrun quite slowly. For example, polling three aerospace-cli commands every 0.2 seconds feels noticeably faster in comparison.\r\n\r\nI think we could improve this by introducing shared memory access for workspace data. Each time the workspaces state changes (workspace count, opened/closed apps, etc.), AeroSpace could copy the current `Workspace.all` into shared memory. Then, any external process could read this data directly and get updates instantly — a radical but very efficient IPC mechanism. Also this solution needs to be coveted with semaphores or better `pthread_rwlock_t` Swift analogue to avoid data races.\r\n\r\nAlternatively, improving the performance of the existing mechanism would also help.\r\nAnother option could be adding an exec-on-workspaces-update configuration, which triggers a command whenever workspace data changes, or perhaps separate exec-on-xxx hooks for each type of update. This would let side applications react quickly using lightweight aerospace-cli calls.",
      "created_at": "2025-11-06T00:38:28Z",
      "updated_at": "2025-11-06T00:38:29Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "SacrilegeWasTaken",
        "avatar_url": "https://avatars.githubusercontent.com/u/91197919?u=5ce8990605d0b0da3b9f805e7726dbc4869442c3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiwRj",
      "number": 1792,
      "title": "(Socket.Socket.Error error 1.)",
      "body": "Steps to reproduce:\r\nokay so i was tinkering lol\r\n\r\ni was trying to set the main binding to have essentially just one binding on it (trying to find clever ways to get my left and right alt keys separated), i set after-startup-command = ['mode.where-i-moved-my-remaps.binding']\r\n\r\nit got very unhappy with this decision and stopped all of my keys from working before screaming an infinite number of a's into my terminal\r\n\r\nit has since not allowed itself to restart and any time i try to restart (i have reverted the config to pre meddling states) i get a 'Can't connect to AeroSpace server. Is AeroSpace.app running?\r\nThe operation couldn’t be completed. (Socket.Socket.Error error 1.)'\r\n\r\ni cant find any pids saying aerospace is running somewhere so i think ill reinstall, let me know if theres any additional info i can provide, but to be honest i got slightly lost in the sauce and had a lot of different things remapping keys \r\ni.e. this is most likely a skill issue on my part \r\n\r\n[aerospace-runtime-error.txt](https://github.com/user-attachments/files/23377050/aerospace-runtime-error.txt)\r\n\r\n\r\nExpected result: aerospace works despite my influence \r\nActual result: yeah no i can break it \r\n\r\n### Additional info\r\nive been having a lot of fun setting up aerospace you've made something really cool! you can see it in the way people talk about it online, like a breath of fresh air in terms of talented devs paying attention to actual people wanting to use mac in a not infuriating way, rather than the hundredth productivity widget we dont care about anymore \r\n\r\nno hate to yabai and amethyst i had my time with both of them and they were great\r\nkeep up the amazing work mate\r\n\r\n```shell\r\n$ aerospace -v \r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n\r\nokay even with brew uninstall -> brew install its tired  oh well ¯\\_(ツ)_/¯\r\n\r\n<img width=\"776\" height=\"128\" alt=\"Screenshot 2025-11-05 at 22 50 05\" src=\"https://github.com/user-attachments/assets/933bb2ae-0ae6-414d-bee6-632bbe19e782\" />\r\n\r\n",
      "created_at": "2025-11-05T22:52:29Z",
      "updated_at": "2025-11-05T23:58:32Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "PragmaticDogmatism",
        "avatar_url": "https://avatars.githubusercontent.com/u/180043905?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiwDi",
      "number": 1791,
      "title": "genuinely hate this thing (no I don't, I love it)",
      "body": "(sorry for my very aggressive way of writing this), this is a stupid rant, but I absolutely love aerospace, but i fucking hate it as well, its probably a user error (im probably just stupid, and that wouldnt shock me), but I CAN NOT for the life of me seem to get this thing to work properly, I initially used Yabai because it was easier to mess with, used macOS's workspaces instead of what aerospace does (which i will explain why I hate this), and was also controllable with Raycast (A Spotlight alternative), and it worked perfectly fine until macOS 26 came out, this was fine, I started to try out aerospace until yabai updated, went back to yabai, but stopped using it because it lacked one thing that I love about aerospace which is the ability to have keybinds for opening apps, I use META+RETURN to open ghosTTY (a terminal emulator), the issue I currently am having is the fact that for some reason apps just do NOT want to cooperate with how I place them, yabai handles apps by simply seeing if there is room and evenly tiling apps, it doesnt put them off the screen, the issue with aerospace is that when I for example, have spotify open, ghostty open on the same screen, then another app, Java for example, ONE of the 3 open apps will decide \"Hey, can I be as thin as possible please?\", and aerospace makes it as thin as it can possible be, this is annoying for me since it quite literally makes doing anything basically impossible without fighting aerospaces tiling, that being said I don't hate aerospace and would rather just figure out how to fix this (because I am 99% sure this is just an issue with my configuration or something), and would certainly love to continue using aerospace. the video below is an video showing the tiling issue I had mentioned.\r\n\r\nI currently use Nix Home-Manager and manage all my configs with that if someone can help me, thank you :)  \r\n\r\nhttps://github.com/user-attachments/assets/2258e973-30b2-4f88-902b-4f2b38831e68\r\n\r\n",
      "created_at": "2025-11-05T16:46:02Z",
      "updated_at": "2025-11-05T16:46:04Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "playfairs",
        "avatar_url": "https://avatars.githubusercontent.com/u/74739795?u=40515947e8577ae8c56d13afc8c60777dd936dd8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AivE-",
      "number": 1789,
      "title": "While sharing screen on Slack, it automatically switches to the last workspace where the pen was used.",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Get on a huddle on Slack and start screen sharing. Slack always takes the first screen that pops-up after sharing. Lets say this is my workspace 1.\r\n2. While on the huddle, the other person draws something using the pen tool in workspace 1.\r\n3. Switch to any other workspace immediately. Once the highlight of the pen tool is fades away, the system automatically switches to workspace 1.\r\n\r\nAlternate way to reproduce-\r\n1. Huddle and share **workspace 1**. The other person uses the pen tool to draw or highlight.\r\n2. Close the pen tool, and move to other workspace. \r\n3. Now again ask the person to use the pen tool. Aerospace would automatically switch back to **workspace 1**\r\n\r\nExpected result: It should stay on which ever workspace I am in because it causes confusion and mild agitation to both the folks in the call.\r\nActual result: Aerospace automatically switches to the first screen that is shared when the screen share option is used in Slack huddle\r\n\r\n### Additional info\r\n\r\nIt used to work on my old Mac M1 Pro. Currently, I am using a Mac M4 Pro with the latest Tahoe release and have started to see the issue. I dont have custom configs/softwares which would interfere with aerospace. I have not seen it happen on MS Teams yet, just around Slack.\r\n\r\nPS- I really liked aerospace and have been using it for almost a year now. Would really love if the issue is fixed or I am able to get some solution to get it resolved.\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n<img width=\"700\" height=\"206\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cee549cf-f9c3-4584-9bb7-5e315478eb24\" />\r\n",
      "created_at": "2025-11-04T18:37:16Z",
      "updated_at": "2025-11-04T18:37:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "JoardarAdi",
        "avatar_url": "https://avatars.githubusercontent.com/u/92454043?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AioE-",
      "number": 1776,
      "title": "Mac Option Key not recognized as Alt",
      "body": "Hey Aerospace community,\r\nI'm trying out Aerospace (hoping to migrate from Amethyst), and I'm having issues with the option/alt key with the default configuration. \r\nThe default mac keyboard uses both option keys to input special characters (eg `alt-y`=`¥`), but when I tried an external keyboard (intended for windows PC's) the alt key behaved as expected. Is there some configuration I missed that handles the alt-option key?\r\nThanks!",
      "created_at": "2025-10-27T17:00:23Z",
      "updated_at": "2025-11-04T17:28:59Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4u8e",
        "body": "After some more digging I found the issue, posting a reply here for future searches:\r\nTurns out my work machine was configured so that Mac Terminal was forcing `Secure Keyboard Entry` everytime it started up. Unchecking the setting in the menu bar fixed it. I did not have this problem on my personal machine. I was also able to use WezTerm instead, which does not force Secure Keyboard Entry. "
      },
      "user": {
        "login": "BenDavidAaron",
        "avatar_url": "https://avatars.githubusercontent.com/u/25389182?u=750b85c78fbf987e4fe7ac023da07a0f853a1248&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag5D4",
      "number": 1582,
      "title": "When windows are closed without `aerospace close`, a phantom window remains",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open a terminal window or a chrome window\r\n```\r\n~ » aerospace list-windows --all                                                                                                                                                              \r\n270909 | Google Chrome | New Discussion · nikitabobko/AeroSpace - Google Chrome\r\n271119 | kitty         | aerospace list-windows --all \r\n270946 | kitty         | ~                                                                                                                                                                    \r\n```\r\n\r\n2. Close the terminal with ctrl-d or exit or some way to close the terminal\r\n\r\nSee empty space where window used to be (can move this space around as if it's an actual window). \r\n\r\n```\r\n270909 | Google Chrome | New Discussion · nikitabobko/AeroSpace - Google Chrome\r\n271119 | kitty         | \r\n270946 | kitty         | ~\r\n```\r\n\r\nExpected result: Window 271119 is cleaned up and there's no empty hole \r\nActual result: Window 271119 persists, but has an empty window title and there's a hole where the window used to be. \r\n\r\n### Additional info\r\n\r\nrunning `aerospace close --window-id 271119` cleans this up. \r\n\r\n```shell\r\n$ aerospace -v                                                                                                                                                                                                                \r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-07-22T23:37:43Z",
      "updated_at": "2025-11-04T03:27:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1xpv",
        "body": "Thank you for the details.\r\n\r\nThat explains it:\r\n\r\n>  Moreover, Mail.app was in unresponsive state and so I had to force-quit it.\r\n\r\nUnfortunately, the windows creation/destruction logic sort of a \"blocking operation\" right now that waits for responses from all applications. I thought that it was only a performance problem, but now I see how it can lead to phantom windows\r\n\r\nTracking issue: https://github.com/nikitabobko/AeroSpace/issues/1615"
      },
      "user": {
        "login": "neevparikh",
        "avatar_url": "https://avatars.githubusercontent.com/u/41182432?u=e4de802905277653ba702205b3d967f223ec88cc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcLiL",
      "number": 639,
      "title": "Feature Request: Customizable Split Ratio for Tiles Layout",
      "body": "Thanks for developing such a great app! I wanted to suggest an enhancement regarding the tiles layout. In the current configuration, all windows are split equally to a ratio of 0.5. I am wondering if it's possible to introduce a setting that allows users to specify their desired split ratio.\n\nPersonally, I would prefer a golden ratio of 0.618. This is slightly larger than 0.5 and would help to ensure that my eyes are not constantly drawn to the split in the middle of the windows. At present, to avoid this distraction, I need to sit on one side of the table or constantly adjust my focus towards one side of the monitor.\n\nThis adjustment could work similarly to the split ratio settings in yabai, which you can read more about here: [yabai split ratios](https://github.com/koekeishiya/yabai/wiki/Configuration#split-ratios).\n\nThank you!",
      "created_at": "2024-06-10T18:39:35Z",
      "updated_at": "2025-11-03T21:11:24Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nohzafk",
        "avatar_url": "https://avatars.githubusercontent.com/u/149959021?u=d62f70d67ff37bab5502d888dfc8520c316f789e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agaan",
      "number": 1505,
      "title": "Quake-style popup terminal with Aerospace",
      "body": "I got sidetracked on having a hotkey-enabled popup terminal with Aerospace.\r\ne.g.\r\n  * Hyper-Space summons a terminal window to the top of your screen\r\n  * Hyper-Space again toggles the window off\r\n\r\n(not quite sure why... I've never played Quake or really used a popup terminal... but with all the fun of sending windows to workspaces and monitors it seemed Absolutely Necessary 🤷).\r\n\r\nGot it working (listing below) and it seems to work quite well.\r\nBut there are a few trade-offs and gotchas. Wondering if anyone has any thoughts on improving it:\r\n\r\n* Identifying the window is a pain.  I originally tried with Wezterm, where `wezterm start --class some.fake.app-id` looked promising, but seems not to work.  (It either retains the main ID, or shows `NULL-BUNDLE-ID`)\r\nUsing the Window title might work? But terminals seem to want to overwrite that, so probably requires some careful configuration.\r\n* I settled with just using Terminal, and only having a single window. (e.g. I'll use WezTerm for my persistent windows)\r\n* Something like `aerospace tag-window \"quake\"` could maybe help, and might be useful for other scripting configurations?\r\n* If the terminal is launched, then it first renders in your current layout and is then coerced into floating.\r\n* That's a bit ugly, but `aerospace enable off` then prevents aerospace manipulating it in the background, so not sure what else to do.\r\n* `aerospace move-node-to-workspace --fail-if-noop` still gives an error on noop\r\n* Having to shell out to osascript to resize the Terminal window seems a bit redundant from a script for a window manager. But `aerospace resize` seems to be a noop for floating windows?\r\n\r\nHere's the script if you'd like to play with it!\r\nI have it mapped to `cmd-ctrl-alt-space = 'exec-and-forget /Users/myname/bin/quake'`\r\n\r\n```bash\r\n#!/bin/bash\r\n# Open a Quake / Visor style Terminal at the top of the screen\r\n\r\nexport PATH=$PATH:/opt/homebrew/bin/\r\n\r\nget_term() {\r\n  aerospace list-windows --json --all \\\r\n    |  jq -r '.[]|select(.[\"app-name\"] == \"Terminal\")[\"window-id\"]' \\\r\n    | head -n1\r\n}\r\n\r\nWORKSPACE=$(aerospace list-workspaces --monitor focused --visible)\r\nTERMID=$(get_term)\r\n\r\n# Start Terminal if not already started.\r\nif [ -z \"$TERMID\" ]; then\r\n  osascript -e \\\r\n    'tell application \"Terminal\"\r\n      do script\r\n      activate\r\n    end tell'\r\n   TERMID=$(get_term)\r\nelse\r\n  # If we are *already* focused on the Terminal, then hide it\r\n  CURR=$(aerospace list-windows --focused | cut -f1 -d\" \")\r\n  if [ \"$CURR\" == \"$TERMID\" ]; then\r\n    aerospace move-node-to-workspace --wrap-around next\r\n    exit 0\r\n  fi\r\nfi\r\n\r\n# --fail-if-noop doesn't do anything, so hide failure\r\naerospace move-node-to-workspace --window-id $TERMID $WORKSPACE 2>/dev/null || true\r\n\r\n# set window to focused, floating, and positioned at top of screen\r\naerospace focus --window-id $TERMID\r\naerospace layout --window-id $TERMID floating\r\nosascript -e 'tell application \"Terminal\" to set bounds of front window to {0, 0, 2100, 400}'\r\naerospace focus --window-id $TERMID\r\naerospace move-mouse window-force-center\r\n```",
      "created_at": "2025-06-26T07:37:25Z",
      "updated_at": "2025-11-03T10:48:02Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "osfameron",
        "avatar_url": "https://avatars.githubusercontent.com/u/28139?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aitco",
      "number": 1784,
      "title": "Combination of Horizontal + Vertical Tiling?",
      "body": "Is there anyway to have a combination of horizontal + vertical tiling?\r\n\r\nSo for instance I have the right 50% of the screen as one window, and then the left 50% is two windows, horizontally tiled relative to eachother; but vertically tiled relative to the right 50% window. Similar to how FancyZones on Windows would operate",
      "created_at": "2025-11-03T01:16:22Z",
      "updated_at": "2025-11-03T06:55:07Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TaylorJKing",
        "avatar_url": "https://avatars.githubusercontent.com/u/45841003?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AesKw",
      "number": 1181,
      "title": "Dead window taking up space",
      "body": "Occasionally I have an issue where Aerospace will think there is is a window that doesnt exist:\r\n<img width=\"1048\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d4510676-f0dc-42f5-9c25-6e1f7adae2c5\" />\r\nThis messes up the tiling as it creates an empty space for this non existant window.\r\nIt's clear that aerospace knows the window doesn't exist via the output from ```aerospace focus```, maybe it could prune dead ones occasionally or something?\r\n\r\nThis only seems to happen with the ChatGPT native Mac client. \r\n\r\nCould potentially be related to https://github.com/nikitabobko/AeroSpace/issues/445 although that says it was fixed in a previous version, maybe a regression or new issue\r\n\r\n\r\nI am on the latest :\r\n```\r\naerospace CLI client version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nAeroSpace.app server version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\n```\r\nI'm on mac air m1 sequioa 15.3.1 (24D70)",
      "created_at": "2025-03-06T05:15:00Z",
      "updated_at": "2025-11-03T01:13:09Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwaCl",
        "body": "Created a tracking issue https://github.com/nikitabobko/AeroSpace/issues/1257"
      },
      "user": {
        "login": "lukas-kyeso",
        "avatar_url": "https://avatars.githubusercontent.com/u/3828018?u=c346763518e2eaa5811dfe19a0747b119fa22547&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac0XJ",
      "number": 758,
      "title": "Group multiple tabs of Preview.app in a single window",
      "body": "Hello everyone,\r\nI am currently getting started with aerospace. My preview app on MacOS uses multiple tabs. \r\nIt looks like each tab is seen as a single window in my configuration. That means each tab is its \"own\" tile, and once I switch to a different tab, my window moves to another position on the screen.\r\n\r\nI would like to group all my tabs from a single Preview.app as a single tile from the aerospace point of view. \r\nWould you have any recommendations?\r\n\r\nThank you in advance",
      "created_at": "2024-11-25T17:31:44Z",
      "updated_at": "2025-11-01T21:13:26Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "abrihaye",
        "avatar_url": "https://avatars.githubusercontent.com/u/85847766?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiraT",
      "number": 1782,
      "title": "Is there equivalent to \"All Desktops\"?",
      "body": "I'm trying to switch from using multiple Mac Desktops to aerospace.\r\n\r\nWith Mac Desktops I was to have a single window appear on all desktops. I used it for apps I needed everywhere (e.g. chatggpt, always useful toggether with my other windows).\r\n\r\nIs there a way to ask aerospace to have a place for some app in all workspaces? In each I'd may want it in a different location, but I'd like it to appear in all. Would also be cool if I could have it in only several workspaces (so have a feature of add app to workspace) but even if just in all it would be great.\r\n\r\nIt sounds like technically it should be possible since aerospace just repositions windows so just needs to record locations per workspace of same window. Maybe it's already available? I couldn't find such feature.",
      "created_at": "2025-10-30T23:35:55Z",
      "updated_at": "2025-10-31T11:43:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4mZC",
        "body": "Duplicate of #2 "
      },
      "user": {
        "login": "yanshay",
        "avatar_url": "https://avatars.githubusercontent.com/u/18171583?u=ef5f7e70bdf92b4c86944b9d9d14c116a96159a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agp8w",
      "number": 1533,
      "title": "Giving containers an id and adding support to move a window directly to a specific container via CLI",
      "body": "Loving AeroSpace! Thank you for your awesome work on this.\r\n\r\n**tl;dr**\r\n\r\nJust want to discuss a feature I am working on ahead of any potential pull request, related to giving containers an `id` and add CLI support to move a focused window directly into whatever container you want, given the id..\r\n\r\n**Background**\r\nI've been setting things up and have a shell script that moves windows around (and opens apps first, if needed). It mostly works, but every now and then, whether timing or something else, my windows get into some weird state. Basically, I'm doing something like:\r\n\r\nContainer 0 (v_tiles):\r\niTerm2\r\nFinder\r\n\r\nContainer 1:\r\nChrome\r\n\r\nContainer 3 (accordion):\r\nChrome Dev Tools\r\nSlack\r\nSublime Merge\r\n\r\nAnyway! Sometimes when I have to programmatically do:\r\n\r\n```\r\n> aerospace move right\r\n> aerospace join-with right\r\n```\r\n\r\nThings get weird. I don't know why. I'm sure it's a \"me\" issue and not anything else.\r\n\r\n**Feature idea**\r\n\r\nFull disclosure: I have a branch up on my fork that partially implements this!\r\n\r\nWhat are you thoughts on adding the following commands:\r\n\r\n```\r\n> aerospace list-containers --workspace 1\r\n> aerospace move-node-to-container --workspace 1 --container 0\r\n```\r\n\r\nOn my branch, I have the following output for `list-containers`:\r\n\r\n```\r\n➜  AeroSpace git:(feat/list-containers) ✗ ./.debug/aerospace list-containers --workspace 1\r\nContainer 0:\r\n7468  | Finder              | pocket\r\n100   | iTerm2              | ./.debug/aerospace list-containers --workspace 1\r\nContainer 1:\r\n17969 | Xcode               | AeroSpace — about_this_mac.json5\r\nContainer 2:\r\n182   | Firefox             | New Discussion · nikitabobko/AeroSpace\r\n18313 | Sublime Merge       | ~/projects/external/AeroSpace\r\n```\r\n\r\nI am in the process of (attempting to) implementing support for specifically moving a container.\r\n\r\nThoughts on whether this is something you'd be interested in merging into the project?",
      "created_at": "2025-07-09T17:44:58Z",
      "updated_at": "2025-10-31T00:15:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "daveschumaker",
        "avatar_url": "https://avatars.githubusercontent.com/u/5395723?u=f61f736da3950f53656ff8e56bc8948d7b8fa5f0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AenZc",
      "number": 1155,
      "title": "Focus follows mouse",
      "body": "Like in i3 and Yabai, it would be great if AeroSpace included a feature where moving the mouse over an unfocused window gives the focus to that window.",
      "created_at": "2025-02-28T16:55:30Z",
      "updated_at": "2025-10-30T20:16:55Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danijar",
        "avatar_url": "https://avatars.githubusercontent.com/u/2111293?u=ab16f8dc9000d2aa5a6e193fb22fe246ebd01a74&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AioEO",
      "number": 1775,
      "title": "Window Corner Misalignment Between Workspaces",
      "body": "Is it normal that the top-left corner of another window appears at the bottom-right corner of the current workspace, and when I click on it, it switches to show other windows and workspaces?\r\n\r\n<img width=\"113\" height=\"100\" alt=\"Screenshot 2025-10-27 at 17 41 29\" src=\"https://github.com/user-attachments/assets/62ce412d-ea0b-4a17-8df9-c2e3a563dce2\" />\r\n",
      "created_at": "2025-10-27T16:47:16Z",
      "updated_at": "2025-10-30T20:02:12Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "safeith",
        "avatar_url": "https://avatars.githubusercontent.com/u/2394408?u=a477c4850e4755d291ae6d3663773c694429a4ac&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiq_l",
      "number": 1781,
      "title": "\"focus dfs-prev\" doesn't work when all windows are floating",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Open two windows in a single workspace\r\n2. make both windows floating ('layout floating tiling')\r\n3. Try to switch windows by 'focus dfs-prev --boundaries-action wrap-around-the-workspace'\r\n\r\nExpected result:\r\nFocus change goes to the next window\r\n\r\nActual result:\r\nNo switching\r\n\r\n### Additional info\r\nIt works when at least one window has the tiling layout\r\n\r\n```shell\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-30T13:40:47Z",
      "updated_at": "2025-10-30T13:42:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4j8o",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/521"
      },
      "user": {
        "login": "VladislavBannikov",
        "avatar_url": "https://avatars.githubusercontent.com/u/59625606?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiq2H",
      "number": 1780,
      "title": "Configurable gaps",
      "body": "I'd love to see a feature allowing me to set gaps dynamically, either\r\n- as a CLI command \r\n```\r\naerospace gaps outer.right=[{monitor.2 = 100}, 0]\r\n```\r\nor\r\n- connected to a mode, e.g. \r\n```\r\n[mode.gappy.gaps]\r\nouter.right = [{monitor.2 = 100}, 0]\r\n```",
      "created_at": "2025-10-30T10:34:26Z",
      "updated_at": "2025-10-30T13:26:09Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4j53",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1515"
      },
      "user": {
        "login": "vramdal",
        "avatar_url": "https://avatars.githubusercontent.com/u/697466?u=ca7fac69767a151c222167b2a50dc2b79fc2475e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiqe_",
      "number": 1779,
      "title": "Since Tahoe, Workspace changes randomly",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Typing in Workspace 1, switches unprompted to Workspace W and shows no active windows (though there are active windows in Workspace W).\r\n2. Alt-Shift-1 does nothing\r\n3. Select Workspace 1 from menu bar and switch back to Workspace 1\r\n4. Alt-Shift-W and back to Workspace W with open windows as expected\r\n\r\nExpected result: no behavior\r\nActual result: seemingly unprompted switch to different workspace, where active windows do not display\r\n\r\nUPDATE: I think that MS-Office auto-saves may be activating other Workspaces. \r\n\r\n### Additional info\r\n\r\nTahoe 26.0.1, single monitor\r\n",
      "created_at": "2025-10-30T00:54:43Z",
      "updated_at": "2025-10-30T02:03:23Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "L5PKing",
        "avatar_url": "https://avatars.githubusercontent.com/u/212031857?u=c445632b8fccebc2cdd36b99281cc80878b89f93&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiJSV",
      "number": 1726,
      "title": "Bring to front all windows in node when one is focused",
      "body": "Tried looking through the docs and other issues and couldn't find anything relating to this, apologies if I just didn't look enough. Essentially, I would like all of the windows in a tile node to be brought to front when any of them are focused, to prevent windows from hiding behind accordion layout windows. Example:\r\n\r\n``` \r\n  horizontal accordion (root)\r\n      /                 \\\r\nwindow 1               vertical tiles\r\n                        /            \\\r\n                 window 2            window 3\r\n```\r\n\r\nHere is what currently happens when moving from the far left window 1 window to the right:\r\n\r\n<img width=\"1728\" height=\"1117\" alt=\"image\" src=\"https://github.com/user-attachments/assets/3f952ecf-41b0-4498-b63c-de4a813ec831\" />\r\n\r\nWhat I would like to happen:\r\n\r\n<img width=\"1728\" height=\"1117\" alt=\"image\" src=\"https://github.com/user-attachments/assets/54967fbb-21d1-4c3e-a8e4-4acda137c707\" />\r\n\r\nSorry it's a little confusing because I used 3 blank windows but hopefully it's understandable.",
      "created_at": "2025-09-27T01:12:47Z",
      "updated_at": "2025-10-29T23:59:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bshowell0",
        "avatar_url": "https://avatars.githubusercontent.com/u/97060762?u=8038378cef12c216c0c27accb68f47b43e1bad71&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeA19",
      "number": 1038,
      "title": "Borders are not consistent",
      "body": "this is the command for it\r\nafter-startup-command = [\r\n    'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0'\r\n]\r\n\r\nit works when i first boot my laptop, but it goes away after sometime and reloading aerospace does nothing for it, how can i force reload it so i can see the borders again?",
      "created_at": "2025-01-24T20:46:03Z",
      "updated_at": "2025-10-28T22:43:40Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlejandroSanchez90",
        "avatar_url": "https://avatars.githubusercontent.com/u/127575426?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AinqT",
      "number": 1774,
      "title": "`aerospace list-workspaces --focused` returns multiple workspaces after external monitor is disconnected",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Connect an external monitor.\r\n2. Ensure there is at least one workspace on each monitor.\r\n3. Disconnect external monitor.\r\n4. Run `aerospace list-workspaces --focused`.\r\n\r\nObserve that the command now returns two workspaces. The documentation states that this should never happen: \r\n\r\n> Alias for `--monitor focused --visible`. Always prints a single workspace.\r\n\r\nThis can be resolved by focusing both workspaces once. After re-running the command it correctly shows only one workspace. \r\n\r\nExpected result: Should print one workspace (the focused one).\r\nActual result: Prints multiple workspaces.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nThis bug breaks my sketchybar config and is particularly annoying when the second focused workspace is an auto-generated one (e.g. `11`) because it's hard to focus with the keyboard.",
      "created_at": "2025-10-27T08:45:15Z",
      "updated_at": "2025-11-16T19:18:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hakonharnes",
        "avatar_url": "https://avatars.githubusercontent.com/u/89907156?u=13b863c27f9f1696c712368216278ed329fc64c2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aind_",
      "number": 1773,
      "title": "Feature: Embedded Workspaces (or... Portals?)",
      "body": "I'm sure we're all familiar with #2 which amongst other things would allow you to have a persistent window throughout different workspaces.\r\n\r\nI'm wondering if allowing workspaces to embed other workspaces might be a better solution. For example, on the outermost workspace I have two windows side by side, media player on the left, and a workspace on the right. When I enter the workspace on the right, I can do everything I can on a **monitor** with aerospace today – rearrange windows, as well as change workspaces, without affecting the outermost workspace.\r\n\r\nWith this approach you get sticky sidebars for free as you can put whatever you want on the outermost workspace, then do all your work in the inner workspace.\r\n\r\nPotential Questions and Answers:\r\nHow would the controls work concretely?\r\n* Need three operations, Create embedded workspace, Enter embedded workspace, Exist embedded workspace.\r\n* Creating an embedded workspace will create a \"window\" that acts like any other window; you can move it around and whatever\r\n* While focusing on the embedded workspace, you can enter it, then everything you do will be within the embedded workspace. You can create and enter into more embedded workspaces here if you want.\r\n* Exit embedded workspace lets you move out one layer.\r\n* Close embedded workspace can just work with close. This shouldn't remove the actual workspace.\r\n\r\nWhat if I have workspace A on my left monitor, as well as within workspace B which is in my right monitor?\r\n* Show it on whichever monitor you are focused on. Not letting the user do this sounds like an obvious solution but we have the problem of what if I brought in workspace C which has A.\r\n\r\nWhat if I have multiple instances of a workspace within the same workspace?\r\n* If focused on the outer workspace, show an arbitrary one. If focused on one of the inner workspaces, show that one. Honestly if you do this you're just asking for trouble.\r\n\r\nWhat if I have a (directly/indirectly) recursive workspace?\r\n* Perform tie-breaker based on your current depth, then moving outwards.",
      "created_at": "2025-10-27T02:30:03Z",
      "updated_at": "2025-10-27T02:34:40Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hanmindev",
        "avatar_url": "https://avatars.githubusercontent.com/u/6187525?u=c6ccf61af6c2e8b25e513a9ea79b28937684bb18&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiVK_",
      "number": 1739,
      "title": "API/Command to Query Current Split Orientation",
      "body": "### Background\r\n\r\nComing from i3, one of the features I miss in AeroSpace is the visual indication of the next split direction. In i3, the window border highlights (right border for horizontal split, bottom border for vertical split) provide immediate visual feedback about where the next window will be placed.\r\n\r\n### Current Limitation\r\n\r\nAeroSpace currently provides split commands (`split horizontal`, `split vertical`, `split opposite`) but there's no way to:\r\n- Query the current split orientation of a container\r\n- Determine what the next split direction will be\r\n- Build visual indicators or status bar widgets showing the split state\r\n\r\n### Proposed Solution\r\n\r\nAdd a command or API endpoint to query the current split orientation, for example:\r\n\r\n**Option 1: Dedicated query command**\r\n```bash\r\naerospace query split-orientation\r\n# Output: horizontal | vertical\r\n```\r\n\r\n**Option 2: Include in tree query (Issue #16)**\r\nWhen the tree query command is implemented, include split orientation as part of the container/node information:\r\n```bash\r\naerospace list-windows --json\r\n# Include \"split_orientation\" field in output\r\n```\r\n\r\n**Option 3: Extend existing commands**\r\n```bash\r\naerospace list-windows --format \"%{split-orientation}\"\r\n```\r\n\r\n### Use Cases\r\n\r\n1. **Status Bar Integration**: Update menu bar tools (SketchyBar, Übersicht, etc.) to display the current split mode\r\n   ```toml\r\n   alt-h = ['split horizontal', 'exec-and-forget update-statusbar-split-indicator horizontal']\r\n   ```\r\n\r\n2. **Visual Notifications**: Show macOS notifications or overlays indicating split direction\r\n\r\n3. **Smart Scripts**: Build automation scripts that adjust behavior based on current split orientation\r\n\r\n4. **i3-like Border Indicators**: Enable third-party tools to provide visual border highlights showing split direction\r\n\r\n### Related Issues\r\n\r\n- **#16** - Tree query command (would naturally include this information)\r\n- **#228** - Alternating layouts (requires knowing current orientation)\r\n- **#230** - `on-focus-changed` callback (already implemented ✅)\r\n\r\nWith #230 implemented and this feature, it would be possible to create reactive visual indicators that update automatically when focus or split orientation changes.\r\n\r\n### Proposed Implementation\r\n\r\nSince this likely depends on or relates to Issue #16 (tree query command), this could be:\r\n- A subset/simpler version of the tree query focused on split orientation only\r\n- Included as part of the tree query implementation\r\n- A separate lightweight query specifically for this purpose\r\n\r\n### Alternative Workarounds Considered\r\n\r\nCurrently, the only workaround is to manually track split state by adding notifications to each keybinding:\r\n```toml\r\nalt-h = ['split horizontal', 'exec-and-forget osascript -e \"display notification \\\"Horizontal\\\" with title \\\"Split Mode\\\"\"']\r\n```\r\n\r\nThis approach:\r\n- ❌ Doesn't work with `split opposite` (can't determine what \"opposite\" means without knowing current state)\r\n- ❌ Loses track if windows are rearranged\r\n- ❌ Doesn't persist across AeroSpace restarts\r\n- ❌ Only knows split commands explicitly triggered by keybindings\r\n\r\n### Summary\r\n\r\nAn API to query split orientation would enable users (especially those coming from i3) to build visual feedback systems and create a more intuitive tiling experience. This feature would complement the existing split commands and align well with the planned tree query functionality.",
      "created_at": "2025-10-08T11:13:37Z",
      "updated_at": "2025-10-25T16:29:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YoM",
        "body": "Created an issue https://github.com/nikitabobko/AeroSpace/issues/1772"
      },
      "user": {
        "login": "zwo-bot",
        "avatar_url": "https://avatars.githubusercontent.com/u/5802552?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ahj2M",
      "number": 1654,
      "title": "Separating Quick Look from Finder",
      "body": "I tried to separate the treatment of Quick Look, but could not get it to work. I want something like the following:\r\n```toml\r\n[[on-window-detected]]\r\n    if.app-id = 'com.apple.finder'\r\n    if.window-title-regex-substring = '^quick look'\r\n    run = ['layout floating', 'move-node-to-workspace 1']\r\n```\r\n\r\nDoes anyone know what I need to change to make this work properly?\r\n\r\nCheers!",
      "created_at": "2025-08-25T08:09:28Z",
      "updated_at": "2025-10-25T15:37:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dgegen",
        "avatar_url": "https://avatars.githubusercontent.com/u/66382194?u=cdafacc8dfb2aaa0b344586946e7a51f40ef7ed5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aibxu",
      "number": 1747,
      "title": "Sometimes detaching Chrome Tabs yields a floating window since Tahoe",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Have a Chrome window in tiled mode with Aerospace\r\n2. Drag a tab out of the window to create a new window\r\n\r\nExpected result:  The new window is tiled with the other windows\r\nActual result: The new window floats on top of other windows and I can't get Aerospace to recognize it\r\n\r\n### Additional info\r\n\r\nNOTE: this doesn't happen consistently, sometimes I get the expected result and sometimes I get the actual result.\r\n\r\nThis seems to have started when I updated to MacOS Tahoe.  \r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-14T16:38:45Z",
      "updated_at": "2025-10-25T13:17:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YZV",
        "body": "Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1771"
      },
      "user": {
        "login": "jayjanssen",
        "avatar_url": "https://avatars.githubusercontent.com/u/691356?u=f28a731f4e0903c848f671933ece504f6d8ffe08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aidzb",
      "number": 1750,
      "title": "Aerospace runtime error when pressing repeated key that is configured using Karabiner",
      "body": "### Body\n\nSteps to reproduce:\r\n1. i was changing focus between windows repeatedly\r\n2.runtime error will come up if done too fast \r\n3.\r\n\r\nExpected result:\r\nActual result:\r\n\r\n### Additional info\r\n[aerospace-runtime-error.txt](https://github.com/user-attachments/files/22956012/aerospace-runtime-error.txt)\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-10-16T17:43:34Z",
      "updated_at": "2025-10-25T13:11:36Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YYv",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "ezadEzanee",
        "avatar_url": "https://avatars.githubusercontent.com/u/18095325?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiePn",
      "number": 1751,
      "title": "Is it possible to have a \"widget app\" on all screens?",
      "body": "I use Wispr (AI dictation software) and it displays a little bubble at the bottom of the screen. \r\nYou can start dictating into any text field with a hot key (fn).\r\n\r\nNot with aerospace this little widget is only present in one space at a time. It is treated like a normal application basically and I can move it around the spaces.\r\n\r\nIs there a way to have it present in all spaces?",
      "created_at": "2025-10-17T07:51:01Z",
      "updated_at": "2025-10-25T13:10:48Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YYt",
        "body": "Duplicate of #2 "
      },
      "user": {
        "login": "Kinzi",
        "avatar_url": "https://avatars.githubusercontent.com/u/6689405?u=094561582ab90f98e0fd399539a2142d5a8474d9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AilCO",
      "number": 1768,
      "title": "Add configuration option to control new window insertion direction",
      "body": "Currently, AeroSpace always inserts new windows at the end (right/bottom) of containers.\r\n\r\nIt would be great to have an option to control this behavior, for example:\r\n```toml\r\ndefault-insertion-direction = 'left'  # 'left', 'right', 'top', 'bottom'\r\n```\r\n\r\n### Current Limitations\r\n- Cannot be achieved through `on-window-detected` callbacks (limited to `move-node-to-workspace` and `layout` commands only)\r\n- Manual repositioning after window creation is the only current workaround",
      "created_at": "2025-10-23T23:11:23Z",
      "updated_at": "2025-10-25T12:52:51Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YXX",
        "body": "I don't mind to have such configuration option. (Please note that directional approach that you are suggesting doesn't make sense since the orientation is already controlled by `default-root-container-orientation`)\r\n\r\nConverted this discussion to an issue: https://github.com/nikitabobko/AeroSpace/issues/1770\r\n\r\nIf you don't mind, can you please mention your use cases in the issue comments. Is it just a vim habit or there is more to it?"
      },
      "user": {
        "login": "fcomrqz",
        "avatar_url": "https://avatars.githubusercontent.com/u/1501123?u=87c2de0a6a3fcf7fecc645ac16570494d59c651a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aijls",
      "number": 1762,
      "title": "how to exclude the tray at the top modal",
      "body": "I have added for all apps which are not in my config by default to go to space 4 with\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = '^.*$'\r\nrun = 'move-node-to-workspace 4'\r\n```\r\n\r\nbut the problem is here that it has also affected all modals which are in the tray at the top. Where I want to open some from space 1, they go to 4, and this is shown with a lot of bugs.\r\n\r\nhow to fix it? maybe some another way to move all but not from tray on space 4",
      "created_at": "2025-10-22T12:22:23Z",
      "updated_at": "2025-10-25T12:37:30Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "maxclax",
        "avatar_url": "https://avatars.githubusercontent.com/u/1835807?u=25abd0f2ef5cfd25586d11f9b8eafd58770e6648&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AikS9",
      "number": 1765,
      "title": "Feature Request: AwesomeWM like tiling",
      "body": "I love tiling WMs and I tried a couple and Aerospace takes the cake by far!\r\n\r\nNow here is what I am missing and I feel it might be possible already, but I did not have much luck scripting it.\r\n\r\nWhile I like having these full splits, I often need to switch to accordion style. No matter the Accordion Settings, for me its hard to see how many windows are actually open and how i navigate them efficiently.\r\n\r\nWhat I liked about awesome WM was that you had a layout, where one window was the main focus and took up 90% of the screen, and on one side you had the other windows in small like squares:\r\n\r\nAAAAA B\r\nAAAAA C\r\nAAAAA D\r\n\r\nWhile A being the current focus and windows BCD where the ones that i could swap with A or rotate with A in order.\r\nThat way it was easy to see what is open, which window is next in the cycle etc.\r\n\r\nIn Terms of Aerospace, it would be a vertical and horizontal tiling layout, but i would like to easy switch to this layout setup, without painstakingly having to arrange my windows and containers to arrive there.\r\n\r\nIdeally have this layout strategy assigned to a desktop.\r\n\r\nWhat do you guys think?",
      "created_at": "2025-10-23T07:03:06Z",
      "updated_at": "2025-10-25T12:29:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YVp",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/260"
      },
      "user": {
        "login": "npx",
        "avatar_url": "https://avatars.githubusercontent.com/u/100704?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AilGr",
      "number": 1769,
      "title": "AeroSpace Runtime Error",
      "body": "### Body\n\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-10-23 07:02:29 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.0.1 (Build 25A362)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001025c57dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x000000010240cf20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x000000010240c990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x0000000102444d00 $s9AppBundle9WorkspaceC20forceAssignedMonitorAA0F0_pSgvg + 384\r\n4   AeroSpace                           0x0000000102408bd8 $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY12_ + 1880\r\n5   AeroSpace                           0x0000000102451c71 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ9_ + 1\r\n6   AeroSpace                           0x00000001023a0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000027ac94281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x000000027ac93f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x000000010244f0c1 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x00000001023a0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x000000027ac94281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x000000027ac93f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x000000010244de99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x00000001023fed91 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x00000001023a0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000027accddfd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\nSteps to reproduce:\r\n1. create a virtual display with [BetterDisplay](https://github.com/waydabber/BetterDisplay) and connect to it\r\n2. connect an iPad as a mirror of the virtual display using sidecar\r\n3. lock the mac, then wait\r\n\r\nExpected result:\r\nActual result:\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\nIncluded in the log above.",
      "created_at": "2025-10-24T01:47:12Z",
      "updated_at": "2025-10-25T12:28:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4YVj",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1613"
      },
      "user": {
        "login": "blindFS",
        "avatar_url": "https://avatars.githubusercontent.com/u/568457?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AikG8",
      "number": 1764,
      "title": "Mac Finder tab is being counted as a new window even though it is part of another window",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Open a finder window and create multiple tabs\r\n2. Aerospace will resize the only window into smaller portion as if there are other windows next to it but they are invisible because they are just another tab.\r\n3.\r\n\r\nExpected result:\r\nActual result: No change, only visible windows should only be divided\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\naerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\nAeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\n",
      "created_at": "2025-10-23T01:18:11Z",
      "updated_at": "2025-10-25T12:28:30Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4Uft",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/68\n\nSearch is your friend."
      },
      "user": {
        "login": "pencilcheck",
        "avatar_url": "https://avatars.githubusercontent.com/u/116532?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AikZO",
      "number": 1766,
      "title": "Handle app activation without force-switching workspaces (compatibility with Leader Key)",
      "body": "# Use Case\r\nI use [Leader Key](https://github.com/mikker/LeaderKey.app) a lot and am very used to opening all my applications that way very quickly. Basically, you have a leader key with further shortcuts to quickly open / switch between active applications.\r\n\r\nHowever, in Aerospace, this interferes with workspaces. I can no longer select any application I want _and_ **stay** in my current workspace--if there are window instances of that application in other workspaces. AeroSpace will always force switch to a workspace where instances of the activated application are already running, interfering with my workflow of doing things in a current workspace.\r\n\r\n# Example\r\nWhat happens is this (example with Safari):\r\n\r\n1. I have Safari windows open in workspace `A`\r\n2. I move to workspace `B`\r\n3. I use Leader Key (or for example the Dock) to activate Safari (so that I can launch a new window)\r\n4. AeroSpace force-switches me to workspace `A`, because there are open Safari windows there\r\n5. I can never **just select** the application (in order to launch a new window) without enduring a workspace switch if it is already open elsewhere\r\n\r\n# Potential Fixes\r\nI have tried some workarounds, including bash scripting, AppleScript, but nothing seems to do it.\r\n\r\nSo, I dove into the source code and found that this behavior is mitigated (and allows me to select applications and launch new windows freely in any workspace I want) if I gate it in the `focusCache.swift`.\r\n\r\nMeaning to go from:\r\n\r\n```swift\r\n/// The data should flow (from nativeFocused to focused) and\r\n///                      (from nativeFocused to lastKnownNativeFocusedWindowId)\r\n/// Alternative names: takeFocusFromMacOs, syncFocusFromMacOs\r\n@MainActor func updateFocusCache(_ nativeFocused: Window?) {\r\n    if nativeFocused?.parent is MacosPopupWindowsContainer {\r\n        return\r\n    }\r\n    if nativeFocused?.windowId != lastKnownNativeFocusedWindowId {\r\n        _ = nativeFocused?.focusWindow()\r\n        lastKnownNativeFocusedWindowId = nativeFocused?.windowId\r\n    }\r\n}\r\n```\r\n\r\nTo a gated condition:\r\n```swift\r\n// This now prevents switching workspaces when activating an application\r\n// Selecting apps (with open windows in other workspaces) doesn't jump there\r\n// If switching is still desired, this can be expanded with a boolean flag\r\n@MainActor\r\nfunc updateFocusCache(_ nativeFocused: Window?) {\r\n    if nativeFocused?.parent is MacosPopupWindowsContainer { return }\r\n    guard nativeFocused?.windowId != lastKnownNativeFocusedWindowId else { return }\r\n\r\n    if let nf = nativeFocused {\r\n        if let nfWs = nf.visualWorkspace {\r\n            if nfWs !== focus.workspace {\r\n                // App activated, but on other workspace\r\n                // don't perform switching\r\n                lastKnownNativeFocusedWindowId = nf.windowId\r\n                return\r\n            }\r\n        } else {\r\n            lastKnownNativeFocusedWindowId = nf.windowId\r\n            return\r\n        }\r\n    }\r\n\r\n    _ = nativeFocused?.focusWindow()\r\n    lastKnownNativeFocusedWindowId = nativeFocused?.windowId\r\n}\r\n```\r\n\r\nThis enables this behavior instead (using the same example as before):\r\n\r\n1. I have Safari windows open in workspace `A`\r\n2. I move to workspace `B`\r\n3. I use Leader Key (or for example the Dock) to activate Safari (so that I can launch a new window)\r\n4. AeroSpace does not switch me back to workspace `A`, despite it having Safari windows open\r\n5. With now Safari selected / activated, I can freely perform `cmd+n` to open a new window in workspace `B`, without having left it\r\n\r\n# Implications\r\nIt occurs to me that for some people the switching may actually be desirable. For me it is particularly obstructive.\r\n\r\nTherefore, this behavior could potentially be controlled by a flag in the configuration, so that users can turn this on or off. Say, with `auto-switch-workspaces-on-app-focus` as a simple `true` or `false`.\r\n\r\nCurious to know if anyone else has run into this issue, as I couldn't find mainly issues around focusing when involving multiple monitors, but not necessarily this particular use case.\r\n\r\n",
      "created_at": "2025-10-23T08:51:38Z",
      "updated_at": "2025-10-23T15:08:39Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "leviouwendijk",
        "avatar_url": "https://avatars.githubusercontent.com/u/120993067?u=a3db0729a7c3c02bd355cd7816fdfb76dd12b8cc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad0oL",
      "number": 979,
      "title": "Can't get key notations to work for colemak",
      "body": "Hey everyone,\r\nFirst time AeroSpace user here.\r\nI've read through the guide and the default config file. Basically the only changes I did are commenting some configs that I don't need, and more importantly enabling the key notation for colemak:\r\nhttps://gist.github.com/Tahvok/eaaa5d94300eb730067094efb3892180\r\n\r\nHowever, the key notation doesn't appear to work. It still handles the keys as regular qwerty. I know that aerospace is reading the config file correctly, because if I put a misconfiguration in the file, it complains of it.\r\n\r\nNot sure what I might be missing.\r\n",
      "created_at": "2025-01-13T07:41:47Z",
      "updated_at": "2025-10-22T10:55:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Tahvok",
        "avatar_url": "https://avatars.githubusercontent.com/u/6513056?u=d8430c99a042326179d4dcacf4da62ceaeac30d1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah5rb",
      "number": 1690,
      "title": "Performance and heating issue on macOS 26 Tahoe",
      "body": "Hello! I'm currently experiencing some heating/lag issue after upgrading to macOS Tahoe, and I was wondering if anyone is experiencing similar issues. Here is my setup:\r\n\r\nMac Spec: 16 inch M3 Pro 18GB RAM\r\nmacOS version: 26 Release Candidate (25A353)\r\n.aerospace.toml: https://github.com/leowrites/new-mac-setup/blob/main/dotfiles/.aerospace.toml\r\nAerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: Unknown. The server is not running\r\n\r\nI usually have the following apps open: Chrome, VSCode, Ghostty, Discord, Notion, Slack. When I close Aerospace, the heating seems to get better.\r\n\r\nI thought this may have something to do with upgrading to Tahoe as I did not have issues in macOS Sequoia. I also have another 14inch M4 Pro with 36GB RAM with almost identical setup, but it was on Sequoia and it does not have any heating/lag issues. \r\n",
      "created_at": "2025-09-12T16:25:40Z",
      "updated_at": "2025-10-22T10:12:30Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "leowrites",
        "avatar_url": "https://avatars.githubusercontent.com/u/75044178?u=63fd40877e9bdf3a2d921e54c98ae9d6a8935429&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AicBu",
      "number": 1748,
      "title": "macos tabs",
      "body": "Hi @nikitabobko , thanks for all the work you do. I was wondering if you would be willing to elaborate on https://github.com/nikitabobko/AeroSpace/issues/68#issuecomment-3007146421 . Particularly, which private apis, and how? thanks!",
      "created_at": "2025-10-14T23:28:45Z",
      "updated_at": "2025-10-21T21:45:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4G6P",
        "body": "https://github.com/nikitabobko/AeroSpace/discussions/1504"
      },
      "user": {
        "login": "acsandmann",
        "avatar_url": "https://avatars.githubusercontent.com/u/157552025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae14h",
      "number": 1210,
      "title": "Support for Scrollable Tiling Managers",
      "body": "\r\n**Description:**  \r\nCurrently, AeroSpace does not fully integrate well with tiling window managers on macOS, especially when using traditional tiling approaches. Sometimes, application windows are not fully displayed and can be masked by other apps, leading to a frustrating user experience. Example of app being masked by another\r\n<img width=\"926\" alt=\"image\" src=\"https://github.com/user-attachments/assets/196b8aeb-8cf0-4292-baa7-55d6904f6bac\" />\r\n\r\n\r\nA potential solution is to support a scrollable tiling manager like [Niri](https://github.com/YaLTeR/niri)\r\n\r\n",
      "created_at": "2025-03-15T02:07:26Z",
      "updated_at": "2025-10-21T18:26:48Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "phucisstupid",
        "avatar_url": "https://avatars.githubusercontent.com/u/125681538?u=3c87a09d4ec9fceed3c871e5b52a812a23b88d7f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aii3s",
      "number": 1759,
      "title": "I've Released a Niri Layout for AeroSpace!",
      "body": "\r\n![CleanShot 2025-10-21 at 14 15 01](https://github.com/user-attachments/assets/08f8d062-78f5-4801-8aa5-27d3b8ba6893)\r\n\r\n\r\n## ✨ Niri Layout Key Features\r\n\r\n### Repositioning\r\nUse **SUPER + SHIFT + H/L** to move the focused window between adjacent windows, making it easy to drop a window exactly where you want it.\r\n\r\n### Navigation\r\nUse **SUPER + H/L** to navigate between windows seamlessly just like in Niri.\r\n\r\n### Multi-Monitor Support\r\nEach monitor maintains its own niri layout. Assign each workspace to a different monitor and then use **SUPER + [Number]** to switch workspaces and create a new monitor independent niri layout.\r\n\r\n### Send Window to Another Monitor\r\nUse **SUPER + SHIFT + [Number]** to send a window to another monitor's workspace.\r\n\r\n[https://github.com/BarutSRB/HyprSpace/releases/tag/v0.1.1](https://github.com/BarutSRB/HyprSpace/releases/tag/v0.1.1)\r\n\r\n",
      "created_at": "2025-10-21T17:40:19Z",
      "updated_at": "2025-10-21T18:16:37Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BarutSRB",
        "avatar_url": "https://avatars.githubusercontent.com/u/12249659?u=4b1c32e1ab1ea34f9c1bfd3acc07db689d2a21b9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiiuz",
      "number": 1758,
      "title": "Stuttering / hitching in video playback when “Displays have separate Spaces” is disabled",
      "body": "### Body\n\n## Steps to reproduce\r\n1. Open **System Settings → Desktop & Dock → Mission Control**  \r\n2. **Disable** “Displays have separate Spaces”  \r\n3. Open **Safari** or **Safari web app for YouTube**  \r\n4. Play any YouTube video on an **external monitor**  \r\n5. Tile the window in **AeroSpace** so it fills the entire screen (not macOS native fullscreen)\r\n\r\n## Expected behavior\r\nSmooth, stable video playback without frame skips or rendering issues.\r\n\r\n## Actual behavior\r\nVideo playback exhibits **rendering hitching** — frames freeze briefly or update unevenly\r\n\r\n## Notes\r\n- Reproduced in **Safari** and **Brave**.  \r\n- Issue disappears immediately after **re-enabling “Displays have separate Spaces.”**  \r\n- Occurs only when the AeroSpace-managed fullscreen (tiled to fill screen) is active.  \r\n- AeroSpace version: `<0.19.2-Beta>`  \r\n- macOS version: `<26.0.1 Build:25A362>`  \r\n- Hardware: `<Apple M3 Pro>`  \r\n- Reproducible every time.",
      "created_at": "2025-10-21T14:54:28Z",
      "updated_at": "2025-10-21T14:54:30Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "st-eez",
        "avatar_url": "https://avatars.githubusercontent.com/u/108044540?u=dbfcd7c9a7a33c8686dc2bcc9db67a7351ed9c73&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiirj",
      "number": 1756,
      "title": "windows break during smart resizing",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1.Have two active windows open.\r\n2.Resize one of them just enough for the window to take up at least 70-85% of desktop space. \r\n3.Witness the break.\r\n\r\nExpected result: Users should be able to resize windows only to their devices' respective display aspect ratios in order to prevent indefinite resizing and window overlapping.\r\nActual result: Windows break and overlap.\r\n<img width=\"3408\" height=\"2114\" alt=\"break\" src=\"https://github.com/user-attachments/assets/cc622898-0ab6-4b2c-b5cc-e42df6be5d2e\" />\r\n\r\n\r\n### Additional info\r\n\r\n\r\naerospace version: 0.19.2-Beta\r\nOS: macOS Tahoe 26.0.1 arm64\r\n\r\n",
      "created_at": "2025-10-21T14:02:04Z",
      "updated_at": "2025-10-21T14:12:15Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rubyxen",
        "avatar_url": "https://avatars.githubusercontent.com/u/209270169?u=296fc0193166a9d3625501596ae6ccade9cc16c2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AihvO",
      "number": 1755,
      "title": "create key binding for workspace next and workspace prev with --monitor mouse like the docs for trackpad?",
      "body": "How do I create the keybindings in my aerospace.toml for the following two cli commands in the documentation?  \r\n```\r\naerospace workspace \"$(aerospace list-workspaces --monitor mouse --visible)\" && aerospace workspace next\r\naerospace workspace \"$(aerospace list-workspaces --monitor mouse --visible)\" && aerospace workspace prev\r\n```\r\n- ^ https://nikitabobko.github.io/AeroSpace/goodies#use-trackpad-gestures-to-switch-workspaces\r\n\r\nI want to map a binding key that goes next workspace or previous on the current monitor mouse is visible on\r\n",
      "created_at": "2025-10-20T12:58:55Z",
      "updated_at": "2025-10-20T12:58:56Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "epicwhale",
        "avatar_url": "https://avatars.githubusercontent.com/u/670655?u=36f090a12485612f2dab146b0b607459c0e5ece3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AifEX",
      "number": 1754,
      "title": "[ModifiersMap] Add Numpad Keys as Binds for Switching Displays",
      "body": "Hi everyone! First of all, thank you for the amazing work on AeroSpace - it's truly a best for macOS window management.\r\n\r\nI propose adding the ability to use numpad keys (e.g., Num1, Num2, Num3, etc.) as keybindings for switching between screens and workspaces. This would provide a quick and intuitive way for users with a numpad to navigate, especially useful on multi-monitor setups.\r\n\r\nThis leverages an often-underutilized part of the keyboard for powerful window management.\r\n\r\nTechnical background:\r\n\r\nNumpad keys have distinct key codes different from regular number keys:\r\n\r\nRegular 1 = Key Code 18\r\n\r\nNumpad 1 = Key Code 83\r\nThis allows clear differentiation in keybind configuration.\r\n\r\nNative macOS support - System APIs like CGEventTap can detect numpad keys without issues.\r\n\r\n\r\n<img width=\"325\" height=\"96\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1d7ca236-dcf7-42b8-bb07-7789a62958c4\" />\r\n<img width=\"228\" height=\"120\" alt=\"image\" src=\"https://github.com/user-attachments/assets/18da5134-214d-40f0-9ecd-35ede60a7d4c\" />\r\n\r\n",
      "created_at": "2025-10-18T09:45:01Z",
      "updated_at": "2025-10-18T09:51:51Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yshchennikov",
        "avatar_url": "https://avatars.githubusercontent.com/u/44842564?u=ab528c9c8a69def30c2ec75ead38fee4cca06c8b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aiejo",
      "number": 1752,
      "title": "Cycle through focused monitor",
      "body": "Hi, I was wondering if there is any way to cycle through the focused monitors? When using 'focus-monitor prev' or 'focus-monitor next’, one can switch from the first to the last monitor. However, when the last/first monitor is reached, it doesn't start over. I'd like to switch my focused monitor with one command to keep it simple. Is this possible?",
      "created_at": "2025-10-17T14:00:12Z",
      "updated_at": "2025-10-18T09:33:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A4HjH",
        "body": "`focus-monitor next --wrap-around`"
      },
      "user": {
        "login": "paulTroster",
        "avatar_url": "https://avatars.githubusercontent.com/u/61591051?u=70c2cfb07fa44cdd6fcfd45773d6926ed4811aaa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhKYg",
      "number": 1612,
      "title": "Anyone having problem making a debug build using `./build-debug.sh` on an Apple Silicon mac?",
      "body": "### Body\n\nSteps to reproduce:\r\n1. On an Apple silicon mac, clone the aerospace repo (build is successful on my intel mac).\r\n2. execute `./build-debug.sh` (with or without swiftly)\r\n\r\nExpected result: Successful build\r\nActual result: AeroSpace/Sources/AppBundle/ui/MessageView.swift:126:1: error: external macro implementation type 'PreviewsMacros.SwiftUIView' could not be found for macro 'Preview(_:body:)'; plugin for module 'PreviewsMacros' not found\r\n\r\n### Additional info\r\n\r\n1. aerospace CLI client version: 0.0.0-SNAPSHOT SNAPSHOT\r\n2. build is successful on my intel mac\r\n3. Successful build on xcode.\r\n",
      "created_at": "2025-08-06T14:21:05Z",
      "updated_at": "2025-10-18T07:19:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nmder",
        "avatar_url": "https://avatars.githubusercontent.com/u/25340239?u=fce9399294e30645578d9938e068479c7d2c6cb0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiCce",
      "number": 1711,
      "title": "Virtual desktop management across mulitple monitors and keeping context intact",
      "body": "I've looked up a few videos about Aerospace and none of them seem to answer my query and I'm hoping to get an answer here. With MS Win and Linux I was easily able to switch virtual desktops left and right, each virtual desktop consisted of two external monitors (I keep laptop closed, and it's connected via a dock). While it does work on MacOS the caveat is when I return to my computer after a sleep state all the content from one of the screens ends up on the main screen so I have to move stuff back and do so for all virtual desktops. Whilst not a major issue I'd still like to find a solution.\r\n\r\nAnother issue is if you full screen, using the window tool palette (top left corner of all windows), as opposed to maximise it will completely blank the other monitor. To avoid this you have to, using the mouse, resize the window as large as you can get it on the screen. Thankfully I managed to find a shortcut by finding out if you double click the window's title bar it will maximise.\r\n\r\nAnother limitation I've discovered is when assigning multiple monitors to a single desktop in MacOS settings I'm left with only a subset of options in the window tool palette.\r\n\r\nI contacted Mac tech support and after several chats was told this was a known issue! I apologise if this has been covered ",
      "created_at": "2025-09-20T13:12:36Z",
      "updated_at": "2025-10-17T16:03:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "GusGF",
        "avatar_url": "https://avatars.githubusercontent.com/u/21323227?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiepA",
      "number": 1753,
      "title": "on first launch, aerospace rearranges all windows",
      "body": "\r\non first launch, aerospace rearranges all windows in all open apps to center position.\r\n\r\ndo not want this.\r\n\r\nis there a way to config the app to leave all windows in situ on launch?\r\n\r\n\r\nsincere regards,\r\n\r\nbruno\r\n",
      "created_at": "2025-10-17T15:33:13Z",
      "updated_at": "2025-10-17T15:33:14Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "auntchilada",
        "avatar_url": "https://avatars.githubusercontent.com/u/9477017?u=3dcc4ce0f5036e8a76d79c5e7cf36d163c6aee1a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AemnJ",
      "number": 1150,
      "title": "How to create a master stack layout?",
      "body": "Hello,\r\n\r\nI am new to aerospace. Does anybody know whether it is feasible to create a master stack layout as shown below.\r\n\r\n![CleanShot 2025-02-28 at 00 09 42](https://github.com/user-attachments/assets/e27348c7-6b48-4aa6-9d67-54834e34ef1e)\r\n\r\n![CleanShot 2025-02-28 at 00 17 09](https://github.com/user-attachments/assets/d3b26819-0975-483d-ac83-c621009f592b)\r\nsource: https://wiki.hyprland.org/Configuring/Master-Layout/\r\n\r\nAnd so on...",
      "created_at": "2025-02-27T23:19:04Z",
      "updated_at": "2025-10-15T10:57:57Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bitbalancer",
        "avatar_url": "https://avatars.githubusercontent.com/u/85396661?u=42df04c41b7b4910b96499ee95f2ab9ee0520438&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AicLr",
      "number": 1749,
      "title": "pipe is not available",
      "body": "### Body\n\nI use aerospace for 2 weeks, thank you so much for this tool. \r\n\r\nBut when aerospace is enabled, I can't get the pipe `|` operator. \r\n\r\nCan you tell me what is wrong on my side please? \r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-15T05:22:53Z",
      "updated_at": "2025-10-15T05:22:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nicosomb",
        "avatar_url": "https://avatars.githubusercontent.com/u/121870?u=b2c20f3dd7904e165f64554aed690e18c1165269&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiP6l",
      "number": 1735,
      "title": "How do I toggle between qwerty and a custom keyboard layout?",
      "body": "How do I quickly toggle between QWERTY Aerospace settings and a custom layout's settings?\r\n\r\nAt the office, I use my laptop's QWERTY keyboard.\r\nAt home, I use a split keyboard with custom layout ([not dvorak or colemak](https://sunaku.github.io/moergo-glove80-keyboard.html)).\r\n\r\nRight now, I just comment/uncomment blocks of code in the config, but this is annoying. I'd like to be able to just change some setting so that Aerospace knows that 'LH index on the home row = workspace browser', whether that key is F (on Qwerty) or A (on custom).\r\n\r\nHere's an example:\r\n\r\n```toml\r\n# Default QWERTY Keyboard\r\n# Workspace navigation\r\n# LH_1_index\r\nalt-f = \"workspace browser\"\r\n\r\n# MoErgo Glove80\r\n# Workspace navigation\r\n# LH_1_index\r\nalt-a = \"workspace browser\"\r\n```\r\n\r\nBoth configs just express 'home row left-hand index finger should take me to the browser workspace'.\r\n",
      "created_at": "2025-10-03T14:56:18Z",
      "updated_at": "2025-10-14T22:15:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3pM8",
        "body": "Do you use alt exclusively in your Glove80 for AeroSpace navigation? If so, you could make that key a momentary layer and have the underlying keys match your \"default\" QWERTY keyboard.\r\n\r\nAnother option that is more work is to have different configurations for work and personal, assuming you don't do work with your split.\r\n\r\nI think you might be able to do this natively in AeroSpace by creating new `mode`s, ie:\r\n\r\n```toml\r\n[mode.qwerty-layout.binding]\r\n# ...\r\n<some-bind> = 'mode colemak-layout'\r\n\r\n[mode.colemak-layout.binding]\r\n# ...\r\n<some-bind> = 'mode qwerty-layout'\r\n```\r\n\r\nHaven't tested this myself."
      },
      "user": {
        "login": "willthefirst",
        "avatar_url": "https://avatars.githubusercontent.com/u/1113314?u=670d6591a1f8b584f4fb8dded02f7f59f15fc498&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aia-1",
      "number": 1746,
      "title": "Zoom Meetings with Dual Windows Enabled tile the Shared Content Floating Window",
      "body": "Hello,\r\n\r\nI use Zoom Meetings with an non-default option called `Dual Window` that can be enabled under the settings. \r\n\r\n`Meetings & webinars` -> `Display` -> `Meeting window view` -> `Dual window (Separate windows for video and shared content)`\r\n<img width=\"808\" height=\"660\" alt=\"Screenshot 2025-10-13 at 15 11 43\" src=\"https://github.com/user-attachments/assets/9d110e48-c1a2-4a5e-82ae-c88062fee4b6\" />\r\n\r\nWhen you start or join a Zoom Meeting with this option enabled, what ends up happening is that you get a floating window where you see shared content such as video of the speaker or any content anyone is presenting.\r\n\r\nHere's a screenshot:\r\n\r\n<img width=\"3845\" height=\"2056\" alt=\"Screenshot 2025-10-13 at 15 13 48\" src=\"https://github.com/user-attachments/assets/f4c2de8a-c0d4-43cc-9973-834eebf35cd1\" />\r\n\r\nHere we see two screens that are tiled (Chrome & main window of Zoom) and the floating window highlighted in red. If you switch workspaces, its easy to lose this floating red window, or its easy lose track of it.\r\n\r\nI'm asking for help to have all three of these windows tiled so that I can easily manipulate this red window.\r\n\r\nHere's the `aerospace list-windows` command output:\r\n\r\n```\r\naerospace list-windows --workspace 8                                                                                                                                                                                                                                                                                                                                                                                                                                   \r\n1120 | Google Chrome | nikitabobko/AeroSpace: AeroSpace is an i3-like tiling window manager for macOS - Google Chrome\r\n1164 | zoom.us       | Zoom Meeting\r\n1165 | zoom.us       | Zoom Meeting\r\n```",
      "created_at": "2025-10-13T20:26:37Z",
      "updated_at": "2025-10-13T20:46:43Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A39Yu",
        "body": "Actually I managed to answer this using [Callbacks](https://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback).\r\n\r\nGet the Zoom Application ID via:\r\n```\r\nmdls -name kMDItemCFBundleIdentifier -r /Applications/zoom.us.app                                                                                                                                                                                                                                                                                                                                                                                            \r\nus.zoom.xos%\r\n```\r\n\r\nAnd add this section to `.aerospace.toml`\r\n```\r\n[[on-window-detected]]\r\n    if.app-id = 'us.zoom.xos'\r\n    run = 'layout tiling'\r\n```\r\n\r\nNow the both the Zoom windows are tiled.\r\n\r\nClosing this with this comment."
      },
      "user": {
        "login": "kaiwalyajoshi",
        "avatar_url": "https://avatars.githubusercontent.com/u/4153518?u=41208c0d085017b954fa2fed1ec57f5567ff90a2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiZ6u",
      "number": 1742,
      "title": "Feature Request: Preserve Window-to-Space Assignments Across Sessions",
      "body": "## Problem Statement\r\n\r\nAs a freelancer managing multiple projects simultaneously, I organize my workflow by dedicating specific spaces to each project. For example, I'll have my web browser running on several different spaces, with each browser window containing tabs relevant to a particular project.\r\n\r\n**Current Issue:** When I sleep my computer and wake it back up, all windows collapse onto the same space. This forces me to manually redistribute windows across spaces for each project, which is tedious and disrupts my workflow.\r\n\r\nI'm aware that aerospace allows assigning specific apps to spaces, but this doesn't fit my workflow since I need the same application (e.g., multiple browser windows) distributed across different spaces based on the project context.\r\n\r\n## Proposed Solution\r\n\r\nI'd like aerospace to remember which windows were on which spaces and restore this layout in two scenarios:\r\n\r\n1. **App quit/reopen:** When an application is quit and reopened, its windows should reappear on the spaces they occupied before quitting\r\n2. **Aerospace restart:** When aerospace is restarted (or after a system sleep/wake), it should recognize and restore which windows belong to which space\r\n\r\n## Use Case\r\n\r\nThis would be particularly valuable for:\r\n- Freelancers and multi-project workers who need project-specific workspace organization\r\n- Users with multiple windows of the same application serving different purposes\r\n- Anyone who needs persistent workspace layouts across system sleep/wake cycles\r\n\r\n## Questions\r\n\r\n- Is this technically feasible given how aerospace interacts with macOS window management?\r\n- Would this require some form of window identification/tracking mechanism?\r\n- Are there any existing workarounds that might achieve similar results?\r\n\r\nI'd love to hear if others have similar needs or if there are alternative approaches I haven't considered!",
      "created_at": "2025-10-13T03:32:30Z",
      "updated_at": "2025-10-13T03:32:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "b-d-m-p",
        "avatar_url": "https://avatars.githubusercontent.com/u/1300390?u=bc98abe5f507a481a666987266ac6db444cc50ae&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ahoj5",
      "number": 1660,
      "title": "Keeping Little Arc Floating",
      "body": "Currently [Little Arc windows](https://resources.arc.net/hc/en-us/articles/19235387524503-Little-Arc-Quick-Lookups-Instant-Triaging) automatically get tiled in. Is there a way I can specifically keep Little Arc floating while normal Arc windows tiled?",
      "created_at": "2025-08-30T03:58:03Z",
      "updated_at": "2025-10-13T02:57:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "EvanZhouDev",
        "avatar_url": "https://avatars.githubusercontent.com/u/62189478?u=41f1e8baab3de1da1cb409a653c4768bce505088&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhecL",
      "number": 1649,
      "title": "Launching Little Arc from Raycast does not keep Little Arc on the current workspace",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Launch Arc on workspace 1\r\n2. Go to workspace 2\r\n3. Use raycast to search google which will open \"Little Arc\", just another Arc browser window (not tab).\r\n\r\nExpected result:\r\nThe new Arc windows (Little Arc) to stay on Workspace 2.\r\n\r\nActual result:\r\nThe window opens and moves to Workspace 1.\r\n\r\n### Additional info\r\n\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n\r\nI was adding this to my configuration\r\n```\r\n[[on-window-detected]]\r\nf.app-id = \"company.thebrowser.Browser\"\r\nrun = \"move-node-to-workspace 1\"\r\n```\r\n\r\nBut did not like the behavior for quick searches, so I removed that config.\r\n\r\nI found that as a workaround, if I turn fullscreen mode on for the browser window on Workspace 1, I get the expected behaviour when opening a new browser window on a different workspace. (EDIT: This workaround is not always working)",
      "created_at": "2025-08-22T01:52:44Z",
      "updated_at": "2025-10-13T02:56:45Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "adriaanp",
        "avatar_url": "https://avatars.githubusercontent.com/u/136807?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiVQy",
      "number": 1740,
      "title": "add boundary for accordion layout or nested layout to focus",
      "body": "Currently if wanting to just cycle windows in an accordion we can do\r\n`focus --boundaries-action wrap-around-the-workspace dfs-next`\r\n\r\nBut this also cycles other windows in the workspace once it reaches end of accordion,\r\n\r\nI often have a layout like this\r\n```\r\nh_tiles\r\n├── chrome\r\n└── h_accordion\r\n    ├── ide\r\n    ├── ide 2\r\n    └── terminal\r\n```\r\n\r\n\r\nIt would be great if could add a `--boundaries-action wrap-around-accordion` or somehow just within the nested level if nested with tile as well.\r\n\r\nSo that we could just cycle windows within the selected accordion only.",
      "created_at": "2025-10-08T12:55:34Z",
      "updated_at": "2025-10-08T13:01:36Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "prestonr83",
        "avatar_url": "https://avatars.githubusercontent.com/u/5903168?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiUNJ",
      "number": 1737,
      "title": "Mix tiles and accordion possible?",
      "body": "Currently Accordion will make all window full screen, is that possible to split the screen into tiles first then in each tiles, I can make accordion?",
      "created_at": "2025-10-07T11:17:49Z",
      "updated_at": "2025-10-07T11:23:29Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kebot",
        "avatar_url": "https://avatars.githubusercontent.com/u/289392?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgNTY",
      "number": 1471,
      "title": "Aerospace support on macOS Tahoe (macOS 26)",
      "body": "### Body\n\nHey guys! Don't see an existing issue so dropping this here - has anyone tested on macOS Tahoe?\r\n\r\nJust updated to the latest developer beta and other than the windows resizing nothing else seems to work",
      "created_at": "2025-06-11T19:08:20Z",
      "updated_at": "2025-10-06T10:58:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3tXM",
        "body": "I am locking this conversation. If you see any bugs (whether they are Tahoe related or not), please report a separate issue"
      },
      "user": {
        "login": "amantinband",
        "avatar_url": "https://avatars.githubusercontent.com/u/39407673?u=de59556bddc49d624fa462318cbb57f289b5cbad&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiLrc",
      "number": 1728,
      "title": "Aerospace not shifting window and only focus",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\nNot sure how to reproduce. I am on macos 26(tahoe) and this annoying bug started from this version only(by observation only).\r\n\r\n\r\nhttps://github.com/user-attachments/assets/c87b7cea-1c41-4ee3-99fd-d63a7e9115c3\r\n\r\nSee this, when i press `option shift 1` to go to terminal, it blinks there and come backs to browser. The focus goes to terminal, but the window is 2nd only(browser). I have to press `option shift 2` to come back to browser to focus on it back\r\n\r\nThis doesnt happen all the time, it works goes to some other windows without an issue, and from that 3rd window i can go to terminal, but directly i am unable to. And this \"hooked\" window is not browser, sometimes its any other workspace `E` which it goes to when i switch from there. I think this is a bug. Maybe incompatibility of New mac with aerospace(not sure).\r\n\r\nExpected result: The window to shift and not just focus.\r\nActual result: The focus is shifted but the window is not shifted(sometimes)\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\n",
      "created_at": "2025-09-29T06:52:24Z",
      "updated_at": "2025-10-04T06:15:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3p6Z",
        "body": "I think its a duplicate of #101."
      },
      "user": {
        "login": "AnirudhG07",
        "avatar_url": "https://avatars.githubusercontent.com/u/146579014?u=a91182ba6d1798e5c40b83b542463271628cc39b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiH78",
      "number": 1721,
      "title": "Floating Layout by Default for Specific Workspace",
      "body": "Hi! I’m wondering if it’s possible to automatically set all windows in a specific workspace to use the floating layout by default.\r\n\r\nFor example, suppose I have workspaces 1–4. I’d like all windows that are moved to workspace 4 to become floating by default. Additionally, if a window is moved out of workspace 4 (e.g., to workspace 3), the default tiling behavior should automatically apply again.\r\n\r\nIs there a way to achieve this behavior in Aerospace? ",
      "created_at": "2025-09-25T13:53:18Z",
      "updated_at": "2025-10-03T20:46:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3n3G",
        "body": "I think you are looking to append something like the following to your `.aerospace.toml` config:\r\n\r\n```toml\r\n[[on-window-detected]]\r\n    if.workspace = '1'\r\n    run = 'layout tiling'\r\n\r\n[[on-window-detected]]\r\n    if.workspace = '2'\r\n    run = 'layout tiling'\r\n\r\n[[on-window-detected]]\r\n    if.workspace = '3'\r\n    run = 'layout tiling'\r\n\r\n[[on-window-detected]]\r\n    if.workspace = '4'\r\n    run = 'layout floating'\r\n```\r\n\r\nSee also https://nikitabobko.github.io/AeroSpace/guide#dialog-heuristics."
      },
      "user": {
        "login": "smaesx",
        "avatar_url": "https://avatars.githubusercontent.com/u/123450842?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIt0",
      "number": 626,
      "title": "Second Child Window Placement possible?",
      "body": "Hey guys,\r\n\r\nIs there a way (or is it planned) to enable `window_placement = second child` like in yabai or many tiling window managers for linux?\r\n\r\nTo explain for those that don't know what I mean: You start a new window. When you open another one, it splits horizontally, of course. If you open a third one, it will split this half vertically, where you had the focus while opening the third window - and so on.",
      "created_at": "2024-10-14T19:58:27Z",
      "updated_at": "2025-10-03T08:55:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsmsA",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/260"
      },
      "user": {
        "login": "TheRaigeki",
        "avatar_url": "https://avatars.githubusercontent.com/u/39103327?u=54113cb0489e8b9f07ca4aaf704e948f5016b210&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiO6p",
      "number": 1734,
      "title": "Resize window when moving to another workspace",
      "body": "When I have 2 workspaces with 2 different screen sizes - 1 is 38' and 2 is 24' - and I move a window from one workspace to the other, the window becomes too big and I have to manually resize it to fit the smaller screen.\r\n\r\nWould be nice if aerospaces could resize the window to fit another sized screen",
      "created_at": "2025-10-02T14:09:36Z",
      "updated_at": "2025-10-02T14:09:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idelice",
        "avatar_url": "https://avatars.githubusercontent.com/u/59118341?u=974664b47efff07e496b5e902cdec2306a525a09&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiJOe",
      "number": 1725,
      "title": "Hang on workspace change followed by aggressive focus shifting",
      "body": "### Body\n\nThanks for releasing this. I fucking love it. Anyway, to the issue.\r\n\r\nSteps to reproduce:\r\n1. I pressed alt-shift-2 a couple of times in quick succession to go to my second workspace and then cycle through its windows.\r\n\r\nExpected result: Switch workspace and cycle windows.\r\nActual result: Switched workspace, cycled window once (I think) and hanged aerospace.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nI'm using the following binds:\r\n\r\n```\r\nalt-ctrl-1 = 'exec-and-forget aerospace workspace --fail-if-noop  1 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-2 = 'exec-and-forget aerospace workspace --fail-if-noop  2 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-3 = 'exec-and-forget aerospace workspace --fail-if-noop  3 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-4 = 'exec-and-forget aerospace workspace --fail-if-noop  4 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-5 = 'exec-and-forget aerospace workspace --fail-if-noop  5 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-6 = 'exec-and-forget aerospace workspace --fail-if-noop  6 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-7 = 'exec-and-forget aerospace workspace --fail-if-noop  7 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-8 = 'exec-and-forget aerospace workspace --fail-if-noop  8 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-9 = 'exec-and-forget aerospace workspace --fail-if-noop  9 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\nalt-ctrl-0 = 'exec-and-forget aerospace workspace --fail-if-noop 10 || aerospace focus dfs-next --boundaries-action wrap-around-the-workspace'\r\n```\r\n\r\nI've provided all 10 for your convenience in case you need to jump around a lot and just hammer it with interactions.\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102902278 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001027739d4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000102773c80 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x00000001026f5b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n    4   AeroSpace                           0x00000001026f88fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x00000001026f6711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x00000001026dd751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n    7   AeroSpace                           0x00000001026dd389 $s9AppBundle7CommandPAAE3runyAA9CmdResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ1_ + 1\r\n    8   AeroSpace                           0x0000000102756d4d $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU_AHyYaYbKScMYcXEfU_TQ1_ + 1\r\n    9   AeroSpace                           0x00000001026dc5bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    10  AeroSpace                           0x000000010278d91d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ6_ + 1\r\n    11  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000280f1e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  libswift_Concurrency.dylib          0x0000000280f1e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    14  AeroSpace                           0x000000010278b0c1 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n    15  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000280f1e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  libswift_Concurrency.dylib          0x0000000280f1e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    18  AeroSpace                           0x0000000102789e99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n    19  AeroSpace                           0x000000010273ad91 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU_TQ1_ + 1\r\n    20  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    21  libswift_Concurrency.dylib          0x0000000280f5283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-09-26 21:51:17 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.6.1 (Build 24G90)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001029017dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000102773d8c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x00000001026f5b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n3   AeroSpace                           0x00000001026f88fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x00000001026f6711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x00000001026dd751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n6   AeroSpace                           0x00000001026dd389 $s9AppBundle7CommandPAAE3runyAA9CmdResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ1_ + 1\r\n7   AeroSpace                           0x0000000102756d4d $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU_AHyYaYbKScMYcXEfU_TQ1_ + 1\r\n8   AeroSpace                           0x00000001026dc5bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n9   AeroSpace                           0x000000010278d91d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ6_ + 1\r\n10  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000280f1e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000280f1e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x000000010278b0c1 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n15  libswift_Concurrency.dylib          0x0000000280f1e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  libswift_Concurrency.dylib          0x0000000280f1e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n17  AeroSpace                           0x0000000102789e99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n18  AeroSpace                           0x000000010273ad91 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU_TQ1_ + 1\r\n19  AeroSpace                           0x00000001026dcb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n20  libswift_Concurrency.dylib          0x0000000280f5283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-09-26T22:04:07Z",
      "updated_at": "2025-10-02T12:21:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3l9b",
        "body": "Duplicate of: https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "nyaray",
        "avatar_url": "https://avatars.githubusercontent.com/u/116213?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiOm5",
      "number": 1733,
      "title": "Chrome not tiling correctly in multiple windows",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open Chrome \r\n2. Open Terminal\r\n3. Open another terminal \r\n4. Start aerospace tiling mode\r\n\r\nExpected result: Chrome shouldnt be covering the terminal window \r\nActual result: Chrome is covering the terminal window\r\n\r\n### Additional info\r\n<img width=\"2926\" height=\"1828\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d5511994-f192-4759-81bb-d00b434fc4b2\" />\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-10-02T07:57:00Z",
      "updated_at": "2025-10-02T11:56:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3loo",
        "body": "Some windows have minimal size that AeroSpace can't override"
      },
      "user": {
        "login": "prateekamana",
        "avatar_url": "https://avatars.githubusercontent.com/u/41776584?u=79f73e094a5bf729d4102c99e0768c478ca28ee2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiOii",
      "number": 1732,
      "title": "Print focused window's layout model",
      "body": "I'd love to show the focused window's layout status in my SketchyBar. Sometimes I get confused.\r\n\r\nShould return one of `floating`, `tiles` or `accordion`",
      "created_at": "2025-10-02T06:29:46Z",
      "updated_at": "2025-10-02T09:59:50Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3loi",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1161\r\n\r\nIt's implemented in the `main` but not released yet"
      },
      "user": {
        "login": "mikker",
        "avatar_url": "https://avatars.githubusercontent.com/u/2819?u=6a2ada89a4baf89ee431d6940ed674cb46eceb88&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiFh7",
      "number": 1716,
      "title": "Feature Request: Automatically switch between vertical and horizontal tiling on new window",
      "body": "I'm coming from using Hyprland and don't enjoy having to think about manually managing the tree. \r\n\r\nWith this feature enabled, when a new window is added, a new container is created of opposite type containing the previous active window and the new window under it.\r\n\r\nFor instance, if one has:\r\n\r\nHorizontal Tiles:\r\n1. Window 1 (active)\r\n2. Window 2 \r\n\r\nand a new window is created, then we have\r\n\r\nHorizontal Tiles:\r\n1. Vertical Tiles:\r\n    a. Window 1\r\n    b. Window 3 (active)\r\n2. Window 2",
      "created_at": "2025-09-23T03:48:59Z",
      "updated_at": "2025-10-02T09:35:00Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3lo0",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/260"
      },
      "user": {
        "login": "jaredhaertel",
        "avatar_url": "https://avatars.githubusercontent.com/u/20031686?u=d9a85ef9440fbc2529b89223dc0388ca74e51660&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiOH1",
      "number": 1731,
      "title": "Revert to original position after maximization",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have windows arranged\r\n2. Maximized one\r\n3. Unmaximize window and it goes to the bottom of the layout rather than the original position\r\n\r\nExpected result: Window goes back to original position\r\n\r\n",
      "created_at": "2025-10-01T16:53:41Z",
      "updated_at": "2025-10-02T09:34:23Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3lox",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/562\r\n\r\nIt's unclear how it should work"
      },
      "user": {
        "login": "mattharrison",
        "avatar_url": "https://avatars.githubusercontent.com/u/119405?u=e40af3d64161456d316c1b8f72335f3eecf7b709&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiNDs",
      "number": 1730,
      "title": "Cherry Studio can't work properly",
      "body": "### Body\n\nSteps to reproduce:\r\n1.Trigger Cherry Studio Quick Assistant\r\n2.Type in words\r\n\r\nExpected result:\r\nThe Window should be in the center and can handle typing.\r\nActual result:\r\nThe Window is in the right bottom and quickly flashing so that I can't type in any word.\r\n\r\n### Additional info\r\nAlso if cherry studio is in the workspace 2 and i move it to ws 1,triggering quick assistant will quickly go back to ws 1.\r\n\r\nCherry Studio\r\nhttps://github.com/CherryHQ/cherry-studio\r\n\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-09-30T13:23:58Z",
      "updated_at": "2025-10-01T04:18:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Kronight",
        "avatar_url": "https://avatars.githubusercontent.com/u/76555141?u=8dc5d4fd60d623390e9bf056bb0542f4c3074956&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhaUH",
      "number": 1643,
      "title": "Alt modifier no longer working on Mac Sequoia 15.6",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Update macbook pro to latest release\r\n2. Alt modifier no longer working\r\n\r\nExpected result: use alt as a key modifier\r\nActual result: had to change all alt modifiers to ctrl\r\n\r\n### Additional info\r\n\r\nthis is my mac:\r\n<img width=\"273\" height=\"457\" alt=\"Screenshot 2025-08-19 at 01 49 03\" src=\"https://github.com/user-attachments/assets/811cfcc6-8a3f-4206-a8eb-377e3f82b563\" />\r\n\r\nand this is my actual config => had to change it to ctrl.\r\n\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical =   10\r\nouter.left =       10\r\nouter.bottom =     10\r\nouter.top =        10\r\nouter.right =      10\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nctrl-slash = 'layout tiles horizontal vertical'\r\nctrl-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nctrl-h = 'focus left'\r\nctrl-j = 'focus down'\r\nctrl-k = 'focus up'\r\nctrl-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nctrl-shift-h = 'move left'\r\nctrl-shift-j = 'move down'\r\nctrl-shift-k = 'move up'\r\nctrl-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nctrl-shift-minus = 'resize smart -50'\r\nctrl-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nctrl-1 = 'workspace 1'\r\nctrl-2 = 'workspace 2'\r\nctrl-3 = 'workspace 3'\r\nctrl-4 = 'workspace 4'\r\nctrl-5 = 'workspace 5'\r\nctrl-6 = 'workspace 6'\r\nctrl-7 = 'workspace 7'\r\nctrl-8 = 'workspace 8'\r\nctrl-9 = 'workspace 9'\r\nctrl-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\nctrl-b = 'workspace B'\r\nctrl-c = 'workspace C'\r\nctrl-d = 'workspace D'\r\nctrl-e = 'workspace E'\r\nctrl-f = 'workspace F'\r\nctrl-g = 'workspace G'\r\nctrl-i = 'workspace I'\r\nctrl-m = 'workspace M'\r\nctrl-n = 'workspace N'\r\nctrl-o = 'workspace O'\r\nctrl-p = 'workspace P'\r\nctrl-q = 'workspace Q'\r\nctrl-r = 'workspace R'\r\nctrl-s = 'workspace S'\r\nctrl-t = 'workspace T'\r\nctrl-u = 'workspace U'\r\nctrl-v = 'workspace V'\r\nctrl-w = 'workspace W'\r\nctrl-x = 'workspace X'\r\nctrl-y = 'workspace Y'\r\nctrl-z = 'workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nctrl-shift-1 = 'move-node-to-workspace 1'\r\nctrl-shift-2 = 'move-node-to-workspace 2'\r\nctrl-shift-3 = 'move-node-to-workspace 3'\r\nctrl-shift-4 = 'move-node-to-workspace 4'\r\nctrl-shift-5 = 'move-node-to-workspace 5'\r\nctrl-shift-6 = 'move-node-to-workspace 6'\r\nctrl-shift-7 = 'move-node-to-workspace 7'\r\nctrl-shift-8 = 'move-node-to-workspace 8'\r\nctrl-shift-9 = 'move-node-to-workspace 9'\r\nctrl-shift-a = 'move-node-to-workspace A'\r\nctrl-shift-b = 'move-node-to-workspace B'\r\nctrl-shift-c = 'move-node-to-workspace C'\r\nctrl-shift-d = 'move-node-to-workspace D'\r\nctrl-shift-e = 'move-node-to-workspace E'\r\nctrl-shift-f = 'move-node-to-workspace F'\r\nctrl-shift-g = 'move-node-to-workspace G'\r\nctrl-shift-i = 'move-node-to-workspace I'\r\nctrl-shift-m = 'move-node-to-workspace M'\r\nctrl-shift-n = 'move-node-to-workspace N'\r\nctrl-shift-o = 'move-node-to-workspace O'\r\nctrl-shift-p = 'move-node-to-workspace P'\r\nctrl-shift-q = 'move-node-to-workspace Q'\r\nctrl-shift-r = 'move-node-to-workspace R'\r\nctrl-shift-s = 'move-node-to-workspace S'\r\nctrl-shift-t = 'move-node-to-workspace T'\r\nctrl-shift-u = 'move-node-to-workspace U'\r\nctrl-shift-v = 'move-node-to-workspace V'\r\nctrl-shift-w = 'move-node-to-workspace W'\r\nctrl-shift-x = 'move-node-to-workspace X'\r\nctrl-shift-y = 'move-node-to-workspace Y'\r\nctrl-shift-z = 'move-node-to-workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nctrl-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nctrl-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nctrl-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout \r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nctrl-shift-h = ['join-with left', 'mode main']\r\nctrl-shift-j = ['join-with down', 'mode main']\r\nctrl-shift-k = ['join-with up', 'mode main']\r\nctrl-shift-l = ['join-with right', 'mode main']\r\n```\r\n",
      "created_at": "2025-08-18T22:59:41Z",
      "updated_at": "2025-09-30T18:54:35Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1_HB",
        "body": "Found this issue on google: [Alt Modifier Stops Working After Latest macOS Sequoia Developer Beta](https://github.com/nikitabobko/AeroSpace/issues/482)\r\n\r\nFollowed instructions per [inigourrestarazu's answer](https://github.com/nikitabobko/AeroSpace/issues/482#issuecomment-2854643166) + **restart aerospace** + **restart mac** => FIXED."
      },
      "user": {
        "login": "andrianarivo",
        "avatar_url": "https://avatars.githubusercontent.com/u/32914511?u=0731d9bfa331b428f2e111d744a955f8e6144719&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhLcY",
      "number": 1616,
      "title": "Dialogue heuristics don't detect 1Password dialogues",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Don't have a relevant `on-window-detected` that enables floating\r\n2. Open the 1Password 8 app\r\n3. Notice it isn't floating (as expected)\r\n4. Open an item and select \"Show in Large Type\" on any field\r\n5. Notice the window isn't floating (not as expected)\r\n6. Open Quick Access, search for an item and select \"Open Item In New Window\"\r\n7. Notice the window isn't floating (not as expected)\r\n\r\nExpected result: Both the show in large type window and the quick access mini window default to floating like other dialogues\r\nActual result: Neither are floating\r\n\r\n## Additional info\r\n\r\nAlso mentioned in https://github.com/nikitabobko/AeroSpace/issues/122#issuecomment-2540237521.\r\n\r\n```shell\r\n$ aerospace --version\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\n### `debug-windows`\r\n\r\n- `Account Name`, `Item Name`, `field name` and `All Items` (the view name) are all variables\r\n- The main app window on launch (before loading data) seems to be `^1Password$`\r\n\r\n<details><summary>Main app window</summary>\r\n\r\n```\r\ncom.1password.1password.3746 ||| {\r\ncom.1password.1password.3746 |||   \"AXActivationPoint\" : \"<AXValue 0x600000c8bcf0> {value = x:-1.000000 y:1118.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3746 |||   \"AXCancelButton\" : null,\r\ncom.1password.1password.3746 |||   \"AXCloseButton\" : {\r\ncom.1password.1password.3746 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3746 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3746 |||     \"AXSubrole\" : \"AXCloseButton\",\r\ncom.1password.1password.3746 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3746 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\"\r\ncom.1password.1password.3746 |||   },\r\ncom.1password.1password.3746 |||   \"AXDefaultButton\" : null,\r\ncom.1password.1password.3746 |||   \"AXDocument\" : \"\",\r\ncom.1password.1password.3746 |||   \"AXFocused\" : 0,\r\ncom.1password.1password.3746 |||   \"AXFrame\" : \"<AXValue 0x6000017f5b00> {value = x:1727.000000 y:1089.000000 w:1698.000000 h:1078.000000 type = kAXValueCGRectType}\",\r\ncom.1password.1password.3746 |||   \"AXFullScreen\" : 0,\r\ncom.1password.1password.3746 |||   \"AXFullScreenButton\" : {\r\ncom.1password.1password.3746 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3746 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3746 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3746 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3746 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3746 |||   },\r\ncom.1password.1password.3746 |||   \"AXGrowArea\" : null,\r\ncom.1password.1password.3746 |||   \"AXMain\" : 0,\r\ncom.1password.1password.3746 |||   \"AXMinimizeButton\" : {\r\ncom.1password.1password.3746 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3746 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3746 |||     \"AXSubrole\" : \"AXMinimizeButton\",\r\ncom.1password.1password.3746 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3746 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3746 |||   },\r\ncom.1password.1password.3746 |||   \"AXMinimized\" : 0,\r\ncom.1password.1password.3746 |||   \"AXModal\" : 0,\r\ncom.1password.1password.3746 |||   \"AXParent\" : \"<AXUIElement Application 0x600000c8aac0> {pid=1682}\",\r\ncom.1password.1password.3746 |||   \"AXPosition\" : \"<AXValue 0x600000c8bcf0> {value = x:1727.000000 y:1089.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3746 |||   \"AXProxy\" : null,\r\ncom.1password.1password.3746 |||   \"AXRole\" : \"AXWindow\",\r\ncom.1password.1password.3746 |||   \"AXSections\" : [\r\ncom.1password.1password.3746 |||     \"{\\n    SectionDescription = Content;\\n    SectionObject = \\\"<AXUIElement 0x600000caf450> {pid=1682}\\\";\\n    SectionUniqueID = AXContent;\\n}\",\r\ncom.1password.1password.3746 |||     \"{\\n    SectionObject = \\\"<AXUIElement 0x600000cc9b30> {pid=1682}\\\";\\n    SectionUniqueID = AXContainer;\\n}\"\r\ncom.1password.1password.3746 |||   ],\r\ncom.1password.1password.3746 |||   \"AXSize\" : \"<AXValue 0x600000cedbf0> {value = w:1698.000000 h:1078.000000 type = kAXValueCGSizeType}\",\r\ncom.1password.1password.3746 |||   \"AXSubrole\" : \"AXStandardWindow\",\r\ncom.1password.1password.3746 |||   \"AXTitle\" : \"Account Name — All Items — 1Password\",\r\ncom.1password.1password.3746 |||   \"AXTitleUIElement\" : null,\r\ncom.1password.1password.3746 |||   \"AXToolbarButton\" : null,\r\ncom.1password.1password.3746 |||   \"AXZoomButton\" : {\r\ncom.1password.1password.3746 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3746 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3746 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3746 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3746 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3746 |||   },\r\ncom.1password.1password.3746 |||   \"Aero.AXApp\" : {\r\ncom.1password.1password.3746 |||     \"AXExtrasMenuBar\" : \"<AXUIElement 0x600000c8aac0> {pid=1682}\",\r\ncom.1password.1password.3746 |||     \"AXFocusedUIElement\" : null,\r\ncom.1password.1password.3746 |||     \"AXFocusedWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXFrame\" : null,\r\ncom.1password.1password.3746 |||     \"AXFrontmost\" : 0,\r\ncom.1password.1password.3746 |||     \"AXFunctionRowTopLevelElements\" : [\r\ncom.1password.1password.3746 ||| \r\ncom.1password.1password.3746 |||     ],\r\ncom.1password.1password.3746 |||     \"AXMainWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||     \"AXManualAccessibility\" : 0,\r\ncom.1password.1password.3746 |||     \"AXMenuBar\" : \"<AXUIElement 0x600000cedd10> {pid=1682}\",\r\ncom.1password.1password.3746 |||     \"AXPosition\" : null,\r\ncom.1password.1password.3746 |||     \"AXRole\" : \"AXApplication\",\r\ncom.1password.1password.3746 |||     \"AXSize\" : null,\r\ncom.1password.1password.3746 |||     \"AXTitle\" : \"1Password\",\r\ncom.1password.1password.3746 |||     \"AXWindows\" : [\r\ncom.1password.1password.3746 |||       \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||       \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3746 |||       \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\"\r\ncom.1password.1password.3746 |||     ],\r\ncom.1password.1password.3746 |||     \"Aero.AxIgnored\" : \"AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\"\r\ncom.1password.1password.3746 |||   },\r\ncom.1password.1password.3746 |||   \"Aero.App.appBundleId\" : \"com.1password.1password\",\r\ncom.1password.1password.3746 |||   \"Aero.App.nsApp.activationPolicy\" : \"regular\",\r\ncom.1password.1password.3746 |||   \"Aero.App.nsApp.execPath\" : \"file:///Applications/1Password.app/Contents/MacOS/1Password\",\r\ncom.1password.1password.3746 |||   \"Aero.App.version\" : \"8.11.4.360922\",\r\ncom.1password.1password.3746 |||   \"Aero.App.versionShort\" : \"8.11.4\",\r\ncom.1password.1password.3746 |||   \"Aero.AxIgnored\" : \"AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\",\r\ncom.1password.1password.3746 |||   \"Aero.AxUiElementWindowType\" : \"window\",\r\ncom.1password.1password.3746 |||   \"Aero.AxUiElementWindowType_isDialogHeuristic\" : false,\r\ncom.1password.1password.3746 |||   \"Aero.axWindowId\" : 3746,\r\ncom.1password.1password.3746 |||   \"Aero.macOS.version\" : \"Version 15.5 (Build 24F74)\",\r\ncom.1password.1password.3746 |||   \"Aero.on-window-detected\" : [\r\ncom.1password.1password.3746 ||| \r\ncom.1password.1password.3746 |||   ],\r\ncom.1password.1password.3746 |||   \"Aero.treeNodeParent\" : \"Optional(AppBundle.TilingContainer)\",\r\ncom.1password.1password.3746 |||   \"Aero.workspace\" : \"Random\"\r\ncom.1password.1password.3746 ||| }\r\n```\r\n</details>\r\n\r\n<details><summary>Show in large type window</summary>\r\n\r\n```\r\ncom.1password.1password.3789 ||| {\r\ncom.1password.1password.3789 |||   \"AXActivationPoint\" : \"<AXValue 0x600000c77c90> {value = x:1797.000000 y:1103.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3789 |||   \"AXCancelButton\" : null,\r\ncom.1password.1password.3789 |||   \"AXCloseButton\" : {\r\ncom.1password.1password.3789 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3789 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3789 |||     \"AXSubrole\" : \"AXCloseButton\",\r\ncom.1password.1password.3789 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3789 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\"\r\ncom.1password.1password.3789 |||   },\r\ncom.1password.1password.3789 |||   \"AXDefaultButton\" : null,\r\ncom.1password.1password.3789 |||   \"AXDocument\" : \"\",\r\ncom.1password.1password.3789 |||   \"AXFocused\" : 0,\r\ncom.1password.1password.3789 |||   \"AXFrame\" : \"<AXValue 0x6000017f5580> {value = x:1727.000000 y:1089.000000 w:1698.000000 h:1078.000000 type = kAXValueCGRectType}\",\r\ncom.1password.1password.3789 |||   \"AXFullScreen\" : 0,\r\ncom.1password.1password.3789 |||   \"AXFullScreenButton\" : {\r\ncom.1password.1password.3789 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3789 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3789 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3789 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3789 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3789 |||   },\r\ncom.1password.1password.3789 |||   \"AXGrowArea\" : null,\r\ncom.1password.1password.3789 |||   \"AXMain\" : 0,\r\ncom.1password.1password.3789 |||   \"AXMinimizeButton\" : {\r\ncom.1password.1password.3789 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3789 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3789 |||     \"AXSubrole\" : \"AXMinimizeButton\",\r\ncom.1password.1password.3789 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3789 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3789 |||   },\r\ncom.1password.1password.3789 |||   \"AXMinimized\" : 0,\r\ncom.1password.1password.3789 |||   \"AXModal\" : 0,\r\ncom.1password.1password.3789 |||   \"AXParent\" : \"<AXUIElement Application 0x600000c7a700> {pid=1682}\",\r\ncom.1password.1password.3789 |||   \"AXPosition\" : \"<AXValue 0x600000c7be10> {value = x:1727.000000 y:1089.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3789 |||   \"AXProxy\" : null,\r\ncom.1password.1password.3789 |||   \"AXRole\" : \"AXWindow\",\r\ncom.1password.1password.3789 |||   \"AXSections\" : [\r\ncom.1password.1password.3789 |||     \"{\\n    SectionDescription = Content;\\n    SectionObject = \\\"<AXUIElement 0x600000c76b50> {pid=1682}\\\";\\n    SectionUniqueID = AXContent;\\n}\",\r\ncom.1password.1password.3789 |||     \"{\\n    SectionObject = \\\"<AXUIElement 0x600000c76250> {pid=1682}\\\";\\n    SectionUniqueID = AXContainer;\\n}\"\r\ncom.1password.1password.3789 |||   ],\r\ncom.1password.1password.3789 |||   \"AXSize\" : \"<AXValue 0x600000c770f0> {value = w:1698.000000 h:1078.000000 type = kAXValueCGSizeType}\",\r\ncom.1password.1password.3789 |||   \"AXSubrole\" : \"AXStandardWindow\",\r\ncom.1password.1password.3789 |||   \"AXTitle\" : \"Item Name — field name — 1Password\",\r\ncom.1password.1password.3789 |||   \"AXTitleUIElement\" : null,\r\ncom.1password.1password.3789 |||   \"AXToolbarButton\" : null,\r\ncom.1password.1password.3789 |||   \"AXZoomButton\" : {\r\ncom.1password.1password.3789 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3789 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3789 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3789 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3789 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3789 |||   },\r\ncom.1password.1password.3789 |||   \"Aero.AXApp\" : {\r\ncom.1password.1password.3789 |||     \"AXExtrasMenuBar\" : \"<AXUIElement 0x600000c7dbf0> {pid=1682}\",\r\ncom.1password.1password.3789 |||     \"AXFocusedUIElement\" : null,\r\ncom.1password.1password.3789 |||     \"AXFocusedWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXFrame\" : null,\r\ncom.1password.1password.3789 |||     \"AXFrontmost\" : 0,\r\ncom.1password.1password.3789 |||     \"AXFunctionRowTopLevelElements\" : [\r\ncom.1password.1password.3789 ||| \r\ncom.1password.1password.3789 |||     ],\r\ncom.1password.1password.3789 |||     \"AXMainWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||     \"AXManualAccessibility\" : 0,\r\ncom.1password.1password.3789 |||     \"AXMenuBar\" : \"<AXUIElement 0x600000c77cc0> {pid=1682}\",\r\ncom.1password.1password.3789 |||     \"AXPosition\" : null,\r\ncom.1password.1password.3789 |||     \"AXRole\" : \"AXApplication\",\r\ncom.1password.1password.3789 |||     \"AXSize\" : null,\r\ncom.1password.1password.3789 |||     \"AXTitle\" : \"1Password\",\r\ncom.1password.1password.3789 |||     \"AXWindows\" : [\r\ncom.1password.1password.3789 |||       \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||       \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3789 |||       \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\"\r\ncom.1password.1password.3789 |||     ],\r\ncom.1password.1password.3789 |||     \"Aero.AxIgnored\" : \"AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\"\r\ncom.1password.1password.3789 |||   },\r\ncom.1password.1password.3789 |||   \"Aero.App.appBundleId\" : \"com.1password.1password\",\r\ncom.1password.1password.3789 |||   \"Aero.App.nsApp.activationPolicy\" : \"regular\",\r\ncom.1password.1password.3789 |||   \"Aero.App.nsApp.execPath\" : \"file:///Applications/1Password.app/Contents/MacOS/1Password\",\r\ncom.1password.1password.3789 |||   \"Aero.App.version\" : \"8.11.4.360922\",\r\ncom.1password.1password.3789 |||   \"Aero.App.versionShort\" : \"8.11.4\",\r\ncom.1password.1password.3789 |||   \"Aero.AxIgnored\" : \"AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\",\r\ncom.1password.1password.3789 |||   \"Aero.AxUiElementWindowType\" : \"window\",\r\ncom.1password.1password.3789 |||   \"Aero.AxUiElementWindowType_isDialogHeuristic\" : false,\r\ncom.1password.1password.3789 |||   \"Aero.axWindowId\" : 3789,\r\ncom.1password.1password.3789 |||   \"Aero.macOS.version\" : \"Version 15.5 (Build 24F74)\",\r\ncom.1password.1password.3789 |||   \"Aero.on-window-detected\" : [\r\ncom.1password.1password.3789 ||| \r\ncom.1password.1password.3789 |||   ],\r\ncom.1password.1password.3789 |||   \"Aero.treeNodeParent\" : \"Optional(AppBundle.TilingContainer)\",\r\ncom.1password.1password.3789 |||   \"Aero.workspace\" : \"Random\"\r\ncom.1password.1password.3789 ||| }\r\n```\r\n</details>\r\n\r\n<details><summary>Quick Access mini window</summary>\r\n\r\n```\r\ncom.1password.1password.3798 ||| {\r\ncom.1password.1password.3798 |||   \"AXActivationPoint\" : \"<AXValue 0x600000c77960> {value = x:1797.000000 y:1103.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3798 |||   \"AXCancelButton\" : null,\r\ncom.1password.1password.3798 |||   \"AXCloseButton\" : {\r\ncom.1password.1password.3798 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3798 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3798 |||     \"AXSubrole\" : \"AXCloseButton\",\r\ncom.1password.1password.3798 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3798 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\"\r\ncom.1password.1password.3798 |||   },\r\ncom.1password.1password.3798 |||   \"AXDefaultButton\" : null,\r\ncom.1password.1password.3798 |||   \"AXDocument\" : \"\",\r\ncom.1password.1password.3798 |||   \"AXFocused\" : 0,\r\ncom.1password.1password.3798 |||   \"AXFrame\" : \"<AXValue 0x6000017b24c0> {value = x:1727.000000 y:1089.000000 w:409.000000 h:532.000000 type = kAXValueCGRectType}\",\r\ncom.1password.1password.3798 |||   \"AXFullScreen\" : 0,\r\ncom.1password.1password.3798 |||   \"AXFullScreenButton\" : {\r\ncom.1password.1password.3798 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3798 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3798 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3798 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3798 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3798 |||   },\r\ncom.1password.1password.3798 |||   \"AXGrowArea\" : null,\r\ncom.1password.1password.3798 |||   \"AXMain\" : 1,\r\ncom.1password.1password.3798 |||   \"AXMinimizeButton\" : {\r\ncom.1password.1password.3798 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3798 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3798 |||     \"AXSubrole\" : \"AXMinimizeButton\",\r\ncom.1password.1password.3798 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3798 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3798 |||   },\r\ncom.1password.1password.3798 |||   \"AXMinimized\" : 0,\r\ncom.1password.1password.3798 |||   \"AXModal\" : 0,\r\ncom.1password.1password.3798 |||   \"AXParent\" : \"<AXUIElement Application 0x600000c77480> {pid=1682}\",\r\ncom.1password.1password.3798 |||   \"AXPosition\" : \"<AXValue 0x600000cedd40> {value = x:1727.000000 y:1089.000000 type = kAXValueCGPointType}\",\r\ncom.1password.1password.3798 |||   \"AXProxy\" : null,\r\ncom.1password.1password.3798 |||   \"AXRole\" : \"AXWindow\",\r\ncom.1password.1password.3798 |||   \"AXSections\" : [\r\ncom.1password.1password.3798 |||     \"{\\n    SectionDescription = Content;\\n    SectionObject = \\\"<AXUIElement 0x600000cedd40> {pid=1682}\\\";\\n    SectionUniqueID = AXContent;\\n}\",\r\ncom.1password.1password.3798 |||     \"{\\n    SectionObject = \\\"<AXUIElement 0x600000ce49c0> {pid=1682}\\\";\\n    SectionUniqueID = AXContainer;\\n}\"\r\ncom.1password.1password.3798 |||   ],\r\ncom.1password.1password.3798 |||   \"AXSize\" : \"<AXValue 0x600000c77480> {value = w:409.000000 h:532.000000 type = kAXValueCGSizeType}\",\r\ncom.1password.1password.3798 |||   \"AXSubrole\" : \"AXStandardWindow\",\r\ncom.1password.1password.3798 |||   \"AXTitle\" : \"Item Name — 1Password\",\r\ncom.1password.1password.3798 |||   \"AXTitleUIElement\" : null,\r\ncom.1password.1password.3798 |||   \"AXToolbarButton\" : null,\r\ncom.1password.1password.3798 |||   \"AXZoomButton\" : {\r\ncom.1password.1password.3798 |||     \"AXEnabled\" : 1,\r\ncom.1password.1password.3798 |||     \"AXParent\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXRole\" : \"AXButton\",\r\ncom.1password.1password.3798 |||     \"AXSubrole\" : \"AXFullScreenButton\",\r\ncom.1password.1password.3798 |||     \"AXTitle\" : null,\r\ncom.1password.1password.3798 |||     \"AXTopLevelUIElement\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"Aero.AxIgnored\" : \"AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\"\r\ncom.1password.1password.3798 |||   },\r\ncom.1password.1password.3798 |||   \"Aero.AXApp\" : {\r\ncom.1password.1password.3798 |||     \"AXExtrasMenuBar\" : \"<AXUIElement 0x600000c77480> {pid=1682}\",\r\ncom.1password.1password.3798 |||     \"AXFocusedUIElement\" : null,\r\ncom.1password.1password.3798 |||     \"AXFocusedWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXFrame\" : null,\r\ncom.1password.1password.3798 |||     \"AXFrontmost\" : 0,\r\ncom.1password.1password.3798 |||     \"AXFunctionRowTopLevelElements\" : [\r\ncom.1password.1password.3798 ||| \r\ncom.1password.1password.3798 |||     ],\r\ncom.1password.1password.3798 |||     \"AXMainWindow\" : \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||     \"AXManualAccessibility\" : 0,\r\ncom.1password.1password.3798 |||     \"AXMenuBar\" : \"<AXUIElement 0x600000c77480> {pid=1682}\",\r\ncom.1password.1password.3798 |||     \"AXPosition\" : null,\r\ncom.1password.1password.3798 |||     \"AXRole\" : \"AXApplication\",\r\ncom.1password.1password.3798 |||     \"AXSize\" : null,\r\ncom.1password.1password.3798 |||     \"AXTitle\" : \"1Password\",\r\ncom.1password.1password.3798 |||     \"AXWindows\" : [\r\ncom.1password.1password.3798 |||       \"AXUIElement(AxWindowId=3798, title=\\\"Item Name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||       \"AXUIElement(AxWindowId=3789, title=\\\"Item Name — field name — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\",\r\ncom.1password.1password.3798 |||       \"AXUIElement(AxWindowId=3746, title=\\\"Account Name — All Items — 1Password\\\", role=\\\"AXWindow\\\", subrole=\\\"AXStandardWindow\\\")\"\r\ncom.1password.1password.3798 |||     ],\r\ncom.1password.1password.3798 |||     \"Aero.AxIgnored\" : \"AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\"\r\ncom.1password.1password.3798 |||   },\r\ncom.1password.1password.3798 |||   \"Aero.App.appBundleId\" : \"com.1password.1password\",\r\ncom.1password.1password.3798 |||   \"Aero.App.nsApp.activationPolicy\" : \"regular\",\r\ncom.1password.1password.3798 |||   \"Aero.App.nsApp.execPath\" : \"file:///Applications/1Password.app/Contents/MacOS/1Password\",\r\ncom.1password.1password.3798 |||   \"Aero.App.version\" : \"8.11.4.360922\",\r\ncom.1password.1password.3798 |||   \"Aero.App.versionShort\" : \"8.11.4\",\r\ncom.1password.1password.3798 |||   \"Aero.AxIgnored\" : \"AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\",\r\ncom.1password.1password.3798 |||   \"Aero.AxUiElementWindowType\" : \"window\",\r\ncom.1password.1password.3798 |||   \"Aero.AxUiElementWindowType_isDialogHeuristic\" : false,\r\ncom.1password.1password.3798 |||   \"Aero.axWindowId\" : 3798,\r\ncom.1password.1password.3798 |||   \"Aero.macOS.version\" : \"Version 15.5 (Build 24F74)\",\r\ncom.1password.1password.3798 |||   \"Aero.on-window-detected\" : [\r\ncom.1password.1password.3798 |||     {\r\ncom.1password.1password.3798 |||       \"commands\" : \"layout floating\",\r\ncom.1password.1password.3798 |||       \"matcher\" : \"appId=\\\"com.1password.1password\\\", windowTitleRegexSubstring=Regex\"\r\ncom.1password.1password.3798 |||     }\r\ncom.1password.1password.3798 |||   ],\r\ncom.1password.1password.3798 |||   \"Aero.treeNodeParent\" : \"Optional(AppBundle.Workspace)\",\r\ncom.1password.1password.3798 |||   \"Aero.workspace\" : \"Random\"\r\ncom.1password.1password.3798 ||| }\r\n```\r\n</details>",
      "created_at": "2025-08-07T12:35:02Z",
      "updated_at": "2025-09-30T07:45:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1i_l",
        "body": "Thank you, created an issue to investigate it further #1617\r\n\r\nUnfortunately, I know one drawback of these CoreGraphics APIs - they are slow."
      },
      "user": {
        "login": "nihaals",
        "avatar_url": "https://avatars.githubusercontent.com/u/18350092?u=2a0d3c72719065f2b3dc8d10bf099afce5464e6f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah6nQ",
      "number": 1692,
      "title": "More widescreen discussion",
      "body": "My primary monitor that i use at a desk is an ultrawide (49 inch). I also use the macbook pro built-in screen as well. I'd like to use aerospace on the wide monitor, but it doesnt really conform to how I use the monitor. Rather than discuss workarounds, I thought I'd start a discussion to uncover the common usage patterns for these kinds of screens. I'll share 2 that I use:\r\n\r\nWith certain apps, such as video editing software like Adobe Premier, I am OK with the one app taking up all of the screen, or at least most of it. This does not work for most apps though\r\nI think of my screen as having 3 main zones, left, right, and center. The center zone is slightly larger than the left and right ones, and its where I put whatever app (browser, ide, etc) that I am doing the main work in there. The left zone also tends to hold a single app - often Slack - that has secondary focus. It could also hold some reference material that I need to refer to for my main task. My right zone tends to have multiple apps - usually as floating windows that dont take up the full vertical space. Messages, terminal window, calendar, sometimes email, etc. Most of the time when I run an app during the day, I want it in that right-hand zone.\r\nThe second usage pattern is the one I use 99% of the time, and the one that doesnt work so well with aerospace. I feel like aerospace would need a fork, or a different \"mode\" to support that pattern. I could make it work with some of the enhancements being discussed (eg max-window-width), but i wonder how hard it would be to either fork the project (yuck) or come up with a new mental model/mode specifically to support an ultrawide. I'm not a Swift programmer, but I do write code in other languages, so I've cloned the repo to see if i can figure out how to implement a different mode.\r\n\r\nThe only window manager I've found that would work decently with my usage pattern is BentoBox (assuming that it can support floating windows), but I really like the aerospace's key bindings and event model, so I'm willing to invest some time to see if I can make something work.\r\n\r\n\r\n",
      "created_at": "2025-09-13T15:57:59Z",
      "updated_at": "2025-09-29T20:34:05Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "johnstegeman",
        "avatar_url": "https://avatars.githubusercontent.com/u/6601691?u=09fd6c99c5fda1dc1f461053af48f5c7f90e9e89&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiMAx",
      "number": 1729,
      "title": "Aerospace not loading my config suddenly",
      "body": "hey, i am trying to load my config, which is placed in ~/.aerospace.toml and gets opened correctly by the \"open config in \" button. But for some reason it now stopped loading my config and defaults to the default config. That is still the case after manually deleting and recreating the config. \r\n\r\nEdit\r\nOk after some trial and error seems to be my on-window-detected callbacks\r\nAs soon as i put them at the end of my file it doesn't load my config. I think brew autoupdated and afterwards it started happening, so I'll try an older version\r\n\r\n[[on-window-detected]]\r\n    if.app-id = 'com.bitwarden.desktop'\r\n    run = 'layout floating'\r\n[[on-window-detected]]\r\n    if.app-id = 'net.whatsapp.whatsapp'\r\n    run = 'layout floating'\r\n[[on-window-detected]]\r\n    if.app-id = 'com.microsoft.teams2'\r\n    run = 'layout floating'\r\n[[on-window-detected]]\r\n    if.app-id = 'com.spotify.client'\r\n    run = 'move-node-to-workspace S'\r\n[[on-window-detected]]\r\n    if.app-id = 'org.mozilla.firefox' \r\n    run = 'move-node-to-workspace F'\r\n",
      "created_at": "2025-09-29T10:56:36Z",
      "updated_at": "2025-09-29T11:41:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "NikiLentz",
        "avatar_url": "https://avatars.githubusercontent.com/u/22635285?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhtIo",
      "number": 1667,
      "title": "While sharing screen on slack when someone uses the draw on screen feature the workspace toggles randomly",
      "body": "### Body\n\nSteps to reproduce:\r\n1.\r\n2.\r\n3.\r\n\r\nExpected result:\r\nActual result:\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-09-03T12:53:56Z",
      "updated_at": "2025-09-27T19:22:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "omriashke",
        "avatar_url": "https://avatars.githubusercontent.com/u/140201637?u=a01af2c96296f68d1d715060cb901637d2263072&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiIy_",
      "number": 1724,
      "title": "Where are the default keybindings?",
      "body": "This may be a stupid question, but I can’t find the default (built-in) keybindings. I understand you can load preconfigured sets for qwerty, dvorak and colemak, but I can’t find a documentation that says \"this key does that\", for all standard keys.\r\n\r\nAnother way of putting this question is: how do test aerospace out of the box, without creating my own config?\r\n\r\nThanks!",
      "created_at": "2025-09-26T11:28:06Z",
      "updated_at": "2025-09-26T16:38:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3Z-e",
        "body": "This was an issue with home-manager, which creates a default empty-ish config.  A regular Aerospace installs copies the default config. "
      },
      "user": {
        "login": "thblt",
        "avatar_url": "https://avatars.githubusercontent.com/u/2453136?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiG6T",
      "number": 1719,
      "title": "Cannot start wezterm with shortcut any more",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Put `cmd-enter = 'exec-and-forget wezterm start'` in `aerospace.toml`\r\n2. Run `aerospace reload-config`\r\n3. Press `cmd-enter`\r\n\r\nExpected result: Wezterm launches\r\nActual result: Nothing happens\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nThis had previously been working. Running `wezterm start` from a terminal works. `exec-and-forget kitty` works.\r\nI'm a bit lost on where to find logs. I don't see `~/.cache/aerospace` or `~/.local/share/aerospace`. The manpage/guide/readme don't seem to mention anything about logs.",
      "created_at": "2025-09-24T13:13:03Z",
      "updated_at": "2025-09-26T11:31:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rcorre",
        "avatar_url": "https://avatars.githubusercontent.com/u/2496231?u=2a46dcfdbcdc02f29ac395d8de5efd222fa174bc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50w",
      "number": 1011,
      "title": "Shortcuts using `fn` don't work properly",
      "body": "",
      "created_at": "2023-11-30T23:28:49Z",
      "updated_at": "2025-09-26T09:36:48Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bashor",
        "avatar_url": "https://avatars.githubusercontent.com/u/485321?u=6beaa483d83b59ecca46f7214301029b45c022dc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiCjK",
      "number": 1713,
      "title": "Feature idea: combining workspaces",
      "body": "As a long-time `dwm` user on Linux, one of my favourite features comes from this patch: https://dwm.suckless.org/patches/combo/\r\n\r\nIn `dwm` terms, the workspaces are called `tags`. This allows you to show multiple tags at once (for example, all the windows on workspace A and workspace B).\r\nI would often use this in roughly the same pattern:\r\n- Have some fullscreen window, or several tiled windows that I want to stay put\r\n- \"Combo\" in another set of **floating** windows briefly, then put them away\r\n\r\nFor example, while screensharing in a presentation I could show my slides but occasionally put a couple of terminals on top of them to demonstrate something, or switch to a browser window or video without the transition looking clunky (as the windows swap or try to share real estate while all tiling).\r\n\r\nI would really love if `aerospace` had a way to do this, either something I could do already via configuration that I have not realized, or some new development of this feature..\r\n\r\nWould this be straightforward to implement? \r\nAny interest/questions about it?",
      "created_at": "2025-09-20T17:29:19Z",
      "updated_at": "2025-09-25T22:13:48Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "agnosthesia",
        "avatar_url": "https://avatars.githubusercontent.com/u/93293418?u=17f822040b13504bcb1b3f34b31e08e87d309800&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhRVC",
      "number": 1629,
      "title": "workspace is not assigned to external monitor",
      "body": "Hi all,\r\n\r\nI've the following configuration:\r\n\r\n<img width=\"548\" height=\"966\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ffe4346b-4815-4be0-8ca7-b1f2fafc852f\" />\r\n\r\nI don't see the Issue.. but I'm not able to \"assign\" the workspace 8 to the external monitor and the workspace 9 to the other external monitor\r\n\r\nmy results are:\r\n\r\n<img width=\"385\" height=\"626\" alt=\"image\" src=\"https://github.com/user-attachments/assets/eaaf3195-e135-4253-bfca-129b56d390be\" />\r\n\r\n<img width=\"233\" height=\"101\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cbbd0eb5-fc1c-42c3-97de-5814641df2b3\" />\r\n\r\nany Ideas?\r\n",
      "created_at": "2025-08-12T21:27:43Z",
      "updated_at": "2025-09-25T20:41:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "felixbello",
        "avatar_url": "https://avatars.githubusercontent.com/u/9953269?u=95f2b0e43b3e1db8aeac199403f2932b39951d6a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiHOq",
      "number": 1720,
      "title": "How are you guys managing workspaces on multiple monitors?",
      "body": "Hi, guys,\r\n\r\nI read through the whole of Aerospace, fantastic work, got into some of it's code too. I'm a Linux orphan and Aerospace covers most of my workflow.\r\n\r\nCurrently, every monitor has it's own workspace, this is mentioned on the docs:\r\n\r\n> * Each monitor shows its own workspace. The showed workspaces are called\"visible\" workspaces\r\n> * Different monitors can’t show the same workspace at the same time\r\n\r\nMy current setup is two monitors, and I was able to mimic the same workspace being shown on both with rules like:\r\n\r\n```toml\r\n[workspace-to-monitor-force-assignment]\r\n# Main monitor gets 1..9\r\n    1 = 'main'\r\n    2 = 'main'\r\n    3 = 'main'\r\n    \r\n# (...)\r\n# Secondary monitor gets A..I (pairs with 1..9)\r\n    A = 'secondary'\r\n    B = 'secondary'\r\n    C = 'secondary'\r\n    \r\n# (...)\r\nalt-1 = ['focus-monitor main', 'workspace 1', 'focus-monitor secondary', 'workspace A', 'focus-monitor main']\r\nalt-2 = ['focus-monitor main', 'workspace 2', 'focus-monitor secondary', 'workspace B', 'focus-monitor main']\r\nalt-3 = ['focus-monitor main', 'workspace 3', 'focus-monitor secondary', 'workspace C', 'focus-monitor main']\r\n```\r\n\r\nWhich is something I think is also very similar to how people set this up with `yabai`. I was wondering if the community here, since you guys are more experienced, have a better way to deal with this scenario.\r\n\r\nSome caveats of my approach includes:\r\n\r\n- Whenever a window from a workspace not focused comes into focus, only that monitor goes to the workspace (leaving the other one in the previous workspace)\r\n- Whenever you open any hyperlink, only the monitor that has the workspace that has the application that's able to open the hyperlink navigates\r\n\r\nI was reading the docs on `exec-on-workspace-change` but I haven't played with it yet. Maybe that callback could be a way to lock two workspaces together?\r\n\r\nThanks!",
      "created_at": "2025-09-24T19:45:21Z",
      "updated_at": "2025-09-24T19:45:22Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pedropalhari",
        "avatar_url": "https://avatars.githubusercontent.com/u/6961214?u=9de27a0d234057caa7a47b78bc6220c13fbe9470&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiG4g",
      "number": 1718,
      "title": "Cannot find keybind documentation.",
      "body": "Forgive me if this is a dumb question, but I can not for the life of me find the documentation for keybind assignments. I am on a Swedish keyboard and I wish to set cmd-§ to switch to workspace 0 and cmd-shift-§ to move to workspace 0 (§ is the key left of 1 on a swedish keyboard). In the config file I have tried multiple options such as: cmd-§, cmd-grave, cmd-tilde, cmd-backtick and many more, but none of them work. Perhaps my dyslexic mind is too bad at searching for the documentation... I might be able to solve this with an external app such as karabiner elements, but I would prefer to avoid such measures.",
      "created_at": "2025-09-24T12:39:59Z",
      "updated_at": "2025-09-24T14:53:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "CBergvall",
        "avatar_url": "https://avatars.githubusercontent.com/u/210875177?u=9cbd1b2d1878d416a9220064b172bc1b6fe4e7ea&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiFjq",
      "number": 1717,
      "title": "Some features for i3 parity",
      "body": "Hi, thanks for this awesome tool! This is the best tiling window experience I've tried on MacOS. Coming from i3 on Linux, there are a few key features I think would really push this tool to near perfect parity with i3, ordered by how useful I think they would be. Please let me know if these features already exist and I haven't enabled them properly. Since discussions are meant to be precursors to issues in the repo, it might be nice to have a centralized \"i3 parity roadmap\" if that's a goal for the project, to collect these and any other outstanding issues to get the two tools aligned.\r\n\r\n## Major Feature Requests\r\nThese are major suggestions that would greatly elevate the AeroSpace experience compared to i3, in my opinion.\r\n\r\n1. Allow setting similar to i3's `workspace_auto_back_and_forth`. I know the `mod + tab` default can jump back to previous workspace, but in i3 I use the \"double tap workspace to jump back\" constantly when I'm quickly flicking over to another workspace to check something, and then want to return to my work, with minimal finger movement on the keyboard.\r\n2. Native \"focus follows mouse\" setting. Echoing this discussion [here](https://github.com/nikitabobko/AeroSpace/discussions/1155), which I think is one of the best features i3 has that AeroSpace is still lacking.\r\n3. Allow jumping between workspaces across monitors with `focus left`, etc based on monitor layout. I'm not sure how difficult this is to implement, but in i3 it's great to have e.g. ws1 on the left and ws2 on the right, and jump between them with `focus left/right`, or even throw windows across monitors with these and not needing to know the corresponding workspace name.\r\n\r\n## Small Improvements (similar to i3)\r\nThese are minor things I've found inconvenient (or even arguably bugs in some cases) compared to the i3 experience.\r\n\r\n1. Reattaching browser tabs can be difficult in tiling mode. I've only tried this with Brave, but when I drag a tab out of the window it snaps into tiling mode as expected, but reattaching it can be a problem. On i3, dragging the tab across the windows works fine, but in AeroSpace the underlying window \"jumps away\" as it tries to reposition the tiled windows. I'm not even sure how i3 gets away with this, but maybe this is a MacOS quirk with window dragging. Usually I can hack a fix by going fullscreen and then dragging the tab I want to reattach, but it doesn't always work and is a bit messy.\r\n2. In i3, closing the last window in a workspace doesn't move you to another active workspace, and it could be nice to have a config setting to override this behavior and allow the empty workspace to persist. Sometimes I find it disorienting to be thrown to another random workspace with a different window after just closing a window.\r\n3. With multiple monitors, the centering of the mouse when focus is changed can be a little annoying in the following case: suppose you're focused on monitor 1, but want to click the MacOS menu bar on monitor 2 (because your mouse was over there already, and the focus didn't follow mouse as discussed above). I've been in this case a bunch, and find it a little frustrating that the mouse will then jump right to the center. In this case, it would likely be fixed by implementing \"focus follows mouse\" along with changing how `on-focus-changed = ['move-mouse window-lazy-center']` config works. In the majority of cases, that is the behavior I want, but being able to e.g. distinguish if focus is changed via a keyboard shortcut (e.g. `focus left` across a monitor) vs by following the mouse would be key to making this work smoothly.\r\n4. (Very minor) Allowing a variable in the config for the mod key like i3 would've been nice when I was experimenting with different mod key configs earlier. :) \r\n\r\nThanks again for the tool! Excited to see how it develops further.",
      "created_at": "2025-09-23T04:58:34Z",
      "updated_at": "2025-09-23T04:58:35Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rickymagner",
        "avatar_url": "https://avatars.githubusercontent.com/u/81349869?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiFR9",
      "number": 1715,
      "title": "I got an error that said to report here when Aerospace crashed so I am uploading the file here",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Opened the app\r\n\r\nExpected result: App runs\r\nActual result: App crashed\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102966278 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001027d79d4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x00000001027d7c80 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000102759b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n    4   AeroSpace                           0x000000010275c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x000000010275a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000102741751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n    7   AeroSpace                           0x0000000102783df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n    8   AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x00000001027efb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x00000002828f3281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x00000002828f2f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001027ee6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x00000002828f3281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x00000002828f2f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x00000001027ed669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001027839c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001027405bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000028292cdfd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-09-18 22:34:17 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 26.0 (Build 25A354)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001029657dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001027d7d8c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000102759b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n3   AeroSpace                           0x000000010275c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x000000010275a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000102741751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n6   AeroSpace                           0x0000000102783df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n7   AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x00000001027efb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x00000002828f3281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x00000002828f2f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001027ee6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000102740b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x00000002828f3281 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x00000002828f2f0d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x00000001027ed669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001027839c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001027405bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000028292cdfd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n[aerospace-runtime-error.txt](https://github.com/user-attachments/files/22475808/aerospace-runtime-error.txt)\r\n\r\n",
      "created_at": "2025-09-22T19:07:24Z",
      "updated_at": "2025-09-22T19:08:57Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "KrishWu",
        "avatar_url": "https://avatars.githubusercontent.com/u/66881117?u=167d8e3f30b322cf50975b22f5aa0114f9b14c07&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiCiU",
      "number": 1712,
      "title": "workspace swtiching problem on multiple monitors scenario",
      "body": "I guess it is not a problem though, but the default config defines workspace 1 to 9, so the default workspace for the second monitor will be 10 (11 if the workspace 10 is defined in config file), but how should I switch to the workspace 10? the config file also has on-focused-monitor-changed behavior defined, which is good. But since I cannot switch to workspace 10 using my keyboard, I would have to use my mouse the switch workspace, which seems to me conflicts the purpose of windows mangaer.\r\nNow I know I can bind some other key combinations to swtich to workspaces whose numbers are greater than 9, or I can reduce the workspace number in the config and forcely make some workspace assigned to the second monitor.\r\nSo what I am trying to say is the default config and the guides can be refined a little bit more, or newbies like me could run into a lot of confusing behaviors.",
      "created_at": "2025-09-20T16:59:09Z",
      "updated_at": "2025-09-20T16:59:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kouryoubon",
        "avatar_url": "https://avatars.githubusercontent.com/u/56196019?u=8b261291ae862006b81e62c45c407787a4e8c310&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiBbm",
      "number": 1706,
      "title": "dfs-prev and dfs-next don't work when all windows are floating",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Make all windows floating in a workspace\r\n2. Execute `focus dfs-prev` or `focus dfs-next`\r\n\r\nExpected result:\r\nIt works.\r\n\r\nActual result:\r\nNothing happens\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-09-19T06:47:56Z",
      "updated_at": "2025-09-19T12:01:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3JMB",
        "body": "Duplicate of: https://github.com/nikitabobko/AeroSpace/issues/521"
      },
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiBec",
      "number": 1707,
      "title": "[Crash report] while navigating around with focus dfs-prev/next",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Navigate around with focus dfs-prev/next\r\n\r\nExpected result:\r\n\r\nNo error\r\n\r\nActual result:\r\n\r\nCrash\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102416278 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001022879d4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000102287c80 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000102209b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n    4   AeroSpace                           0x000000010220c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x000000010220a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x00000001021f1751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n    7   AeroSpace                           0x0000000102233df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n    8   AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x000000010229fb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x00000002706fc461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x00000002706fc109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x000000010229e6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x00000002706fc461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x00000002706fc109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x000000010229d669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001022339c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001021f05bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000027073083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-09-19 07:40:04 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.7 (Build 24G222)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001024157dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000102287d8c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000102209b70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n3   AeroSpace                           0x000000010220c8fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x000000010220a711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x00000001021f1751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n6   AeroSpace                           0x0000000102233df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n7   AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x000000010229fb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x00000002706fc461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x00000002706fc109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x000000010229e6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x00000001021f0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x00000002706fc461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x00000002706fc109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x000000010229d669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001022339c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001021f05bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000027073083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-09-19T07:45:51Z",
      "updated_at": "2025-09-19T12:01:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3JMJ",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "zzJinux",
        "avatar_url": "https://avatars.githubusercontent.com/u/6695226?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah-bS",
      "number": 1696,
      "title": "when in macos-native-fullscreen doesn't switch to workspace if workspace is empty. [macos 26 tahoe]",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Have multiple workspaces\r\n2. Open one window in macos-native-fullscreen\r\n3. Try switching to any empty workspace\r\n\r\nExpected result: Switch to empty workspace\r\nActual result: It doesn't switch\r\n\r\n### Additional info\r\n\r\n```shell\r\n❯ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nhttps://github.com/user-attachments/assets/24b7f53a-1096-4296-b748-be92dda4bc8a\r\n\r\n",
      "created_at": "2025-09-16T12:55:27Z",
      "updated_at": "2025-09-24T09:37:10Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0oAstro",
        "avatar_url": "https://avatars.githubusercontent.com/u/79555780?u=ab3d51c3028dfa5c5e23b680ac57b2d954263981&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiA7e",
      "number": 1704,
      "title": "Emacs window not focused upon exec-and-forget",
      "body": "### Body\n\nSteps to reproduce:\r\n\r\n1. Install [emacs-plus](https://github.com/d12frosted/homebrew-emacs-plus)\r\n2. Install [doomemacs](https://github.com/doomemacs/doomemacs)\r\n3. Setup aerospace hotkey `cmd-shift-enter = 'exec-and-forget /opt/homebrew/bin/emacsclient -n -c'`\r\n4. Use the hotkey.\r\n\r\n\r\nExpected result: Emacs window opens quickly and is focused.\r\nActual result: Emacs window appears, sometimes the window is tiled, sometimes aerospace forgets to tile it. What is consistent though is that the window isn't focused, forcing me to click the window manually to focus it. \r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n\r\n```\r\n",
      "created_at": "2025-09-18T16:59:25Z",
      "updated_at": "2025-09-18T16:59:27Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pachungulo",
        "avatar_url": "https://avatars.githubusercontent.com/u/115584328?u=a587d05d683dc420b7e981d4fb9c5ce0c5028aec&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AiAEc",
      "number": 1703,
      "title": "Switching focus on window close",
      "body": "Hello!\r\n\r\nI have a script that opens a new terminal _window_ on a shortcut. The script is pretty straightforward:\r\n```bash\r\n#!/usr/bin/env bash\r\n\r\n# Try to create a new alacritty window within the same process.\r\n# If there's no process yet, start a new one.\r\n\r\nverbose=false\r\nif [ \"$1\" = \"-v\" ]; then\r\n  verbose=true\r\n  shift\r\nfi\r\n\r\nif $verbose; then\r\n  if ! alacritty msg create-window; then\r\n    alacritty\r\n  fi\r\nelse\r\n  if ! alacritty msg create-window >/dev/null 2>&1; then\r\n    alacritty >/dev/null 2>&1 &\r\n  fi\r\nfi\r\n```\r\n\r\nThis prevents spinning up multiple processes of `alacritty` to avoid cluttering the `cmd-tab` (old habits die hard) and save a little memory here and there.\r\n\r\nThe problem I have is that I have one main terminal window in a separate space and then I open ephemeral windows in other spaces when there's a need. However, since they share a process, when I close an ephemeral window, the focus doesn't switch back to the previous app (say, Firefox). The previous app stays unfocused but the menu bar switches to _alacritty_.\r\n\r\nAny advice on how to resolve this issue? Thanks!\r\n\r\n```\r\n❯ aerospace --version\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n\r\n❯ sw_vers\r\nProductName:\t\tmacOS\r\nProductVersion:\t\t26.0\r\nBuildVersion:\t\t25A354\r\n```",
      "created_at": "2025-09-17T22:37:49Z",
      "updated_at": "2025-09-17T22:37:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "valueof",
        "avatar_url": "https://avatars.githubusercontent.com/u/49106?u=8a0757442aaa8be1441bcaa3a22a846bc36fd6f2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah_1d",
      "number": 1702,
      "title": "How to prevent chrome download popup window always partially visible and showing in the bottom half?",
      "body": "```shell\r\n> aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\n\r\nHi @nikitabobko, as shown in the picture below, the red arrow parts are always invisible for me.\r\n\r\n<img width=\"1896\" height=\"1012\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8b07a77f-a4ee-448b-a121-c5e8eb8fbd93\" />\r\n\r\nI put chrome windows to workspace `B` and here is my settings:\r\n\r\n```toml\r\nafter-startup-command = [\r\n    'workspace B', 'layout v_accordion', 'workspace-back-and-forth',\r\n]\r\n\r\n[[on-window-detected]]\r\nif .app-id = 'com.google.Chrome'\r\ncheck-further-callbacks = true\r\nrun = ['layout tiling', 'move-node-to-workspace B']\r\n```\r\n\r\nand I don't think I can use filter rules to make this only specific window floating and center, since\r\n\r\n```shell\r\naerospace list-windows --workspace B\r\n```\r\n\r\ngives me\r\n\r\n```log\r\n984 | Google Chrome | Downloads | xxx - Google Chrome - xxx\r\n```\r\n\r\nbut other windows can also have the keyword `Downloads`. So what should I do?\r\n",
      "created_at": "2025-09-17T17:44:42Z",
      "updated_at": "2025-09-17T17:54:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zhuoqun-chen",
        "avatar_url": "https://avatars.githubusercontent.com/u/73287160?u=800f350211c5fc15528602ff4af02268a58047ce&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah_Dz",
      "number": 1698,
      "title": "`aerospace workspace --wrap-around` cannot switch between different monitors",
      "body": "### Body\n\nI have 4 workspaces, and I can't switch focus to other workspaces with this command. \r\n```\r\n❯ aerospace list-workspaces --focused\r\n4\r\n❯ aerospace workspace --wrap-around next\r\nWorkspace '4' is already focused. Tip: use --fail-if-noop to exit with non-zero code\r\n❯ aerospace workspace --wrap-around prev\r\nWorkspace '4' is already focused. Tip: use --fail-if-noop to exit with non-zero code\r\n```\r\n\r\nI can use `aerospace move --boundaries all-monitors-outer-frame right` to move a window to other monitors. Is it possible to add a similar argument to allow moving focus to workspaces on another monitor? \r\n\r\n### Additional info\r\n\r\n```shell\r\n❯ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-09-17T02:35:24Z",
      "updated_at": "2025-09-17T16:47:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3DdU",
        "body": "`aerospace workspace next|prev` is restricted to the focused monitor by default\r\n\r\nIf you want to cycle through workspaces of all monitors, you can do it in the following way:\r\n```\r\naerospace list-workspaces --all | aerospace workspace --wrap-around next\r\n```\r\n\r\nBe aware that we plan to do a small syntactical breaking change here https://github.com/nikitabobko/AeroSpace/issues/1683\r\n\r\nso in future versions you will have to write (pay attention to `--stdin` flag):\r\n```\r\naerospace list-workspaces --all | aerospace workspace --stdin --wrap-around next\r\n```\r\n"
      },
      "user": {
        "login": "wd",
        "avatar_url": "https://avatars.githubusercontent.com/u/58177?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah_sL",
      "number": 1700,
      "title": "Allow to specify a sort/order in list-windows (and other lists)",
      "body": "Hi,\r\n\r\nI'd like to have the list-windows command output the windows in the order they are in the tree (so it matches the order they appear in on the screen).\r\n\r\nI haven't found a way to do it with the current options.\r\n\r\nThis would help when integrating with sketchybar for showing the windows currently on screen.\r\n\r\nIt would also probably be useful to allow ordering by workspace, by monitor or other criteria.\r\n\r\nThanks in advance !",
      "created_at": "2025-09-17T15:23:54Z",
      "updated_at": "2025-09-17T16:26:28Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A3Dcd",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/491"
      },
      "user": {
        "login": "BenoitAverty",
        "avatar_url": "https://avatars.githubusercontent.com/u/17006335?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah_Ad",
      "number": 1697,
      "title": "Predefine an arrangement of windows by app",
      "body": "I want to use a hotkey to quickly move all windows to predefined workspaces as a default setup. To achieve this, I vibe coded the following script:\r\nhttps://gist.github.com/IOIO72/f50ae550767fb062f4d91c14d976cbe1\r\n\r\nThis could be an inspiration for a new Aerospace command.",
      "created_at": "2025-09-17T00:33:19Z",
      "updated_at": "2025-09-17T00:38:36Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah8-6",
      "number": 1694,
      "title": "Focus on active window but don't resize",
      "body": "Hello, sometimes I want to reduce distractions and work on my code in the window that is in the middle of the screeen between two other windows. Is there a way currently to hide other windows and not resize the active window, and then recall the other windows back in their previous positions?",
      "created_at": "2025-09-15T06:37:55Z",
      "updated_at": "2025-09-15T07:22:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "abteenz",
        "avatar_url": "https://avatars.githubusercontent.com/u/19427327?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeo1W",
      "number": 1163,
      "title": "Adding a by-name window-switcher really makes Aerospace shine even more",
      "body": "This isn't really Aerospace-specific, but I feel like it's meshed super-well with my Aerospace usage, and others might benefit from it.\r\n\r\nIn vi/VScode and related environments, I'm used to being able to _either_ navigate to a window \"spatially\" ('move left one pane', okay, now 'move left another pane') _or_ directly, by name. (See [ctrlp.vim](https://github.com/kien/ctrlp.vim) or [VScode's Quick Open](https://code.visualstudio.com/Docs/editor/editingevolved#_quick-file-navigation).) This is traditionally bound to <kbd>⌃</kbd><kbd>P</kbd> or <kbd>⌘</kbd><kbd>P</kbd>:\r\n\r\n<img width=\"628\" alt=\"image\" src=\"https://github.com/user-attachments/assets/16734e21-424b-47b6-94b0-5a71b4fa9568\" />\r\n\r\n----\r\n\r\nWell, today, I've configured [Raycast](https://raycast.com) to listen for <kbd>⌥</kbd><kbd>P</kbd> (as I've pretty much completely dedicated the <kbd>⌥</kbd> key to Aerospace navigation at this point):\r\n\r\n<img width=\"731\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bb85ff1f-d2c9-46ab-9156-249b63516fb6\" />\r\n\r\n… and now I get an awesome window-switcher whenever I hit that key-combo:\r\n\r\n<img width=\"862\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8a52609d-e290-4f96-bbc7-102ea47a4839\" />\r\n\r\nI'm sure there's other tools than Raycast that can do the same thing; [Alfred](https://www.alfredapp.com/), [Contexts](https://contexts.co/), and [Witch](https://manytricks.com/witch/) spring to mind?\r\n\r\nIt's a great addition to Aerospace, so I don't have to necessarily remember which workspace I 'left that terminal on' if I get distracted by a side-task for too long.",
      "created_at": "2025-03-03T02:10:39Z",
      "updated_at": "2025-09-14T18:23:34Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ELLIOTTCABLE",
        "avatar_url": "https://avatars.githubusercontent.com/u/200?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhDs4",
      "number": 1605,
      "title": "Unable to tile browser extension popup windows to float",
      "body": "I have this rule in my aerospace config file \r\n\r\n```\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'Extension: (Bitwarden Password Manager) - Bitwarden'\r\nif.app-id = 'app.zen-browser.zen'\r\nrun = ['layout floating']\r\ncheck-further-callbacks = true # doesn't make a difference\r\n```\r\n\r\nI'm using Zen browser and every time I open the bitwarden extension's pop out window it tiles the window and starts to mess up with aerospace where it results in creating ghost windows and window flickering. I added this rule hoping that I want that specific window to float but any other zen browser windows to tile but for some reason it doesn't tile the window. \r\n\r\nNot sure if this is a potential bug or something wrong with my implementation\r\n\r\nSteps to reproduce:\r\n1. Install bitwarden extension\r\n2. Open bitwarden extension from toolbar and click \"pop out to a new window\"\r\n3. opens another browser window but managed by extension\r\n\r\nExpected result: with [[on-window-detected]] rule, it should make the popout window floating\r\nActual result: tiles the window like any other window\r\n\r\n### Additional info\r\n`aerospace list-windows --workspace B --json`\r\noutputs - \r\n```\r\n {\r\n    \"app-name\" : \"Zen\",\r\n    \"window-id\" : 21755,\r\n    \"window-title\" : \"Extension: (Bitwarden Password Manager) - Bitwarden\"\r\n  },\r\n```\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-08-01T23:58:48Z",
      "updated_at": "2025-09-14T17:26:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Vib1240n",
        "avatar_url": "https://avatars.githubusercontent.com/u/71455013?u=fcb0433f04b075d28205c2ddebe3e2d502931949&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah7qi",
      "number": 1693,
      "title": "Try to understand command: enable toggle",
      "body": "## Question: How does `enable toggle` turn AeroSpace **back on** if key events aren’t intercepted when it’s disabled?\r\n\r\nI’m trying to understand how the `enable toggle` command works in Aerospace.\r\n\r\n- Using `enable toggle` successfully **disables** AeroSpace temporarily.\r\n- But toggling it **back on** does not work, because the docs say:\r\n\r\n> Key events are not intercepted when AeroSpace is disabled.  \r\n> — https://nikitabobko.github.io/AeroSpace/commands#enable\r\n\r\nIf key events aren’t intercepted while AeroSpace is disabled, what mechanism is supposed to handle `enable toggle` to re-enable AeroSpace?  \r\nIs there another way (e.g., CLI command, macOS shortcut, daemon/API) to bring AeroSpace back without relying on key interception?",
      "created_at": "2025-09-14T15:31:10Z",
      "updated_at": "2025-09-14T15:44:25Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bitbalancer",
        "avatar_url": "https://avatars.githubusercontent.com/u/85396661?u=42df04c41b7b4910b96499ee95f2ab9ee0520438&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfRIZ",
      "number": 1285,
      "title": "Adobe Apps not managed by Aerospace",
      "body": "For some reason, all Adobe Apps (Creative Cloud, Photoshop,  Illustrator) are not managed by Aerospace. They open floating above the tiled windows, and don't react to any layout changes.\r\nI am not 100% sure, but I think that it worked before the last OS update to Sequoia 15.4\r\nWhen I run `aerospace list-apps` all open adobe apps are listed.",
      "created_at": "2025-04-13T09:02:39Z",
      "updated_at": "2025-09-14T12:14:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw7W2",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1293"
      },
      "user": {
        "login": "tilman-schieber",
        "avatar_url": "https://avatars.githubusercontent.com/u/986273?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiN",
      "number": 958,
      "title": "`on-monitor-detected` callback",
      "body": "Not sure how feasible this is as a feature, but for those who want to execute a callback when a secondary display is detected a callback or condition for the existing callbacks could be useful. These are just two things that came to mind immediately when trying to solve this. I'm open to suggestions if this is a solved problem using the provided configuration, or otherwise. I think it'd be easily achievable using the CLI commands in a shell script but I'd appreciate a way for handling it within the config if possible.\r\n\r\nI like the idea of binding applications to workspaces with mnemonic names, my browser lives on workspace `b`, terminal emulator on `t`, etc. I set up the window detection callbacks for the apps that I care about to move them to the desired workspaces. This works great when I don't have my external monitor connected. However, my main external monitor is a ultra-wide and more than capable of having 2 or 3 applications side-by-side. \r\n\r\nI want to bind applications to workspaces and I want separate bindings depending on whether or not specific external monitor(s) is connected. I also want to be able to execute commands when I connect my external monitor.",
      "created_at": "2024-12-06T14:47:25Z",
      "updated_at": "2025-09-12T13:29:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "derrik-fleming",
        "avatar_url": "https://avatars.githubusercontent.com/u/82898438?u=9125e62fe2e905118b62e0a007780dcac57d94a8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aelcj",
      "number": 1146,
      "title": "Is there a way to spread/visualise all the windows in a workspace?",
      "body": "Kind of like how MacOS' \"Mission Control\" shows all windows in a particular Space.  \r\n\r\nExcept for all the windows in Aerospace.",
      "created_at": "2025-02-26T21:26:43Z",
      "updated_at": "2025-09-12T11:55:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "V4G4X",
        "avatar_url": "https://avatars.githubusercontent.com/u/34249137?u=c04d1ed9faa312893ba194057c6156a698fcd42b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah4zO",
      "number": 1689,
      "title": "Move apps to scratch workspace by default?",
      "body": "Hi,\r\nI have currently 4 workspaces (1,2,Web and Code) that I regularly use in my aerospace workflow. I use workspaces 1, Web and Code for specific apps:\r\n```\r\n(...)\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\nrun = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Safari'\r\nrun = 'move-node-to-workspace Web'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nrun = 'move-node-to-workspace Code'\r\n```\r\nIs there a way to move all apps that do not have specific rules to a specific \"scratch\" workspace (workspace 2 in this case)? \r\n\r\nThanks. ",
      "created_at": "2025-09-12T01:04:44Z",
      "updated_at": "2025-09-12T01:04:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Juanfi8",
        "avatar_url": "https://avatars.githubusercontent.com/u/145443656?u=b7fb2040722dc66edf9e35c2baf6c3c4c32c0b8b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah3nO",
      "number": 1688,
      "title": "Switching apps while preserving fullscreen?",
      "body": "Hi,\r\n\r\nwhen I used a tiling wm last time, it was dwm and this became part of my workflow:\r\nAfter switching to fullscreen for an app in a workspace, cycling through apps on this workspace preserved the fullscreen state.\r\n\r\nI know that the documentation mentions this for fullscreen:\r\n_Switching to a different tiling window within the same workspace while the current focused window is in fullscreen mode results in the fullscreen window exiting fullscreen mode._\r\n\r\nMy questions are:\r\n1. Is it possible to accomplish something at least similar to what I had in dwm? For example:\r\n- one \"main\" tile for the focused window and a stack/accordion using the rest of the space\r\n- a key combination to \"cycle\" through all windows by making them appear  in the \"main\" tile\r\n\r\n2. Is there a technical limitation/reason for the above statement from the documentation? If not, I would like to make a feature request if that makes sense.\r\n\r\nThanks :)",
      "created_at": "2025-09-10T20:50:41Z",
      "updated_at": "2025-09-11T07:08:42Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A20at",
        "body": "I was trying out aerospace a few months ago and already had some setup in place but did not use it until now.\r\n\r\nTurns out, I already have the above feature implemented in my config :D\r\n\r\n```\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-j =         'focus --boundaries-action wrap-around-the-workspace left'\r\nalt-k =         'focus --boundaries-action wrap-around-the-workspace down'\r\nalt-l =         'focus --boundaries-action wrap-around-the-workspace up'\r\nalt-semicolon = 'focus --boundaries-action wrap-around-the-workspace right'\r\n```\r\n\r\nWith with all gaps set to 0 (or `accordion-padding = 0`, or both, not sure) allows me to switch to this layout and then cycle trough all windows in fullscreen.\r\n"
      },
      "user": {
        "login": "JSamir",
        "avatar_url": "https://avatars.githubusercontent.com/u/1304599?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah2Hv",
      "number": 1685,
      "title": "Split windows closing randomly??",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open two windows in vertical split (firefox and quicktime player)\r\n2. Play a video with QT\r\n3. Wait 10-20 minutes until QT randomly quits.\r\n\r\nExpected result:\r\nQT should not close the window randomly. I have only experienced this issue with the Preview app and Quick Time Player.\r\nActual result:\r\nQT closes after playing for 10-20 minutes.\r\n\r\n### Additional info\r\nI don't know how easy this is to reproduce for others, but it's quite consistent for me. I can also reproduce by opening preview and waiting until it automatically closes the window, sometimes I have to wait more than 30 minutes.",
      "created_at": "2025-09-09T18:41:46Z",
      "updated_at": "2025-09-09T18:41:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jdrupal-dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/13871894?u=1d2fac1de275afe8339df0f8c713b07865980a58&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acojv",
      "number": 722,
      "title": "alt-tab / cmd-tab",
      "body": "Is it possible to make cmd-tab work like showing only apps from the current workspace? It can be another shortcut. ",
      "created_at": "2024-11-18T12:40:23Z",
      "updated_at": "2025-09-08T20:54:37Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kulfix",
        "avatar_url": "https://avatars.githubusercontent.com/u/58335005?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae5fB",
      "number": 1221,
      "title": "Saving window positions?",
      "body": "First of all, thanks so much for Aerospace. I've missed a tiling window manager so much, and it's nice to a have a great option for macOS.\r\n\r\nI occasionally have AeroSpace crash or close for some other reason, and I lose all the time I've spent configuring my windows perfectly....they all revert to workspace 1 when I relaunch it.\r\n\r\nHave you considered incorporating a way to save window positions and restore them in case of a crash?\r\n\r\nThanks in advance!\r\n",
      "created_at": "2025-03-18T18:19:00Z",
      "updated_at": "2025-09-08T20:38:34Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "d1rewolf",
        "avatar_url": "https://avatars.githubusercontent.com/u/3717?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah0ie",
      "number": 1682,
      "title": "CLI hangs when stdin is not a TTY and no data is provided",
      "body": "## Description\r\nIn the current CLI implementation, when stdin is not a TTY, the process waits indefinitely for stdin input. As a result, if no line of input is provided, the CLI hangs.\r\n\r\n## Code causing the behavior\r\n- `hasStdin()`\r\nhttps://github.com/nikitabobko/AeroSpace/blob/3e05d8a5990c43a0842e2589240afc7454a46960/Sources/Cli/cliUtil.swift#L8\r\n- The loop that waits for at least one line from stdin\r\nhttps://github.com/nikitabobko/AeroSpace/blob/3e05d8a5990c43a0842e2589240afc7454a46960/Sources/Cli/_main.swift#L60\r\n\r\n## Reproduction (Node.js)\r\n```node\r\n// repro.js\r\n// This will hang because stdin is left open with no data.\r\nconst { spawn } = require(\"node:child_process\");\r\n\r\nconst child = spawn(\"aerospace\", [\"--version\"]);\r\n\r\nchild.stdout.on(\"data\", (data) => {\r\n  process.stdout.write(\"stdout: \" + data.toString());\r\n});\r\n\r\nchild.stderr.on(\"data\", (data) => {\r\n  process.stderr.write(\"stderr: \" + data.toString());\r\n});\r\n\r\nchild.on(\"close\", (code) => {\r\n  console.log(`child process exited with code ${code}`);\r\n});\r\n\r\n// When stdin is closed, the readLine function terminates, so the hang ends.\r\n// child.stdin.end()\r\n```\r\n```sh\r\nnode repro.js\r\n```\r\n\r\n## Expected behavior\r\nEven if stdin is not a TTY, when no input is present the CLI should terminate immediately instead of hanging.\r\n\r\n## Related discussion\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/972\r\n\r\n## Environment\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n---\r\nIf this thread can be turned into an issue, I would be happy to create a pull request to fix it!",
      "created_at": "2025-09-08T16:38:32Z",
      "updated_at": "2025-09-08T17:39:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2tuV",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1683"
      },
      "user": {
        "login": "Gai-H",
        "avatar_url": "https://avatars.githubusercontent.com/u/23699120?u=3a02cb8b945293dd91cfdf485da76ca13bf859d6&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzNa",
      "number": 972,
      "title": "AeroSpace CLI Commands Hang When Executed via Node.js child_process",
      "body": "**Summary:**\r\nWhile developing a companion app for AeroSpace to enhance workspace switching feedback, I've discovered that the `list-workspaces`, `list-monitors`, and `list-windows` commands hang indefinitely when executed through Node.js child_process.exec(). This occurs even though these commands work correctly when run directly in the terminal.\r\n\r\n![CleanShot 2025-01-13 at 02 57 14@2x](https://github.com/user-attachments/assets/46d8afa1-cc2d-4f6d-a9ac-479fe97a1193)\r\n\r\n\r\n**Environment:**\r\n\r\n- AeroSpace (v0.16.2-Beta)\r\n- Node.js (v20.15.1)\r\n- Electron-based application\r\n- macOS (Sonoma v14.7)\r\n\r\n**Reproduction:**\r\n\r\n1. Use child_process.exec() to run any of these commands:\r\n   `aerospace list-workspaces --all`\r\n    `aerospace list-monitors`\r\n    `aerospace list-windows`\r\n2. Observe that the callback never executes\r\n\r\n**Expected behavior:**\r\n\r\nCommands should return JSON data promptly, as they do in the terminal.\r\n\r\n**Actual behavior:**\r\n\r\nCommands hang indefinitely without returning or throwing an error.\r\n\r\n**Technical Details:**\r\n\r\nHere's the relevant implementation that demonstrates the issue:\r\n```tsx\r\nconst execAsync = promisify(exec);\r\n\r\n// This hangs indefinitely\r\nconst workspacesStdout = await execAsync('aerospace list-workspaces --all');\r\n```\r\n\r\n**Additional Notes:**\r\n\r\n- `which aerospace` executes successfully, confirming the binary is accessible\r\n- Direct terminal execution of these commands works as expected\r\n- No error messages or timeouts occur; the process simply hangs\r\n\r\nWould appreciate any insights into whether this might be related to how AeroSpace handles stdout/stderr when called programmatically vs. interactively.",
      "created_at": "2025-01-12T15:58:34Z",
      "updated_at": "2025-09-08T17:39:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2tuT",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1683"
      },
      "user": {
        "login": "MichaelKilbane",
        "avatar_url": "https://avatars.githubusercontent.com/u/21234729?u=03566c0f2fa08b3372f7b388ab055f52d1c619e2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ahuhc",
      "number": 1677,
      "title": "Is there a way to disable the default 1-9 workspaces?",
      "body": "In my configuration I prefix workspaces with a monitor ID to give each monitor a fixed range of workspaces. I dynamically determine the workspace number when pressing my super+[1..9].\r\n\r\nFor example, pressing super+2 on monitor 3 would result in workspace 32 on monitor 3. The same keybind on monitor 1 would result in workspace 12 etc.\r\n\r\nI'd like to do two things, disable the 1-9 workspaces since they will never be used by me intentionally and be able to change the default workspace at startup of aerospace to prevent windows from opening on workspaces that I cannot easily access outside of the UI.\r\n\r\nIs there a way I can achieve these? Are these features already present?\r\n\r\nNote: I originally opened this discussion on my work account, oops!",
      "created_at": "2025-09-04T17:18:22Z",
      "updated_at": "2025-09-08T16:16:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Buttars",
        "avatar_url": "https://avatars.githubusercontent.com/u/17345308?u=d06da69e65efbe417e01ec60dcdd4ce650ec7207&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah0KY",
      "number": 1681,
      "title": "Getting control over MS Teams",
      "body": "The window management in MS Teams can be quite frustrating, especially when working with multiple monitors. For instance, when you start sharing a screen during a video call, the video call window minimizes and disrupts the window arrangement if you try to reopen it while sharing. This behavior might be reasonable for a single monitor setup, but it becomes annoying when managing Teams across multiple monitors.\r\n\r\nDoes anybody have the same issues? Is it possible to controll MS Teams windows management with Aerospace. So far, I have no solution. (For example: https://github.com/nikitabobko/AeroSpace/discussions/1418#discussioncomment-14339532)",
      "created_at": "2025-09-08T11:51:47Z",
      "updated_at": "2025-09-08T11:51:48Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "IOIO72",
        "avatar_url": "https://avatars.githubusercontent.com/u/4575083?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afx58",
      "number": 1418,
      "title": "MS Teams window identification question",
      "body": "Hi,\r\n\r\nDoes anyone know of a way to identify spawned windows in meeting apps like Teams and Zoom?\r\nI'd like to be able to have the main teams window on workspace 2 (horizontal accordion) but have meeting windows float.",
      "created_at": "2025-05-15T16:12:07Z",
      "updated_at": "2025-09-08T11:41:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "burgessa23",
        "avatar_url": "https://avatars.githubusercontent.com/u/292498?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ah0Dy",
      "number": 1680,
      "title": "Copy-paste broken (CMD-C) on latest aerospace (MacOS Sequoia 15.6.1)",
      "body": "### Body\n\ncmd-C does not work anymore with the newest aerospace version:\r\n\r\n- it has worked for months with previous versions\r\n- it works fine with aerospace disabled\r\n\r\nI use borders and one thing I noticed (if it helps) is that when I press cmd-C the borders flicker off and on again, like I am hitting some other keymap that it's superseeding copy-paste cmd-C. Any ideas on how to fix or debug this? \r\n\r\nHere is my config:\r\n\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n    # JankyBorders has a built-in detection of already running process,\r\n    # so it won't be run twice on AeroSpace restart\r\n    'exec-and-forget borders active_color=0xffcba6f7 inactive_color=0x00494d64 width=12.0 hidpi=on'\r\n]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\n# on-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-cmd-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = true\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 15\r\ninner.vertical =   15\r\nouter.left =       15\r\nouter.bottom =     15\r\nouter.top =        15\r\nouter.right =      15\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\ncmd-h = 'focus left'\r\ncmd-j = 'focus down'\r\ncmd-k = 'focus up'\r\ncmd-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\ncmd-0 = 'workspace 0'\r\ncmd-1 = 'workspace 1'\r\ncmd-2 = 'workspace 2'\r\ncmd-3 = 'workspace 3'\r\ncmd-4 = 'workspace 4'\r\ncmd-5 = 'workspace 5'\r\ncmd-6 = 'workspace 6'\r\ncmd-7 = 'workspace 7'\r\ncmd-8 = 'workspace 8'\r\ncmd-9 = 'workspace 9'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\ncmd-shift-0 = ['move-node-to-workspace 0', 'workspace 0']\r\ncmd-shift-1 = ['move-node-to-workspace 1', 'workspace 1']\r\ncmd-shift-2 = ['move-node-to-workspace 2', 'workspace 2']\r\ncmd-shift-3 = ['move-node-to-workspace 3', 'workspace 3']\r\ncmd-shift-4 = ['move-node-to-workspace 4', 'workspace 4']\r\ncmd-shift-5 = ['move-node-to-workspace 5', 'workspace 5']\r\ncmd-shift-6 = ['move-node-to-workspace 6', 'workspace 6']\r\ncmd-shift-7 = ['move-node-to-workspace 7', 'workspace 7']\r\ncmd-shift-8 = ['move-node-to-workspace 8', 'workspace 8']\r\ncmd-shift-9 = ['move-node-to-workspace 9', 'workspace 9']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\ncmd-shift-h = 'move left'\r\ncmd-shift-j = 'move down'\r\ncmd-shift-k = 'move up'\r\ncmd-shift-l = 'move right'\r\n\r\ncmd-enter = 'exec-and-forget open -na Kitty'\r\n\r\ncmd-b = 'exec-and-forget open -na /Applications/Google\\ Chrome.app'\r\n\r\ncmd-f = 'fullscreen --no-outer-gaps'\r\n\r\ncmd-c = [\r\n  'reload-config',\r\n  'exec-and-forget borders active_color=0xffcba6f7 inactive_color=0x00494d64 width=12.0 hidpi=on',\r\n  'mode main'\r\n]\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\ncmd-r = 'mode resize'      # 1. Define a binding to switch to 'resize' mode\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nesc = 'mode main'\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'main'\r\n3 = 'main'\r\n4 = 'main'\r\n5 = 'main'\r\n6 = 'main'\r\n7 = 'built-in'\r\n8 = 'built-in'\r\n9 = 'built-in'\r\n0 = ['HP', 'main']\r\n\r\n```\r\n\r\n\r\nHere is the version info:\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-09-08T10:20:24Z",
      "updated_at": "2025-09-08T10:22:06Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "andy941",
        "avatar_url": "https://avatars.githubusercontent.com/u/49410235?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ahwpk",
      "number": 1679,
      "title": "Add a callback for changing binding modes",
      "body": "I have a lot of functionalities split between different binding modes, and I as I'm using this tool with sketchybar, I have an indicator set up to show if I'm in a different binding mode than main. Since I need to emit an event whenever the mode changes, my config file looks something like this:\r\n```\r\n1 = ['move-node-to-workspace 1', 'workspace 1', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n2 = ['move-node-to-workspace 2', 'workspace 2', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n3 = ['move-node-to-workspace 3', 'workspace 3', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n4 = ['move-node-to-workspace 4', 'workspace 4', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n5 = ['move-node-to-workspace 5', 'workspace 5', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n\r\nalt-h = ['join-with left', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\nalt-j = ['join-with down', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\nalt-k = ['join-with up', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\nalt-l = ['join-with right', 'mode main', 'exec-and-forget sketchybar --trigger aerospace_mode_changed CURRENT_MODE=main']\r\n\r\n```\r\nAs you can see I have to repeat the command to emit the event to sketchybar everytime, making the config a bit ugly. A workaround for this is to define some really weird keybind, and using trigger-binding in order to make the config a bit prettier, but I think adding a callback for this would be really great",
      "created_at": "2025-09-06T14:53:49Z",
      "updated_at": "2025-09-06T14:53:50Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "haxybaxy",
        "avatar_url": "https://avatars.githubusercontent.com/u/87573953?u=7b2dca9c4504c32cd990b7c8449eed3356b29e2b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhwJ-",
      "number": 1678,
      "title": "`command-tab` to switch aerospace `workspace back and forth` not work",
      "body": "This setting does not override macos `command-tab`:\r\n```toml\r\ncmd-tab = \"workspace-back-and-forth\"\r\n```",
      "created_at": "2025-09-06T04:02:15Z",
      "updated_at": "2025-09-06T04:03:37Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "phucisstupid",
        "avatar_url": "https://avatars.githubusercontent.com/u/125681538?u=3c87a09d4ec9fceed3c871e5b52a812a23b88d7f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhuhC",
      "number": 1676,
      "title": "Is there a way to disable the default 1-9 workspaces?",
      "body": "In my configuration I prefix workspaces with a monitor ID to give each monitor a fixed range of workspaces. I dynamically determine the workspace number when pressing my super+[1..9]. \r\n\r\nFor example, pressing super+2 on monitor 3 would result in workspace 23 on monitor 2. The same keybind on monitor 1 would result in workspace 12 etc.\r\n\r\nI'd like to do two things, disable the 1-9 workspaces since they will never be used by me intentionally and be able to change the default workspace at startup of aerospace to prevent windows from opening on workspaces that I cannot easily access outside of the UI.\r\n\r\nIs there a way I can achieve these? Are these features already present?",
      "created_at": "2025-09-04T17:12:06Z",
      "updated_at": "2025-09-04T17:12:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "landon-buttars-wgu",
        "avatar_url": "https://avatars.githubusercontent.com/u/66702865?u=7de87847a4c331e13b05401504d1b72c299e1e92&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhuZK",
      "number": 1675,
      "title": "Minimizing floating windows pop right back up",
      "body": "### Body\n\n**Example**\r\nI open my floating application Outlook and 1s after it pop ups up again so I have to minimize it again.\r\n\r\n**Expected**\r\nMinimizing an application shouldn't make it pop up again\r\n\r\n**Config**\r\n```\r\n[[on-window-detected]]\r\ncheck-further-callbacks = true\r\nif.app-id = 'com.microsoft.Outlook'\r\nrun = ['layout floating']\r\n```\r\n\r\nMacos 15.5\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e",
      "created_at": "2025-09-04T14:55:28Z",
      "updated_at": "2025-09-04T14:55:29Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idelice",
        "avatar_url": "https://avatars.githubusercontent.com/u/59118341?u=974664b47efff07e496b5e902cdec2306a525a09&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhuQI",
      "number": 1674,
      "title": "Dragging floating windows in multi-montior setup behaves weird",
      "body": "### Body\n\n**Example 1**\r\nI want to drag my Teams call  (floating window) to the main screen. \r\n\r\nWhen I'm about 20% into the main screen, it goes all the way back to where it originated from.\r\n\r\n**Example 2**\r\nI want to drag my Outlook mail (floating window) from the main screen to the other one.\r\n\r\nWhen I'm close to the edge of my main screen, my mouse loose focus and the Outlook app vanished to the background of the current opened application (firefox, chrome etc.)\r\n\r\n**Expectation**\r\nDragging floating windows between monitors should be as smooth as if you weren't using aerospace at all.\r\n\r\n**Env**\r\nMacos 15.5\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n\r\n",
      "created_at": "2025-09-04T12:40:03Z",
      "updated_at": "2025-09-04T14:59:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idelice",
        "avatar_url": "https://avatars.githubusercontent.com/u/59118341?u=974664b47efff07e496b5e902cdec2306a525a09&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhuBW",
      "number": 1671,
      "title": "Having multiple monitors, but make Aerospace only apply on 1",
      "body": "Regarding: https://nikitabobko.github.io/AeroSpace/guide#multiple-monitors , I don't think I can achieve what I'm dreaming of.\r\n\r\nI love Aerospace when only in my laptop, single screen.\r\n\r\nWhen at the desk, I have 4 monitors, laptop closed, and it would absolutely life changing if I can have aerospace only in the monitor I define.\r\n\r\n- The others would be totally default behaviour.\r\n- I don't mind having to setup the corners, disable individual spaces, etc etc\r\n- Everything as is today, but just ignore an array of monitors.\r\n\r\nIs this possible, or something very similar?\r\n\r\n\r\n\r\n\r\n\r\n",
      "created_at": "2025-09-04T08:15:22Z",
      "updated_at": "2025-09-04T13:06:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ijpatricio",
        "avatar_url": "https://avatars.githubusercontent.com/u/26031459?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aht_v",
      "number": 1670,
      "title": "does force workspace to monitors is breaking other things ?",
      "body": "whenever i have force workspace to monitor the other things such as service mode, resizing, full screen etc are not responding/working.\r\n\r\nis this due to how my config is done?\r\n\r\n\r\nhere is my config \r\n\r\nCurrently when force monitor assignment is commented everything works fine \r\n\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 4\r\ninner.vertical =   4\r\nouter.left =       4\r\nouter.bottom =     4\r\nouter.top =        4\r\nouter.right =      4\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\ncmd-ctrl-alt-shift-h = 'move left'\r\ncmd-ctrl-alt-shift-j = 'move down'\r\ncmd-ctrl-alt-shift-k = 'move up'\r\ncmd-ctrl-alt-shift-l = 'move right'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-0 = 'workspace 0'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\ncmd-ctrl-alt-shift-1 = 'move-node-to-workspace 1'\r\ncmd-ctrl-alt-shift-2 = 'move-node-to-workspace 2'\r\ncmd-ctrl-alt-shift-3 = 'move-node-to-workspace 3'\r\ncmd-ctrl-alt-shift-4 = 'move-node-to-workspace 4'\r\ncmd-ctrl-alt-shift-5 = 'move-node-to-workspace 5'\r\ncmd-ctrl-alt-shift-6 = 'move-node-to-workspace 6'\r\ncmd-ctrl-alt-shift-7 = 'move-node-to-workspace 7'\r\ncmd-ctrl-alt-shift-8 = 'move-node-to-workspace 8'\r\ncmd-ctrl-alt-shift-9 = 'move-node-to-workspace 9'\r\ncmd-ctrl-alt-shift-0 = 'move-node-to-workspace 0'\r\n\r\n# [workspace-to-monitor-force-assignment]\r\n# 1 = 'main'\r\n# 2 = 'main'\r\n# 3 = 'main'\r\n# 4 = 'main'\r\n# 5 = 'main'\r\n# 6 = ['secondary', 'main']\r\n# 7 = ['secondary', 'main']\r\n# 8 = ['secondary', 'main']\r\n# 9 = ['secondary', 'main']\r\n# 0 = ['secondary', 'main']\r\n\r\ncmd-ctrl-alt-shift-f = 'fullscreen'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-bck-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\ncmd-ctrl-alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\ncmd-ctrl-alt-shift-semicolon = 'mode service'\r\n\r\ncmd-ctrl-alt-shift-r = 'mode resize'\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nb = 'balance-sizes'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nminus = 'resize smart -50'\r\nequal = 'resize smart +50'\r\n\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\ncmd-ctrl-alt-shift-h = ['join-with left', 'mode main']\r\ncmd-ctrl-alt-shift-j = ['join-with down', 'mode main']\r\ncmd-ctrl-alt-shift-k = ['join-with up', 'mode main']\r\ncmd-ctrl-alt-shift-l = ['join-with right', 'mode main']\r\n\r\n```",
      "created_at": "2025-09-04T07:45:33Z",
      "updated_at": "2025-09-04T07:45:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sanketssc",
        "avatar_url": "https://avatars.githubusercontent.com/u/49080676?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhtQP",
      "number": 1668,
      "title": "Is there a way to print the layout tree?",
      "body": "Wondering if there is a way to print the layout tree for a workspace. Looking at the list- commands I didn't see an obvious way to achieve this.\r\n\r\nI thought it would be fun to render a visual representation of the current workspace tree and put it in sketchybar. :)",
      "created_at": "2025-09-03T14:34:00Z",
      "updated_at": "2025-09-03T14:56:00Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2ikw",
        "body": "Not possible yet https://github.com/nikitabobko/AeroSpace/issues/16"
      },
      "user": {
        "login": "ryanmeisters",
        "avatar_url": "https://avatars.githubusercontent.com/u/1131791?u=9fdaef262663bc0a75e18ecf2b8bd5bade70aa2b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhssO",
      "number": 1666,
      "title": "Aerospace keeps crashing when logging in",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Login after computer goes to sleep\r\n\r\nExpected result: Not to crash\r\n\r\nActual result: Crash\r\n\r\n### Additional info\r\n\r\nI am using a screen tool called [BetterDisplay](https://github.com/waydabber/BetterDisplay) to scale the resolution on my screen. I would suspect that it could have something to do with these crashes. However, it does not always crash when logging in even if it is running.\r\n\r\n\r\nCrash report\r\n\r\n```\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: ax(AXMoved)\r\nDate: 2025-09-03 03:51:37 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 9171 ID: Mattermost.Desktop\r\nmacOS version: Version 15.6.1 (Build 24G90)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001051717dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104fb8f20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x0000000104fb8990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x0000000105012d94 $sSo7CGPointV9AppBundleE20monitorApproximationAC7Monitor_pvg + 60\r\n4   AeroSpace                           0x0000000104fe794c $s9AppBundle9WorkspaceC16workspaceMonitorAA0E0_pvg + 200\r\n5   AeroSpace                           0x0000000104fa9eec $s9AppBundle28checkOnFocusChangedCallbacksyyF + 288\r\n6   AeroSpace                           0x0000000104fb0e80 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TY1_ + 228\r\n7   AeroSpace                           0x0000000104f4cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   libswift_Concurrency.dylib          0x0000000285242461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   libswift_Concurrency.dylib          0x0000000285242109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n10  AeroSpace                           0x0000000104fb09f1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n11  AeroSpace                           0x0000000104f4cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000285242461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  libswift_Concurrency.dylib          0x0000000285242109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  AeroSpace                           0x0000000104faff59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n15  AeroSpace                           0x0000000104fb0711 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n16  AeroSpace                           0x0000000104f4cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x000000028527683d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```",
      "created_at": "2025-09-03T04:04:52Z",
      "updated_at": "2025-09-03T07:10:55Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2hgF",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1613\r\n"
      },
      "user": {
        "login": "Nyxonios",
        "avatar_url": "https://avatars.githubusercontent.com/u/18164197?u=bca65723e7bfd147e01ec14a45feb52e7ced0d69&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhokJ",
      "number": 1661,
      "title": "Making new tab in Ghostty terminal creates an invisible window",
      "body": "### Body\n\nSteps to reproduce:\r\n1. create a new tab in the ghostty terminal\r\n\r\nExpected result: should create a new tab within the existing window\r\nActual result: creates the new tab but it also creates an invisible window and divides up the screen\r\n",
      "created_at": "2025-08-30T04:17:47Z",
      "updated_at": "2025-09-03T06:47:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "codestutis",
        "avatar_url": "https://avatars.githubusercontent.com/u/139379924?u=a26c43d7a5fe88daaabefbb8efdfeaf753dd743e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agqjy",
      "number": 1534,
      "title": "How to automatically cycle through layout when spawning new windows?",
      "body": "I am trying to replicate the behavior from wayland/hyprlands where it always spawns a window in the half of the last focused window, instead of it spawning just horizontally or vertically constantly.",
      "created_at": "2025-07-10T09:30:14Z",
      "updated_at": "2025-09-01T17:22:26Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "8o8inCodes",
        "avatar_url": "https://avatars.githubusercontent.com/u/16385213?u=a149061533399af7e8887fbb152d70e3812e57b0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhU0e",
      "number": 1635,
      "title": "Feature Request: Add if.bash-command to on-window-detected",
      "body": "# Feature Request: Add `if.bash-command` to `on-window-detected`\r\n\r\n### **Problem/Motivation**\r\n\r\nThe `on-window-detected` callback is incredibly useful for automating window management. However, the current set of `if` conditions (`if.app-id`, `if.app-name-regex-substring`, `if.window-title-regex-substring`, etc.) are limited to static checks. There is no way to perform more complex, dynamic, or programmatic checks on a detected window.\r\n\r\nA user may need to check a window's properties that aren't available as a standard condition, or they may need to run a complex script that decides whether a window should be manipulated. For example, a user might want to check an application's process ID or a specific environment variable before deciding to move it. This is not possible with the current set of conditions.\r\n\r\n### **Proposed Solution**\r\n\r\nI propose adding a new condition to the `on-window-detected` callback called `if.bash-command`.\r\n\r\nThis condition would:\r\n\r\n1.  Accept a string containing a bash command.\r\n\r\n2.  Pass the `app-id`, `app-name`, and `window-title` of the detected window as environment variables or command-line parameters to the bash command.\r\n\r\n3.  The `run` commands would only be executed if the bash command returns an exit code of `0`. Any non-zero exit code would be treated as a condition mismatch, and the `run` commands would not be executed.\r\n\r\nThis would allow users to write custom logic for window detection, providing an extremely flexible and powerful way to handle new windows.\r\n\r\n### **Showcase Example**\r\n\r\nThe new condition could be used like this:\r\n```\r\n[[on-window-detected]]\r\n# Check if the app is Terminal and its window title contains a specific substring from a complex regex script\r\nif.bash-command = 'echo \"${AEROSPACE_APP_NAME}\" | grep -q \"Terminal\"'\r\nrun = 'layout floating'\r\n```\r\n\r\nTo make the environment variables clear, they could be named:\r\n\r\n* `AEROSPACE_APP_ID`: The application's ID.\r\n\r\n* `AEROSPACE_APP_NAME`: The application's name.\r\n\r\n* `AEROSPACE_WINDOW_TITLE`: The window's title.\r\n\r\nAlternatively, the parameters could be passed directly to the command as arguments, though environment variables might be more idiomatic.",
      "created_at": "2025-08-15T11:42:43Z",
      "updated_at": "2025-09-01T14:32:33Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lucasriondel",
        "avatar_url": "https://avatars.githubusercontent.com/u/7773454?u=ff97246eb42a8618338772587ae73fa648e1e06e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhpZM",
      "number": 1664,
      "title": "Quick fix for slow workspace switching",
      "body": "Hi All,\r\n\r\nI’ve been using AeroSpace with multiple workspaces, and I noticed that switching between them was slow the first time after idling — often taking 1–2 seconds, but then feeling much snappier if I quickly switched back and forth.\r\n\r\nAfter some digging, I found the root cause: macOS automatic graphics switching.\r\n\r\nI had Zed editor (GPU-heavy) on one workspace, and browsers/other apps on another.\r\n\r\nmacOS was offloading GPU surfaces when the app was hidden, then reloading them when I switched back.\r\n\r\nThat reload is what caused the noticeable lag on the first switch after inactivity. And I'm guessing other apps like Unity and Godot could also be suffering because of this issue.\r\n\r\n✅ Fix\r\n\r\nDisabling automatic graphics switching solved it completely:\r\n\r\nOpen System Settings → Battery → Options.\r\n\r\nSet “Automatic graphics switching” → Off (or “Prevent automatic graphics switching” → On, depending on macOS version).\r\n\r\nWith that setting disabled, AeroSpace workspace switching is instant, even with GPU-heavy apps like Zed or browsers across different workspaces.\r\n\r\nSuggestion for the Devs:\r\n\r\nCould this fix be mentioned in the troubleshooting / performance section of the AeroSpace docs? I suspect many users with dual-GPU Macs will run into this without realizing it’s a macOS graphics switching issue rather than an AeroSpace one.\r\n\r\nThanks again for the amazing project 🙏\r\n\r\n\r\n\r\n.\r\n<img width=\"1444\" height=\"1258\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cf528045-6431-4d05-9869-3217329ee4c8\" />\r\n",
      "created_at": "2025-08-31T14:02:13Z",
      "updated_at": "2025-08-31T17:10:45Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "israrwz",
        "avatar_url": "https://avatars.githubusercontent.com/u/3380485?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aho3M",
      "number": 1663,
      "title": "Forcing workspaces to monitors causes loosing keybindings and strange focus at startup",
      "body": "Thanks for the great work! My colleagues recommended using AeroSpace, so I started configuring it.\r\nWith default config everything works as expected, but I have 3 screens and my workflow is limited and I need only 3 workspaces, one for every screen and from there I can manage my stuff. The other constraint for me is that I have a Kinesis keyboard and left hand presses `Alt-Shift` and my other hand the workspace identifier. Pressing 3 keys with one hand is not fast enough. :) So, for me the ideal workspace identifiers are `y`, `u` and `i` or `6`, `7` and `8`. So, added the following to the config to have `workspace 6` added to the leftmost screen, `workspace 7` to the `main` (Displays configured accordingly) and `workspace 8` to the inbuilt.\r\n\r\nAt startup I observed that the leftmost workspace gets the focus in contrary what I observed with the default config where the `main` screen has the focus (the asterisk in the top bar). And all of the keystrokes are gone like focus left/right/etc, switching to workspaces and moving to workspaces. The main workspace wasn't displayed as `7`, it had the name `alt+1`.\r\n\r\n**Addition**:\r\n- I tried to move workspaces to monitors by the cli and the patterns work fine (workspace is moved to the desired screen/monitor) and the mentioned keystrokes remained operational. I assume this means that the used references to monitors are correct.\r\n- after unpligging and plugging in the external screens they won't get the same workspaces assigned to them before the unplugging, which eliminates a possible workaround option like \"once you assign the workspaces to screens they remain until next restart\"\r\n\r\nThe fact that the keystrokes work with default config suggest that there is no keystrokes conflict.\r\n\r\nAnother interesting observation is that I see workspaces above 9 suddenly, like `10` and `11`. I don't know if this is a side-effect or I just have a bad day. I see these names persisted across restart sessions. Is there a cache somewhere I can flush so these will go away?\r\n\r\nRegarding forcing workspaces to screens concept I have a question. Let's assume that I can set it up successfully. Does this mean that I'll have only this 3 workspaces? The volume of created workspaces can be controlled?\r\n\r\n```\r\n[workspace-to-monitor-force-assignment]\r\n6 = 1\r\n7 = 'main'\r\n8 = 'built-in'\r\n```",
      "created_at": "2025-08-30T16:35:57Z",
      "updated_at": "2025-08-31T15:24:40Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Andras-Csanyi",
        "avatar_url": "https://avatars.githubusercontent.com/u/5106373?u=7edacd991910a9c6a47876fccb95d5dfdd7db662&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfP1e",
      "number": 1278,
      "title": "Window flickering on resize with iterm2 and nvim open",
      "body": "This window flickering in the video occurs when i resize the terminal window. It only happens with iterm2 with nvim open from what I've discovered so far. I've tried to google for potential issues but I would need some guidance. Does anyone know what could cause this?\r\n\r\n\r\nhttps://github.com/user-attachments/assets/2c810359-42be-4e9c-bcd3-5e02cf3034ce\r\n\r\n",
      "created_at": "2025-04-11T09:34:50Z",
      "updated_at": "2025-08-30T22:56:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0k0F",
        "body": "I think I've figured it out. What I think is happening is that iTerm2 likes having its windows at a multiple of whatever font size you are using, essentially it resizes its own window in increments of the width of a character. This sends it into a battle against aerospace who is trying to resize it based on the screen space. More proof of this is that the flickering stops if you enable the setting `disable session-initiated window resizing` under `profiles -> terminal`. After disabling that setting a popup appears telling you `A program has tried to resize the window. Allow it?`, also linking to the setting I mentioned. You can always ignore that popup and things seem to work smoothly."
      },
      "user": {
        "login": "papekoja",
        "avatar_url": "https://avatars.githubusercontent.com/u/44550137?u=5ce5a99e4d8861e7541ad7d4bffd5f4883e0f474&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgwNs",
      "number": 1552,
      "title": "Slidepad - App is now tied to a specific workspace",
      "body": "### Body\r\n\r\nI've just upgraded AeroSpace and I'm getting an issue where an app I use all the time, [Slidepad](https://slidepad.app/), is now being tied to a specific workspace and it's making it basically unusable for its purpose. It's my absolute favorite app and I can't go without it.\r\n\r\nSteps to reproduce:\r\n1. Download Slidepad\r\n2. Toggle the slide over window\r\n\r\nExpected result: The current workspace remains focused, the slide over window is overlayed on top.\r\nActual result: The workspace Slidepad is on is switched to, the slide over window is overlayed on top.\r\n\r\n### Additional info\r\nSlidepad has always worked good on every version of AeroSpace, I've been using it for over a year, albeit a little clunky when you leave it open and switch to another workspace, so I always close the slide over window before switching workspaces. If there were just sticky floating windows (ignored windows), this wouldn't be a problem and I'd add it to the AeroSpace config. Especially because I also love PIP, but AeroSpace makes PIP essentially not a thing.\r\n\r\nCould be related to #1492 (I don't really know). Last version I used was v0.18.1-Beta.\r\nEDIT: Works in v0.18.5-Beta, broken in 0.19.0-Beta\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n",
      "created_at": "2025-07-15T10:27:46Z",
      "updated_at": "2025-08-28T11:49:39Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "iminlikewithyou",
        "avatar_url": "https://avatars.githubusercontent.com/u/20297536?u=409975a43d09125d7aba8c1c2b94b2d6b1ea7a39&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhnAF",
      "number": 1659,
      "title": "brew install aerospace ... then what?",
      "body": "In the Installation documentation, it says do brew install (preferred), or manual install. \r\n\r\n1) you choose to `brew install aerospace`\r\n2) ... and then how do you turn this thing on?\r\n\r\n```\r\n › which aerospace\r\n/opt/homebrew/bin/aerospace\r\n\r\n › aerospace enable on\r\nCan't connect to AeroSpace server. Is AeroSpace.app running?\r\nThe operation couldn’t be completed. (Socket.Socket.Error error 1.)\r\n\r\n › aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: Unknown. The server is not running\r\n\r\n › ls -la  `which aerospace`\r\nlrwxr-xr-x  1 ldpg  admin  81 Aug 28 01:37 /opt/homebrew/bin/aerospace -> /opt/homebrew/Caskroom/aerospace/0.19.2-Beta/AeroSpace-v0.19.2-Beta/bin/aerospace\r\n```\r\n\r\nok ... it seems that it installs to `/opt/homebrew/Caskroom/aerospace/0.19.2-Beta/AeroSpace-v0.19.2-Beta/AeroSpace.app`\r\nand you need to go there and open it and accept the permission. \r\n\r\nThat should be added to the brew install steps in the documentation.",
      "created_at": "2025-08-28T09:40:27Z",
      "updated_at": "2025-08-28T09:40:28Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "k-nearest-neighbor",
        "avatar_url": "https://avatars.githubusercontent.com/u/111158332?u=e7939a65d0b371559290203020a56f0e58d7acd8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdMiV",
      "number": 844,
      "title": "Feature proposal: i3 like option to display inactive workspaces that have windows in them",
      "body": "I added some functionality I was missing from i3, the ability to see workspaces that are not active, but have at least an open window in them.\r\nThis will look like this for someone with 2 monitors:\r\n<img width=\"183\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d043172a-d897-4931-b328-0cd4e83f391a\" />\r\nHere for example I have workspace `G` opened in my main monitor, workspace `S` in the external monitor, and workspaces `M`,`N`, `T`, `X` and `Z` that are grayed out are the ones that have windows in them, but they are not currently active in any monitor.\r\n\r\nI implemented this by adding a configuration like this:\r\n``` toml\r\n# Possible values: text|squares|i3 (available from macOS 14 or later)\r\n# - text:        displays menu bar as monospaced text (only active workspaces for each monitor).\r\n# - squares: displays menu bar as square with the workspace name inside. Filled square is the\r\n#                   active monitor, bordered square for other monitors (displays only active workspaces\r\n#                   for each monitor).\r\n# - i3:           same as squares + shows all other workspaces that contains windows in it, like i3.\r\nmenu-bar-style = 'text'\r\n```\r\n\r\nIn this way the user can choose how they want to display this, if they care about the functionality or even if they have the space in the menu bar to display this.\r\n\r\n<img width=\"391\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d776c71f-96ba-41a7-91b2-e514051f60a9\" />\r\n\r\nAdding here the menu window to better understand from where that is coming.\r\n\r\nFor consistency in the style, I added the modes to be represented as a circle with the corresponding character of the name\r\n<img width=\"212\" alt=\"image\" src=\"https://github.com/user-attachments/assets/159c4b84-fc2f-4d1d-9715-ef82000709b3\" />\r\n\r\nOther modes are supported on the same way, the letter being assigned to the mode will be displayed inside a circle, to differentiate a monitor from a mode.\r\n\r\nFor example, here I created a mode test \r\n``` toml\r\n[mode.test.binding]\r\nesc = ['reload-config', 'mode main']\r\n```\r\nthat will display like this\r\n<img width=\"215\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c60e3b5a-560b-43f2-9849-ab5ca97b91fc\" />\r\n\r\nFor the menu icons I'm using native `Image(systemName:)` and icons are from SF Symbols (natively supported).\r\n\r\nAfter further reading of closed/rejected PRs I found this might help solve the issue #56 \r\n\r\nThis is how it will look in the 3 different configurations in service mode (remember that in normal mode there is no indication of the mode)\r\n\r\nText option for monospaced text as default (parameter value `text` with not monospaced when macOS don't support it): \r\n<img width=\"103\" alt=\"image\" src=\"https://github.com/user-attachments/assets/08ae80fd-1fbe-4ab3-9b6a-6245a8ac14dc\" />\r\n<img width=\"87\" alt=\"image\" src=\"https://github.com/user-attachments/assets/3989770f-2ec9-46c2-9d49-d01eecd76ec9\" />\r\n\r\nSquares uses the SF symbols images to represent each workspace (parameter value `squares`):\r\n<img width=\"107\" alt=\"image\" src=\"https://github.com/user-attachments/assets/79db1ed4-b21b-4743-841e-2781449909a4\" />\r\n\r\ni3 style same as squares + display workspaces that have windows (parameter value `i3`):\r\n<img width=\"212\" alt=\"image\" src=\"https://github.com/user-attachments/assets/159c4b84-fc2f-4d1d-9715-ef82000709b3\" />\r\n\r\nAll this will keep support for emojis (in square and i3 style emojis are rendered without any type of square for legibility)\r\n<img width=\"199\" alt=\"image\" src=\"https://github.com/user-attachments/assets/14179969-0c20-4a33-b43f-aa706abe555c\" />\r\n<img width=\"204\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f5eecb1d-ff2d-4208-9ab2-32cf580920e1\" />\r\n\r\nAlso as you can see I added the colon `:` to separate visually the mode from the monitors and the pipe `|` to separate the active workspaces/monitors from the background workspaces. This could be removed if it feels too much.\r\n\r\n\r\nThis whole functionality implementation could be fund already developed and working on my fork under https://github.com/mobile-ar/AeroSpace/tree/feature/menu-bar-style-i3-like , it's how I'm currently running Aerospace.",
      "created_at": "2024-12-10T23:41:50Z",
      "updated_at": "2025-08-28T04:32:57Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2Uk8",
        "body": "This feature was added on `release in 0.19.0` as part of the Experimental UI settings menu option.\r\nAlso got improved with extra option lately.\r\nMore info in closed issue #711 "
      },
      "user": {
        "login": "mobile-ar",
        "avatar_url": "https://avatars.githubusercontent.com/u/758096?u=cc45742d86fd702dc5ec4fb3e5c1e3052603114b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhftW",
      "number": 1650,
      "title": "Animation Bug when using Aerospace and Command Tab",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have two apps on different workspaces (i am using Zen Browser and apple notes app)\r\n2. Spam command and tab between the two apps until you notice the animation where one of the apps (in my case Zen Browser) appears/slides in from the bottom right side of the screen\r\n3. The animation is not expected and is different from when you command tab with different apps\r\n4. I can only fix the bug by restarting my mac, i have tried restarting aerospace, killall Dock but the only way the bug gets resolved is by restarting the mac.\r\n\r\nExpected result: quick change between workspaces, no animation\r\nActual result: animation of window appearing from the bottom right side of the screen\r\n\r\n### Additional info\r\nIt looks like the animation that happens when you show desktop (using mission control or hot corners) then command tab. It appears and slides in from the bottom right side of the screen.\r\n\r\n```shell\r\nmy config:\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical =   10\r\nouter.left =       10\r\nouter.bottom =     10\r\nouter.top =        10\r\nouter.right =      10\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\nalt-b = 'workspace B'\r\nalt-c = 'workspace C'\r\nalt-d = 'workspace D'\r\nalt-e = 'workspace E'\r\nalt-f = 'workspace F'\r\nalt-g = 'workspace G'\r\nalt-i = 'workspace I'\r\nalt-n = 'workspace N'\r\nalt-o = 'workspace O'\r\nalt-p = 'workspace P'\r\nalt-q = 'workspace Q'\r\nalt-r = 'workspace R'\r\nalt-s = 'workspace S'\r\nalt-t = 'workspace T'\r\nalt-u = 'workspace U'\r\nalt-v = 'workspace V'\r\nalt-w = 'workspace W'\r\nalt-x = 'workspace X'\r\nalt-y = 'workspace Y'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-a = 'move-node-to-workspace A'\r\nalt-shift-b = 'move-node-to-workspace B'\r\nalt-shift-c = 'move-node-to-workspace C'\r\nalt-shift-d = 'move-node-to-workspace D'\r\nalt-shift-e = 'move-node-to-workspace E'\r\nalt-shift-f = 'move-node-to-workspace F'\r\nalt-shift-g = 'move-node-to-workspace G'\r\nalt-shift-i = 'move-node-to-workspace I'\r\nalt-shift-n = 'move-node-to-workspace N'\r\nalt-shift-o = 'move-node-to-workspace O'\r\nalt-shift-p = 'move-node-to-workspace P'\r\nalt-shift-q = 'move-node-to-workspace Q'\r\nalt-shift-r = 'move-node-to-workspace R'\r\nalt-shift-s = 'move-node-to-workspace S'\r\nalt-shift-t = 'move-node-to-workspace T'\r\nalt-shift-u = 'move-node-to-workspace U'\r\nalt-shift-v = 'move-node-to-workspace V'\r\nalt-shift-w = 'move-node-to-workspace W'\r\nalt-shift-x = 'move-node-to-workspace X'\r\nalt-shift-y = 'move-node-to-workspace Y'\r\n\r\nalt-shift-m = 'fullscreen'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'app.zen-browser.zen'\r\nrun = \"move-node-to-workspace 2\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'move-node-to-workspace 3'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Preview'\r\nrun = \"move-node-to-workspace 4\"\r\n\r\n```\r\n\r\n",
      "created_at": "2025-08-22T18:08:24Z",
      "updated_at": "2025-08-26T13:55:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0daboy",
        "avatar_url": "https://avatars.githubusercontent.com/u/91841891?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhlBj",
      "number": 1655,
      "title": "List monitors command should be more descriptive",
      "body": "I would really love it if the aerospace list-monitors command would show you which display is the main display, rather than just the number and name.\r\n\r\nI'm currently using aerospace with sketchybar, and I am using the aerospace list-monitors command in order to be able to get my bars to align with the proper monitor.\r\n\r\nI move set ups frequently, and my main display changes frequently based on where I am at, which means I always have to mess with my config when going from home to the office etc. since I use my laptop as the main screen at home, while I use an external screen as the main one in the office. \r\n\r\nThe numbering of the screens for the list monitors command starts from left to right, so its highly dependent on where my laptop is placed and it makes me have to align my monitors in an uncomfortable way in order for things to work properly.\r\n\r\nWe can already use 'main' and 'secondary' in the config, can't we also have the command include a flag that says whether the display is the main one or not? Thank you",
      "created_at": "2025-08-26T10:54:01Z",
      "updated_at": "2025-08-26T13:45:58Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A2QOw",
        "body": "Created an issue: https://github.com/nikitabobko/AeroSpace/issues/1656"
      },
      "user": {
        "login": "haxybaxy",
        "avatar_url": "https://avatars.githubusercontent.com/u/87573953?u=7b2dca9c4504c32cd990b7c8449eed3356b29e2b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aehex",
      "number": 1127,
      "title": "How to make window take up the whole screen (including the gap from the auto-hide menubar)",
      "body": "20 years daily driver of Linux, only reason I've been able to switch to MacOS is aerospace.  Thank you so much folks!!\r\n\r\n**Current setup**\r\n- Mac Air M2 13\"\r\n- OS fully updated\r\n- Menu bar at the top on auto-hide, this leaves a gap (I believe it's related to the camera notch)\r\n\r\n**Desired behavior**\r\n- Given the small screen, I want windows to take the space where the menu-bar was/is, even when the window isn't in fullscreen\r\n\r\nAny tips would be appreciated 🙏 \r\n\r\n---\r\nLinking to a potential bug issue\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/1074",
      "created_at": "2025-02-22T08:52:53Z",
      "updated_at": "2025-08-24T17:36:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ameerdevs",
        "avatar_url": "https://avatars.githubusercontent.com/u/13168652?u=a0b1722d68f614a6b92b72f3b5975d32797b3cd9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhhGj",
      "number": 1652,
      "title": "layout question for an ultrawide monitor user",
      "body": "I've got the samsung 57\" neo g9 display, it's 32:9.  The only thing i ever run in fullscreen is games.  I'm just getting into tiling windows managers, and aerospace is my first venture into the space.\r\n\r\nIn tiling mode, is there a way to have a 3 column mode, so an app will never occupy more than 1 column?\r\n\r\nTo give an example of what I'm talking about, for productivity i usually have 3 windows up, each effective 1/3 of the display as columns.  For example, I may have my terminal open on the center third, a browser open on the left third, and maybe the right third has chat or email or both horizontally tiled within that column.  But what if i don't want email/chat open? right now i just put a blank filler app, like an extra browser or terminal.  is there a way to get the same result and just have nothing open on the right third?\r\n\r\n",
      "created_at": "2025-08-23T21:15:37Z",
      "updated_at": "2025-08-23T21:16:26Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Anaxagoras-bc",
        "avatar_url": "https://avatars.githubusercontent.com/u/68827938?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ahgl0",
      "number": 1651,
      "title": "Windows shake when starting AeroSpace fresh install",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Follow install guide: https://nikitabobko.github.io/AeroSpace/guide\r\n2. Use default config placed in ~/.config/aerospace/default-config.toml\r\n3. Start AeroSpace via spotlight search\r\n\r\nExpected result:\r\nActual result: Windows / application windows shake and jitter incredibly fast, as if they are twitching making it unusable\r\n\r\n### Additional info\r\n\r\nMac M2\r\nSequoia 15.5\r\n",
      "created_at": "2025-08-23T11:53:46Z",
      "updated_at": "2025-08-23T11:53:47Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Beoje",
        "avatar_url": "https://avatars.githubusercontent.com/u/163836909?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AciMG",
      "number": 698,
      "title": "How to make a single window not take up the whole screen. (For ultrawide monitors)",
      "body": "Firstly, I love AeroSpace!\r\n\r\nHowever, I want dynamic gap sizing - I don't want big gaps when I have more than one window open, I only want large gaps on this monitor when only a single window is open. Specifically, on my ultra wide, I don't want a single app to cover the whole monitor.\r\n\r\nIs there a way to do this? Even if it isn't automatic, that would still be amazing. \r\n\r\nI am aware its possible to assign a monitor have different gaps for left and right. \r\nEx (in aerospace.toml)\r\n```\r\n[gaps]\r\nouter.left = [{ monitor.\"Odyssey G93SC\" = 500 }, 5]\r\nouter.right = [{ monitor.\"Odyssey G93SC\" = 500 }, 5]\r\n```\r\nBut, this is constant, even when I have multiple windows.\r\n\r\nI thought maybe this would be possible with binding modes, but it looks like thats to switch between keybindings. Even with keybindings and callbacks, I'm not too sure how to make this gaps changed based on # of windows. Maybe there is a way to switch to floating and then resize, but I'm not sure exactly how, and I don't know how to detect window count either.\r\n\r\nThe only way I know for sure to do this right now is the following (which seems not ideal) : \r\nToggle floating window via service mode, use rectangle software to tile in the middle, and toggle back to tiling via service mode before opening another window\r\n\r\nThanks!",
      "created_at": "2024-11-14T03:43:56Z",
      "updated_at": "2025-08-22T09:12:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzAMN",
        "body": "Tracking issue for ultrawide monitors support: https://github.com/nikitabobko/AeroSpace/issues/60"
      },
      "user": {
        "login": "trentshaines",
        "avatar_url": "https://avatars.githubusercontent.com/u/46075308?u=3203e6be297645c9ff1b7fcaefe97275c173c965&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhdiC",
      "number": 1648,
      "title": "Windows in second monitor overlap default monitor each time computer sleeps",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Add a few workspaces on the second monitor\r\n2. Give each workspace on the second monitor a different window\r\n3. Let the computer sleep/go to lock screen\r\n4. Awaken/unlock the machine - the window in the secondary monitor now overlaps the main monitor\r\n\r\nExpected result: Window stayed the same size presleep\r\nActual result: Window stretched over into main monitor\r\n\r\n### Additional info\r\n\r\n**Note**: Does not seem to effect my Chrome browser, but every other application.\r\n\r\nMy monitor setup is:\r\n\r\nOn my left, the secondary monitor is my Macbook itself\r\nTo the right, is a long widescreen monitor which acts as the default monitor\r\n\r\nI have configured only this for extra functionality with second monitors:\r\n\r\n```toml\r\n[workspace-to-monitor-force-assignment]\r\nQ = 'secondary'\r\nW = 'secondary'\r\nE = 'secondary'\r\nR = 'secondary'\r\n```\r\nThe rest is defaults\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nAeroSpace.app server version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\n```\r\n\r\nAnybody else experienced this before?",
      "created_at": "2025-08-21T09:11:17Z",
      "updated_at": "2025-08-21T09:11:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "josbra-attensi",
        "avatar_url": "https://avatars.githubusercontent.com/u/177235058?u=26ec32d45064be0136add6643d45e67a86732707&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhcgO",
      "number": 1647,
      "title": "Windows overlap, can't undo without rebooting",
      "body": "This might be a feature I'm unfamiliar with but I hope someone can help.\r\n\r\nWhen I use AeroSpace, eventually something will happen with one of the workspaces and the windows don't tile, they are overlapping on top of each other. \r\n\r\nThey're not floating, it will snap back to the same spot (it's not perfectly overlapping, you can see part of the other window behind it.\r\n\r\nThe only way I can ever find to fix this is to completely reboot the computer - closing and opening AeroSpace doesn't fix it. Not sure if I'm accidentally hitting some kind of shortcut, but I hope someone can help.",
      "created_at": "2025-08-20T13:44:27Z",
      "updated_at": "2025-08-22T16:20:25Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dankykang331",
        "avatar_url": "https://avatars.githubusercontent.com/u/172116270?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhaG7",
      "number": 1641,
      "title": "Need guidance",
      "body": "I've read the docs, and followed the tutorials, but I'm struggling.\r\n\r\nI use a single large screen, 4k resolution.\r\n\r\nI want a main screen to be 2/3 width on 2/3 height in the center-bottom.\r\nThe bottom section can be accordion (with a margin of 400 or 500)\r\n\r\nI figured how to get it to do it on the entire screen.\r\n\r\nbut I want the top 1/3 (or 1/4 - I'll figure toggling that later), to be horizontal tiling.\r\n\r\nAnyone have suggestions or examples of how this can be setup?\r\n\r\n```\r\n+---------------------------------------------------------------------+\r\n|                                                                     |\r\n|                         Tiling horizontal                           |\r\n|                                                                     |\r\n|                                                                     |\r\n+---------------------------------------------------------------------+\r\n|                                                                     |\r\n|                                                                     |\r\n|                                                                     |\r\n|                                                                     |\r\n|                        Accordion horizontal                         |\r\n|                                                                     |\r\n|                                                                     |\r\n|                                                                     |\r\n|                                                                     |\r\n+---------------------------------------------------------------------+\r\n```",
      "created_at": "2025-08-18T19:28:32Z",
      "updated_at": "2025-08-19T10:45:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Lockszmith-GH",
        "avatar_url": "https://avatars.githubusercontent.com/u/905716?u=1d7a55ab4eeef1347fd40f117f1bc1bea5042a6e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhaJq",
      "number": 1642,
      "title": "Any OSD function?",
      "body": "Just like my TV when I press the remote, there is an OSD (On Screen Display) of what action has been triggered.\r\n\r\nIs there an option like that?",
      "created_at": "2025-08-18T19:43:33Z",
      "updated_at": "2025-08-18T19:43:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Lockszmith-GH",
        "avatar_url": "https://avatars.githubusercontent.com/u/905716?u=1d7a55ab4eeef1347fd40f117f1bc1bea5042a6e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhVRY",
      "number": 1636,
      "title": "Keybinding trouble using exec-and-forget and the home directory",
      "body": "I've been trying various incantations of:\r\n\r\n```\r\nalt-ctrl-t = 'exec-and-forget open -a /Users/me/Applications/Brave\\ Browser\\ Apps.localized/My.app'\r\nalt-ctrl-t = '''exec-and-forget open -a ~/Applications/Brave\\ Browser\\ Apps.localized/My.app'''\r\nalt-ctrl-t = 'exec-and-forget open -a \"~/Applications/Brave Browser Apps.localized/My.app\"'\r\nalt-ctrl-t = 'exec-and-forget open -a \"${HOME}/Applications/Brave Browser Apps.localized/My.app\"'\r\n... probably others ...\r\n```\r\n\r\nNothing is working. I'd prefer to use shell expansion or a variable because not all of my usernames are the same, but I feel like this is more a syntax issue on my end and I just haven't found the right combination of single quotes, double quotes, and/or backslashes to make this work to launch My.app.\r\n\r\nCan someone point me in the right direction, please? Or even just tell me that it can't work and why? That would suffice too.\r\n\r\nThank you!",
      "created_at": "2025-08-15T16:17:17Z",
      "updated_at": "2025-08-18T13:28:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "robwilkerson",
        "avatar_url": "https://avatars.githubusercontent.com/u/7735?u=612b98cea1088892a6a69f131541cfae2eb561a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afor0",
      "number": 1394,
      "title": "How to use different layouts on different screens",
      "body": "I want to use tiles on one screen and accordions on another screen. How can I achieve this?",
      "created_at": "2025-05-08T06:40:36Z",
      "updated_at": "2025-08-18T12:57:42Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Similarityoung",
        "avatar_url": "https://avatars.githubusercontent.com/u/94664304?u=b2abdc96d654dac7ca5d8a1632bfc62ceab50e10&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgY9k",
      "number": 1497,
      "title": "How to get horizontal accordion to look like in the docs?",
      "body": "Just switching from amethyst to aerospace. I'm using the default config with all the ALT binds, just added `accordion-padding = 40`, but I still don't get how to show both sides of the app that's on the back?\r\n\r\n<img width=\"106\" alt=\"image\" src=\"https://github.com/user-attachments/assets/71d4dd37-5252-4fec-b725-953bcc8b91f7\" />\r\n\r\n^ The back app is only visible on the left side - whereas the screen looks much better when the margin is on both sides, as in the docs:\r\n\r\n<img width=\"976\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6e07e072-6fca-4f3f-a7ca-afc83e313897\" />\r\n",
      "created_at": "2025-06-24T22:43:56Z",
      "updated_at": "2025-08-18T13:32:25Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A18S_",
        "body": "In the docs screenshot there are three windows:\r\n\r\n- the foreground window (htop)\r\n- the window on the left\r\n- the window on the right\r\n\r\nI don't think what you're asking for is possible."
      },
      "user": {
        "login": "rwjack",
        "avatar_url": "https://avatars.githubusercontent.com/u/59068073?u=87ab23b6a31aeb1a1a62de3c8b1a2d4d8fe57e34&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhXsZ",
      "number": 1640,
      "title": "workspace setup restarts after closing and reopening laptop",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Create at least to workspaces, one of them should be on laptop screen, the other on external display\r\n2. Close the laptop and reopen it\r\n3. Workspace which was previously on laptop is now default to external screen\r\n\r\nExpected result: After reopening the laptop, workspace that was assigned to the laptop screen should remain on the laptop screen\r\nActual result: After reopening the laptop, workspace belongs to the external display, essentially restoring the previously made setup to external monitor only\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-08-17T18:18:29Z",
      "updated_at": "2025-08-17T18:18:29Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "FilipBudzynski",
        "avatar_url": "https://avatars.githubusercontent.com/u/100874441?u=c7d65c7d93ce06b4f153cfff66882613d5131700&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhXX9",
      "number": 1639,
      "title": "May we have a centralized place to share community-developed tools for aerospace?",
      "body": "#### Proposal\r\nDiscoverability for AeroSpace add-ons is tough because “aerospace” is such a generic term. I’d like to create a curated, community-maintained list (think awesome-xxx) for plugins, workflows, configs, and integrations.\r\n\r\n#### Ask\r\nWould you be open to (A) hosting a new repo under the org (e.g., nikitabobko/awesome-aerospacewm) and linking it from the README/Guide, or (B) blessing a community repo that I’ll maintain and adding a link to it in the readme?\r\n\r\n#### Why here\r\nA link from the main `README` or the “Goodies” section would make these tools actually discoverable to new users and centralize contributions. \r\n\r\n#### I can help\r\nI’ll bootstrap the list, add contribution guidelines, and triage PRs. Happy to keep it tidy.\r\n\r\n#### Name & SEO\r\nTo avoid collisions with the industry term, I suggest `awesome-aerospacewm` and using the topic / tag `aerospacewm`.\r\n\r\n#### If you’re 👍\r\nI’ll open the repo and PR a small “Community ecosystem” section linking to it.\r\n\r\n---\r\n\r\n#### The initial list\r\n\r\n[cristianoliveira/aerospace-scratchpad](https://github.com/cristianoliveira/aerospace-scratchpad)\r\n[cristianoliveira/aerospace-marks](https://github.com/cristianoliveira/aerospace-marks) \r\n[cristianoliveira/aerospace-ipc](https://github.com/cristianoliveira/aerospace-ipc) \r\n[CarterMcAlister/aerospace-layout-manager](https://github.com/CarterMcAlister/aerospace-layout-manager) \r\n[gogamid/alfred-aerospace](https://github.com/gogamid/alfred-aerospace)\r\n[yuriteixeira/aerospace-workflow](https://github.com/yuriteixeira/aerospace-workflow)\r\n[Kainoa-h/aerospace-sketchybar](https://github.com/Kainoa-h/aerospace-sketchybar)\r\nI'm also working on something: [darksworm/aeroswitch](https://github.com/darksworm/aeroswitch)",
      "created_at": "2025-08-17T14:49:42Z",
      "updated_at": "2025-08-17T19:21:40Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "darksworm",
        "avatar_url": "https://avatars.githubusercontent.com/u/9987548?u=8da18ea11eb1b9a9ac9ef16eaf1faabe97b9742d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhXEd",
      "number": 1638,
      "title": "how to have single window without gaps but haev gaps when there are multiple windows?",
      "body": "If I have a single window, I want no gaps and no borders. (using janky-borders)\r\nBut when I have multiple windows on a workspace, I would like to have gaps (and borders).",
      "created_at": "2025-08-17T10:41:28Z",
      "updated_at": "2025-08-17T10:41:30Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0oAstro",
        "avatar_url": "https://avatars.githubusercontent.com/u/79555780?u=ab3d51c3028dfa5c5e23b680ac57b2d954263981&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhNjI",
      "number": 1623,
      "title": "Add `window-is-focused` variable in `list-windows` output",
      "body": "I think it makes sense since there is a variable `workspace-is-focused`.\r\nMy use case is that I have a keyboard shortcut that sends the list of windows in the current workspace to a socket, then a program running in the background shows a list of windows, the user can select a window with JK keys, similar to AltTab.\r\n\r\n```\r\nalt-j = '''exec-and-forget aerospace list-windows \\\r\n--workspace $(aerospace list-workspaces --focused) --json \\\r\n| socat - UNIX-CONNECT:/tmp/aerospace-gui.sock'''\r\n```\r\n\r\nI get the list of windows but then I need to run a command like the one below to get the focused window or use `on-focus-changed` callback, it gets more complicated.\r\n\r\n`aerospace list-windows --focused --format \"%{window-id}\"`\r\n\r\nIf it is an easy change in Aerospace side I think this makes sense and it is useful for my use case and maybe other's.\r\nThis way you can get all windows data with one command, including the currently focused window.\r\n",
      "created_at": "2025-08-09T22:06:49Z",
      "updated_at": "2025-08-17T08:44:45Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "borislopezaraoz",
        "avatar_url": "https://avatars.githubusercontent.com/u/2962801?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhRAC",
      "number": 1628,
      "title": "Windows auto focusing on DOM update",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open a website with constant DOM updates (ex. dexscreener.com)\r\n2. Focus onto another window\r\n3. When the website has a DOM update, it refocuses on that window automatically\r\n\r\nExpected result: Do nothing\r\nActual result: Automatially switches\r\n\r\nOccured when I updated from v0.12 (I think) to latest 0.19.2-Beta\r\n\r\nAny ideas? I checked the config/docs and couldn't find any related configurations here. But this was super annoying as I couldn't type in another window if the other window just had constant updates as it'd automatically switch over there every 2 seconds or so.",
      "created_at": "2025-08-12T14:47:54Z",
      "updated_at": "2025-08-17T00:50:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rhh4x0r",
        "avatar_url": "https://avatars.githubusercontent.com/u/104528437?u=49a1a670aeff4e17d950c8d08e9c7f7d0e230ac9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgB5Y",
      "number": 1449,
      "title": "Consuming significant energy",
      "body": "Observing it happening in waves, where the Energy impact score goes above 700 and stays there for 10-15 seconds before dropping down again. Not sure how to diagnose the source of this issue. Could anyone help with this?\r\n\r\n![image](https://github.com/user-attachments/assets/75d251bb-37ad-4998-99dc-bb2c15954176)\r\n![image](https://github.com/user-attachments/assets/d89dd405-c17b-45bc-8e7e-1f26eea3e741)\r\n![image](https://github.com/user-attachments/assets/a224b060-4068-4457-9478-0a2d1c464aad)\r\n![image](https://github.com/user-attachments/assets/574da7ae-4e06-4641-b5b9-f3e39c65f3ed)\r\n\r\n",
      "created_at": "2025-05-31T10:15:11Z",
      "updated_at": "2025-08-16T18:10:00Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "RammHub",
        "avatar_url": "https://avatars.githubusercontent.com/u/44161305?u=d62d403471c349f342fd71d0ecf95d443c618ddc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agwpm",
      "number": 1556,
      "title": "Setting up a Dropdown terminal",
      "body": "I'm trying to create a generic script for a Dropdown Terminal (using `Ctrl+Esc` in my settings) that should work with any terminal.\r\n\r\n## Goals\r\n\r\n- Open a floating terminal at the top of the screen, with fixed width (e.g. 100%) and height (e.g. 30%)\r\n- Allow any terminal of user preferences (alacritty, kitty, iterm2, etc)\r\n\r\n## Config attempts\r\n\r\n### Attempt 01\r\n\r\nFully managed by Aerospace\r\n\r\n- [x] Detect terminal window by application id or title ✅\r\n- [x] Make window float ✅\r\n- [ ] Move window to desired position ❌\r\n- [ ] Resize window to desired size ❌\r\n- [ ] Query screen dimensions to use for resize ❌\r\n\r\nAerospace can use `on-window-detected` to detect windows and make it float, but cannot move or resize floating windows.\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'dropdown terminal'\r\nrun = ['layout floating'] # no way to resize/move floating windows\r\n```\r\n\r\n### Attempt 02\r\n\r\nPartially managed by Aerospace + Apple Script to move/resize.\r\n\r\n- [x] Detect terminal window by application id or title ✅\r\n- [x] Make window float ✅\r\n- [ ] Move window to desired position ⚠️ (see below)\r\n- [ ] Resize window to desired size ⚠️ (see below)\r\n- [ ] Query screen dimensions to use for resize ❌\r\n\r\n⚠️ It is possible to resize/move windows using AppleScript, but it does not work with all applications.\r\nAlacritty won't accept it. Neither will Kitty.\r\n\r\nIt looks like the application must be _scriptable_ for this to work. -- I'm not quite what that means (source: https://stackoverflow.com/a/12021536).\r\n\r\n```osascript\r\ntell application \"Alacritty\"\r\n    set bounds of front window to {0, 0, 1920, 480}\r\nend tell\r\n```\r\n\r\n### Attempt 03\r\n\r\nPartially managed by Aerospace + Terminal startup options to move/resize.\r\n\r\n- [x] Detect terminal window by application id or title ✅\r\n- [x] Make window float ✅\r\n- [x] Move window to desired position ⚠️ (see below)\r\n- [x] Resize window to desired size ✅\r\n- [ ] Query screen dimensions to use for resize ❌\r\n\r\nMost terminal emulators have command line options that allow to set window dimensions and position.\r\nFor Alacritty we can use the [`window` options](https://alacritty.org/config-alacritty.html#window) with -o.\r\n\r\n⚠️ For some reason, if I set `window.dimensions.lines` to anything less than`35` the window is not positioned at the top.\r\n\r\nPartially working solution (columns and lines may change according to screen resolution):\r\n\r\n```toml\r\n[mode.main.binding]\r\n\r\n# Dropdown terminal\r\nctrl-esc = '''exec-and-forget \\\r\n  WINID=$(aerospace list-windows --all --json | jq '.[] | select(.\"window-title\"==\"Dropdown terminal\") | .\"window-id\"')\r\n  [ -n \"$WINID\" ] && aerospace close --window-id \"$WINID\" || \\\r\n  (\r\n    pgrep -x alacritty > /dev/null && \\\r\n    alacritty msg create-window \\\r\n      --title='Dropdown terminal' \\\r\n      -o window.position.y=0 -o window.position.x=0 \\\r\n      -o window.dimensions.lines=35 -o window.dimensions.columns=240 || \\\r\n    open -na /Applications/Alacritty.app --args \\\r\n      --title='Dropdown terminal' \\\r\n      -o window.position.y=0 -o window.position.x=0 \\\r\n      -o window.dimensions.lines=35 -o window.dimensions.columns=240\r\n  )\r\n'''\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'Dropdown terminal'\r\nrun = ['layout floating']\r\n```\r\n\r\n<img width=\"1920\" height=\"1080\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cfb3722e-9dd0-48d3-b067-ccf51f6386ed\" />\r\n\r\n## TODO / Missing features\r\n\r\n- [ ] Manage window size/position with Aerospace without need of other solutions\r\n- [ ] Fix the issue with minimum lines with Alacritty\r\n- [ ] Detect if Drodown is already visible, than hide or close\r\n\r\nIf anyone has an alternative solution, please share in the comments.\r\n\r\n## Updates\r\n\r\n- [2025-08-15](#discussioncomment-14118829)",
      "created_at": "2025-07-15T19:20:23Z",
      "updated_at": "2025-08-15T16:28:59Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "paulodiovani",
        "avatar_url": "https://avatars.githubusercontent.com/u/1295197?u=3ddbb94d68fcce34fd5c7713eb78a37efa4ee3de&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhUGn",
      "number": 1634,
      "title": "Can I use this to get rid of Full Screen mode on macOS?",
      "body": "I personally just want to get rid of full screen mode, when I click on the \"maximize\" button on macOS.  Would a too like this be able to handle it?  I am not really into tiling, but I do want it so that if I maximize it just takes up the whole screen except for the Dock area",
      "created_at": "2025-08-14T23:09:07Z",
      "updated_at": "2025-08-14T23:09:08Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "trajano",
        "avatar_url": "https://avatars.githubusercontent.com/u/110627?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhSVT",
      "number": 1633,
      "title": "Aerospace crashed after screen saver shows",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Leave the computer alone\r\n2. Screen Saver starts\r\n3. Come back to computer, Aerospace will crash\r\n\r\nExpected result:\r\nActual result:\r\n\r\n### Additional info\r\n\r\nCrash report\r\n\r\n```\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: ax(AXMoved)\r\nDate: 2025-08-13 17:00:20 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 1357 ID: com.tinyspeck.slackmacgap\r\nmacOS version: Version 15.6 (Build 24G84)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001004857dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001002ccf20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x00000001002cc990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x0000000100326d94 $sSo7CGPointV9AppBundleE20monitorApproximationAC7Monitor_pvg + 60\r\n4   AeroSpace                           0x00000001002fb94c $s9AppBundle9WorkspaceC16workspaceMonitorAA0E0_pvg + 200\r\n5   AeroSpace                           0x00000001002bdeec $s9AppBundle28checkOnFocusChangedCallbacksyyF + 288\r\n6   AeroSpace                           0x00000001002c4e80 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TY1_ + 228\r\n7   AeroSpace                           0x0000000100260b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   libswift_Concurrency.dylib          0x00000002865e6461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   libswift_Concurrency.dylib          0x00000002865e6109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n10  AeroSpace                           0x00000001002c49f1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n11  AeroSpace                           0x0000000100260b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x00000002865e6461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  libswift_Concurrency.dylib          0x00000002865e6109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  AeroSpace                           0x00000001002c3f59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n15  AeroSpace                           0x00000001002c4711 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n16  AeroSpace                           0x0000000100260b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x000000028661a83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n",
      "created_at": "2025-08-13T21:56:00Z",
      "updated_at": "2025-08-14T08:13:35Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1xy-",
        "body": "Seems related to #1613 "
      },
      "user": {
        "login": "matiasfha",
        "avatar_url": "https://avatars.githubusercontent.com/u/282006?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhRWt",
      "number": 1630,
      "title": "alt-tab integration",
      "body": "It would be great if Aerospace could have integration with [alt-tab](https://github.com/lwouis/alt-tab-macos/) such that pressing alt-tab cycles through windows in the focused workspace.\r\n\r\nSee relevant discussion here: https://github.com/lwouis/alt-tab-macos/issues/3773",
      "created_at": "2025-08-12T22:11:54Z",
      "updated_at": "2025-08-12T22:11:55Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikhilmaddirala",
        "avatar_url": "https://avatars.githubusercontent.com/u/4138581?u=3423019ae74c026c34385bee3a8482069dd726c1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhQjy",
      "number": 1627,
      "title": "Only occupied workspace to be available?",
      "body": "Currently, all the workspaces are enabled at the once, I mean that's a purely fine behavior but can be overwhelming few times.\r\nWhat I want is that doing `aerospace workspace next|prev` should go to only occupied workspace and empty once only become accessible by the assigned `key|number` to them.",
      "created_at": "2025-08-12T05:27:50Z",
      "updated_at": "2025-08-12T05:27:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhPbh",
      "number": 1626,
      "title": "Launching PWAs in general or to a specific workspace not working for me",
      "body": "## Aerospace Workspace - App Launch\r\nI have workspace commands specified for launching of specific apps, for e.g. - 'exec-and-forget open -n /Applications/Signal.app'\r\n\r\n## Aerospace Workspace - PWA Launch not working\r\nI tried the same for PWAs but was unable to make it work. Is this an issue, or am I doing something wrong here? \r\n\r\nfor e.g. - alt-y = 'exec-and-forget open -n /Applications/Brave\\ Browser\\ Apps.localized/YouTube\\ Music.app'",
      "created_at": "2025-08-11T05:46:27Z",
      "updated_at": "2025-08-11T07:35:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vaibhav-kalekar",
        "avatar_url": "https://avatars.githubusercontent.com/u/84419863?u=6c1deeb3bfa26c471fb3263b1cb7bad86f3eed1b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhOlJ",
      "number": 1625,
      "title": "Xcode splash screen does not trigger [[on-window-detected]]",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Create an automation assigning Xcode to workspace X:\r\n```toml\r\n[[on-window-detected]]\r\n    if.app-id = 'com.apple.dt.Xcode'\r\n    run = 'move-node-to-workspace X' # mnemonics X - Xcode\r\n```\r\n2. Launch Xcode (e.g. 16.4, 26.0 beta 5)\r\n\r\nExpected result: Workspace changes to X as soon as splash screen appears\r\nActual result: Workspace only changes after opening a project\r\n\r\n### Additional info\r\n\r\n```shell\r\n% aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n% sw_vers\r\nProductName:            macOS\r\nProductVersion:         15.6\r\nBuildVersion:           24G84\r\n```\r\n",
      "created_at": "2025-08-10T19:47:36Z",
      "updated_at": "2025-08-10T19:58:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "UInt2048",
        "avatar_url": "https://avatars.githubusercontent.com/u/46784000?u=9c9b5599ed6840d4af28a56519e5cb9e519fe069&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhOIg",
      "number": 1624,
      "title": "Changing default behavior",
      "body": "I would like a new window to be opened in a different space.\r\nI would like to have a hotkey show miniature copies of all spaces in the currently viewed space with each miniature numbered. While in this state i would like to be able to select the space to become active either by 1) typing a number 2)scrolling with arrow keys 3)selecting with mouse.\r\n\r\ncan aerospace do this through config file options?",
      "created_at": "2025-08-10T15:03:18Z",
      "updated_at": "2025-08-10T18:17:04Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bwanaaa",
        "avatar_url": "https://avatars.githubusercontent.com/u/4876720?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhNcE",
      "number": 1622,
      "title": "Stacked vs tiled",
      "body": "What’s the difference between tiled and stacked in AeroSpace?",
      "created_at": "2025-08-09T17:47:13Z",
      "updated_at": "2025-08-09T17:49:07Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1oR4",
        "body": "Tiled shows all your windows side by side so you can see everything at once. Stacked keeps one window in front and hides the others behind it, so you can switch between them without clutter."
      },
      "user": {
        "login": "polygot7",
        "avatar_url": "https://avatars.githubusercontent.com/u/225583890?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhNb7",
      "number": 1621,
      "title": "Zoom as floating window",
      "body": "How can I make the Zoom app always open as a floating window instead of being tiled?",
      "created_at": "2025-08-09T17:41:24Z",
      "updated_at": "2025-08-09T17:44:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1oRZ",
        "body": "Put a small on-window-detected rule in your ~/.config/aerospace.toml that matches the app and runs the layout floating command for that window. For zoom: \r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'zoom'  \r\nrun = ['layout floating']"
      },
      "user": {
        "login": "polygot7",
        "avatar_url": "https://avatars.githubusercontent.com/u/225583890?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeaZE",
      "number": 1096,
      "title": "Issues with the Orion browser",
      "body": "I just wanted to cross post this here for visibility — the Orion browser seems to have a bunch of issues with Aerospace. I submitted a feature request on their forum to possibly have a way to act as a simple Mac app. Not only would I like that as a feature, but it might fix things with Aerospace.\n\nStill, it could be indicative of a bug in Aerospace, or perhaps some window APIs you'd like to support. The issues I have been consistently facing with Orion are:\n\n- Navigation to an Orion window with Aerospace's \"focus <direction>\" has a 50% chance of bouncing you back to your first window\n- Navigation to an Orion window with Aerospace's \"focus <direction>\" has a 25% chance of skipping the Orion window and going past it\n- Navigation to an Orion window via the macOS app launcher will fail\n- Navigation to an Orion window via clicking on the dock has a 90% success rate, but will occasionally crash aerospace\n\nThe discussion on their board can be found here: https://orionfeedback.org/d/9898-disable-custom-window-behavior\n\n\nFor what it's worth, I have had the occasional perhaps related issue a few times with IINA - the only other app I use that tries to treat every window as a separate app in `⌘ tab`. I do not use IINA enough though to really be able to say anything with confidence, it's more of a hunch.\n\nUnfortunately, if I just open Orion in a split with another app, navigation between them works fine. However in practice, it consistently fails.\n\nLike I said in the link, I'm not excepting any magic :) both such amazing products, and I can't imagine this crossover being high on anyone's priority list.",
      "created_at": "2025-02-14T19:38:02Z",
      "updated_at": "2025-08-09T05:38:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "barrelltech",
        "avatar_url": "https://avatars.githubusercontent.com/u/99540338?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhMoq",
      "number": 1620,
      "title": "Aerospace seems to have the monitor workspaces are on reversed",
      "body": "I have two LG monitors on a mac (it's a MacBook Pro, and  closed, no built-in):\r\n```bash\r\naerospace list-monitors\r\n1 | LG HDR 4K (1)\r\n2 | LG HDR 4K (2)\r\n```\r\n\r\nYet, When i look at the windows on monitor 2 for instance, it shows me the windows on 1 above:\r\n```bash\r\naerospace list-windows --monitor 2\r\n1755 | System Settings | Displays\r\n```\r\n\r\nAnd the same inverse when i look at windows on monitor 1\r\n\r\nI realized this trying to debug `alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'` which in general doesn't work.\r\n\r\nIt *does* work when i go to a window in the workspace aerospace \"auto adds\" for me, 7. windows there can switch between monitors with this command.  The \"auto add\" occurs if i use mouse and drag a window to screen 2.\r\n\r\nHave I somehow created this via my config?\r\n\r\nHere's the force-assignment i currently have fyi:\r\n```bash\r\n[workspace-to-monitor-force-assignment]\r\n1 = [1,2]\r\n2 = [1,2]\r\n3 = [1,2]\r\n4 = [1,2]\r\n5 = [1,2]\r\n6 = [1,2]\r\nB = [1,2]\r\nC = [1,2]\r\nM = [1,2]\r\nP = [1]\r\nS = [1,2]\r\nT = [1,2]\r\n```\r\n\r\n",
      "created_at": "2025-08-08T16:05:08Z",
      "updated_at": "2025-08-08T16:06:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "SolverDude",
        "avatar_url": "https://avatars.githubusercontent.com/u/7353239?u=3a6379c191c0ce91bfa3ce135c1118e8cf7696fd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgoF2",
      "number": 1527,
      "title": "Broken or flickering application windows",
      "body": "### Body\n\nI'm using the following setting:\r\n\r\n- Device: M1 MacBook air \r\n- MacOS: Sequoia 15.5 (24F74)\r\n- AeroSpace: 0.18.5-Beta\r\n- Two displays (as the following image)\r\n![image](https://github.com/user-attachments/assets/a2c864c5-dd09-4294-b3a4-9c8a200f28c4)\r\n\r\nWith my `./config/aerospace/aerospace.toml` set as:\r\n\r\n```\r\nafter-login-command = []\r\nafter-startup-command = []\r\nstart-at-login = true \r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 0\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\nautomatically-unhide-macos-hidden-apps = true \r\n\r\nexec-on-workspace-change = ['/bin/bash', '-c', 'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE PREV_WORKSPACE=$AEROSPACE_PREV_WORKSPACE && ~/.config/sketchybar/plugins/update_workspace_icons.sh']\r\n\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n[gaps]\r\ninner.horizontal = 8\r\ninner.vertical = 8\r\nouter.bottom = 5\r\nouter.top = [{ monitor.main = 10}, 10]\r\nouter.right = 5\r\nouter.left = 5\r\n\r\n[mode.main.binding]\r\n# App shortcuts\r\n\r\nalt-b = 'exec-and-forget open -a /Applications/Safari.app'\r\nalt-c = 'exec-and-forget open -a /Applications/Cursor.app'\r\nalt-s = 'exec-and-forget open -a /Applications/Slack.app'\r\nalt-n = 'exec-and-forget open -a /Applications/Notes.app'\r\nalt-a = 'exec-and-forget open -a /Applications/ChatGPT.app'\r\nalt-m = 'exec-and-forget open -a /Applications/Spotify.app'\r\nalt-p = 'exec-and-forget open -a /Applications/Preview.app'\r\nalt-w = 'exec-and-forget open -a /Applications/Warp.app'\r\nalt-i = 'exec-and-forget open -a /System/Applications/Photos.app'\r\nalt-q = 'exec-and-forget open -a /Applications/LINE.app'\r\nalt-shift-r = ['exec-and-forget /opt/homebrew/bin/sketchybar --reload']\r\n\r\nalt-e = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\nalt-f = 'fullscreen'\r\nalt-y = ['focus right', 'join-with down', 'layout tiles horizontal']\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\n\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\nalt-shift-semicolon = 'mode service'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n#s = ['layout sticky tiling', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n# Default space\r\n[[on-window-detected]]\r\nif.app-id ='com.spotify.client'\r\nrun = ['move-node-to-workspace 1']\r\n\r\n[[on-window-detected]]\r\nif.app-id ='com.apple.finder'\r\nrun = ['move-node-to-workspace 1']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'jp.naver.line.mac'\r\nrun = ['move-node-to-workspace 1']\r\n\r\n# Preview (Space 2)\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Preview'\r\nrun = ['move-node-to-workspace 2']\r\n\r\n# Warp (Space 3)\r\n[[on-window-detected]]\r\nif.app-id = 'dev.warp.Warp-Stable'\r\nrun = ['move-node-to-workspace 3']\r\n\r\n# Cursor (space 4)\r\n[[on-window-detected]]\r\nif.app-id = 'com.todesktop.230313mzl4w4u92'\r\nrun = ['move-node-to-workspace 4']\r\n\r\n# Safari (Space 5)\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Safari'\r\nrun = ['move-node-to-workspace 5']\r\n\r\n# ChatGPT (Space 6, secondary)\r\n[[on-window-detected]]\r\nif.app-id = 'com.openai.chat'\r\nrun = ['move-node-to-workspace 6']\r\n\r\n# Notes (Space 7, secondary)\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Notes'\r\nrun = ['move-node-to-workspace 7']\r\n\r\n# force certain workspaces to certain monitors\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'                         \r\n2 = 'main'                       \r\n3 = 'main'                  \r\n4 = 'main'                  \r\n5 = 'main'\r\n6 = 'secondary'\r\n7 = 'secondary'\r\n```\r\n\r\nCurrently I'm facing multiple issues:\r\n\r\n---\r\n### 1. Flickering windows \r\n\r\nThe first is that when I opened multiple applications in the same workspace (default workspace 1), they kept flickering and when I tried to transform one of the windows into full screen by `alt + f`, it would not work (which would properly work in other situations):\r\n\r\nhttps://github.com/user-attachments/assets/68f8c391-f318-4e4d-b726-0f487ac9c9e2\r\n\r\nI ran `aerospace debug-windows` in this workspace, and the resulting output is shown in the following link (which is a link to a warp output block):\r\n\r\nhttps://app.warp.dev/block/0qxeJeKMXI211hSkkcYQKS\r\n\r\n---\r\n### 2. Deprecated ChatGPT desktop application\r\n\r\nAnother thing is that the ChatGPT desktop application window is deprecated and only the top bar would be shown, as in the following image:\r\n\r\n![deprecated_chatgpt](https://github.com/user-attachments/assets/e174bb0a-b4a7-4565-87a9-57b21269ac10)\r\n\r\n---\r\n### 3. Apple Notes unable to insert\r\n\r\nFinally, the apple Notes app is also uncontrollable at the same time. In the following video, I tried to insert something on the note, but every time I clicked at a position to insert, I would be switched to another workspace:\r\n\r\nhttps://github.com/user-attachments/assets/69438663-9d96-4f53-8b1b-80f2fbcbe061\r\n\r\n---\r\n\r\nI found that the ChatGPT app and my macOS version (Sequoia) are having issues, but I haven't found people having same problems in the discussion section. I would be really appreciated if these problems could be solved, since the application switching functionality works great, and I really loved it! If any other information is needed, please let me know.",
      "created_at": "2025-07-08T05:34:43Z",
      "updated_at": "2025-08-07T16:55:26Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pipi-bear",
        "avatar_url": "https://avatars.githubusercontent.com/u/183674248?u=3f3f820af943959b6add61e3649c3c329b647bce&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZg9",
      "number": 1333,
      "title": "Regression: Arc Browser \"Little Arc\" Floating Windows overflow off-screen in Tile Layout",
      "body": "## Steps to reproduce:\r\n(With Arc Browser installed and set as the default browser)\r\n1. Auto-Assign Arc browser windows to a workspace (e.g. `1`)\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'company.thebrowser.Browser'\r\nrun = 'move-node-to-workspace 1'\r\n```\r\n2. Open the Arc Browser\r\n3. Click a link from a different application (e.g. a link in a note, your email app, anywhere that isn't the browser) to open a link in a \"Little Arc\" window. Or, within the Arc Browser, right click a link and select `Open Link in Little Arc`\r\n\r\n## Expected result:\r\nThe new \"Little Arc\" window opens in the assigned `Workspace 1`, and tiles next to the main browser in Workspace 1, fitting within the screen's boundaries (including any padding configured). The two windows are resized to each occupy half of the screen. (This is how aerospace behaves in 17.x)\r\n\r\n## Actual result:\r\n1. The new \"Little Arc\" window opens in the active workspace (e.g. your Email apps workspace) as a Floating Window\r\n\r\n2. One of two behaviors depending on next step:\r\n  a. Navigating to its assigned workspace (`Alt-1`) causes the new \"Little Arc\" window to finally auto-assign to `Workspace 1` and align to the screen's border, but it overflows into the space that the main browser window occupies instead of splitting the available space equally. <img width=\"3200\" alt=\"Screenshot 2025-04-22 at 8 42 46 AM\" src=\"https://github.com/user-attachments/assets/650779a4-8924-44f1-91e3-73f44cd0360d\" />\r\n  b. Clicking anywhere immediately after the new \"Little Arc\" window opens in the active workspace causes the new window to finally aout-assign to `Workspace 1` and align to the edge of the main browser window, but it overflows off-screen and at least partially out of view instead of splitting the available space equally. <img width=\"3200\" alt=\"Screenshot 2025-04-22 at 8 35 05 AM\" src=\"https://github.com/user-attachments/assets/a45dc550-81bd-4256-80b0-0efae97b0c85\" />\r\n\r\n\r\n",
      "created_at": "2025-04-22T15:52:31Z",
      "updated_at": "2025-08-07T16:17:06Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jviall",
        "avatar_url": "https://avatars.githubusercontent.com/u/6645999?u=4f82aa8235bcdf80d4ac9ec48ef717e0df7ed1d5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhABL",
      "number": 1599,
      "title": "Aerospace crash everytime I lock and unlock the mac",
      "body": "### Body\n\ncrash log:\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: ax(AXMoved)\r\nDate: 2025-07-29 09:43:56 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 33611 ID: com.pake.gemini\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 4\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001008dd7dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100724f20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x0000000100724990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x000000010075cd00 $s9AppBundle9WorkspaceC20forceAssignedMonitorAA0F0_pSgvg + 384\r\n4   AeroSpace                           0x00000001007538ac $s9AppBundle9WorkspaceC16workspaceMonitorAA0E0_pvg + 40\r\n5   AeroSpace                           0x0000000100715eec $s9AppBundle28checkOnFocusChangedCallbacksyyF + 288\r\n6   AeroSpace                           0x000000010071ce80 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TY1_ + 228\r\n7   AeroSpace                           0x00000001006b8b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   libswift_Concurrency.dylib          0x00000002714b8461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   libswift_Concurrency.dylib          0x00000002714b8109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n10  AeroSpace                           0x000000010071c9f1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n11  AeroSpace                           0x00000001006b8b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x00000002714b8461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  libswift_Concurrency.dylib          0x00000002714b8109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  AeroSpace                           0x000000010071bf59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n15  AeroSpace                           0x000000010071c711 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n16  AeroSpace                           0x00000001006b8b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x00000002714ec83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```",
      "created_at": "2025-07-29T12:01:07Z",
      "updated_at": "2025-08-07T09:22:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1h7y",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1613"
      },
      "user": {
        "login": "Else00",
        "avatar_url": "https://avatars.githubusercontent.com/u/48489849?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agvhh",
      "number": 1551,
      "title": "Workspace wrongfully switched after minimizing window",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Open Firefox on Workspace 1. \r\n2. Open a new Firefox window and move it to workspace T (for example)\r\n3. Minimize Firefox on workspace T\r\n\r\nExpected result: Workspace T and existing windows remain focused \r\nActual result: First (where other Firefox window) workspace becomes visible/active (you can see in the recording workspace changed from T to 1)\r\n\r\nhttps://github.com/user-attachments/assets/15cd4e2b-7fd4-4190-8c7e-d82a184f3879\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0",
      "created_at": "2025-07-14T18:01:06Z",
      "updated_at": "2025-08-07T09:19:16Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1h6C",
        "body": "Thanks, created an issue https://github.com/nikitabobko/AeroSpace/issues/1614"
      },
      "user": {
        "login": "orikremer",
        "avatar_url": "https://avatars.githubusercontent.com/u/1181527?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag_2-",
      "number": 1598,
      "title": "Runtime error after changing displays",
      "body": "### Body\n\nFor some time now, I've consistently gotten the error shown below when changing from using an external display to the built-in one or vice versa. To restart aerospace after crashing, I have to force-quit and the re-open it.\r\n\r\nSteps to reproduce:\r\n1. Aerospace running normally when using on an external display (Macbook in clamshell mode)\r\n2. Lock computer/Turn off external display\r\n3. Open laptop and use the built-in display\r\n\r\n### Additional info\r\n\r\n```shell\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: orDie: \r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: ax(AXResized)\r\nDate: 2025-07-28 21:35:02 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 72607 ID: com.spotify.client\r\nmacOS version: Version 14.5 (Build 23F79)\r\nCoordinate: AppBundle/Monitor.swift:93:89 mainMonitor\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001049c57dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x000000010480cf20 $s9AppBundle11mainMonitorAA0D0_pvg + 648\r\n2   AeroSpace                           0x000000010480c990 $s9AppBundle8monitorsSayAA7Monitor_pGvg + 560\r\n3   AeroSpace                           0x0000000104866d94 $sSo7CGPointV9AppBundleE20monitorApproximationAC7Monitor_pvg + 60\r\n4   AeroSpace                           0x000000010483b94c $s9AppBundle9WorkspaceC16workspaceMonitorAA0E0_pvg + 200\r\n5   AeroSpace                           0x00000001047fdeec $s9AppBundle28checkOnFocusChangedCallbacksyyF + 288\r\n6   AeroSpace                           0x0000000104804e80 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TY1_ + 228\r\n7   AeroSpace                           0x0000000104804b25 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ3_ + 1\r\n8   AeroSpace                           0x000000010480a571 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTwB6Common19RefreshSessionEventOSg_ytTg5017$s9AppBundle25runjk67Blocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5l12O_S2btYaKFyyY6KXEfU_AKS2bTf1nncnnnn_nTQ2_ + 1\r\n9   AeroSpace                           0x0000000104804045 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ2_ + 1\r\n10  AeroSpace                           0x0000000104804711 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n11  AeroSpace                           0x00000001047a0b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x00000002559af0f9 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```\r\n",
      "created_at": "2025-07-29T09:03:25Z",
      "updated_at": "2025-08-07T08:45:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1hvS",
        "body": "Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1613"
      },
      "user": {
        "login": "JDuffe",
        "avatar_url": "https://avatars.githubusercontent.com/u/76662671?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhA87",
      "number": 1602,
      "title": "Aerospace crashed",
      "body": "### Body\n\nI have no idea why it crashed, probably just a window which maximized itself\r\n\r\nCrash log:\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x000000010078a278 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001005fb9d4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x00000001005fbc80 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x000000010057db70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n    4   AeroSpace                           0x00000001005808fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x000000010057e711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000100565751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n    7   AeroSpace                           0x00000001005a7df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n    8   AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x0000000100613b91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n    10  AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x000000027875c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x000000027875c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001006126f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x000000027875c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000027875c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x0000000100611669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001005a79c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001005645bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000027879083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-07-30 07:07:02 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001007897dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001005fbd8c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x000000010057db70 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 528\r\n3   AeroSpace                           0x00000001005808fd $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x000000010057e711 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000100565751 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ3_ + 1\r\n6   AeroSpace                           0x00000001005a7df5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n7   AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x0000000100613b91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n9   AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x000000027875c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x000000027875c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001006126f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000100564b81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x000000027875c461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x000000027875c109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x0000000100611669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001005a79c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001005645bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000027879083d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-07-30T07:48:19Z",
      "updated_at": "2025-08-07T08:38:42Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1hqo",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "matt-dong-123",
        "avatar_url": "https://avatars.githubusercontent.com/u/148605800?u=c4059c6455da424126f499c8853b77f79dff6f73&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgX40",
      "number": 1487,
      "title": "Set all windows to float in a specific workspace",
      "body": "I'd like to set all the windows on a specific workspace (say, workspace 1) to be floating. When I launch a new application, it should appear here as floating. Then, I can organize these windows in other workspaces as necessary, with the proper tiling settings.\r\n\r\nIs there a way to achieve this today? Should it be a feature idea?\r\n\r\nThanks!\r\n",
      "created_at": "2025-06-24T01:43:26Z",
      "updated_at": "2025-08-06T22:29:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Azut4",
        "body": "Duplicate of #260 "
      },
      "user": {
        "login": "bbirand",
        "avatar_url": "https://avatars.githubusercontent.com/u/334435?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhJaH",
      "number": 1610,
      "title": "Accordion 2nd window of defined apps",
      "body": "This may already be possible, so if so, please let me know how. \r\nI'd like to be able to define an app or window in some way and have it set that if I have more than 1 Window of it, that it joins with the other window of that app, and sets itself to accordion mode.\r\n\r\nUse case would primarily be meeting clients such as Teams, Zoom, etc. that spawn calls and meetings in a new app window. Rather than it tiling itself in the workspace or using an window-detected callback to set it as floating, it would be nice to have it join-with the other window of that app, and then set the layout for that leaf to accordion.  I've been doing this manually via joins and layout swaps with binds manually each time and it works well, but doing it via a window detection callback to have it happen automatically would be great.",
      "created_at": "2025-08-05T16:27:13Z",
      "updated_at": "2025-08-05T16:27:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DarthImriel",
        "avatar_url": "https://avatars.githubusercontent.com/u/149115888?u=2572a402c822680320034da61eee952ba5d0a333&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgrK1",
      "number": 1538,
      "title": "how to open and move an app silently through 'exec-and-forget'",
      "body": "Hi all, \r\n\r\nI have a probably fundamental question on writing key-bindings using 'exec-and-forget'. My goal is to define a key-binding that first opens up several apps and then switches my focus to a specific workspace. This is my function (in service mode)\r\n```\r\nw = [\r\n        'exec-and-forget open -g -a Calendar',\r\n        'exec-and-forget open -g -a Reminders',\r\n        'exec-and-forget open -g -a \"Microsoft Outlook\"',\r\n        'exec-and-forget open -g -a Obsidian',\r\n        'exec-and-forget open -g -a \"Visual Studio Code\"',\r\n        'exec-and-forget open -g -a Zotero',\r\n        'workspace Calendar',\r\n        'mode main'        \r\n    ]\r\n```\r\nAs you can see from the script, I intend to focus on my \"Calendar\" workspace. However, every time I use the key-binding, I ended up looking at my Obsidian app (which lives in an \"Obsidian\" workspace).\r\n\r\nI searched up a little bit and ChatGPT tells me that this is because I have another script\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'md.obsidian'\r\nrun = 'move-node-to-workspace Obsidian'\r\n```\r\nsuch that when aerospace creates and moves the Obsidian app to its desired workspace, the system will adjust the focus. But I am confused that, when I run `open -g -a Obsidian` in a terminal, obsidian can be invoked and sent silently to its desired workspace--while I am still focusing on the terminal (NOT in the `Obsidian` workspace).\r\n\r\nCould anybody explains why we have these inconsistencies (at least to me)? And possibly workarounds? I also met another problem on 'exec-and-forget osascript -e 'quit app \"Visual Studio Code\"'' which would raise an error.\r\n\r\nMy whole config file is\r\n```\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\nafter-login-command = []\r\n\r\n# run after AeroSpace startup.\r\n# 'after-startup-command' runs after 'after-login-command'\r\nafter-startup-command = []\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n# on-focus-changed = ['move-mouse window-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n# Possible values: (qwerty|dvorak|colemak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\n    preset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See:\r\n#                 https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\n    inner.horizontal = 0\r\n    inner.vertical =   0\r\n    outer.left =       0\r\n    outer.bottom =     0\r\n    outer.top =        0\r\n    outer.right =      0\r\n\r\n# 'main' binding mode declaration, must be always presented\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.main.binding]\r\n\r\n    # All possible keys:\r\n    # - Letters.        a, b, c, ..., z\r\n    # - Numbers.        0, 1, 2, ..., 9\r\n    # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n    # - F-keys.         f1, f2, ..., f20\r\n    # - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon,\r\n    #                   backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,\r\n    #                   backspace, tab, pageUp, pageDown, home, end, forwardDelete,\r\n    #                   sectionSign (ISO keyboards only, european keyboards only)\r\n    # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n    #                   keypadMinus, keypadMultiply, keypadPlus\r\n    # - Arrows.         left, down, up, right\r\n\r\n    # All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n    # All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\n    alt-slash = 'layout tiles horizontal vertical'\r\n    alt-comma = 'layout accordion horizontal vertical'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\n    alt-h = 'focus left'\r\n    alt-j = 'focus down'\r\n    alt-k = 'focus up'\r\n    alt-l = 'focus right'\r\n    alt-left = 'focus-monitor left'\r\n    alt-down = 'focus-monitor down'\r\n    alt-up = 'focus-monitor up'\r\n    alt-right = 'focus-monitor right'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#move\r\n    alt-shift-h = 'move left'\r\n    alt-shift-j = 'move down'\r\n    alt-shift-k = 'move up'\r\n    alt-shift-l = 'move right'\r\n    alt-shift-left = \"move-workspace-to-monitor left\"\r\n    alt-shift-down = \"move-workspace-to-monitor down\"\r\n    alt-shift-up = \"move-workspace-to-monitor up\"\r\n    alt-shift-right = \"move-workspace-to-monitor right\"\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\n    alt-minus = 'resize smart -50'\r\n    alt-equal = 'resize smart +50'\r\n\r\n    # workspaces\r\n    alt-1 = 'workspace 1'\r\n    alt-shift-1 = 'move-node-to-workspace 1'\r\n\r\n    alt-2 = 'workspace 2'\r\n    alt-shift-2 = 'move-node-to-workspace 2'\r\n\r\n    alt-3 = 'workspace 3'\r\n    alt-shift-3 = 'move-node-to-workspace 3'\r\n\r\n    alt-4 = 'workspace 4'\r\n    alt-shift-4 = 'move-node-to-workspace 4'\r\n\r\n    alt-5 = 'workspace 5'\r\n    alt-shift-5 = 'move-node-to-workspace 5'\r\n\r\n    alt-6 = 'workspace 6'\r\n    alt-shift-6 = 'move-node-to-workspace 6'\r\n\r\n    alt-7 = 'workspace 7'\r\n    alt-shift-7 = 'move-node-to-workspace 7'\r\n\r\n    alt-8 = 'workspace 8'\r\n    alt-shift-8 = 'move-node-to-workspace 8'\r\n\r\n    alt-9 = 'workspace 9'\r\n    alt-shift-9 = 'move-node-to-workspace 9'\r\n\r\n    alt-a = 'workspace A'\r\n    alt-shift-a = 'move-node-to-workspace A'\r\n\r\n    alt-b = 'workspace B'\r\n    alt-shift-b = 'move-node-to-workspace B'\r\n\r\n    alt-c = 'workspace Calendar'\r\n    alt-shift-c = 'move-node-to-workspace Calendar'\r\n\r\n    alt-d = 'workspace D'\r\n    alt-shift-d = 'move-node-to-workspace D'\r\n\r\n    alt-e = 'workspace Email'\r\n    alt-shift-e = 'move-node-to-workspace Email'\r\n\r\n    alt-f = 'workspace F'\r\n    alt-shift-f = 'move-node-to-workspace F'\r\n\r\n    alt-g = 'workspace Git'\r\n    alt-shift-g = 'move-node-to-workspace Git'\r\n\r\n    alt-i = 'workspace I'\r\n    alt-shift-i = 'move-node-to-workspace I'\r\n\r\n    alt-m = 'workspace M'\r\n    alt-shift-m = 'move-node-to-workspace M'\r\n\r\n    alt-n = 'workspace N'\r\n    alt-shift-n = 'move-node-to-workspace N'\r\n\r\n    alt-o = 'workspace Obsidian'\r\n    alt-shift-o = 'move-node-to-workspace Obsidian'\r\n\r\n    alt-p = 'workspace P'\r\n    alt-shift-p = 'move-node-to-workspace P'\r\n\r\n    alt-q = 'workspace Q'\r\n    alt-shift-q = 'move-node-to-workspace Q'\r\n\r\n    alt-r = 'workspace R'\r\n    alt-shift-r = 'move-node-to-workspace R'\r\n\r\n    alt-s = 'workspace S'\r\n    alt-shift-s = 'move-node-to-workspace S'\r\n\r\n    alt-t = 'workspace Temporary'\r\n    alt-shift-t = 'move-node-to-workspace Temporary'\r\n\r\n    alt-u = 'workspace U'\r\n    alt-shift-u = 'move-node-to-workspace U'\r\n\r\n    alt-v = 'workspace VS_Code'\r\n    alt-shift-v = 'move-node-to-workspace VS_Code'\r\n\r\n    alt-w = 'workspace W'\r\n    alt-shift-w = 'move-node-to-workspace W'\r\n\r\n    alt-x = 'workspace X'\r\n    alt-shift-x = 'move-node-to-workspace X'\r\n\r\n    alt-y = 'workspace Y'\r\n    alt-shift-y = 'move-node-to-workspace Y'\r\n\r\n    alt-z = 'workspace Zotero'\r\n    alt-shift-z = 'move-node-to-workspace Zotero'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\n    alt-tab = 'workspace-back-and-forth'\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\n    alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n    # You can uncomment the following lines to open up terminal with alt + enter shortcut\r\n    # (like in i3)\r\n    # alt-enter = '''exec-and-forget osascript -e '\r\n    # tell application \"Terminal\"\r\n    #     do script\r\n    #     activate\r\n    # end tell'\r\n    # '''\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\n    alt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\n    esc = ['reload-config', 'mode main']\r\n    r = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n    f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\n    backspace = ['close-all-windows-but-current', 'mode main']\r\n    w = [\r\n        'exec-and-forget open -g -a Calendar',\r\n        'exec-and-forget open -g -a Reminders',\r\n        'exec-and-forget open -g -a \"Microsoft Outlook\"',\r\n        'exec-and-forget open -g -a Obsidian',\r\n        'exec-and-forget open -g -a \"Visual Studio Code\"',\r\n        'exec-and-forget open -g -a Zotero',\r\n        'workspace Calendar',\r\n        'mode main'        \r\n    ]\r\n    q = [\r\n        'exec-and-forget killall Calendar',\r\n        'exec-and-forget killall Reminders',\r\n        'exec-and-forget killall \"Microsoft Outlook\"',\r\n        'exec-and-forget killall Obsidian',#'exec-and-forget osascript -e \\\\'quit app \"Visual Studio Code\"\\\\'',\r\n        'exec-and-forget killall zotero',\r\n        'mode main'\r\n    ]\r\n\r\n    # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n    #s = ['layout sticky tiling', 'mode main']\r\n\r\n    alt-shift-h = ['join-with left', 'mode main']\r\n    alt-shift-j = ['join-with down', 'mode main']\r\n    alt-shift-k = ['join-with up', 'mode main']\r\n    alt-shift-l = ['join-with right', 'mode main']\r\n\r\n    down = 'volume down'\r\n    up = 'volume up'\r\n    shift-down = ['volume set 0', 'mode main']\r\n\r\n\r\n# Apple default apps \r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.ActivityMonitor'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.iCal'\r\nrun = 'move-node-to-workspace Calendar'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.calculator'\r\nrun = 'layout floating'\r\n\r\n# [[on-window-detected]]  # not necessary as this is by default\r\n# if.app-id = 'com.apple.FaceTime'\r\n# run = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.findmy'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.MobileSMS'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.reminders'\r\nrun = 'move-node-to-workspace Calendar'\r\n\r\n# [[on-window-detected]] # not necessary as this is by default\r\n# if.app-id = 'com.apple.ScreenContinuity' \r\n# run = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.GitHubClient'\r\nrun = 'move-node-to-workspace Git'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nrun = 'layout floating'\r\n\r\n# third-party apps\r\n[[on-window-detected]]\r\nif.app-id = 'md.obsidian'\r\nrun = 'move-node-to-workspace Obsidian'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.Outlook'\r\nrun = 'move-node-to-workspace Email'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nrun = 'move-node-to-workspace VS_Code'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.zotero.zotero'\r\nrun = 'move-node-to-workspace Zotero'\r\n```",
      "created_at": "2025-07-10T21:01:23Z",
      "updated_at": "2025-08-05T16:08:38Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "he-linyun",
        "avatar_url": "https://avatars.githubusercontent.com/u/20322006?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhHwt",
      "number": 1609,
      "title": "It should be possible to ignore floating windows",
      "body": "In GlazeWM for Windows, there is an ignore command that is very useful for floating. You can ignore it and the floating window will jump over all workspaces. It would be nice if something similar were possible in aerospace\r\n\r\n```\r\n  - commands: [\"ignore\"]\r\n    match:\r\n \r\n      # Ignores picture-in-picture windows for browsers.\r\n      # Note that *both* the title and class must match for the rule to run.\r\n      - window_title: { regex: \"[Pp]icture.in.[Pp]icture\" }\r\n        window_class: { regex: \"Chrome_WidgetWin_1|MozillaDialogClass\" }\r\n\r\n```\r\n",
      "created_at": "2025-08-04T20:11:39Z",
      "updated_at": "2025-08-05T12:40:01Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1bTm",
        "body": "Duplicate of #2 "
      },
      "user": {
        "login": "skimask9",
        "avatar_url": "https://avatars.githubusercontent.com/u/88349133?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhGl-",
      "number": 1608,
      "title": "i3 3columns layout",
      "body": "The [3columns layout](https://github.com/eliep/i3-layouts/blob/main/img/3columns.gif) was the most important thing for me in i3, as it allows to have the focus on one window like vscode and have small windows on the side like terminals and web apps, it's particularly useful for ultra-wide monitors where the space on the sides is less used\r\nI would love to see it on aerospace",
      "created_at": "2025-08-04T09:50:11Z",
      "updated_at": "2025-08-05T12:08:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1bTt",
        "body": "Duplicate of #260 "
      },
      "user": {
        "login": "x41lakazam",
        "avatar_url": "https://avatars.githubusercontent.com/u/33977996?u=3d8c91be20b665814711ed265ceefd7969164106&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhDFC",
      "number": 1603,
      "title": "Incorrect Window Placement with Rotated Monitor",
      "body": "### Body\n\nWhen one of the displays is rotated 90 degrees (portrait mode), switching to another workspace causes new windows to be positioned incorrectly. Specifically, they appear on the right side of the rotated monitor, but at the bottom of the screen.\r\n\r\nI have the default configuration, took out all the workspaces but left in the default 9 workspaces and only changed this part (And resetting it to default does not mitigate the bug):\r\n\r\n```toml\r\n[gaps]\r\n    inner.horizontal = 10\r\n    inner.vertical =   10\r\n    outer.left =       10\r\n    outer.bottom =     10\r\n    outer.top =        10\r\n    outer.right =      10\r\n```\r\n\r\nSteps to reproduce:\r\n  1. Set up multiple monitors using the default display configuration, but rotate one of the monitors 90 degrees: <img width=\"319\" height=\"172\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d3fbff58-9483-4b36-b77d-952e413054ed\" />\r\n\r\nExpected result:\r\nWindows should open centered or in their expected position relative to the workspace grid and monitor layout.\r\n\r\nActual result:\r\nNew windows appear at the bottom-right edge of the rotated display, instead of respecting the logical workspace grid.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n```\r\n\r\nVisual of bug:\r\n\r\n<img width=\"885\" height=\"753\" alt=\"image\" src=\"https://github.com/user-attachments/assets/eb4615ad-899c-4960-8de1-93dc66056bab\" />",
      "created_at": "2025-08-01T08:26:37Z",
      "updated_at": "2025-08-02T15:19:24Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A1Sx_",
        "body": "I should have read the documentation closely: https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement"
      },
      "user": {
        "login": "ricardodevries",
        "avatar_url": "https://avatars.githubusercontent.com/u/78354174?u=5cbe8f1d23de5f6c12e4dfd1ad9514b4f8793eb3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag-xf",
      "number": 1594,
      "title": "Custom mapping for modifier keys",
      "body": "Is there any specific reason for not allowing custom mapping for modifier keys? I want to use `caps lock` as a modifier for bindings but currently can't.",
      "created_at": "2025-07-28T08:58:43Z",
      "updated_at": "2025-07-29T14:36:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dubeypranav4",
        "avatar_url": "https://avatars.githubusercontent.com/u/14884408?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AhAJB",
      "number": 1600,
      "title": "Displays share the same workspace",
      "body": "Right now, the behavior of Aerospace mirrors \"Displays have separate Spaces: on\" setting of native MacOS Space. Which mean, each workspace is assigned to one display only.\r\n\r\nMy proposal is to have something similar to \"Displays have separate Spaces: off\". By enabling this, each workspace is bound to every displays available. When switching workspace, all the windows on all displays will also be changed.\r\n\r\n**Implementation idea:** We can augment the current implementation of workspace for this kind of behavior\r\n- Introduce a \"super-workspace\" entity, which contains multiple workspaces, each bound to a display.\r\n- When switching \"super-workspace\", we simultaneously focus to all the workspaces of the new \"super-workspace\"\r\n\r\n**Difficulties with this approach**\r\n- We need to add-remove the workspaces in each super-workspace when new displays are added-removed from the device. Also move windows in each removed workspace to the remaining displays.",
      "created_at": "2025-07-29T13:57:43Z",
      "updated_at": "2025-07-29T13:57:45Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "antran22",
        "avatar_url": "https://avatars.githubusercontent.com/u/22423559?u=3349666dfb60228b8a55d7d3c39fb1dda9f09aae&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag5L1",
      "number": 1583,
      "title": "Wrong app is focused when clicking icon from Dock if the current focus is on a different monitor",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Have duo monitors, on the main monitor workspace, open 2 apps in accordion mode (place app A on top of App B); on the second monitor, open an app\r\n2. Click to gain focus on the second monitor's app\r\n3. Then, click on app B's icon from the the Dock\r\n\r\nExpected result: App B in the main monitor gains focus\r\nActual result: App B flickers a second, then app A gains focus\r\n\r\n### Additional info\r\n\r\nVideo has sound:\r\n\r\nhttps://github.com/user-attachments/assets/ca18c870-158b-4f83-8b84-71eac070094f\r\n\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n\r\nIn code you can see\r\n```\r\ntargetMonitor.activeWorkspace.focusWorkspace()\r\n```\r\n\r\n```\r\nextension Workspace {\r\n    @MainActor func focusWorkspace() -> Bool { setFocus(to: toLiveFocus()) }\r\n\r\n    func toLiveFocus() -> LiveFocus {\r\n        // todo unfortunately mostRecentWindowRecursive may recursively reach empty rootTilingContainer\r\n        //      while floating or macos unconventional windows might be presented\r\n        if let wd = mostRecentWindowRecursive ?? anyLeafWindowRecursive {\r\n            LiveFocus(windowOrNil: wd, workspace: self)\r\n        } else {\r\n            LiveFocus(windowOrNil: nil, workspace: self) // emptyWorkspace\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nIt seems to me this is the logic: when you click on a different monitor, the clicked monitor's workspace gains focus, then the code will make the most recent window gain focus, which happens to be app A instead.\r\n\r\nIs it possible to fix this issue? I think maybe it needs to differentiate workspace focus by mouse clicking vs. keyboard shortcut. If it's mouse click, then I don't think it needs to focus on the most recent window.\r\n\r\nAlternatively, maybe another solution is, instead of first calling focus workspace then focus window, can we detect the currently focused window, then make the window's workspace focused?\r\n\r\n\r\nDo you know the correct solution for this? I can make a PR.",
      "created_at": "2025-07-23T03:30:52Z",
      "updated_at": "2025-07-28T16:11:46Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yuliswe",
        "avatar_url": "https://avatars.githubusercontent.com/u/8177295?u=6acab650fac33631e056d568e2752541d589ab46&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag_E9",
      "number": 1596,
      "title": "Resize floating windows",
      "body": "Is it possible to resize floating windows via keybind?  \r\n\r\nI have tried with both resize smart and also resize width/height commands, but neither seem to affect a floating window. \r\n\r\nNot sure if it is possible or not.  I don't see anything specific in documentation about it.  ",
      "created_at": "2025-07-28T14:57:19Z",
      "updated_at": "2025-07-28T14:57:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "allreddv",
        "avatar_url": "https://avatars.githubusercontent.com/u/27244741?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag_At",
      "number": 1595,
      "title": "join-with fusion move : on fail",
      "body": "Hello,\r\nI would like to know if it is possible or if it would require a new feature to merge the behavior of join-with and move in single key. The idea is that if there's an adjacent window, we would make a join, and if we press the key once again (there is no adjacent window in the same direction without leaving the current tile node), it would be a move. For those who know, it is similar to how hyprland works.\r\n\r\nIs there a solution for this ? My first idea was to do a `join-with right || move right` so that the move is evaluated only when the join-with fails. However, there are two problems : the join-with works even if it has to leave the node and look if there is a window on the right even in the parent node, secondly, this is not possible to make conditional execution like that. \r\n\r\nIf this isn't possible, I will create an issue",
      "created_at": "2025-07-28T13:56:47Z",
      "updated_at": "2025-07-28T13:56:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "noahfraiture",
        "avatar_url": "https://avatars.githubusercontent.com/u/94681915?u=07014dd7ade1f01848c9533ff409e35c86e59034&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdIg3",
      "number": 832,
      "title": "Set of available keys for mapping (KC_APP/Menu key)",
      "body": "I was reading through the docs, and it looks like there is potentially support for custom key mappings:\r\n```\r\n[key-mapping.key-notation-to-key-code]\r\nunicorn = 'u'\r\n\r\n[mode.main.binding]\r\nalt-unicorn = 'workspace wonderland' # (⁀ᗢ⁀)\r\n```\r\n\r\nHowever, it looks like the default config lists the available keys for mapping as follows:\r\n\r\n```\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n```\r\n\r\nI have a setup where I switch between Linux, Windows, and OSX frequently enough to use a \"Menu\" key in my bottom row... it sits useless in my MacOS environment, and I was hoping to map it to a modifier for Aerospace to use (replacing Alt, since I have several other muscle memory mappings in both my MacOS and other enviornments).  \r\n\r\nMy Menu key is mapped to KC_APP in QMK, or if it helps the stty output is below..\r\n```\r\n❯ cat\r\n^[[29~ # <----- stty equivalent of my \"Menu\" key press\r\n```\r\nI've tried a few different variations to map the key, but none of them are working.  Before I dig deeper, I wanted to confirm... Is it possible to map keys not listed in the default config, or am I barking up the wrong tree?  I notice even the example uses a standard key in the mapped value.",
      "created_at": "2024-12-09T00:50:01Z",
      "updated_at": "2025-07-28T08:58:57Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "taylrfnt",
        "avatar_url": "https://avatars.githubusercontent.com/u/43214679?u=f29df903829ae0aff1cee477f986ec452a582e5f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag-Jj",
      "number": 1592,
      "title": "Alacritty in tiling mode has padding not present in floating mode",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Open Alacritty as the sole window, in tiling mode (Alacritty config window.startup_mode should be \"Maximized\")\r\n2. Switch to floating mode (note that the window remains the same size)\r\n\r\nExpected result: There is no change in the padding at the bottom of the screen\r\nActual result: There is a bar/line worth of padding at the bottom of the screen, but it disappears when Alacritty is made a floating window. The padding does not appear in floating mode no matter the size/ratio of the Alacritty window. Switching between floating and tiling mode makes the padding toggle even though the window is the same size.\r\nNote: I'm aware this probably has something to do with Alacritty adding padding when the window is not exactly the right height. The notable part of this behaviour is due to the fact that the window is the same size before and after the change.\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n$ alacritty -V\r\nalacritty 0.15.1 (0c405d5)\r\n```\r\n\r\nIn tiling mode:\r\n<img width=\"278\" height=\"52\" alt=\"image\" src=\"https://github.com/user-attachments/assets/dbd64f71-113b-4ff7-bd4c-22004de712b9\" />\r\nAfter switching to floating mode (both screenshots end at the bottom of the screen. You can see that Alacritty has registered extra space and re-printed the prompt):\r\n<img width=\"478\" height=\"105\" alt=\"image\" src=\"https://github.com/user-attachments/assets/01172d1a-9eff-478b-957a-12fe3e94c419\" />\r\n\r\n",
      "created_at": "2025-07-28T03:12:56Z",
      "updated_at": "2025-07-28T08:32:28Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "d4wns-l1ght",
        "avatar_url": "https://avatars.githubusercontent.com/u/64108538?u=f2bda588f72e4c15403501c0f210e7b24a818e9f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag-o2",
      "number": 1593,
      "title": "Feature: count only tiled windows",
      "body": "sometimes I want to see a window at the center of main display with predefined width.\r\n\r\nwith the command below, I can move the window to main display and resize, but I have to manually move the location of the window.\r\n\r\n['move-node-to-monitor 1','flatten-workspace-tree','resize width 400']\r\n\r\nso I tried to move the windows by counting windows on workspace but this count floating windows too.\r\nI couldn't find a way to count only tiled windows.\r\n\r\nnode_center.sh\r\n`#!/bin/bash\r\n\r\ncount=$(aerospace list-windows --workspace focused --count)\r\nmoves=$(( (count) / 2 ))\r\n\r\nfor ((i=0; i < count; i++)); do\r\naerospace move right --boundaries-action stop\r\ndone\r\n\r\nfor ((i=0; i < moves; i++)); do\r\naerospace move left\r\ndone\r\n`",
      "created_at": "2025-07-28T08:00:03Z",
      "updated_at": "2025-07-28T08:00:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Gureum-Yeoreum-Tori",
        "avatar_url": "https://avatars.githubusercontent.com/u/106311219?u=886f6e79158495d42c7abd922637d4eec9069952&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag5XP",
      "number": 1585,
      "title": "When I connect new monitor it default to a new workspace 10",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Connect a new monitor that you dont usual connect to it will make everything workspace 10 which is really annoying because  i dont even have it defined  in my list of my workspace and it just create anumber I try deleting number 9 and so that will create still goes to 10  or 11 sometimes can I make deafult workspace for new mointers I tried did not work \r\n\r\n\r\n2.\r\n3.\r\n\r\nExpected result:\r\nActual result:\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-07-23T08:05:15Z",
      "updated_at": "2025-07-28T01:16:58Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ali-aljufairi",
        "avatar_url": "https://avatars.githubusercontent.com/u/85583841?u=20e73fd2a2bd5546c7c2f3659fdc7f16d4a5744a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiK",
      "number": 957,
      "title": "aerospace not starting after login",
      "body": "**Describe the bug**\r\nI installed aerospace using brew and my user is administrator. My machine is Apple M3 Pro with macos is 15.1.1 (24B91) \r\n\r\nI then created and edited $HOME/.aerospace.toml as below\r\n\r\n```\r\ncat $HOME/.aerospace.toml\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n  'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0',\r\n  # 'exec-and-forget open -n -a \"Alacritty\"', 'move-node-to-workspace 2',\r\n  # 'exec-and-forget open -n -a \"Firefox\"', 'move-node-to-workspace 1'\r\n]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 5\r\ninner.vertical =   5\r\nouter.left =       5\r\nouter.bottom =     5\r\nouter.top =        5\r\nouter.right =      5\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)\r\n# alt-enter = '''exec-and-forget osascript -e '\r\n# tell application \"Terminal\"\r\n#     do script\r\n#     activate\r\n# end tell'\r\n# '''\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# Toggle fullscreen window\r\nalt-f = 'macos-native-fullscreen'\r\n\r\n# keybinding to start apps (similar to my hyprland shotcuts)\r\nalt-c = 'close'\r\nalt-t = 'exec-and-forget open -n -a \"Alacritty\"'\r\nalt-w = 'exec-and-forget open -n -a \"Firefox\"'\r\nalt-e = 'exec-and-forget open \"Documents\"'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-b = 'workspace B'\r\n# alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\n# alt-c = 'workspace C'\r\n# alt-d = 'workspace D'\r\n# alt-e = 'workspace E'\r\n# alt-f = 'workspace F'\r\n# alt-g = 'workspace G'\r\n# alt-i = 'workspace I'\r\n# alt-m = 'workspace M'\r\n# alt-n = 'workspace N'\r\n# alt-o = 'workspace O'\r\n# alt-p = 'workspace P'\r\n# alt-q = 'workspace Q'\r\n# alt-r = 'workspace R'\r\n# alt-s = 'workspace S'\r\n# alt-t = 'workspace T'\r\n# alt-u = 'workspace U'\r\n# alt-v = 'workspace V'\r\n# alt-w = 'workspace W'\r\n# alt-x = 'workspace X'\r\n# alt-y = 'workspace Y'\r\n# alt-z = 'workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-a = 'move-node-to-workspace A'\r\nalt-shift-b = 'move-node-to-workspace B'\r\nalt-shift-c = 'move-node-to-workspace C'\r\nalt-shift-d = 'move-node-to-workspace D'\r\nalt-shift-e = 'move-node-to-workspace E'\r\nalt-shift-f = 'move-node-to-workspace F'\r\nalt-shift-g = 'move-node-to-workspace G'\r\nalt-shift-i = 'move-node-to-workspace I'\r\nalt-shift-m = 'move-node-to-workspace M'\r\nalt-shift-n = 'move-node-to-workspace N'\r\nalt-shift-o = 'move-node-to-workspace O'\r\nalt-shift-p = 'move-node-to-workspace P'\r\nalt-shift-q = 'move-node-to-workspace Q'\r\nalt-shift-r = 'move-node-to-workspace R'\r\nalt-shift-s = 'move-node-to-workspace S'\r\nalt-shift-t = 'move-node-to-workspace T'\r\nalt-shift-u = 'move-node-to-workspace U'\r\nalt-shift-v = 'move-node-to-workspace V'\r\nalt-shift-w = 'move-node-to-workspace W'\r\nalt-shift-x = 'move-node-to-workspace X'\r\nalt-shift-y = 'move-node-to-workspace Y'\r\nalt-shift-z = 'move-node-to-workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n#s = ['layout sticky tiling', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\ndown = 'volume down'\r\nup = 'volume up'\r\nshift-down = ['volume set 0', 'mode main']\r\n```\r\n\r\n**Related issues you could find**\r\nI could not find any other issue related",
      "created_at": "2024-12-01T15:15:08Z",
      "updated_at": "2025-07-27T16:10:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Masber",
        "avatar_url": "https://avatars.githubusercontent.com/u/722064?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag8oh",
      "number": 1591,
      "title": "Feature: dynamically change gap sizes",
      "body": "### Short summary of the idea\r\nI'd like to be able to disable outer gaps when only one window is present in the space (or when in fullscreen mode).\r\n### Context of my use case\r\nI use AeroSpace together with JankyBorders and have nonzero outer gaps so that highlighted borders fit onto the screen. I'm also using a [snippet](https://github.com/nikitabobko/AeroSpace/issues/438#issue-2476615446)\r\n\r\n``` toml\r\non-focus-changed = [\r\n  'exec-and-forget [ $(aerospace list-windows --workspace focused | wc -l) -eq 1 ] && borders width=0.0 || borders width=6.0',\r\n  'move-mouse window-lazy-center'  # Mouse lazily follows any focus (window or workspace)\r\n]\r\n```\r\nto disable borders when only one window is active. In the same vein I'd love to disable outer gaps in the same cases.",
      "created_at": "2025-07-27T07:19:24Z",
      "updated_at": "2025-07-27T07:19:25Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "aleksmark98",
        "avatar_url": "https://avatars.githubusercontent.com/u/70126566?u=abbf96c302dbf8510c6e556ece33b787e0f9611a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfTlj",
      "number": 1304,
      "title": "`aerospace` executable location",
      "body": "Today I tried to run `aerospace list-apps` after installing a new app that I want to handle in a specific way, but got my wrist slapped because zsh couldn't find the executable.\r\n\r\n```\r\n$ aerospace list-apps\r\nzsh: command not found: aerospace\r\n```\r\nThis is the first time I've had this happen. I recently upgraded the packages on my system, but I don't remember whether Aerospace itself was updated. I poked around the `/Applications/Aerospace.app` package, but didn't see a `bin/` directory or that executable anywhere else. \r\n\r\nWhere should it be? Did a recent update change something that didn't come up in my searches?\r\n\r\nThanks!\r\n\r\nUPDATE: Just realized that the menu bar menu includes the version, so here we are:\r\n```\r\nAeroSpace v0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n```",
      "created_at": "2025-04-15T19:24:07Z",
      "updated_at": "2025-07-25T12:59:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxARk",
        "body": "No, nothing has changed in the packaging since the very first versions. Something is wrong with your shell/brew\r\n\r\n```\r\nbobko@bobko-mavericks ~/a/AeroSpace> which aerospace\r\n/opt/homebrew/bin/aerospace\r\n\r\nbobko@bobko-mavericks ~/a/AeroSpace> ll /opt/homebrew/bin/aerospace\r\nlrwxr-xr-x 1 bobko admin 85 Apr 14 22:33 /opt/homebrew/bin/aerospace -> /opt/homebrew/Caskroom/aerospace/0.18.2-Beta/AeroSpace-v0.18.2-Beta/bin/aerospace*\r\n\r\nbobko@bobko-mavericks ~/a/AeroSpace> aerospace -v\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n\r\nbobko@bobko-mavericks ~/a/AeroSpace>\r\n```"
      },
      "user": {
        "login": "robwilkerson",
        "avatar_url": "https://avatars.githubusercontent.com/u/7735?u=612b98cea1088892a6a69f131541cfae2eb561a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag62z",
      "number": 1587,
      "title": "Relatively consistent runtime error crashes",
      "body": "### Body\n\nSteps to reproduce:\r\nEvery once in a while, when I try to change workspaces with a keybind, Aerospace crashes and returns the following error. There doesn't seem to be anything specific that causes it, the only consistency I've noticed is that it happens on workspace change. My computer needs to reboot to get it back up and running again, because I get the rainbow wheel of death when my mouse hovers over the Aerospace section in the menu bar. It's happened maybe 10 times or so in the 6 or so months I've been using it, over several versions.\r\n\r\nExpected result: workspace change\r\nActual result: runtime error crash\r\n\r\n### Additional info\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: The operation couldn’t be completed. Resource temporarily unavailable\r\nVersion: 0.19.2-Beta\r\nGit hash: d246f250468fc9d427a2eb901d56794af7ac6609\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-07-24 17:36:55 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/focus.swift:187:46 onWorkspaceChanged(_:_:)\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001047217dc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2260\r\n1   AeroSpace                           0x000000010474b810 $ss6ResultO6CommonE8getOrDie_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   AeroSpace                           0x000000010458a6c0 $s9AppBundle18onWorkspaceChanged33_7642A5C3292B9DD5C5AAA7E6B763F792LLyySS_SStF + 1188\r\n3   AeroSpace                           0x000000010458a164 $s9AppBundle28checkOnFocusChangedCallbacksyyF + 920\r\n4   AeroSpace                           0x000000010452d884 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqyAA0E6ResultVAA0E3EnvV_AA0E5StdinCtYaKFTY4_ + 172\r\n5   AeroSpace                           0x000000010456fdf5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ1_ + 1\r\n6   AeroSpace                           0x000000010452cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n7   AeroSpace                           0x00000001045dbb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ6_ + 1\r\n8   AeroSpace                           0x000000010452cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n9   libswift_Concurrency.dylib          0x0000000286048461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000286048109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  AeroSpace                           0x00000001045da6f9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n12  AeroSpace                           0x000000010452cb81 $s9AppBundle17runRefreshSession_33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n13  libswift_Concurrency.dylib          0x0000000286048461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000286048109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  AeroSpace                           0x00000001045d9669 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n16  AeroSpace                           0x000000010456f9c1 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n17  AeroSpace                           0x000000010452c5bd $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n18  libswift_Concurrency.dylib          0x000000028607c83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n",
      "created_at": "2025-07-24T18:12:59Z",
      "updated_at": "2025-07-24T20:05:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "apeir-n",
        "avatar_url": "https://avatars.githubusercontent.com/u/185735778?u=947d505313d4c128764e064621e634c97b25d377&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag6Se",
      "number": 1586,
      "title": "How can I make a floating application open on the current workspace?",
      "body": "Here is the situation I'm facing:\r\n\r\nMy left monitor is on workspace 4, and my right monitor is on workspace 2. When I open a floating application, it appears on the left monitor (workspace 4).\r\n\r\nThen, I switch to other workspaces. If I try to bring that same floating app back into focus, regardless of which workspace I'm currently on, it forces both of my monitors to revert to a specific state: the left monitor switches back to workspace 4, and the right monitor switches to workspace 1. The floating app is then displayed on workspace 4, where it was originally opened.\r\n\r\n\r\n$ aerospace --version                                                \r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\n",
      "created_at": "2025-07-24T06:42:10Z",
      "updated_at": "2025-07-24T06:42:37Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "qiao-summer",
        "avatar_url": "https://avatars.githubusercontent.com/u/42436637?u=60c0bd5ffeaab12dd915af929fa13dbb57dfe569&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfQ3K",
      "number": 1280,
      "title": "v0.18.0-Beta",
      "body": "This release primarily features performance improvements, the new icon and contributions from the community.\r\n\r\nPreviously, AeroSpace suffered from major performance problems caused by the fact that AeroSpace was a single-threaded application, and macOS accessibility API is a blocking API. If at least one application was unresponsive, it'd block the entire system. Starting from this release, AeroSpace implements thread-per-application model, which allows it to stay responsive even in the mentioned case. On top of that, the accessibility requests were made cancellable, which helps to avoid doing unnecessary work when consecutive accessibility requests could be coalesced.\r\n\r\nAeroSpace is migrated to Swift 6 strict concurrency mode which hopefully will help to prevent data-races.\r\n\r\nThe performance problems are not fixed entirely, but the release lays down a good foundation for future fixes. In particular, Godot (and maybe some other apps) still introduces half a second delay for AeroSpace, but it doesn't entirely block the system anymore! (tracking issue for investigating Godot: https://github.com/nikitabobko/AeroSpace/issues/218) Another optimization direction is to entirely avoid accessibility requests to windows which are located on invisible workspaces (tracking issue: https://github.com/nikitabobko/AeroSpace/issues/545)\r\n\r\nThread-per-application is a significant shift in AeroSpace architecture, I expect quite a few bugs in this release. Please report bugs as usual, but I encourage you to check if the bug is introduced in 0.18.0.\r\n\r\n**Performance improvements**\r\n- https://github.com/nikitabobko/AeroSpace/issues/131 AeroSpace now implements thread-per-application model. More details: https://github.com/nikitabobko/AeroSpace/issues/131#issuecomment-2764689528 https://github.com/nikitabobko/AeroSpace/issues/131#issuecomment-2781506520\r\n- https://github.com/nikitabobko/AeroSpace/issues/131 https://github.com/nikitabobko/AeroSpace/pull/1249 Coalesce idempotent accessibility requests. By @rickyz\r\n\r\n**New features**\r\n- New icon\r\n- https://github.com/nikitabobko/AeroSpace/issues/748 Support pageUp, pageDown, home, end, forwardDelete\r\n- 2bb435bea460425582d20c64314389c8753fc689 Support European/ISO `sectionSign` key in config\r\n- https://github.com/nikitabobko/AeroSpace/issues/1073 Add `fail` action to `--boundaries-action`. By @MediosZ\r\n- https://github.com/nikitabobko/AeroSpace/issues/846 Add `workspace-is-focused` and `workspace-is-visible` query data types. By @xiamaz\r\n- https://github.com/nikitabobko/AeroSpace/issues/730 Add Colemak keyboard layout preset. By @ll1zt\r\n\r\n**Bug fixes**\r\n- https://github.com/nikitabobko/AeroSpace/issues/1257 Fix bug: Dead windows may appear in `aerospace list-windows --all`. By @rickyz\r\n- https://github.com/nikitabobko/AeroSpace/issues/1231 Fix bug: Binding `reload-config` in the `main` binding mode is unreliable. By @rickyz\r\n\r\nMet vriendelijke groeten,\r\nNikita Bobko\r\n\r\n\r\n<hr /><em>This discussion was created from the release <a href='https://github.com/nikitabobko/AeroSpace/releases/tag/v0.18.0-Beta'>v0.18.0-Beta</a>.</em>",
      "created_at": "2025-04-12T18:42:22Z",
      "updated_at": "2025-07-23T13:20:43Z",
      "category": {
        "name": "announcements-releases",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag5Rr",
      "number": 1584,
      "title": "potential bug in functionality on certain workspaces. (inconsistent behavior)",
      "body": "### Body\n\nSteps to reproduce:\r\n1.see the config i have attached\r\n2.go to empty workspace like w-4\r\n3.press keys to launch brave (just for example, happens with others too but most inconsistent with chrome apps like browsers and electron apps)\r\n\r\nthere may be a case that my config is broken but this is inconsistent behavior so idk why its happening that way.\r\n\r\nExpected result: brave should be focused\r\nActual result: inconsistent behavior\r\n\r\nvideo: \r\n\r\nhttps://github.com/user-attachments/assets/f62d9e33-ea3a-44e8-9f3c-ea2dbb15ed7c\r\n\r\nconfig: https://paste.laravel.io/df01d787-c32e-4713-ae8e-199b4e784389\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerosp\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609ace -v\r\n```\r\n",
      "created_at": "2025-07-23T06:18:50Z",
      "updated_at": "2025-07-23T06:18:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0oAstro",
        "avatar_url": "https://avatars.githubusercontent.com/u/79555780?u=ab3d51c3028dfa5c5e23b680ac57b2d954263981&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag4cR",
      "number": 1580,
      "title": "why do hidden pixels go into bottom corners?",
      "body": "Hi, I am curious whether there was a technical or UX reason to put the hidden pixels in the bottom corners?\r\n\r\nI find myself pushing the mouse into those corners accidentally far more often than into the top corners.",
      "created_at": "2025-07-22T10:08:37Z",
      "updated_at": "2025-08-07T09:23:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A03Mk",
        "body": "i think there's an issue mentioning that it's impossible to put app window in the top corners in macOS."
      },
      "user": {
        "login": "MartinLoeper",
        "avatar_url": "https://avatars.githubusercontent.com/u/5209395?u=3287560c3fc5fe29eab131ee4ac99be05c4ef0d9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag3oJ",
      "number": 1577,
      "title": "The macos menu bar is gone",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. go to the mac os menu bar at the top click on aerospace\r\n2. select the experimental UI option where you see the different workspace\r\n3. The menu bar is not gone\r\n\r\nExpected result:\r\nActual result:\r\nIt should display the menu bar correctly\r\n\r\n### Additional info\r\n\r\nAdditionally, I do not know how to \"reset\" it or change it. So now I can't see on what workspace I am on :(.\r\nI also could not find in the config.toml any option to change it / reset it.\r\n\r\n\r\n```shell\r\n❯ aerospace -v\r\naerospace CLI client version: 0.19.2-Beta d246f250468fc9d427a2eb901d56794af7ac6609\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\nBy menu bar I mean this:\r\n<img width=\"545\" height=\"35\" alt=\"Screenshot 2025-07-21 at 12 01 07 PM\" src=\"https://github.com/user-attachments/assets/7d412c57-0483-4543-a078-b0f99bbfdc69\" />\r\nAs you can see aerospace is gone here while it is still running / I am still able to use it via my shortcut",
      "created_at": "2025-07-21T15:54:29Z",
      "updated_at": "2025-07-22T16:31:56Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A00Ja",
        "body": "the issue is that the new menu bar is too \"long\" so that it vanishes in the notch. if you now connect a bigger screen for example, it will re-appear.\r\n\r\nyou can check here for options on how to fix: https://www.jessesquires.com/blog/2023/12/16/macbook-notch-and-menu-bar-fixes/\r\n\r\na perhaps good general solution would be:\r\n* allow setting the menu bar style via config\r\n* make menu bar style configurable per screen / size. i want to have the full menu bar on a big screen but the compact one when using my laptop."
      },
      "user": {
        "login": "zippeurfou",
        "avatar_url": "https://avatars.githubusercontent.com/u/4520383?u=483a1c319f25adfe35e3b6cc7c081157ecfa90c4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag30I",
      "number": 1579,
      "title": "New Finder Tabs inside same Finder window add \"empty\" node",
      "body": "### Body\n\nWhen I have a Finder window and I hit cmd+t to open a new tab, the new tab opens inside the current finder window as expected, but aerospace moves the layout as if there would be a second finder window. \r\nThe space, where the second finder window would be, stays empty. \r\nThe same happens when I open a third tab, then there are two empty node spaces.... etc.\r\n\r\nI'm using the latest aerospace version and macOS Ventura.\r\n\r\nI made a quick search but couldn't find something related –does this problem exist for anyone else?",
      "created_at": "2025-07-21T19:51:50Z",
      "updated_at": "2025-07-21T21:06:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lukaslindnermusic",
        "avatar_url": "https://avatars.githubusercontent.com/u/8149031?u=9a0fb64eb42c432378561f0e84f532ee64d6300b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag3v8",
      "number": 1578,
      "title": "Is it possible to auto-switch to the next workspace when focus hits the edge?",
      "body": "Hi, thanks for the awesome project! 🙌\r\n\r\nI’m wondering if there’s a way in Aerospace to automatically move to the next workspace when I try to focus on a window to the right (or left), but there’s no window in that direction — essentially, when the focus hits the edge of the current workspace.\r\n\r\nIs this currently supported?",
      "created_at": "2025-07-21T18:27:42Z",
      "updated_at": "2025-07-21T18:27:43Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yuvalco",
        "avatar_url": "https://avatars.githubusercontent.com/u/21064095?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag3Bl",
      "number": 1574,
      "title": "bug: the menu glitches out and workspaces aren't ordered correctly",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1.use the config provided with given aerospace version\r\n2.workspaces are using japanese numbers instead of the usual numbers\r\n\r\nExpected result:\r\nno glitches in menu\r\nworkspaces are ordered from 1 to 7\r\n\r\nActual result:\r\nworkspaces are ordered randomly\r\nmenu glitches out like crazy\r\n\r\n### Additional info\r\nim using japanese numbers for workspaces\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\nAeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\n```\r\n\r\nscreencapture: https://github.com/user-attachments/assets/b79250f8-aac6-4e0e-900c-e548f7445d27\r\nconfig:\r\n```toml\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n    \"exec-and-forget borders active_color=0xffa9eed6 inactive_color=0xff111d1e width=5.0\",\r\n    \"exec-and-forget open -na /Applications/Ghostty.app\",\r\n    \"exec-and-forget open -na /Applications/Brave Browser Nightly.app\",\r\n    \"exec-and-forget open -na /Applications/WhatsApp.app\",\r\n    \"exec-and-forget open -na /Applications/Vesktop.app\",\r\n    \"exec-and-forget open -na /Applications/Spotify.app\",\r\n    \"exec-and-forget open -na /Applications/Obsidian.app\",\r\n]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = true\r\n\r\n# Possible values: (qwerty|dvorak|colemak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\n    preset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See:\r\n#                 https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\n    inner.horizontal = 10\r\n    inner.vertical =   10\r\n    outer.left =       16\r\n    outer.bottom =     5\r\n    outer.top =        5\r\n    outer.right =      16\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.1password.1password\"\r\nrun = [\"layout floating\"]\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.finder\"\r\nrun = [\"layout floating\"]\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.Preview\" # Preview\r\nrun = \"layout floating\"\r\n[[on-window-detected]]\r\nif.app-id=\"com.mitchellh.ghostty\"\r\nrun= [ \"layout tiling\", \"move-node-to-workspace 一\" ]\r\n[[on-window-detected]]\r\nif.app-id=\"com.brave.Browser.nightly\"\r\nrun= \"move-node-to-workspace 二\"\r\n[[on-window-detected]]\r\nif.app-id=\"com.apple.Safari\"\r\nrun= \"move-node-to-workspace 二\"\r\n[[on-window-detected]]\r\nif.app-id = \"com.todesktop.230313mzl4w4u92\" # Cursor\r\nrun = \"move-node-to-workspace 三\"\r\n[[on-window-detected]]\r\nif.app-id = \"dev.zed.Zed-Preview\" # Zed\r\nrun = \"move-node-to-workspace 三\"\r\n[[on-window-detected]]\r\nif.app-id = \"md.obsidian\"\r\nrun = \"move-node-to-workspace 四\"\r\n[[on-window-detected]]\r\nif.app-id = \"notion.id\"\r\nrun = \"move-node-to-workspace 四\"\r\n[[on-window-detected]]\r\nif.app-id = \"com.tinyspeck.slackmacgap\" # Slack\r\nrun = \"move-node-to-workspace 五\"\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.mail\" # Mail\r\nrun = \"move-node-to-workspace 五\"\r\n[[on-window-detected]]\r\nif.app-id = \"net.whatsapp.WhatsApp\" # WhatsApp\r\nrun = \"move-node-to-workspace 五\"\r\n[[on-window-detected]]\r\nif.app-id = \"dev.vencord.vesktop\" # Discord\r\nrun = \"move-node-to-workspace 五\"\r\n[[on-window-detected]]\r\nif.app-id = \"com.spotify.client\"\r\nrun = \"move-node-to-workspace 六\" # Music; Spotify\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.Music\"\r\nrun = \"move-node-to-workspace 六\" # Music; Spotify\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.TV\"\r\nrun = \"move-node-to-workspace 七\"\r\n[[on-window-detected]]\r\nif.app-id = \"com.github.thaunknown.miru\" # hayase\r\nrun = \"move-node-to-workspace 七\"\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n    # All possible keys:\r\n    # - Letters.        a, b, c, ..., z\r\n    # - Numbers.        0, 1, 2, ..., 9\r\n    # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n    # - F-keys.         f1, f2, ..., f20\r\n    # - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon,\r\n    #                   backtick, leftSquareBracket, rightSquareBracket, space, enter, esc,\r\n    #                   backspace, tab, pageUp, pageDown, home, end, forwardDelete,\r\n    #                   sectionSign (ISO keyboards only, european keyboards only)\r\n    # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n    #                   keypadMinus, keypadMultiply, keypadPlus\r\n    # - Arrows.         left, down, up, right\r\n\r\n    # All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n    # All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n    # You can uncomment the following lines to open up terminal with alt + enter shortcut\r\n    # (like in i3)\r\n    alt-enter = '''exec-and-forget osascript -e 'tell application \"Ghostty\"\r\n      if it is running then\r\n      activate\r\n      tell application \"System Events\" to keystroke \"n\" using {command down}\r\n      else\r\n      activate\r\n      end if\r\n    end tell''''\r\n\r\n    cmd-shift-v = '''exec-and-forget osascript -e 'tell application \"System Events\" to set textToType to (the clipboard as text)' -e 'tell application \"System Events\"' -e 'delay 1' -e 'repeat with eachChar in characters of textToType' -e 'keystroke eachChar' -e 'delay 0.02' -e 'end repeat' -e 'end tell''''\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\n    alt-comma = 'layout tiles horizontal vertical'\r\n    alt-slash = 'layout accordion horizontal vertical'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\n    # vim-like focus keys\r\n    alt-h = 'focus left'\r\n    alt-j = 'focus down'\r\n    alt-k = 'focus up'\r\n    alt-l = 'focus right'\r\n\r\n    # fullscreen\r\n    alt-f = 'fullscreen'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#move\r\n    alt-shift-h = 'move left'\r\n    alt-shift-j = 'move down'\r\n    alt-shift-k = 'move up'\r\n    alt-shift-l = 'move right'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\n    alt-minus = 'resize smart -50'\r\n    alt-equal = 'resize smart +50'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\n    alt-1 = 'workspace 一' # terminal\r\n    alt-2 = 'workspace 二' # browser\r\n    alt-3 = 'workspace 三' # code\r\n    alt-4 = 'workspace 四' # notes\r\n    alt-5 = 'workspace 五' # chat around\r\n    alt-6 = 'workspace 六' # music\r\n    alt-7 = 'workspace 七' # anime/streaming\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\n    alt-shift-1 = 'move-node-to-workspace 一'\r\n    alt-shift-2 = 'move-node-to-workspace 二'\r\n    alt-shift-3 = 'move-node-to-workspace 三'\r\n    alt-shift-4 = 'move-node-to-workspace 四'\r\n    alt-shift-5 = 'move-node-to-workspace 五'\r\n    alt-shift-6 = 'move-node-to-workspace 六'\r\n    alt-shift-7 = 'move-node-to-workspace 七'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\n    alt-tab = 'workspace-back-and-forth'\r\n\r\n    # See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\n    alt-shift-semicolon = 'mode service'\r\n    alt-space = 'mode launch'\r\n\r\n    # See: https://github.com/nikitabobko/AeroSpace/issues/1097\r\n    alt-w = 'exec-and-forget current_workspace=\"$(aerospace list-workspaces --focused)\"; aerospace close; aerospace workspace \"$current_workspace\"'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\n    esc = ['reload-config', 'mode main']\r\n    r = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n    f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\n    backspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n    # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n    #s = ['layout sticky tiling', 'mode main']\r\n\r\n    alt-shift-h = ['join-with left', 'mode main']\r\n    alt-shift-j = ['join-with down', 'mode main']\r\n    alt-shift-k = ['join-with up', 'mode main']\r\n    alt-shift-l = ['join-with right', 'mode main']\r\n\r\n    down = 'volume down'\r\n    up = 'volume up'\r\n    shift-down = ['volume set 0', 'mode main']\r\n\r\n[mode.launch.binding]\r\n    esc = ['mode main']\r\n    t = [ '''exec-and-forget osascript -e 'tell application \"Ghostty\" to activate'''', 'mode main' ]\r\n    f = [ '''exec-and-forget osascript -e 'tell application \"Finder\" to activate'''', 'mode main' ]\r\n    c = [ '''exec-and-forget osascript -e 'tell application \"Cursor\" to activate'''', 'mode main' ]\r\n    b = [ '''exec-and-forget osascript -e 'tell application \"Brave Browser Nightly\" to activate'''', 'mode main' ]\r\n    w = [ '''exec-and-forget osascript -e 'tell application \"WhatsApp\" to activate'''', 'mode main' ]\r\n    o = [ '''exec-and-forget osascript -e 'tell application \"Obsidian\" to activate'''', 'mode main' ]\r\n    n = [ '''exec-and-forget osascript -e 'tell application \"Notion\" to activate'''', 'mode main' ]\r\n    d = [ '''exec-and-forget osascript -e 'tell application \"Vesktop\" to activate'''', 'mode main' ]\r\n    s = [ '''exec-and-forget osascript -e 'tell application \"Spotify\" to activate'''', 'mode main' ]\r\n    h = [ '''exec-and-forget osascript -e 'tell application \"Hayase\" to activate'''', 'mode main' ]\r\n    m = [ '''exec-and-forget osascript -e 'tell application \"Mail\" to activate'''',  'mode main' ]\r\n    z = [ '''exec-and-forget osascript -e 'tell application \"Zed Preview\" to activate'''', 'mode main' ]\r\n    alt-s = [ '''exec-and-forget osascript -e 'tell application \"Slack\" to activate'''', 'mode main' ]\r\n```\r\n",
      "created_at": "2025-07-21T06:34:21Z",
      "updated_at": "2025-07-21T09:10:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0w7_",
        "body": "Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1576"
      },
      "user": {
        "login": "0oAstro",
        "avatar_url": "https://avatars.githubusercontent.com/u/79555780?u=ab3d51c3028dfa5c5e23b680ac57b2d954263981&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ag3Ko",
      "number": 1575,
      "title": "Workspace reassignment",
      "body": "I’m using macOS so I have IntelliJ IDEA assigned to Alt+I and a browser assigned to Alt+B. This setup works well on the main Mac display.\r\n\r\nHowever, I typically use an external monitor for work. I’ve found that I cannot assign a workspace to a specific monitor. My external monitor is ultrawide, and I would like IDEA and the browser to be assigned to the same workspace when the external monitor is connected—not just to a specific monitor—because it’s quite uncomfortable otherwise in this particular use case. Ideally, when I press Alt+I or Alt+B, both applications (IntelliJ IDEA and the browser) should be displayed simultaneously on the screen—as a combined workspace.\r\n\r\n\r\nIs this kind of workspace reassignment possible?",
      "created_at": "2025-07-21T08:01:45Z",
      "updated_at": "2025-07-21T08:01:46Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "utopiaeh",
        "avatar_url": "https://avatars.githubusercontent.com/u/25262913?u=1ce36913fe0a676d2aba7068183ac90a4a9cb478&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgB1I",
      "number": 1447,
      "title": "workspace change sometime flicker back and forth",
      "body": "### Body\r\n\r\nHi I've updated from 0.17 to 0.18.5 and I've noticed an odd behavior that doesn't every time, but half of the time with some app. I got consistent bug result between Arc browser and a terminal, but I could replicate it with any window with less frequency.\r\n\r\nWhen I'm switching from `workspace 1` to `workspace 2` sometime aerospace will then quickly do `2 to 1` then back `1 to 2`.\r\n\r\nThis create visual glitch, and trigger `exec-on-workspace-change` quickly more than once.\r\n\r\nI've captured some log with `date` in the callback\r\n```\r\n2025-05-31T10:10:58,827812000+02:00 Workspace changed from 3 to 2 // I'm on workspace 3, I've sent `workspace 2`\r\n2025-05-31T10:11:00,492828000+02:00 Workspace changed from 2 to 3 // I'm on workspace 2, I've sent `workspace 3`\r\n2025-05-31T10:11:00,542340000+02:00 Workspace changed from 3 to 2 // I've never called that\r\n2025-05-31T10:11:00,558545000+02:00 Workspace changed from 2 to 3 // I've never called that\r\n```\r\n\r\nYou can notice how close in time they are.\r\nWorkspace 2 contained Arc, workspace 3 contained kitty.\r\n\r\nBy itself it wouldn't be that much of an annoyance, but the fact the callback is fired that close in time mess up the feedback I'm sending to `sketchybar` creating invalid UI state.\r\n\r\nI hope it well help you catch a bug, have a nice day",
      "created_at": "2025-05-31T08:21:14Z",
      "updated_at": "2025-07-21T06:03:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "OlivierLDff",
        "avatar_url": "https://avatars.githubusercontent.com/u/17255804?u=10d7c002af6a6ad9a44f95c36b4c58c63039bf8d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgKXP",
      "number": 1463,
      "title": "Scrolling window manager",
      "body": "Interesting demo of a horizontal scrolling window manager, Niri in Linux. https://youtu.be/r0JUm77inIA?si=adIBQLFEECFLZgQj",
      "created_at": "2025-06-09T01:08:40Z",
      "updated_at": "2025-07-20T15:51:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "malpern",
        "avatar_url": "https://avatars.githubusercontent.com/u/290917?u=98aae1c5e5a6425cac52cce7fd367595b50409c5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agy5K",
      "number": 1566,
      "title": "Aerospace not reading from default configs",
      "body": "I installed aerospace manually, since I don't have access to brew on this computer.\r\nI moved Aerospace.app to /Applications and the binary to PATH.\r\n\r\nI tried adding config first to `~/.aerospace.toml`\r\nSince it wasn't reading the config, I then moved it to  `~/.config/aerospace/aerospace.toml`\r\n\r\n```sh\r\n~\r\n❯ ls .config/aerospace/\r\naerospace.toml\r\n```\r\n\r\nHowever, when opening aerospace, it will read the config from:\r\n\r\n```sh\r\n~/Downloads\r\n❯ aerospace config --config-path\r\n/Applications/AeroSpace.app/Contents/Resources/default-config.toml\r\n```\r\n\r\nInterestingly enough, if you click on \"Edit config in 'TextEdit.app'\", it will open the config at `~/.config/aerospace/aerospace.toml`.\r\n\r\nI tried removing and adding the Aerospace.app a few different times, and restarting the computer. Nothing worked. Any thoughts on what I might be doing wrong?",
      "created_at": "2025-07-17T22:49:24Z",
      "updated_at": "2025-07-18T21:14:07Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0rSd",
        "body": "> I’m wondering if there are any differences in the version installed manually and the one installed through homebrew\r\n\r\nThere should be zero differences\r\n\r\n> Could there be security permissions that prevent it from accessing files outside the wrapped app on macOS sequioia?\r\n\r\nYou can test it by launching AeroSpace this way: `/Applications/AeroSpace.app/Contents/MacOS/AeroSpace --config-path ~/.aerospace.toml`"
      },
      "user": {
        "login": "pfassina",
        "avatar_url": "https://avatars.githubusercontent.com/u/1872247?u=3dc8a91f886a803f69469edb82463d60f5ec1130&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgzPT",
      "number": 1567,
      "title": "Overlay (child) ui components prevent from switching back and forth to the main app",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Open Visual Studio Code\r\n2. File -> Open Folder (that will open a file selector as a child UI component)\r\n3. Switch to different application in a different workspace, say Safari\r\n4. Try to return to the Visual Studio code using cmd + tab shortcut\r\n\r\nExpected result:\r\nYou should be able to see visual studio code together with \"Open folder\" overlay\r\n\r\nActual result:\r\nIn the macos menu bar \"app menu\" indicate it switched to the Code but you still see Safari. In this particular situation you can press \"Esc\" to close overlay which refocuses Code. This problem exists with other overlays in different programs, but not all overlays close on ESC unfortunately. You can still return to the workspace with an app as a workaround. \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\nAeroSpace.app server version: 0.19.1-Beta bcdf20b8388b1eecd97b7ce97f64c0759be310c8\r\n```\r\n",
      "created_at": "2025-07-18T08:27:00Z",
      "updated_at": "2025-07-18T10:14:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0qQB",
        "body": "Converted to an issue https://github.com/nikitabobko/AeroSpace/issues/1568"
      },
      "user": {
        "login": "pszypowicz",
        "avatar_url": "https://avatars.githubusercontent.com/u/2733699?u=9673deaeb3e23b73a7d95a893a64996c6d312c6e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgytJ",
      "number": 1565,
      "title": "Simulator not working in tiles mode",
      "body": "I've been playing with AeroSpace and it's working great so far and it might improve my workflow so thanks for that! 🙏\r\n\r\nThe only thing missing or maybe it's a bug, is that the Simulator window is always considered as floating while I would like to be able to use it as a tile as well. Is this a bug or am I missing something?\r\n\r\nAlso, not sure it's an existing option but would love to be able to select a default maximum size for specific apps like the Simulator. My use case would typically be to make the Simulator takes a small space next to my IDE on opening.\r\n\r\n<img width=\"1512\" height=\"982\" alt=\"image\" src=\"https://github.com/user-attachments/assets/02859a41-22c6-48c0-a76d-b0a6047af857\" />\r\n",
      "created_at": "2025-07-17T19:40:22Z",
      "updated_at": "2025-07-17T19:54:27Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "qeude",
        "avatar_url": "https://avatars.githubusercontent.com/u/19294297?u=73b5f5f6b0a5db05c789e3d91ea4428170420090&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agx2I",
      "number": 1561,
      "title": "`move-node-to-workspace` returns non-zero exit code",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Run a `move-node-to-workspace` command like `aerospace move-node-to-workspace 6 --window-id 239` where the window is not already on the target workspace\r\n2. See that the window got moved successfully\r\n3. Check exit code with `echo $?`\r\n\r\nExpected result: Since the window got successfully moved the command should return a 0 exit code.\r\nActual result: It returns an exit code of 1.\r\n\r\n### Additional info\r\n\r\nThis started happening recently, it worked fine until some time ago. The change broke my scratchpad script since it has `errexit` set.\r\n\r\nIronically it does return a 0 exit code if the window is already on the target workspace.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n",
      "created_at": "2025-07-16T23:51:23Z",
      "updated_at": "2025-07-17T10:30:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0mrE",
        "body": "Thank you for reporting. Reproduced. Converted to issue https://github.com/nikitabobko/AeroSpace/issues/1563"
      },
      "user": {
        "login": "janlarres",
        "avatar_url": "https://avatars.githubusercontent.com/u/465527?u=7f8e4aacc78a19c779ad87cd8a8e5779dba97fd1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgwR-",
      "number": 1553,
      "title": "workspace focus goes back after changing using choose",
      "body": "I like `Aerospace` and how it can be integrated with other tools like [choose](https://github.com/chipsenkbeil/choose).\r\n`choose` is basically `fzf` with a GUI.\r\n\r\nI have these 2 commands that I want to assign shortcuts to:\r\n\r\n```\r\n# shows list of windows in current workspace, user chooses, window get focus\r\naerospace list-windows --workspace $(aerospace list-workspaces --focused) | choose -w 80 | awk '{print $1}' | xargs -r aerospace focus --window-id\r\n\r\n# shows list of workspaces, user chooses, workspace should get focus\r\naerospace list-workspaces --all | choose | xargs -r aerospace workspace\r\n```\r\n\r\nThe first shortcut works perfectly.\r\nThe second command is very similar but it doesn't work: shows list of workspaces, I choose one, focus goes to that workspace but quickly goes back to the workspace that had the focus initially.\r\n\r\nI have tried several variations like the one below but all behave the same:\r\n\r\n`aerospace list-workspaces --all | choose | awk '{print $1}' | xargs -r -I{} aerospace workspace \"{}\"`\r\n\r\nIn all variations if I replace `choose` with `fzf` it works!\r\n\r\nIt is very weird, `choose` or `fzf` output in the end is just one string: the name of a workspace, then the aerospace command is exactly the same. Why it works with `fzf` but not with `choose`? Any idea?\r\n\r\n\r\n\r\n**Steps to reproduce**\r\n\r\n1. Install choose: `brew install choose-gui`\r\n2. Run this command: `aerospace list-workspaces --all | choose | awk '{print $1}' | xargs -r -I{} aerospace workspace \"{}\"`\r\n3. Can you choose a workspace and focus it?",
      "created_at": "2025-07-15T12:01:29Z",
      "updated_at": "2025-07-16T10:35:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0jOK",
        "body": "Created an issue: https://github.com/nikitabobko/AeroSpace/issues/1560"
      },
      "user": {
        "login": "borislopezaraoz",
        "avatar_url": "https://avatars.githubusercontent.com/u/2962801?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgxLi",
      "number": 1559,
      "title": "Clicking on password manager window goes to its workspace",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Firefox in workspace 1\r\n2. Keepassxc in workspace 9\r\n3. the keepass extension asks for authorization which opens a popup from keepassxc\r\n4. it then goes to workspace 9 when I try to click on \"Authorize\"\r\n5. I have to move back to the browser workspace and click furiously (often have to get a double click in to make it work)\r\n\r\nExpected result: clicking the window doesn't move me back to the workspace keepassxc is in\r\nActual result: it eats the click and moves to the keepassxc workspace\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n",
      "created_at": "2025-07-16T09:24:23Z",
      "updated_at": "2025-07-16T09:25:09Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "matthieu-db",
        "avatar_url": "https://avatars.githubusercontent.com/u/170411151?u=30df7513a15958875ca95643bd3ee0a55baff07b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgxCS",
      "number": 1558,
      "title": "Is there a way to configure the workspaces list based on the numeber of devices connected?",
      "body": "Is there a way to configure the workspaces list based on the number of devices connected?\r\nExample.\r\nSay I have one monitors, I would need only 1-5 workspaces\r\nSay I habe two montors, I want to use workspace 1-10, 5 on each\r\nSay I have three monitors, I want to use workpaces 1-10, A-E \r\n\r\nIs such an option available?",
      "created_at": "2025-07-16T06:26:52Z",
      "updated_at": "2025-07-16T06:26:53Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "asnimansari",
        "avatar_url": "https://avatars.githubusercontent.com/u/10102690?u=b2083b299b7b4fece3733d5bba53ad0868e27dbc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agw07",
      "number": 1557,
      "title": "\"Square Images\" menu bar style is too large",
      "body": "I _love_ the new \"Square images\" menu bar style that seems to have appeared in v0.19, but I think the squares themselves are too big and don't match the size of other square/rectangular icons in the bar.\r\n\r\nOn the top is a screenshot of Aerospace, on the bottom I resized it in Photoshop to match the size of the other items in the menu bar. \r\n\r\nI love the new style though, cheers.\r\n \r\n<img width=\"456\" height=\"82\" alt=\"CleanShot 2025-07-15 at 19 47 36@2x\" src=\"https://github.com/user-attachments/assets/fe75d9b4-54ad-4872-8bf9-508b3f218844\" />\r\n",
      "created_at": "2025-07-16T00:12:06Z",
      "updated_at": "2025-07-16T02:51:56Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rschenk",
        "avatar_url": "https://avatars.githubusercontent.com/u/14730?u=097071e28b95bbf95e784fa53444222bf0bbba69&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agwfg",
      "number": 1554,
      "title": "Runtime Error - Windows always have parent",
      "body": "### Body\n\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-07-15 15:34:53 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 14.4.1 (Build 23E224)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001031453a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000102fddb1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x0000000102fdcbdc $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000102fd4e6c $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000102fae93d $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000102fa2035 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ21_ + 1\r\n6   AeroSpace                           0x0000000102fa496d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTwBSbSg_ytTg5064$s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03Runp21GuardVxyYaYbKScMYcXEtv5KlFxyv8KXEfU_xyV12KXEfU_yt_Tg5xs5Error_pRi_zRi0_zlyytIsghHrzo_6Common0olQ0OTf1nncnnnn_nTQ2_ + 1\r\n7   AeroSpace                           0x0000000102fa0765 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ2_ + 1\r\n8   AeroSpace                           0x0000000102fa467d $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTwB6Common19RefreshSessionEventOSg_ytTg5017$s9AppBundle10runk17__4bodyx6Common07j2D5l9O_AA03Runr21GuardVxyYaYbKScMYcXEtw5KlFxyW12KXEfU_yt_Tg5AKxs5Error_pRi_zRi0_zlyytIsghHrzo_Tf1nncnnnn_nTQ2_ + 1\r\n9   AeroSpace                           0x0000000102f9dc25 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ2_ + 1\r\n10  AeroSpace                           0x0000000102f84305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n11  AeroSpace                           0x0000000102f383f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n12  libswift_Concurrency.dylib          0x00000002600ab0f9 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-07-15T15:53:51Z",
      "updated_at": "2025-07-15T16:27:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0hFN",
        "body": "Please update, it has already been fixed"
      },
      "user": {
        "login": "zolstein",
        "avatar_url": "https://avatars.githubusercontent.com/u/7101542?u=d460d1bf725f870289d131be5e05eaed3894fb28&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgrFA",
      "number": 1536,
      "title": "Slack huddle draw not visible when sharing a screen",
      "body": "Steps to reproduce:\r\n1. Have aerospace running\r\n2. Open Slack and go into huddle with someone and share your screen\r\n3. Someone tries to draw and I'm not able to see what they're drawing \r\n\r\nExpected result: See the drawings that they make via huddle\r\nActual result: Not seeing anything\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\n```\r\n#aerospace.toml\r\n\r\nafter-login-command = []\r\nafter-startup-command = []\r\nstart-at-login = true\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 30\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\nkey-mapping.preset = 'qwerty'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n[gaps]\r\ninner.horizontal = 18\r\ninner.vertical =   18\r\nouter.left =       18\r\nouter.bottom =     18\r\nouter.top =        18\r\nouter.right =      18\r\n\r\n[mode.main.binding]\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-b = 'workspace B'\r\nalt-e = 'workspace E'\r\nalt-m = 'workspace M'\r\nalt-n = 'workspace N'\r\nalt-p = 'workspace P'\r\nalt-t = 'workspace T'\r\nalt-v = 'workspace V'\r\nalt-s = 'workspace S'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-b = 'move-node-to-workspace B'\r\nalt-shift-e = 'move-node-to-workspace E'\r\nalt-shift-m = 'move-node-to-workspace M'\r\nalt-shift-n = 'move-node-to-workspace N'\r\nalt-shift-p = 'move-node-to-workspace P'\r\nalt-shift-t = 'move-node-to-workspace T'\r\nalt-shift-v = 'move-node-to-workspace V'\r\nalt-shift-s = 'move-node-to-workspace S'\r\n\r\nalt-shift-f = 'fullscreen'\r\n\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n[workspace-to-monitor-force-assignment]\r\n7 = '^built-in retina display$'\r\n\r\nalt-shift-semicolon = 'mode service'\r\n\r\nalt-shift-r = 'mode resize'\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nb = 'balance-sizes'\r\n\r\nminus = 'resize smart -50'\r\nequal = 'resize smart +50'\r\n\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.alacritty'\r\nrun = \"move-node-to-workspace T\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'\r\nrun = \"move-node-to-workspace M\"\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.google.Chrome'\r\n# run = \"move-node-to-workspace B\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Notes'\r\nrun = \"move-node-to-workspace N\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nrun = \"move-node-to-workspace S\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.alacritty'\r\nrun = \"move-node-to-workspace T\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nif.window-title-regex-substring = 'Picture-in-Picture'\r\nrun = 'layout floating'\r\n```\r\n",
      "created_at": "2025-07-10T18:31:22Z",
      "updated_at": "2025-07-15T02:52:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kecerud",
        "avatar_url": "https://avatars.githubusercontent.com/u/75565018?u=18ebd66a66f8ea139c019f239b899673c763a9a5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgvK9",
      "number": 1550,
      "title": "Electron apps are not getting closed by `close` keymap/command.",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open electron based apps, (The apps I am facing this on are `Discord` & `Zulip`)\r\n2. Press the keybind to close the app -> `aerospace close`.\r\n\r\nExpected result: The application should close itself.\r\nActual result: The application does a quick flash and the focus switches to another application that is present on the workspace.\r\n\r\n### Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-07-14T11:54:52Z",
      "updated_at": "2025-07-14T13:02:55Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0ddX",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/503#issuecomment-2341993876"
      },
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgvDh",
      "number": 1549,
      "title": "add support for ```--silent``` option when using ```move-node-to-workspace```",
      "body": "Was unable to find this is current documentation, so I'm guessing this feature is not available. It would be amazing to be able to move a newly created application window to a workspace without switching to it afterwards. This could work as a --silent, --not-follow or any similar flag passed with move-node-to-workspace. This would ensure the node is moved, but not switched to.",
      "created_at": "2025-07-14T09:23:58Z",
      "updated_at": "2025-07-14T09:24:00Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DronovasP",
        "avatar_url": "https://avatars.githubusercontent.com/u/95548781?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AguxH",
      "number": 1548,
      "title": "Heating Issues in M4",
      "body": "I am using a basic config, limiting myself to 5 workspace.\r\nAerospace has started causing heating issues suddenly.\r\nCan anyone throw some light on, why this might be happening....",
      "created_at": "2025-07-14T06:34:14Z",
      "updated_at": "2025-07-14T08:17:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "GeneCodeSavvy",
        "avatar_url": "https://avatars.githubusercontent.com/u/65808871?u=af7e0c8fba48f66e121220b0a05a72bcec0c41b7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AggY1",
      "number": 1523,
      "title": "Ability to set window position for floating windows?",
      "body": "I have made a script that keeps my browsers PIP window on the active workspace, but sometimes it's position is the way of the app/task I am working on, I'm looking for a way to setup 4 key binds:\r\n\r\n- move window to top left\r\n- move window to top right\r\n- move window to bottom left\r\n- move window to bottom right\r\n\r\nI think this could be done with a single command something like this:\r\n`position-window corner,x,y`\r\n\r\nWhere corner is something like a value of 1-4 for the reference point on window to be moved to the coordinate as per below:\r\n\r\n- 1: top left\r\n- 2: top right\r\n- 3: bottom left\r\n- 4: bottom right\r\n\r\nAnd x,y are the screen position to move the specified corner to:\r\n\r\n- Ideally accepting a **pixel or percentage value** \r\n\r\nSo that I could make a rule that would work across different displays having differing resolutions.\r\n\r\n",
      "created_at": "2025-07-02T08:21:19Z",
      "updated_at": "2025-07-14T00:11:39Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ItsVRK",
        "avatar_url": "https://avatars.githubusercontent.com/u/91353717?u=941131b1965a652ee03c19fe527cfc627dd3e477&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfxpY",
      "number": 1416,
      "title": "Fullscreen window and minimize others",
      "body": "Hey i use transparent terminal and when i fullscreen a window other windows in the same workspace are still visible \r\n![Screenshot 2025-05-15 at 15 11 57](https://github.com/user-attachments/assets/a3b0bac5-24e0-428c-86e8-224e09999304)\r\n\r\nis there option to fullscreen window and minimize other windows",
      "created_at": "2025-05-15T13:19:35Z",
      "updated_at": "2025-07-13T16:40:15Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyQ3d",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1424"
      },
      "user": {
        "login": "KalbarczykDev",
        "avatar_url": "https://avatars.githubusercontent.com/u/106467480?u=e696b6fc5a318f903c1dd4ff91d4e539ec86f410&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgsQU",
      "number": 1542,
      "title": "iOS Simulator Window Doesn't Float Like Other Small Windows",
      "body": "Hi! I noticed that the iOS Simulator window in Xcode behaves differently from other small windows in Aerospace. With my config, other non-fullscreen Aerospace puts them in floating mode automatically, but the Simulator window always sticks to the left side of the screen instead of floating.\r\n\r\nHere’s a short video showing the issue (attached).\r\n\r\nIs this a known limitation or is there a workaround? Thanks!\r\n\r\nMy config:\r\n\r\n```toml\r\nstart-at-login = true\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\naccordion-padding = 0\r\ndefault-root-container-layout = 'accordion'\r\ndefault-root-container-orientation = 'horizontal'\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical = 0\r\nouter.left = 0\r\nouter.bottom = 0\r\nouter.top = 0\r\nouter.right = 0\r\n\r\n[mode.main.binding]\r\nalt-slash = 'layout tiles horizontal'\r\nalt-comma = 'layout accordion horizontal vertical'\r\nalt-shift-semicolon = 'mode service'\r\n# ...... more key bindings\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main']\r\nf = ['layout floating tiling', 'mode main']\r\n# ...... more bindings\r\n```\r\n\r\nhttps://github.com/user-attachments/assets/80342adc-e132-472b-a271-818eeacb64ef",
      "created_at": "2025-07-12T01:00:56Z",
      "updated_at": "2025-07-13T11:40:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0bUD",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1547"
      },
      "user": {
        "login": "arilebedey",
        "avatar_url": "https://avatars.githubusercontent.com/u/34816154?u=4057345bb992ffb5f484e61163928468d2fced23&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgrHq",
      "number": 1537,
      "title": "NoMachine - Aerospace forcefully jumps back to previous workspace",
      "body": "### Body\n\nHi all,\r\nThis appears to happen only for a specific application called NoMachine which is a remote desktop viewer. When I switch to a workspace containing NoMachine with a remote desktop session running, the window does not focus in time and Aerospace jumps back to the previous workspace. By this point NoMachine is focused, but I am not in the right workspace. From here, I need to switch to the workspace containing NoMachine again and this time no forceful workspace jump occurs. \r\n\r\nSteps to reproduce:\r\n1. Start a remote desktop session with NoMachine on workspace 1\r\n2. Go to workspace 2\r\n3. Go back to workspace 1\r\n\r\nExpected result: Stay on workspace 1 with NoMachine in focus\r\nActual result: Forces a jump back to workspace 2. \r\n\r\n### Additional info\r\nIf I use an application like Raycast to focus an NoMachine specifically with a keybind, the same behavior as the above occurs. It gets focused but immediately jumps back to workspace 2. Is there any way to debug this behavior? It does seem to be strictly when a remote desktop session is in progress, and it doesn't matter which application I start from -- the forced jump happens regardless.\r\n\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n❯ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n",
      "created_at": "2025-07-10T19:43:58Z",
      "updated_at": "2025-07-13T10:30:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0bPj",
        "body": "Reproduced with welcome window. Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1546"
      },
      "user": {
        "login": "stexus",
        "avatar_url": "https://avatars.githubusercontent.com/u/25596123?u=83725c10d802dd1d64499f66b816d43da2a5fb85&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgsCe",
      "number": 1541,
      "title": "CleanshotX does not work when Aerospace is enabled",
      "body": "### Body\n\nPrerequisites\r\n1. Must have a CleanShotX installed\r\n2. Quit Aerospace if already running\r\n3. Quit CleanShotX if already running\r\n\r\nSteps to reproduce:\r\n1. Turn on CleanShotX\r\n2. Hit `cmd+shift+5` or select `All In one` option from the menu bar\r\n3. See things working good\r\n4. Now turn on Aerospace\r\n5. Repeat step 2\r\n\r\n\r\nExpected result:\r\nCleanShotX should work exactly fine as before\r\nActual result:\r\nCleanShotX suffers with multiple issues, like double UI wrong backdrop overlay and many more\r\n\r\n### Additional info\r\nI tried to reproduce this, but the it behaves very different every time I try, this did not happen before 2 or 3 upgrades.\r\nI upgrade to latest and still this issue reproduces\r\n\r\nhttps://github.com/user-attachments/assets/ced0065d-feae-41d8-9617-1df3c6ecb132\r\n\r\n\r\n\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\n```\r\naerospace CLI client version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\nAeroSpace.app server version: 0.19.0-Beta 1bc5df2846a54932849af5b5ce15597129e07fa0\r\n```\r\n",
      "created_at": "2025-07-11T17:17:39Z",
      "updated_at": "2025-07-12T14:26:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sairajchouhan",
        "avatar_url": "https://avatars.githubusercontent.com/u/57995897?u=4f853f5b2095c926a7a45ca3abe27c0fef824074&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgryK",
      "number": 1540,
      "title": "Window focus reverts after using aerospace focus with choose-gui or dmenu applications",
      "body": "The following command lists windows using `choose-gui`, and selecting one should focus on it (kind of like `dmenu` behavior):\r\n\r\n```nix\r\naerospace focus --window-id $(aerospace list-windows --all | nix run nixpkgs#choose-gui | awk '{print $1}')\r\n```\r\n\r\nHowever, what actually happens is that it focuses the selected window momentarily, but instantly switches back to the originally focused window.\r\n",
      "created_at": "2025-07-11T12:55:07Z",
      "updated_at": "2025-07-12T11:20:38Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0aE0",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/236#issuecomment-3065044241\r\n\r\nThis is the other way around — it happens because the GUI application tries to steal back the focus.\r\nHence, in the script, the UI application should be closed before changing the focus."
      },
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgrNg",
      "number": 1539,
      "title": "v0.19.0-Beta",
      "body": "**New features**\r\n- [#711](https://github.com/nikitabobko/AeroSpace/issues/711) Different menu bar styles. By @mobile-ar\r\n- [#183](https://github.com/nikitabobko/AeroSpace/issues/183) Add `--boundaries` and `--boundaries-action` options for move command. By @gabsrp2002\r\n- [#248](https://github.com/nikitabobko/AeroSpace/issues/248) Support `focus dfs-next` / `focus dfs-prev`. By @rickyz\r\n- [#8](https://github.com/nikitabobko/AeroSpace/issues/8) Implement `swap` command. By @rickyz\r\n- [#191](https://github.com/nikitabobko/AeroSpace/issues/191) Show application names in corresponding workspaces in menu bar\r\n- [#1026](https://github.com/nikitabobko/AeroSpace/issues/1026) Support `--json` and `--count` in `list-modes` command. By @MikaelCarpenter\r\n\r\n**Bug fixes**\r\n- [#1216](https://github.com/nikitabobko/AeroSpace/issues/1216) Windows may randomly jump to the focused workspace\r\n- [#1425](https://github.com/nikitabobko/AeroSpace/issues/1425) `move-node-to-monitor` `right`/`down` should place the windows to the most left/up available position\r\n- [#164](https://github.com/nikitabobko/AeroSpace/issues/164) `CGPoint.findIn` crash\r\n- [#1492](https://github.com/nikitabobko/AeroSpace/issues/1492) Floating windows could appear off-screen\r\n\r\n**Improvements**\r\n- [#276](https://github.com/nikitabobko/AeroSpace/issues/276) Better dialog heuristics for qutebrowser without decorations\r\n- [#1482](https://github.com/nikitabobko/AeroSpace/issues/1482) `start-at-login = true` now registers AeroSpace as a proper Login Item in System Settings\r\n\r\n**Breaking changes**\r\n- Forbid empty string in workspace names\r\n- [#1423](https://github.com/nikitabobko/AeroSpace/issues/1423) Drop `--fail-if-noop` from `move-node-to-monitor <direction>`\r\n- [#1482](https://github.com/nikitabobko/AeroSpace/issues/1482) Deprecate non-empty `after-login-command`\r\n\r\n\\- Nikita Bobko, 11 July 2025\r\n\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/nikitabobko/AeroSpace/releases/tag/v0.19.0-Beta'>v0.19.0-Beta</a>.</em>",
      "created_at": "2025-07-10T22:36:32Z",
      "updated_at": "2025-07-12T09:12:22Z",
      "category": {
        "name": "announcements-releases",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgsRf",
      "number": 1543,
      "title": "Find the visible window-id that is currently in the center of the monitor",
      "body": "Hi all,\r\n\r\nI’m trying to find ways to detect which window is currently in the center of my monitor. I have widescreen monitor so I like to run scripts that moves the focused window to the center position. Usually I would have 3 windows.\r\n\r\nCurrently, the best workaround I’ve found is to:\r\n\r\nMove the mouse to the center of the monitor (monitor-force-center)\r\n\r\nSimulate a mouse click using cliclick\r\n\r\nThis works, but it feels a bit hacky. Is there a more reliable or native way within Aerospace to detect or focus the window that's visually centered on screen?\r\n\r\nAny suggestions or best practices would be appreciated!\r\n\r\nThanks!",
      "created_at": "2025-07-12T02:07:57Z",
      "updated_at": "2025-07-12T02:07:59Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jermgilb",
        "avatar_url": "https://avatars.githubusercontent.com/u/21963687?u=2aed5d91ba307f669df848f7e9e932db27f8cd14&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agqkn",
      "number": 1535,
      "title": "What's proper macos text input for shift+alt shortcuts?",
      "body": "After an update all shortcuts like shift+alt+$CHAR stops working. E.g.:  instead of shift+alt+2 macos produce \"Ř\". shift+alt+ctrl+2 works normally",
      "created_at": "2025-07-10T09:49:13Z",
      "updated_at": "2025-07-10T09:49:14Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "przemyslawjanpietrzak",
        "avatar_url": "https://avatars.githubusercontent.com/u/9966695?u=d91d68a253f94e13843d6c73917345122e1d4350&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad1Y7",
      "number": 980,
      "title": "Freeze/Delay after opening Godot",
      "body": "Whenever I open the Godot app, I experience delays. Aerospace seems to slow down entirely. I attached a video that shows how much slower switching between workspaces becomes after opening Godot. While it might be an issue with Godot itself, the only app that slows down is Aerospace, and switching between windows/applications shows no delay outside of Aerospace.\r\n\r\nI also included my keystrokes so you could see the delay between pressing and switching workspaces after Godot is opened.\r\n\r\nhttps://github.com/user-attachments/assets/4c9df684-2597-49e0-ade6-1a1eb13066bd\r\n",
      "created_at": "2025-01-13T20:19:46Z",
      "updated_at": "2025-07-09T15:28:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Summma",
        "avatar_url": "https://avatars.githubusercontent.com/u/59035863?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AenZJ",
      "number": 1154,
      "title": "Position AeroSpace spaces side-by-side in mission control for a quick overview",
      "body": "Hi all, I'm coming from Yabai and recently started testing AeroSpace as an alternative. I love how responsive it is, reminding me of i3 days. I also like that it uses it's own implementation of \"virtual\" workspaces as opposed to using MacOS spaces with all their limitations.\r\n\r\nHowever, one feature I'm missing is a way to get a quick overview of all my open windows, without having to switch through all my 10 spaces sequentially (and by the end I've already forgotten some of them).\r\n\r\nCurrently, the mission control overview does show the windows of AeroSpace spaces, just very far away from each other and in seemingly random corners. Would it be hard for AeroSpace to position its virtual spaces in a neat grid of a size that can be configured in `~/.aerospace.toml`?\r\n\r\nCurrent:\r\n\r\n![image](https://github.com/user-attachments/assets/088f5719-d581-4740-8d89-f100ea438d10)\r\n\r\nSuggested:\r\n\r\n![image](https://github.com/user-attachments/assets/88b45206-6eb9-443a-aab3-f4bdd6aa8daf)\r\n\r\n\r\nNB: I'm aware of AeroSpace's philosophy of avoiding GUI elements, and if this is considered low-priority or undesirable I understand. I just wanted to bring this up because it would eliminate a significant pain point for me as a user.",
      "created_at": "2025-02-28T16:49:50Z",
      "updated_at": "2025-07-09T13:28:57Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danijar",
        "avatar_url": "https://avatars.githubusercontent.com/u/2111293?u=ab16f8dc9000d2aa5a6e193fb22fe246ebd01a74&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgoMt",
      "number": 1528,
      "title": "Gen we get a --fail-if-noop on move command",
      "body": "Title is clear,\r\nmy usage:\r\n```sh\r\nmove right --fail-if-noop || move-node-to-monitor right --focus-follows-window\r\n```\r\n\r\nif someone has a way to do this without a new feature it would be awesome workaround :D ",
      "created_at": "2025-07-08T07:43:50Z",
      "updated_at": "2025-07-09T10:16:32Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0Q3f",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/183"
      },
      "user": {
        "login": "alchemistake",
        "avatar_url": "https://avatars.githubusercontent.com/u/9083268?u=fcc596c767ace8732e9a62dcb68bb1fda3666ad3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgpIq",
      "number": 1530,
      "title": "6 Crashes in 3 Days- MoveMouseCommand",
      "body": "### Body\n\nVery cool program, and I'm loving it, but getting a little scared to use it due to frequency of crashes I seem to be inducing.\r\n\r\nSteps to reproduce:\r\n\r\nNot sure as it's intermittent.\r\n\r\nGenerally, active moving windows around, creating nodes, and moving between tile and carousel. \r\n\r\nComplete crash and I need to restart and layout my windows again.\r\n\r\nAny insights from the below?\r\n\r\n### Additional info\r\nI was being very ambitious learning the tool and doing A lot of workspace and tile moving. Maybe I'm moving tiles around too quickly?\r\n\r\n```shell\r\n$ aerospace -v = aerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\nConsole (4 of 6 crashes over 3 days were similar with runCmdSeq and MoveMouseCommand):\r\n\r\n0   AeroSpace                     \t       0x1046ea4f4 specialized MoveMouseCommand.run(_:_:) + 512\r\n1   AeroSpace                     \t       0x1046dc2ed <deduplicated_symbol> + 1\r\n2   AeroSpace                     \t       0x1046bc431 Array<A>.runCmdSeq(_:_:) + 1\r\n3   AeroSpace                     \t       0x104716bcd closure #1 in closure #1 in onFocusChanged(_:) + 1\r\n4   AeroSpace                     \t       0x1046b49b1 <deduplicated_symbol> + 1\r\n5   AeroSpace                     \t       0x10471bf61 specialized closure #1 in closure #1 in runSession<A>(_:_:body:) + 1\r\n6   AeroSpace                     \t       0x1046b49b1 <deduplicated_symbol> + 1\r\n7   libswift_Concurrency.dylib    \t       0x286ccc461 TaskLocal.withValueImpl<A>(_:operation:isolation:file:line:) + 1\r\n8   libswift_Concurrency.dylib    \t       0x286ccc109 TaskLocal.withValue<A>(_:operation:isolation:file:line:) + 1\r\n9   AeroSpace                     \t       0x10471aab1 specialized closure #1 in runSession<A>(_:_:body:) + 1\r\n10  AeroSpace                     \t       0x1046b49b1 <deduplicated_symbol> + 1\r\n11  libswift_Concurrency.dylib    \t       0x286ccc461 TaskLocal.withValueImpl<A>(_:operation:isolation:file:line:) + 1\r\n12  libswift_Concurrency.dylib    \t       0x286ccc109 TaskLocal.withValue<A>(_:operation:isolation:file:line:) + 1\r\n13  AeroSpace                     \t       0x104717f85 specialized runSession<A>(_:_:body:) + 1\r\n14  AeroSpace                     \t       0x1047168e9 <deduplicated_symbol> + 1\r\n15  AeroSpace                     \t       0x1046b43f5 <deduplicated_symbol> + 1\r\n16  libswift_Concurrency.dylib    \t       0x286d0083d completeTaskWithClosure(swift::AsyncContext*, \r\n\r\n",
      "created_at": "2025-07-09T03:54:01Z",
      "updated_at": "2025-07-09T10:01:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "n1cholasv",
        "avatar_url": "https://avatars.githubusercontent.com/u/31188?u=716e351394e6b3cca0fd1aadc5223a3aaebb9ea2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgpOK",
      "number": 1531,
      "title": "Tied Workspaces",
      "body": "In multi-monitor setup, opening workspace 1 on monitor A would automatically open tied workspaces on the other monitors, e.g., workspace 3 in monitor B. The ties could be defined on the fly or through the settings.",
      "created_at": "2025-07-09T05:40:56Z",
      "updated_at": "2025-07-09T05:40:57Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nmder",
        "avatar_url": "https://avatars.githubusercontent.com/u/25340239?u=fce9399294e30645578d9938e068479c7d2c6cb0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgM-K",
      "number": 1469,
      "title": "All Windows Move to Same Workspace After Sleep",
      "body": "After waking my PC from sleep, all my windows move to the same workspace/monitor. I have to manually reposition them to their original monitors, Is there a way to fix this or preserve window positions across sleep/wake?\r\n\r\n",
      "created_at": "2025-06-11T13:17:38Z",
      "updated_at": "2025-07-08T11:52:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlejandroSanchez90",
        "avatar_url": "https://avatars.githubusercontent.com/u/127575426?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AghZv",
      "number": 1524,
      "title": "All windows move to space 1 after unlock",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Use Raycast to lock your screen\r\n2. Wait\r\n3. Unlock\r\n\r\nExpected result: All windows are still on the space you left them\r\nActual result: All windows are moved to Space 1 (and one particular program is \"trapped\" in the bottom right corner, I have to go to that space and drag it out of the corner)\r\n\r\n### Additional info\r\n\r\nThis doesn't happen all the time, I don't know what exactly could be causing it. It's really frustrating though, particularly getting KakaoTalk (the one that disappears entirely and can't be retrieved easily). I suspect that one gets trapped because it is a floating window (since each chat is its own window in that app).\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-07-03T07:33:19Z",
      "updated_at": "2025-07-04T09:10:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4A0HR3",
        "body": "Duplicate of #1216\r\n\r\nThere are long term plans on how to fix the bug (read the issue), but if you can identify what makes the bug more likely to trigger, it will be helpful to report it back\r\n\r\n1. Some specific apps may the bug more probable (especially the ones that require accessibility permission)\r\n2. Some usage patterns may also make the bug more probable #1522"
      },
      "user": {
        "login": "jonathanabennett",
        "avatar_url": "https://avatars.githubusercontent.com/u/17274248?u=8990964fa777e08e817ff86de3ecb6a505ccba36&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZGI",
      "number": 1329,
      "title": "I have spaces 11 and 12 despite only 10 (0 to 9) defined",
      "body": "I’ve configured AeroSpace to only ever use workspaces 1–9 (and then letters A, B). However, AeroSpace still creates spaces 11–12 automatically when I connect a second external monitor\r\n\r\nAlso, the workspace to monitor assignment is not working. Workspaces 11 and 12 are assigned to builtin and the second monitor respectively.\r\n\r\nThis is my `~/.aerospace.toml`:\r\n   \r\n```toml\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n    # JankyBorders has a built-in detection of already running process,\r\n    # so it won't be run twice on AeroSpace restart\r\n    'exec-and-forget borders active_color=0xff00e3e4 inactive_color=0xff494d64 width=5.0',\r\n    # Notify that AeroSpace has started\r\n    'exec-and-forget curl -s -G -d \"message=Aerospace%20started\"  \"http://localhost:8765/service-mode\" > /dev/null',\r\n]\r\n\r\n\r\non-focus-changed = [\r\n    \"exec-and-forget osascript -e 'tell application id \\\"tracesOf.Uebersicht\\\" to refresh widget id \\\"simple-bar-index-jsx\\\"'\",\r\n]\r\n\r\nexec-on-workspace-change = [\r\n    '/bin/zsh',\r\n    '-c',\r\n    '/usr/bin/osascript -e \"tell application id \\\"tracesOf.Uebersicht\\\" to refresh widget id \\\"simple-bar-index-jsx\\\"\"',\r\n]\r\n\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 40\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\nautomatically-unhide-macos-hidden-apps = true\r\n\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical = 15\r\nouter.top = 35\r\nouter.bottom = 0\r\nouter.left = 10\r\nouter.right = 10\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n# Disable \"hide application\" and \"hide others\" commands\r\ncmd-h = []     # Disable \"hide application\"\r\ncmd-alt-h = [] # Disable \"hide others\"\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus --boundaries-action wrap-around-the-workspace left'\r\nalt-j = 'focus --boundaries-action wrap-around-the-workspace down'\r\nalt-k = 'focus --boundaries-action wrap-around-the-workspace up'\r\nalt-l = 'focus --boundaries-action wrap-around-the-workspace right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-ctrl-shift-j = 'move left'\r\nalt-ctrl-shift-k = 'move right'\r\nalt-ctrl-shift-up = 'move up'\r\nalt-ctrl-shift-down = 'move down'\r\nalt-ctrl-right = 'join-with right'\r\nalt-ctrl-left = 'join-with left'\r\nalt-ctrl-up = 'join-with up'\r\nalt-ctrl-down = 'join-with down'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\nalt-ctrl-shift-left = 'resize smart -50'\r\nalt-ctrl-shift-right = 'resize smart +50'\r\nalt-ctrl-shift-f = 'fullscreen'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-0 = 'workspace 10'\r\nalt-a = 'workspace a'\r\nalt-b = 'workspace b'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\n# in my globe 80 holding M keys gives you alt+control\r\nalt-ctrl-1 = 'move-node-to-workspace 1'\r\nalt-ctrl-2 = 'move-node-to-workspace 2'\r\nalt-ctrl-3 = 'move-node-to-workspace 3'\r\nalt-ctrl-4 = 'move-node-to-workspace 4'\r\nalt-ctrl-5 = 'move-node-to-workspace 5'\r\nalt-ctrl-6 = 'move-node-to-workspace 6'\r\nalt-ctrl-7 = 'move-node-to-workspace 7'\r\nalt-ctrl-8 = 'move-node-to-workspace 8'\r\nalt-ctrl-9 = 'move-node-to-workspace 9'\r\nalt-ctrl-0 = 'move-node-to-workspace 10'\r\nalt-ctrl-a = 'move-node-to-workspace a'\r\nalt-ctrl-b = 'move-node-to-workspace b'\r\nalt-ctrl-shift-r = [\r\n    'reload-config',\r\n    'exec-and-forget curl -s -G -d \"message=Config%20reloaded\"  \"http://localhost:8765/service-mode\" > /dev/null',\r\n]\r\nctrl-left = 'workspace --wrap-around prev'\r\nctrl-right = 'workspace --wrap-around next'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-ctrl-shift-semicolon = [\r\n    \"mode service\",\r\n    'exec-and-forget curl -s \"http://localhost:8765/service-mode\" > /dev/null',\r\n]\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = [\r\n    'reload-config',\r\n    'mode main',\r\n    'exec-and-forget curl -s -G -d \"message=Config%20reloaded\"  \"http://localhost:8765/service-mode\" > /dev/null',\r\n]\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n# Toggle between floating and tiling layout\r\nf = ['layout floating tiling']\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\nh = ['join-with left']\r\nl = ['join-with right']\r\nj = ['join-with down']\r\nk = ['join-with up']\r\n\r\n### Window Rules\r\n# Floating apps\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = '(Finder|Hammerspoon|Huddle|Flameshot|Raycast)'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = '(Software Update|Update Available|Updating Ghostty|MetaMask)'\r\nrun = 'layout floating'\r\n\r\n# Ghostty workaround\r\n[[on-window-detected]]\r\nif.app-id = \"com.mitchellh.ghostty\"\r\nrun = [\"layout floating\"]\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = \"time tracker app\"\r\nrun = [\"move-node-to-workspace 1\"]\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"OrcaSlicer\"\r\nrun = [\"layout floating\", \"move-node-to-workspace 7\"]\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'main'\r\n3 = 'main'\r\n4 = 'main'\r\n5 = 'main'\r\n6 = 'main'\r\n7 = ['secondary', 'main']\r\n8 = ['secondary', 'main']\r\n9 = ['builtin', 'secondary', 'main']\r\n10 = ['builtin', 'secondary', 'main']\r\n```",
      "created_at": "2025-04-22T08:14:14Z",
      "updated_at": "2025-07-04T02:24:37Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danielo515",
        "avatar_url": "https://avatars.githubusercontent.com/u/2270425?u=85a40c344f9f2b55652cede930cc8e1f8eaf32ad&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zH",
      "number": 993,
      "title": "Can't record my screen with Screen Studio when AeroSpace is enabled",
      "body": "First of all, thank you for building such a great tool. I'm really enjoying it. \r\n\r\nMy setup has 3 monitor (the MacBook's built-in and two external Dell ones). When AeroSpace is enabled and I try to start a recording on a specific screen with Screen Studio, the overlays that Screen Studio should be showing individually on each screen become all cluttered in a single one which makes it impossible to start the recording. \r\n\r\n![Screenshot 2024-08-24 at 19 52 47](https://github.com/user-attachments/assets/66ba99e4-0697-4811-8848-225ac91b4a26)\r\n\r\nDisabling AeroSpace solves the issue but it is not ideal since I want to record the screen with it on.\r\n\r\nAdditionally, I've tried the following on my config but it doesn't work. \r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.timpler.screenstudio'\r\ncheck-further-callbacks = true\r\nrun = 'layout floating'\r\n```\r\n\r\nBased on that, I believe this could be related to (1) How AeroSpace manages screens and workspaces or (2) Aerospace interfering in the way the overlays are being rendered.\r\n\r\n**AeroSpace version**\r\n\r\n```\r\n❯ aerospace --version\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n\r\nLet me know if I van provide any additional information.\r\n\r\n**Edit 1:**   \r\n\r\nFurther investigating it, it looks like what is happening is that AeroSpace is moving all the overlays to the focused screen which is making them cover each other.",
      "created_at": "2024-08-24T23:11:56Z",
      "updated_at": "2025-07-03T21:28:06Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwvGI",
        "body": "Created an issue: https://github.com/nikitabobko/AeroSpace/issues/1271\r\n\r\nI don't care about this bug, PRs are welcome"
      },
      "user": {
        "login": "emiliosheinz",
        "avatar_url": "https://avatars.githubusercontent.com/u/103655828?u=f773e7f0a6438df1be161a579ce9c9f9e5ba6156&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgeTo",
      "number": 1520,
      "title": "How can i set a default layout for my workspaces?",
      "body": "I read the docs and try different things but I don't know how to set a default layout for specific workspaces, like h_accordion on the workspace \"B\".",
      "created_at": "2025-06-30T09:30:45Z",
      "updated_at": "2025-07-01T07:08:51Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Az84_",
        "body": "Default layout for specific workspace is not possible yet"
      },
      "user": {
        "login": "Else00",
        "avatar_url": "https://avatars.githubusercontent.com/u/48489849?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Age4Q",
      "number": 1521,
      "title": "Using aerospace as a launcher/manager",
      "body": "I don't know if this is the \"right\" way to use Aerospace, but I wanted to share my new style of using it, which I find to be incredibly productive.  I almost always use full screen apps.  Sometimes side-by-side, but really ohter than the Finder I want everything to take up as much real-estate as possible.  That's just me.\r\n\r\nI'm sharing this with the idea of getting some new ideas of things to do.\r\n\r\nBasically I'm using alpha workspaces as a nemonic.  For example \"M\" is for Mail, \"B\" is for Browser, \"T\" is for Terminal, etc.\r\n\r\n```\r\nalt-s = ['exec-and-forget open /Applications/Slack.app', 'workspace S'] # Slack workspace\r\n```\r\n\r\nSo whenever I press that key stroke, I'm looking at slack.  It opens if it's not there, otherwise it just zipps over.\r\n\r\nI also use `on-window-detected` to move initial windows to their \"home\" workspace.  So I want all my AI related things on `A`, and of course I can move them if I want to.\r\n\r\n```\r\n  # ChatGPT and Claude to workspace A\r\n  [[on-window-detected]]\r\n  if.app-name-regex-substring = 'ChatGPT'\r\n  run = ['move-node-to-workspace A']\r\n\r\n  [[on-window-detected]]\r\n  if.app-name-regex-substring = 'Claude'\r\n  run = ['move-node-to-workspace A']\r\n```\r\n\r\nhttps://willschenk.com/howto/2025/how_to_turn_aerospace_into_an_application_launcher/\r\n",
      "created_at": "2025-06-30T19:13:57Z",
      "updated_at": "2025-06-30T19:13:58Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wschenk",
        "avatar_url": "https://avatars.githubusercontent.com/u/12232?u=1e818c35f56406b804b6848f4c29fda6e8a88d42&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agdzx",
      "number": 1518,
      "title": "move-node-to-workspace: Window position off screen upon moving between non-focused workspaces in 2nd monitor",
      "body": "### Body\n\nThe problem only appears when the focus is on 2nd monitor, not in main, also when you move windows between workspaces that are not focused by any monitor!\r\n\r\nhttps://github.com/user-attachments/assets/61b0396c-25b4-44f8-b645-b4a4689e7123\r\n\r\nLet's say you have 3 workspaces\r\n 1 - main monitor\r\n 2 - 2nd monitor\r\n 3 - main monitor (But not focused!)\r\n\r\nLet's say Clock app is opened and with id 65\r\n\r\nSteps to reproduce:\r\n1. Set focus on any windows in the 2nd monitor\r\n2. Open Clock and set `layout floating`\r\n3. Using a script, send Clock to monitor 3 `aerospace move-node-to-workspace --window-id 65 3`\r\n4. Now, bring it back using a `aerospace move-node-to-workspace --window-id 65 2`\r\n5. Repeat the steps from 2 onwards a couple of times\r\n6. Clock window will be positioned off screen\r\n\r\nExpected result:\r\n - Clock window retain its original positioning and shows within the screen boundaries \r\n\r\nActual result:\r\n- Clock window is loses original positioning and appears off screen\r\n\r\n### Additional info\r\n\r\nThis only happens when sending a window between one visible workspace and a non-focused workspace. If you send the floating window among workspaces that are focused there is no issue. I assume is because AeroSpace position the window out of the screen when they aren't focused \r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\nI tried to describe as much as I could, but more details you find here:\r\nhttps://github.com/cristianoliveira/aerospace-scratchpad/issues/52",
      "created_at": "2025-06-29T16:20:43Z",
      "updated_at": "2025-06-29T23:32:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Az7OJ",
        "body": "Thanks, should be fixed in `main` branch. Tracking issue: #1492"
      },
      "user": {
        "login": "cristianoliveira",
        "avatar_url": "https://avatars.githubusercontent.com/u/3959744?u=f21e7f1678b25eb59d323e4d61ff9498b05ad67e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgAVO",
      "number": 1446,
      "title": "Issue with after-startup-commands and `[[on-window-detected]]` callbacks",
      "body": "Greeting everyone,\r\n**Context**\r\nI want to open 5 apps; Firefox, finder, sublime text editor, WhatsApp, iTerm terminal on startup and move them to their designated workspaces named web, finder, code, chat, term respectively.\r\nTo do this, I am doing it in 2 parts:\r\n1. Running the apps on startup\r\n```\r\nafter-startup-command = [\r\n    'exec-and-forget open -na /Applications/Firefox.app',          # Launch Firefox\r\n    'exec-and-forget open -na /Applications/WhatsApp.app',         # Launch WhatsApp\r\n    'exec-and-forget open -na \"/Applications/Sublime Text.app\"',   # Launch Sublime Text\r\n    'exec-and-forget open -na /System/Library/CoreServices/Finder.app', # Launch Finder\r\n    'exec-and-forget open -na /Applications/iTerm.app'             # Launch iTerm2\r\n]\r\n```\r\nThe code block above is running and opening the applications on start-up\r\n\r\n2. Assigning/Moving them to specified workspaces\r\n```\r\n[[on-window-detected]]\r\nif.app-id = \"org.mozilla.firefox\"            # Firefox\r\nif.during-aerospace-startup = true\r\nrun = \"move-node-to-workspace web\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"WhatsApp\"                       # WhatsApp\r\nif.during-aerospace-startup = true\r\nrun = \"move-node-to-workspace chat\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.sublimetext.4\"              # Sublime Text\r\nif.during-aerospace-startup = true\r\nrun = \"move-node-to-workspace code\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.finder\"               # Finder\r\nif.during-aerospace-startup = true\r\nrun = \"move-node-to-workspace finder\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.googlecode.iterm2\"          # iTerm2\r\nif.during-aerospace-startup = true\r\nrun = \"move-node-to-workspace term\"\r\n```\r\n\r\nThe code chunk above (which is placed at the very end of config file as it cannot be under any modes according to documentation) is recognising a window, only on aerospace startup, and then moving it using the run command.\r\n\r\n**Problem**\r\nThe apps do indeed run on start-up and a window of each application can be seen on Workspace 1. But, they are not being assigned to their workspaces, for which I am using `[[on-window-detected]]` callback. I don't know what is wrong as I can't see much more documentation regarding this as at least in the guide, it says this should work.\r\n\r\n**What I think is wrong**\r\nI think that after the start-up commands take place, every application is being opened at the same time, which would indeed make the system take about 2-5 seconds to open each application's window. And by that time aerospace is done running through it's start-up procedures. Because of which, even though windows of all these applications are there on the start-up, they are never recognised and hence not moved to the respective workspaces.\r\n\r\n**Help**\r\nIf anyone could provide me with what am I doing wrong or what I want to do is even possible or not, that would be greatly appreciated.",
      "created_at": "2025-05-29T18:30:55Z",
      "updated_at": "2025-06-29T09:52:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Rakshit-Yadav",
        "avatar_url": "https://avatars.githubusercontent.com/u/93925117?u=3233df28534ee37e3ef1ac9255678370e8d771d0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgdmN",
      "number": 1517,
      "title": "new windows oppening in accordeon horizontal layout in workspace 2",
      "body": "Dear aerospace community,\r\nI don't know what I did but now new windows in workspace 2 opens in accordeon fashion, I would like to change this to horizontal tile.\r\n\r\nI don't see anything in my config for this behaviour\r\n\r\nMy config\r\n\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n  'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0', \r\n  # 'exec-and-forget sketchybar', \r\n  # 'exec-and-forget open -n -a \"Alacritty\"', 'move-node-to-workspace 2', \r\n  # 'exec-and-forget open -n -a \"Firefox\"', 'move-node-to-workspace 1'\r\n]\r\n\r\n# Notify Sketchybar about workspace change\r\n# exec-on-workspace-change = ['/bin/bash', '-c',\r\n#     'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n# ]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\n# Fallback value (if you omit the key): on-focused-monitor-changed = []\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# You can effectively turn off macOS \"Hide application\" (cmd-h) feature by toggling this flag\r\n# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key\r\n# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 4\r\ninner.vertical =   4\r\nouter.left =       2\r\nouter.bottom =     1\r\nouter.top =        1\r\nouter.right =      2\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n# Fallback value (if you omit the key): mode.main.binding = {}\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)\r\n# alt-enter = '''exec-and-forget osascript -e '\r\n# tell application \"Terminal\"\r\n#     do script\r\n#     activate\r\n# end tell'\r\n# '''\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# Toggle fullscreen window\r\nalt-f = 'fullscreen'\r\nalt-shift-f = 'macos-native-fullscreen'\r\n\r\n# keybinding to start apps (similar to my hyprland shotcuts)\r\nalt-q = 'close'\r\nalt-t = 'exec-and-forget open -a \"Alacritty\"'\r\nalt-shift-t = 'exec-and-forget open -n -a \"Alacritty\"'\r\nalt-w = 'exec-and-forget open -a \"Firefox\"'\r\nalt-shift-w = 'exec-and-forget open -n -a \"Firefox\"'\r\nalt-s = 'exec-and-forget open -n -a \"Sublime Text\"'\r\nalt-m = 'exec-and-forget open -a \"Spotify\"'\r\nalt-e = 'exec-and-forget open \"Documents\"'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-b = 'workspace B'\r\n# alt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\n# alt-c = 'workspace C'\r\n# alt-d = 'workspace D'\r\n# alt-e = 'workspace E'\r\n# alt-f = 'workspace F'\r\n# alt-g = 'workspace G'\r\n# alt-i = 'workspace I'\r\n# alt-m = 'workspace M'\r\n# alt-n = 'workspace N'\r\n# alt-o = 'workspace O'\r\n# alt-p = 'workspace P'\r\n# alt-q = 'workspace Q'\r\n# alt-r = 'workspace R'\r\n# alt-s = 'workspace S'\r\n# alt-t = 'workspace T'\r\n# alt-u = 'workspace U'\r\n# alt-v = 'workspace V'\r\n# alt-w = 'workspace W'\r\n# alt-x = 'workspace X'\r\n# alt-y = 'workspace Y'\r\n# alt-z = 'workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\n# alt-shift-a = 'move-node-to-workspace A'\r\n# alt-shift-b = 'move-node-to-workspace B'\r\n# alt-shift-c = 'move-node-to-workspace C'\r\n# alt-shift-d = 'move-node-to-workspace D'\r\n# alt-shift-e = 'move-node-to-workspace E'\r\n# alt-shift-f = 'move-node-to-workspace F'\r\n# alt-shift-g = 'move-node-to-workspace G'\r\n# alt-shift-i = 'move-node-to-workspace I'\r\n# alt-shift-m = 'move-node-to-workspace M'\r\n# alt-shift-n = 'move-node-to-workspace N'\r\n# alt-shift-o = 'move-node-to-workspace O'\r\n# alt-shift-p = 'move-node-to-workspace P'\r\n# alt-shift-q = 'move-node-to-workspace Q'\r\n# alt-shift-r = 'move-node-to-workspace R'\r\n# alt-shift-s = 'move-node-to-workspace S'\r\n# alt-shift-t = 'move-node-to-workspace T'\r\n# alt-shift-u = 'move-node-to-workspace U'\r\n# alt-shift-v = 'move-node-to-workspace V'\r\n# alt-shift-w = 'move-node-to-workspace W'\r\n# alt-shift-x = 'move-node-to-workspace X'\r\n# alt-shift-y = 'move-node-to-workspace Y'\r\n# alt-shift-z = 'move-node-to-workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\n#s = ['layout sticky tiling', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\ndown = 'volume down'\r\nup = 'volume up'\r\nshift-down = ['volume set 0', 'mode main']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefox'\r\nrun = \"move-node-to-workspace 1\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'\r\nrun = \"move-node-to-workspace 9\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.sublimetext.4\"\r\nrun = \"move-node-to-workspace 8\"\r\n```\r\n\r\nWhat do I need to do in order to make sure all workspaces opens as vertical tiles?",
      "created_at": "2025-06-29T08:31:19Z",
      "updated_at": "2025-06-29T08:31:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Masber",
        "avatar_url": "https://avatars.githubusercontent.com/u/722064?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgdUY",
      "number": 1516,
      "title": "Focus won't leave current monitor",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open up a few windows in Aerospace across two monitors. Perhaps relevant, have laptop closed (clamshell mode). \r\n2. Try to shift focus. \r\n3. Focus only shifts within one monitor, have to click into second monitor. \r\n\r\nExpected result: Focus shifts across monitors\r\nActual result: Doesn't move across monitors.\r\n\r\nI've taken the steps described in #101 already by disabling displays have separate spaces.\r\n\r\n### Additional info\r\n- Aerospace installed via nix-darwin (config below)\r\n\r\n``` \r\n  services.aerospace = {\r\n    enable = true;\r\n    settings = {\r\n      gaps = {\r\n        outer.left = 8;\r\n        outer.bottom = 8;\r\n        outer.top = 8;\r\n        outer.right = 8;\r\n        inner.horizontal = 8;\r\n        inner.vertical = 8;\r\n      };\r\n      mode.main.binding = {\r\n        ctrl-alt-h = \"focus left\";\r\n        ctrl-alt-j = \"focus down\";\r\n        ctrl-alt-k = \"focus up\";\r\n        ctrl-alt-l = \"focus right\";\r\n        alt-1 = \"workspace 1\";\r\n        alt-2 = \"workspace 2\";\r\n        alt-3 = \"workspace 3\";\r\n        alt-4 = \"workspace 4\";\r\n        alt-5 = \"workspace 5\";\r\n        alt-6 = \"workspace 6\";\r\n        alt-7 = \"workspace 7\";\r\n        alt-8 = \"workspace 8\";\r\n        alt-9 = \"workspace 9\";\r\n        alt-shift-h = \"move left\";\r\n        alt-shift-j = \"move down\";\r\n        alt-shift-k = \"move up\";\r\n        alt-shift-l = \"move right\";\r\n        alt-shift-1 = \"move-node-to-workspace 1\";\r\n        alt-shift-2 = \"move-node-to-workspace 2\";\r\n        alt-shift-3 = \"move-node-to-workspace 3\";\r\n        alt-shift-4 = \"move-node-to-workspace 4\";\r\n        alt-shift-5 = \"move-node-to-workspace 5\";\r\n        alt-shift-6 = \"move-node-to-workspace 6\";\r\n        alt-shift-7 = \"move-node-to-workspace 7\";\r\n        alt-shift-8 = \"move-node-to-workspace 8\";\r\n        alt-shift-9 = \"move-node-to-workspace 9\";\r\n      };\r\n  };\r\n};\r\n```\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58",
      "created_at": "2025-06-28T20:06:09Z",
      "updated_at": "2025-06-28T20:06:10Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mmorley0395",
        "avatar_url": "https://avatars.githubusercontent.com/u/77309089?u=7eb71c631961b344025cb2ec57f83b1986677899&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agad7",
      "number": 1506,
      "title": "Closed windows for several apps not removed from aerospace Mac",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Close a window in Chrome.app, Discord.app, Notion.app, or Linear.app, or quit one of those programs.\r\n\r\nExpected result: The windows that were associated with those apps are no longer in the list of windows Aerospace is aware of.\r\n\r\nActual result: The windows that were associated with those apps ARE in the list of windows Aerospace is aware of.\r\n\r\n### Additional info\r\n\r\nI'm on Mac OS X Sequoia 15.5\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n\r\n$ aerospace list-windows --all\r\n45962 | Anytype            | Tasks - Pepper's Brain - Anytype\r\n78973 | Code               | common_test.go — nitro\r\n88067 | Discord            |\r\n88077 | Discord            | Friends - Discord\r\n78083 | Docker Desktop     | Containers - Docker Desktop\r\n67    | Emacs              | *scratch*  —  (142 × 75)\r\n85438 | Ghostty            | brew upgrade\r\n59876 | Ghostty            | …/github.com/OffchainLabs/nitro-testnode\r\n88152 | Google Chat        |\r\n88101 | Google Chrome      | New Discussion · nikitabobko/AeroSpace - Google Chrome\r\n88107 | Google Chrome      | Re-issuing Lost Shares in MPC - Google Chrome\r\n88104 | Google Chrome      | Search results - eljobe@gmail.com - Gmail - Pinned - Google Chrome\r\n88162 | Google Voice       |\r\n87526 | Linear             | Nitro › Backlog\r\n42820 | Miro               | Miro\r\n88300 | Notion             |\r\n87793 | SecurityAgent      |\r\n77910 | Signal             | Signal\r\n80593 | Slack              | * production-warning (Channel) - Offchain Labs - Slack\r\n88331 | System Information |\r\n88338 | System Information |\r\n88353 | System Settings    |\r\n64924 | Telegram           | Telegram\r\n60    | WhatsApp          | WhatsApp\r\n```\r\n\r\nIn that list, 88067 Discord, and 88300 Notion are both left over even though they are closed.\r\n",
      "created_at": "2025-06-26T08:18:03Z",
      "updated_at": "2025-06-28T14:28:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "eljobe",
        "avatar_url": "https://avatars.githubusercontent.com/u/679924?u=2b60bbaebb17c7bf28c37c86f37653bef4d90ad7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIta",
      "number": 622,
      "title": "Feature Request: Embedded script language",
      "body": "I'd like to discuss embedding a scripting language into AeroSpace to enable more flexible customization and configuration. Currently, AeroSpace supports limited \"dynamic\" behavior, such as the `on-window-detected` callback with a matcher. However, there's a growing need for more advanced conditional behavior (see #278). Instead of turning TOML into a pseudo-programming language, would it make sense to support scripting directly?\r\n\r\n**Does this feature align with the project's values?**\r\n\r\nIf the answer is yes, then I'd like to discuss the following questions:\r\n\r\n**Which scripting language would be the best fit?**\r\n\r\nTwo options come to mind:\r\n\r\n- **Lua**: A battle-tested language with a lightweight interpreter and a robust ecosystem. It's used in many applications, like Neovim.\r\n- [**JavaScriptCore**](https://developer.apple.com/documentation/javascriptcore): Built directly into macOS's SDK, with no extra dependencies. It supports JIT compilation (though this requires [specific permissions](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit)) and is fully sandboxed. However, it lacks built-in functionality to import other JavaScript files. (e.g. you need to implement all your config in one JS file, or some custom require functionality must be added)\r\n\r\nThere is also a Lua 5.1 JIT implementation, though there are known performance issues on aarch64: https://github.com/LuaJIT/LuaJIT/issues/285\r\n\r\n**What features should the API support?**\r\n\r\nSome of my ideas:\r\n\r\n- Setting and modifying config values.\r\n- Dynamic config values (functions that return values on access).\r\n- Callbacks to execute functions.\r\n- Querying windows, monitors, workspaces, etc.\r\n- Custom layouts.\r\n- Custom formatters for the tray mode text.\r\n\r\n**My current probe/research**\r\n\r\nI have the same issue as #60, and I wanted more generic solution, so I have been probing/researching how well Lua fits into AeroSpace's current architecture, and I had promising results. Some of my testing can be found in my `probe-lua` [branch](https://github.com/Henkru/AeroSpace/tree/lua-probe). Lua integrates smoothly with the current config and callback system. For example, I implemented dynamic gaps for my ultrawide monitor:\r\n\r\n```lua\r\nlocal gaps = {\r\n\t-- [window count] = gap value\r\n\t[1] = 1280, -- 5120 / 4\r\n\t[2] = 640, -- 5120 / 8\r\n\tenabled = true,\r\n}\r\nlocal default_gap = 5\r\n\r\nlocal dynamic_gap = function(_id, monitor)\r\n\t-- if monitor.name == \"Dell U4919DW\" then\r\n\tif monitor.width > 5000 and gaps.enabled then\r\n\t\tlocal window_count = aero.api.workspace_windows_count(monitor.activeWorkspace)\r\n\t\treturn gaps[window_count] or default_gap\r\n\tend\r\n\treturn default_gap\r\nend\r\n\r\n-- Set static gap for top and bottom\r\naero.api.gap_set(GAP_OUTER_TOP, 5)\r\naero.api.gap_set(GAP_OUTER_BOTTOM, 2)\r\n-- Set dynamic gap for left and right\r\naero.api.gap_set(GAP_OUTER_LEFT, dynamic_gap)\r\naero.api.gap_set(GAP_OUTER_RIGHT, dynamic_gap)\r\n\r\n-- Toggle the dynamic gap on/off, and then go back to the main mode\r\naero.keymap.set(\"service\", \"g\", function()\r\n\tgaps.enabled = not gaps.enabled\r\nend, \"mode main\")\r\n```\r\n\r\nThe branch implements a lightweight Lua 5.1 wrapper for Swift (chosen for easy switch to LuaJIT) and abstractions for adding new API functions with type-checked parameters. However, it has evolved organically (based on what I currently needed to implement feature X), so the wrapper needs some refactoring/remodeling; for example, the error handling is pretty much via the `error` function that kills the app.\r\n\r\nSupported features:\r\n\r\n- Setting common config options.\r\n- Setting/removing key bindings.\r\n- Executing Aero commands (as strings).\r\n- Adding Aero callbacks (Lua functions or Aero command strings).\r\n- Dynamic config values for gaps.\r\n- Some functions for querying the current state (e.g., window count).\r\n\r\nThe currently implemented API functions can be found:\r\n- `aero.api`: https://github.com/Henkru/AeroSpace/blob/lua-probe/Sources/AppBundle/script/api.swift\r\n- `aero.callbacks`: https://github.com/Henkru/AeroSpace/blob/lua-probe/Sources/AppBundle/script/callbacks.swift\r\n- `aero.config`: https://github.com/Henkru/AeroSpace/blob/lua-probe/Sources/AppBundle/script/configApi.swift\r\n- `aero.keymap`: https://github.com/Henkru/AeroSpace/blob/lua-probe/Sources/AppBundle/script/keymap.swift\r\n\r\nAreas for improvement:\r\n- Returning structured data (as Lua tables) from Aero commands. Currently, all commands return strings.\r\n\r\nFor a more [comprehensive example](https://gist.github.com/Henkru/358c8e981dfd1e6635eaac53ba559e18), I fully implemented my current configuration in Lua to showcase what can be done.",
      "created_at": "2024-10-04T10:14:44Z",
      "updated_at": "2025-06-28T14:23:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Henkru",
        "avatar_url": "https://avatars.githubusercontent.com/u/4019880?u=a3a83a5d663dd33ec9994843d7924d65cd1ac9a3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIt8",
      "number": 628,
      "title": "Dynamically update config via cli",
      "body": "Was wondering if it's possible to patch a given config option via the cli\r\n\r\nWas looking for something like `aerospace config --set`, but it appears there are only getters?\r\n\r\nMy use-case is that I would like to change the gaps dynamically (when i take my laptop + split keyboard with me and place the tilted split keyboard on the laptop keyboard it does cover some part of the bottom screen, which i would like to account for in the layout gaps)",
      "created_at": "2024-08-04T20:59:28Z",
      "updated_at": "2025-06-28T14:11:00Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Az5lh",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1515"
      },
      "user": {
        "login": "devidw",
        "avatar_url": "https://avatars.githubusercontent.com/u/68775926?u=3991d83aa67b2979a66c0ddb5aaa68400ae34621&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgMA8",
      "number": 1468,
      "title": "Feature-Idea: Command to Dynamically Float a Window and Persist the Setting",
      "body": "Currently, if a user wants to make a specific application window always float, they need to:\r\n1.  Identify a stable property of the window (e.g., `app-id`, `app-name`). Obtaining the `app-id` is not always straightforward for all users and might require using external tools or commands (e.g., `aerospace list-windows --focused` or similar).\r\n2.  Manually edit the Aerospace configuration file.\r\n3.  Add a new rule specifying the identifier and the desired floating state.\r\n4.  Reload the Aerospace configuration.\r\n\r\nThis process can be cumbersome.\r\n\r\nSo can we have a new Aerospace command, like `float-and-persist-focused` (or a similar intuitive name).\r\n\r\n**How it would work (example workflow):**\r\n1.  The user focuses the window they want to make permanently floating.\r\n2.  The user executes the command or trigger it with shortcut keys.\r\n3.  Upon execution:\r\n    *   The currently focused window is **immediately** set to floating mode.\r\n    *   Aerospace automatically determines the most suitable and stable identifier for this window (preferably `app_id` if available and reliable, falling back to other properties if necessary).\r\n    *   Aerospace **appends** a new rule to the user's configuration file (e.g., `~/.aerospace.toml`) that will make future instances of this application/window float by default. For example, it might add something like:\r\n        ```toml\r\n        # ~/.aerospace.toml\r\n        # ... existing user config ...\r\n\r\n        # Rule added by 'aerospace float-and-persist-focused' on YYYY-MM-DD HH:MM:SS\r\n        [[on-window-detected]]\r\n        if.app-id = \"com.example.AppName\" # Or whatever identifier Aerospace uses\r\n        run = \"layout floating\" # Or equivalent action to make it float\r\n        ```\r\n    *   Aerospace could automatically reload its configuration.",
      "created_at": "2025-06-10T14:50:12Z",
      "updated_at": "2025-06-28T09:13:01Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzNUG",
        "body": "I'd like to notice that it's already possible to create a shell script to script the desired behavior:\r\n\r\n```shell\r\ncat >> ~/.aerospace.toml <<EOF\r\n\r\n[[on-window-detected]] # Generated by float-and-persist.sh\r\n    if.app-id = '$(aerospace list-windows --focused --format '%{app-bundle-id}')'\r\n    run = 'layout floating'\r\nEOF\r\n\r\naerospace layout floating\r\naerospace reload-config\r\n```\r\n"
      },
      "user": {
        "login": "junqi-lu",
        "avatar_url": "https://avatars.githubusercontent.com/u/33504653?u=b1d1b15ec9e75f2bf6e75342d55ce9faaf583ce6&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agbv_",
      "number": 1511,
      "title": "Unlock Freeze, Slack/Floating Window Issues, and Window Tracking Problems",
      "body": "### Body\n\nFeedback and Issues\r\n===================\r\n\r\nNote, sorry I open an issue, I though I was opening a discussion\r\n\r\nFirst of all, I want to say that I really like this project. Aerospace has been a game changer for me and has helped me be much more productive. I use it every day and it's become an important part of my workflow. That said, I'm experiencing some issues that I want to report.\r\n\r\n* * * * *\r\n\r\nSummary of Problems\r\n-------------------\r\n\r\nThe most recurring issue is that my laptop freezes completely for 2--3 minutes right after I unlock it. The mouse shows the spinning cursor and nothing responds. This happens every time I unlock the machine.\r\n\r\nIn addition to that, I notice other problems during daily use:\r\n\r\n-   Sometimes I randomly get the spinning cursor and the system becomes unresponsive for a short time (1-2 m).\r\n-   Aerospace occasionally becomes very slow. For example, when switching windows, it can take 1--2 seconds, sometimes more, to react. Sometimes it seems to process all queued events suddenly.\r\n-   Some windows \"dissappear\" from the usual aerospace flow. They are not reachable via my shortcuts (`focus right/left`) or even native Alt+Tab, and seem to be \"lost\" from aerospace. Even if I click them (I see them stacked behind), they do not raise.\r\n\r\nWhat makes it more difficult is that I don't know how to troubleshoot these problems properly. I don't know where to look for logs or how to confirm if it's an Aerospace issue or something else.\r\n\r\nAll these problems become much worse when the system is slightly loaded. Not overloaded---just normal use. I usually have three external displays and I run Docker, Cursor or VSCode (editing Go code), and the Go language server `gopls` in the background.\r\n\r\n* * * * *\r\n\r\nSystem Details\r\n--------------\r\n\r\n```\r\n\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n\r\n$ sw_vers && uname -a\r\nProductName:\t\tmacOS\r\nProductVersion:\t\t15.5\r\nBuildVersion:\t\t24F74\r\nDarwin Q9XJCDF9N9 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:25 PDT 2025; root\\:xnu-11417.121.6\\~2/RELEASE\\_ARM64\\_T6020 arm64\r\n\r\n```\r\n\r\nThe config file `aerospace.toml` is shared in the comments.\r\n\r\n* * * * *\r\n\r\nApplications and Environment\r\n----------------------------\r\n\r\nThese are the apps I usually have running:\r\n\r\n-   iTerm2\r\n-   Slack, especially using the \"Canvas\" and \"Lists\" features\r\n-   Cursor or VSCode with Go development tools\r\n-   `gopls` (Go language server) and other helpers\r\n-   Docker, often with 2 or 3 containers\r\n-   Firefox, sometimes with many tabs open\r\n-   Firefox plugin (Calendar Checker) that creates floating windows\r\n-   Zoom\r\n\r\nOther software that might be relevant:\r\n\r\n-   GlobalProtect VPN, which often shows a floating window after reconnecting\r\n-   macOS SmartView to mirror to a third monitor through an Anker hub\r\n\r\n* * * * *\r\n\r\nDetailed Issue Description\r\n--------------------------\r\n\r\n### Freeze After Unlock\r\n\r\nThe most consistent issue happens right after unlocking the laptop. The moment I unlock and log in, 1 second later, the screen becomes unresponsive. The cursor shows the spinning animation and I can't interact with anything for 2--3 minutes. I can move the mouse. This happens whether I'm using external monitors or just the laptop screen.\r\n\r\nI suspect this is related to the Global Protect VPN software that raises a floating window each time.\r\n\r\n### Floating Window Freezes\r\n\r\nSometimes, when a floating window appears---for example from GlobalProtect or Firefox---and I try to interact with it or close it, the system freezes again. I get the spinning cursor for 1--2 minutes and everything stops responding.\r\n\r\n### Slack Canvas and Lists\r\n\r\nI've noticed that Slack's \"Canvas\" and \"Lists\" windows often cause freezes too, not always.\r\n\r\nWhen these windows are open, the system becomes more unstable in general. Also, these windows often are the ones getting \"lost\": they stay open, but I can't reach them with Alt+Tab or with any usual shortcut.\r\n\r\n### Windows Becoming Unreachable\r\n\r\nIn general, some windows randomly disappear from the Aerospace-managed list.\r\n\r\nThey are open, but they don't show up in the switcher or respond to focus shortcuts. However, if I manually run a focus command using the window ID in the terminal, it works. So the window still exists, but Aerospace seems to lose track of it.\r\n\r\nThe usual windows I lose are: firefox and slack. Both raise popup windows with issues, firefox floating notifications and slack these Canvas+List.\r\n\r\n### Performance Worse with 3 Displays\r\n\r\nAll these issues happen more often and feel worse when using 3 external displays. Not always. The system gets slower overall, window switching becomes laggy, and windows get lost more often.\r\n\r\n### Worse if I have zoom\r\n\r\nHaving zoom just makes all worse too. Specially if I have 3x displays, zoom, slack at the same time.\r\n\r\n* * * * *\r\n\r\nWorkarounds I Use\r\n-----------------\r\n\r\nFor the freeze after unlock, there is not much I can do. I just have to wait until the system responds again.\r\n\r\nWhen the system becomes very slow, I try the following:\r\n\r\n-   Kill and restart Aerospace\r\n-   Stop Docker\r\n-   Close tabs in Firefox\r\n-   Close any open Slack Canvas or Lists windows\r\n-   Start Aerospace again\r\n\r\nSometimes this helps a bit, but not always. Sometimes the system remains slow or gets worse again shortly after.\r\n\r\n* * * * *\r\n\r\nSuspicions\r\n----------\r\n\r\nI think some of the problems might be related to floating windows:\r\n\r\n-   GlobalProtect shows a floating window after unlocking, saying the VPN connection was lost. This seems to trigger the freeze.\r\n-   Firefox has a calendar checker plugin that shows popups. Closing those sometimes freezes the system.\r\n-   Slack's Canvas and Lists features seem to behave like floating windows and often cause trouble.\r\n\r\nAlso, the system becomes more unstable under moderate load:\r\n\r\n-   CPU around 50%, some memory used\r\n-   Docker running\r\n-   Cursor or VSCode + Go tooling active\r\n-   Frequent switching or creation of new windows\r\n\r\n* * * * *\r\n\r\nQuestion\r\n--------\r\n\r\nI'm not sure how to properly debug or report these issues. Is there a way to check logs or get diagnostics from Aerospace to better understand what's going wrong? Any guidance would help.\r\n\r\nThanks again for this great tool.",
      "created_at": "2025-06-27T10:15:02Z",
      "updated_at": "2025-06-28T00:37:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "keymon",
        "avatar_url": "https://avatars.githubusercontent.com/u/280032?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agbjc",
      "number": 1509,
      "title": "Runtime error reported from navigating while Steam was shutting down",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open Steam\r\n2. Quit Steam via Command+Q\r\n3. Navigate to another workspace while steam is shutting down\r\n\r\nExpected result:\r\n- Able to transition to another workspace without error\r\n\r\nActual result:\r\n- Runtime error with contents:\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    Windows must always have a parent. The Window was unbound at:\r\n    0   AeroSpace                           0x000000010504e8fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000104ee26cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000104ee2978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000104edbe90 $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n    4   AeroSpace                           0x0000000104eb5d00 $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n    5   AeroSpace                           0x0000000104eb1679 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ6_ + 1\r\n    6   AeroSpace                           0x0000000104e409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    7   libswift_Concurrency.dylib          0x000000027f72e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    8   libswift_Concurrency.dylib          0x000000027f72e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    9   AeroSpace                           0x0000000104eb094d $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n    10  AeroSpace                           0x0000000104e409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x000000027f72e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x000000027f72e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000104eafeb5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n    14  AeroSpace                           0x0000000104eb066d $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n    15  AeroSpace                           0x0000000104e409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000027f76283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-06-27 06:42:01 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:8:29 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x000000010504df28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104ee4fa0 $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 260\r\n2   AeroSpace                           0x0000000104ee3fec $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000104edcbc0 $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000104eb5495 $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000104ea8449 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ9_ + 1\r\n6   AeroSpace                           0x0000000104e409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000027f72e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x000000027f72e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000104ea6c99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x0000000104e409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x000000027f72e461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x000000027f72e109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000104ea416d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x0000000104e8a155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x0000000104e403f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000027f76283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n\r\nAfter re-opening the server:\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n```",
      "created_at": "2025-06-27T06:49:05Z",
      "updated_at": "2025-06-27T21:24:49Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Az3KE",
        "body": "Please update, it's already fixed"
      },
      "user": {
        "login": "prestontw",
        "avatar_url": "https://avatars.githubusercontent.com/u/11056277?u=2d1e26ee8709f0d639b2b94264538009731fe85f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgaWK",
      "number": 1504,
      "title": "Knowledge sharing about Tabs detection",
      "body": "> After playing more with the AX APIs, I think it is possible to distinguish tabs vs windows without using private APIs.\r\n>\r\n>I'm locking this issue until further notice to avoid spamming people's inboxes.\r\nOriginally posted by @nikitabobko in https://github.com/nikitabobko/AeroSpace/issues/68#issuecomment-3007146421\r\n\r\nHi,\r\n\r\nCould you please consider sharing how this can be done?\r\n\r\nI'm the Author of AltTab and after years of digging on this problem, I have not found any way to detect tabs reliably. I know the yabai project faces the same wall. It would be wonderful if you found a way and would share it with us!\r\n\r\nThank you 🙇",
      "created_at": "2025-06-26T06:24:22Z",
      "updated_at": "2025-06-26T16:50:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lwouis",
        "avatar_url": "https://avatars.githubusercontent.com/u/106195?u=2cdcc3b8e04ad616021ae6b252dd3b2e78625cc8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agay8",
      "number": 1508,
      "title": "Popup for changing space",
      "body": "Hello,\r\n\r\nI am looking for some way to have the number of the workspace that I have moved to, or moved a window to, to show up large in the middle of the screen for a second, so I can build my mental model of where I am moving things, without having to look at my sketchybar at the top of my screen. \r\n\r\nHas anyone achieved this? ",
      "created_at": "2025-06-26T13:28:53Z",
      "updated_at": "2025-06-26T13:29:33Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lukas-kyeso",
        "avatar_url": "https://avatars.githubusercontent.com/u/3828018?u=c346763518e2eaa5811dfe19a0747b119fa22547&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Agat2",
      "number": 1507,
      "title": "Floating on top always option.",
      "body": "As the floating window may go behind the tiled window, pinning the floating window on the top will always avoid this behavior.\r\n",
      "created_at": "2025-06-26T12:11:25Z",
      "updated_at": "2025-06-26T12:11:26Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfKfc",
      "number": 1263,
      "title": "How do i mimic the same behavior of swapping windows using mouse/trackpad window-drag.",
      "body": "Hi Currently I have the following screen setup\r\n\r\nV-Tile\r\n  - App 1\r\n  - App 2\r\n App 3\r\n\r\nWhen i window drag App 2 towards App 3, both these apps will switch places maintaining the structure. I've tried join-with right, focus down, join-with left but not getting consistent behaviour especially when there's a floater somewhere in the mix.\r\n\r\nAlso, sometimes when i cmd-tab into an App, its window will be placed far edge of the screen. sometimes lower right or upper left. Is there a proper way for me to get that floater hiding/ducking back on the main screen, prefrerably somewhere middle of the screen. What i do presently is to toggle floating and tiling. \r\n\r\nMany thanks in advance.",
      "created_at": "2025-04-05T13:02:49Z",
      "updated_at": "2025-06-26T08:00:41Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Azz-k",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/8"
      },
      "user": {
        "login": "ezadEzanee",
        "avatar_url": "https://avatars.githubusercontent.com/u/18095325?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgaDm",
      "number": 1502,
      "title": "Remapping of window hide feature in aerospace?",
      "body": "I get windows focused by Raycast if they are floating.\r\nIs there any way I can remap the default macOS “Hide App” option to another key, like mentioned in [nikitabobko.github.io/AeroSpace/goodies#disable-hide-app](https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app)?\r\n\r\nThis might not be directly related, but is there any dmenu-like application for macOS? I want to bind a key to open a list of applications and pull the selected one to the current workspace.\r\nI’m okay with using fzf in Kitty as well, but right now I'm unable to bind a small popup Kitty session that shows the fzf menu on screen.",
      "created_at": "2025-06-25T21:27:27Z",
      "updated_at": "2025-06-25T21:28:40Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgZp7",
      "number": 1501,
      "title": "I am not able to open Aerospace",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Install Aerospace\r\n2. Open Aerospace\r\n\r\nExpected result: Can use Aerospace\r\nActual result: It isn't open so I can't use it\r\n\r\n### Additional info\r\n\r\nI have been using Aerospace about 2 weeks. I was updating my config and it completely stopped working. I have tried resetting my aerospace.toml to the default and still had the issue. I uninstalled and re installed and am still seeing the issue. I am not sure how to get out of this spot so I can continue using it.\r\n\r\n```shell\r\n$ aerospace -v\r\n\r\nRuns infintiely. I can run aerospace --help and see the help suggestions but v or list-workspaces runs inifinitely\r\n```\r\n",
      "created_at": "2025-06-25T13:17:49Z",
      "updated_at": "2025-06-25T15:15:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "arambrosius",
        "avatar_url": "https://avatars.githubusercontent.com/u/35042830?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgZlG",
      "number": 1499,
      "title": "Fullscreen the wrong window when it exit macos native minimize",
      "body": "### Body\r\n\r\nSteps to reproduce:\r\n1. Focus on window A, click minimize on window B\r\n2. Use shortcut / alt-tab to exit minimize for window B (bring B back to foreground)\r\n3. It is focused by default, by when pressing fullscreen key, it fullscreened window A\r\n\r\nNote that It occurs only when you focus on window A and use mouse to minimize window B. \r\n\r\nExpected result:\r\n- Full screen the correct window.\r\n\r\nActual result:\r\n\r\nhttps://github.com/user-attachments/assets/549ab48c-16f6-40e9-a6cb-98710061ba3a\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-06-25T11:49:02Z",
      "updated_at": "2025-06-25T12:07:23Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzxuM",
        "body": "Thanks, converted to an issue https://github.com/nikitabobko/AeroSpace/issues/1500"
      },
      "user": {
        "login": "qazxcdswe123",
        "avatar_url": "https://avatars.githubusercontent.com/u/29861494?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgZNF",
      "number": 1498,
      "title": "You don’t have permission to save the file “bobko.aerospace.plist” in the folder “LaunchAgents”",
      "body": "### Body\n\nSteps to reproduce:\r\n1. install via homebrew\r\n2. add default aerospace.toml\r\n3. start the app\r\n\r\nExpected result:\r\nAerospace starts\r\nActual result:\r\nError message\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Can't write to file:///Users/zas/Library/LaunchAgents/bobko.aerospace.plist You don’t have permission to save the file “bobko.aerospace.plist” in the folder “LaunchAgents”.\r\nVersion: 0.18.5-Beta\r\nGit hash: 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nrefreshSessionEvent: nil\r\nDate: 2025-06-24 17:02:33 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/startAtLogin.swift:29:93 syncStartAtLogin()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x000000010271eb38 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2260\r\n1   AeroSpace                           0x0000000102743308 $ss6ResultO6CommonE8getOrDie_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   AeroSpace                           0x000000010259ca48 $s9AppBundle16syncStartAtLoginyyF + 2120\r\n3   AeroSpace                           0x0000000102575924 $s9AppBundle12reloadConfig4args05forceD3Url6stdoutSb6Common06ReloadD7CmdArgsV_10Foundation3URLVSgSSztFTf4xnn_n + 596\r\n4   AeroSpace                           0x00000001025a0f94 $s9AppBundle04initaB0yyF + 292\r\n5   AeroSpace                           0x00000001025399a0 $s9AeroSpace0aB3AppV7SwiftUI0C0AadEPxycfCTW + 20\r\n6   SwiftUI                             0x00000001c1b965b0 $s7SwiftUI3AppPAAE4mainyyFZ + 208\r\n7   AeroSpace                           0x00000001025399e0 main + 36\r\n8   dyld                                0x0000000190cfeb98 start + 6076\r\n````\r\n\r\n### Additional info\r\nMacbook Pro M4 with Sequoia 15.5\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n",
      "created_at": "2025-06-25T05:32:02Z",
      "updated_at": "2025-06-25T10:17:45Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Azxf3",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/646\r\n\r\nWill be fixed by https://github.com/nikitabobko/AeroSpace/issues/1482"
      },
      "user": {
        "login": "tschinz",
        "avatar_url": "https://avatars.githubusercontent.com/u/1192968?u=2fc1de1cfb864750cd5bb0138ec8286c46b22fc4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgUQ2",
      "number": 1476,
      "title": "focus across multiple monitors behaves inconsistently",
      "body": "### Body\r\n\r\nThis could be due to user confusion; I only adopted aerospace this week and I am still getting to grips with things.\r\n\r\nConsider these bindings:\r\n\r\n```\r\nctrl-j = 'focus --boundaries all-monitors-outer-frame --boundaries-action stop left'\r\nctrl-l = 'focus --boundaries all-monitors-outer-frame --boundaries-action stop right'\r\n```\r\n\r\nI have three monitors, let's name them 1, 2,3, next to each other.\r\n\r\nThe documentation is not 100% clear, but my assumption is that this should make focus shifts go across monitors, so that when I'm focused on the rightmost window of the leftmost monitor (1) and do a focus right I should go to the leftmost window of the middle monitor (2).\r\n\r\nWhen I click on a window on the rightmost monitor and go to the right using ctrl-l, everything works as I expect. I can start at the leftmost window of monitor 1 and go all the way to the rightmost window of monitor 3. \r\n\r\nBut if I try to go in the opposite direction, goings the left, weird stuff happens. Often the leftmost monitor is not reached, and I get this:\r\n\r\nmonitor 3, left: (2 windows side by side) go successfully to the left from rightmost window\r\nmonitor 3, left: go successfully to the center monitor (which has a single window)\r\nmonitor 2, left: suddenly goes *back* to monitor 3, leftmost window, instead of monitor 1 where I expected it to go.\r\n\r\nSometimes it does reach the rightmost window of monitor 1, but when I try to go left to another window next to it, instead it pops all the way over to monitor 3 again.\r\n\r\nI don't understand why left movement is not the inverse of right.\r\n\r\nI do have enable normalization flatten containers and enable normalization opposite orientation for nested containers set to true, in case that makes any difference.\r\n\r\n(I see there's already an issue about *moving* windows to monitors next to them, which is what I keep trying to do coming from i3/sway, which is the behavior I'm trying to replicate here)\r\n \r\n",
      "created_at": "2025-06-19T08:43:04Z",
      "updated_at": "2025-06-24T20:17:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzkTD",
        "body": "Blind guess: you have encounter #101 bug\r\n\r\n1. Please check configurations where you windows belong to different applications\r\n2. Please try to disable `Displays have separate Spaces` in System Settings"
      },
      "user": {
        "login": "faassen",
        "avatar_url": "https://avatars.githubusercontent.com/u/327472?u=f9ab80acae65c79dfc47d358a38649a7dca87948&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgJJq",
      "number": 1459,
      "title": "Accessing menus on non-primary display",
      "body": "If I have an app open on my \"main\" screen (the one with the top bar) and the app has focus, and I try to access the menu (eg. File), I can single click and it stays open.\r\n\r\nIf I have an app open on another screen and the focus is on it, and I try to click on, say, \"File\" (on the main screen), it immediately closes the \"File\" menu and focus switches to the app on the main screen.\r\n\r\nAny ideas? Hope this made sense 😄 ",
      "created_at": "2025-06-06T19:57:08Z",
      "updated_at": "2025-06-24T20:16:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gservat",
        "avatar_url": "https://avatars.githubusercontent.com/u/1061151?u=a738f550365ce2d556a4e9fddd9a6b1802359528&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgVkR",
      "number": 1478,
      "title": "Mapping specific apps to floating windows",
      "body": "Is it possible to define which apps are forced to load in floating windows in the config file? Or do I have to rely on Aerospace's guessing?",
      "created_at": "2025-06-20T15:38:44Z",
      "updated_at": "2025-06-24T12:35:08Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bilbofroggins",
        "avatar_url": "https://avatars.githubusercontent.com/u/82745308?u=3c28fe4a161dead40dcc9078ec233f6b8c3c87c4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgYEP",
      "number": 1488,
      "title": "Script to map with a single key that toggles layout [tiles, accordion]",
      "body": "I was trying to write a script that can be executed by a keymap and toggles the layout state.\r\nIf it is tiled then to accordion and if it is accordion then tiled.\r\nAny way to get the state of focused window that if it is tiled or in accordion layout?",
      "created_at": "2025-06-24T06:09:22Z",
      "updated_at": "2025-06-24T10:37:18Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzuuA",
        "body": "It's already possible: `layout accordion tiles`"
      },
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgTfw",
      "number": 1475,
      "title": "Proposal: A flag to preserve native fullscreen when focusing across monitors",
      "body": "When a window is in fullscreen, running `aerospace focus <direction>` will first exit fullscreen on that window and then focus the next tiled window to the right (or left/up/down). There is currently no way to tell AeroSpace “if the current window is native-fullscreen, don’t un-fullscreen it—just move focus to the adjacent monitor.” \r\n\r\nProposal: Add a new flag to `focus` that preserves fullscreen when navigating monitors, for example:\r\n```bash\r\naerospace focus <direction> [--preserve-fullscreen] [--boundaries …]\r\n```\r\nOr allow configuring this behavior globally in ~/.aerospace.toml:\r\n\r\n```toml\r\n# if true, focus commands never un-fullscreen\r\npreserve-fullscreen-on-focus = true\r\n```\r\n\r\nMy current workaround is the following:\r\n[mode.main.binding]\r\n```toml\r\nalt-l = '''\r\nexec-and-forget bash -lc '\r\n  # check if the focused window is in fullscreen mode\r\n  FS=$(aerospace list-windows --focused \\\r\n       --format \"%{window-is-fullscreen}\")\r\n\r\n  if [ \"$FS\" = \"true\" ]; then\r\n    # jump to the monitor on the right, leaving fullscreen intact\r\n    aerospace focus-monitor right\r\n  else\r\n    # otherwise, navigate right within/between windows & monitors\r\n    aerospace focus right \\\r\n      --boundaries all-monitors-outer-frame \\\r\n      --boundaries-action wrap-around-all-monitors\r\n  fi\r\n'\r\n'''\r\n```\r\n\r\nHowever, this would be nicer as a simple flag or config option.\r\n\r\n",
      "created_at": "2025-06-18T13:34:44Z",
      "updated_at": "2025-06-24T10:16:20Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rwblokzijl",
        "avatar_url": "https://avatars.githubusercontent.com/u/446634?u=58fb53e563e7ffa324d564206d6e986d63e091a0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgXeD",
      "number": 1484,
      "title": "Fingerprint Popup is not having the focus, have to click on it manually",
      "body": "Steps to reproduce:\r\n1. Run `sudo su`\r\n\r\nExpected result:\r\nThe popup should be focused by default.\r\nActual result:\r\n<img width=\"1728\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e554692c-0289-48b6-95cd-4dde65698428\" />\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-06-23T14:08:43Z",
      "updated_at": "2025-06-23T16:02:12Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Azs1B",
        "body": "Can't reproduce, the popup is focused by default on my machine\r\n\r\n- AeroSpace 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n- macOS 15.5\r\n\r\nI tried two terminal emulators:\r\n- kitty Version 0.42.1 (0.42.1)\r\n- Alacritty Version 0.15.1 (1)"
      },
      "user": {
        "login": "niksingh710",
        "avatar_url": "https://avatars.githubusercontent.com/u/60490474?u=89ed2d347df8123f09ad4d12d5f086d31df4a72d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgVyY",
      "number": 1479,
      "title": "how switch worskpace using arrows ?",
      "body": "Hi, i tried in this way but not work, how can i swap workspace using alt + arrow left or write ? \r\n```\r\nalt-left = 'workspace --wrap-around prev' \r\nalt-right = 'workspace --wrap-around next'\r\n```",
      "created_at": "2025-06-20T21:32:10Z",
      "updated_at": "2025-06-22T11:56:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzqOJ",
        "body": "i resolved in this way : \r\n \r\n```\r\nalt-cmd-left = 'workspace --wrap-around prev'\r\nalt-cmd-right = 'workspace --wrap-around next'\r\n```\r\n"
      },
      "user": {
        "login": "uscne",
        "avatar_url": "https://avatars.githubusercontent.com/u/38867931?u=e6fd1ee56d6ace93869a29b79025b68c88a53c6b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgWhg",
      "number": 1481,
      "title": "Inactive workspaces showing up on top of normal windows",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have a 4 monitor setup that looks like this (the screen on the left-most side is irrelevant)\r\n![2025-06-22 11 56 01](https://github.com/user-attachments/assets/5b8f852c-f376-4d2d-9dd0-d027f3bc2003)\r\n\r\n2. Try switching between two workspaces on the top-most screen \r\n3. The inactive workspace will show up over the regular windows on the right-most screen (as shown)\r\n![2025-06-22 12 00 39](https://github.com/user-attachments/assets/1b5bdbef-c375-40fd-965e-ddd68072c4d5)\r\n\r\n\r\nExpected result: Inactive workspaces on the top-most screen do not show up over normal windows on the right-most screen\r\nActual result: Inactive workspaces on the top-most screen show up over the normal windows on the right-most screen obscuring my work \r\n\r\n### Additional info\r\nThe normal windows show up one by one when I focus on them on the right-most screen and switching between them works just as expected, the inactive workspace window that shows on top is only there visually, and does not interfere with anything, focusing on this inactive workspace window manually with the mouse causes the entire workspace to go back into focus (as expected)\r\n",
      "created_at": "2025-06-22T09:05:36Z",
      "updated_at": "2025-06-22T09:09:17Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzqEZ",
        "body": "https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement"
      },
      "user": {
        "login": "IHAVENOARMS",
        "avatar_url": "https://avatars.githubusercontent.com/u/45311996?u=cba7d6c38f6f623c1e38f0e354ba39d722cc4600&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgU2u",
      "number": 1477,
      "title": "Add option to disable or hide the AeroSpace bar entirely",
      "body": "\r\nHi Nikita,\r\n\r\nI’d like to request a configuration option to disable the built-in AeroSpace bar entirely—i.e., prevent it from drawing at all. While the bar is informative, it doesn’t fit my minimalist, distraction-free workflow, and using outer.left/outer.top gaps only shifts windows—it doesn’t actually hide the bar.\r\n\r\nProposed config snippet:\r\n\r\n[bar]\r\nenabled = false\r\n\r\nOptional enhancements:\r\n- auto-hide = true\r\n- bar-position = \"left\" | \"top\" | \"bottom\" | \"right\"\r\n- bar-opacity = 0.0 or a customizable color\r\n\r\nThanks for creating AeroSpace—it’s already becoming a daily driver for me, and I appreciate the i3-style power it brings to macOS.\r\n\r\n— willnapier",
      "created_at": "2025-06-19T22:25:26Z",
      "updated_at": "2025-06-19T22:25:27Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "willnapier",
        "avatar_url": "https://avatars.githubusercontent.com/u/5095607?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgNR4",
      "number": 1470,
      "title": "Is there a way to quit Aerospace (other than from the menu bar)?",
      "body": "Hi there,\r\n\r\nAerospace menu icon only show up on my secondary screen so I can't quit the application when it bugs out. \r\nIdeally I would like to be able to close it from the \"Force quit menu\" or from the `aerospace` command line command (I couldn't find this on the docs) \r\n\r\nMany thanks,\r\nAvishka \r\n",
      "created_at": "2025-06-11T18:36:37Z",
      "updated_at": "2025-06-19T03:11:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzROC",
        "body": "You can write `pkill AeroSpace` in the command line to kill the process."
      },
      "user": {
        "login": "AvishkaDon",
        "avatar_url": "https://avatars.githubusercontent.com/u/51836632?u=6f2dba4e3d4cc3cf2a10c47960f6a8cc321e14a3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af7PS",
      "number": 1433,
      "title": "basic approaches for disconnected/reconnected monitors?",
      "body": "My aerospace window/workspace configuration gets discombobulated when I disconnect my external monitors, and the window/ workspace/monitor alignment doesn't recover when I reconnect the monitors. \r\n\r\nI've seen some feature requests around handling monitor disconnects. But what's the best way to manage with the current version of aerospace? Do you quit and restart the apps so they find their place via `[[on-window-detected]]`? Is there a handy script to realign everything? Does stickybar help? \r\n\r\nOr do things normally just work with reconnected monitors and I should look for something unusual in my setup?\r\n\r\n\r\n",
      "created_at": "2025-05-24T19:23:06Z",
      "updated_at": "2025-06-18T04:35:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mighdoll",
        "avatar_url": "https://avatars.githubusercontent.com/u/63816?u=9e0d6ad818cbf0be7b8403e432ebe8ad585ded69&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfwOe",
      "number": 1412,
      "title": "IntelliJ IDEA is very sluggish with AeroSpace",
      "body": "### Body\n\n### Steps to reproduce:\r\n\r\n1. Launch AeroSpace\r\n2. Launch IntelliJ IDEA\r\n3. Switch/Move between workspaces, then return back to IntelliJ IDEA\r\n\r\n### Expected result:\r\nIntelliJ IDEA should remain fully responsive after switching workspaces — mouse, keyboard, and UI interactions should behave normally.\r\n\r\n### Actual result:\r\nUpon returning to IntelliJ IDEA, the app becomes sluggish or temporarily unresponsive.\r\n\r\nSymptoms include:\r\n\r\n- Laggy or frozen mouse interactions (e.g., clicking menus, scrolling)\r\n- Delayed or dropped keyboard input (e.g., typing, invoking shortcuts)\r\n- Perception that the app is frozen, despite other applications functioning normally\r\n\r\n### Additional info\r\n\r\nRecently migrated from Rectangle to AeroSpace, so I can't compare this behavior with previous AeroSpace versions.\r\nNo similar issues observed with other applications under identical conditions.\r\nSystem resource usage appears normal (CPU mostly idle, >16 GB RAM free).\r\n**IntelliJ IDEA returns to normal responsiveness after quitting AeroSpace.**\r\n\r\n```shell\r\n24.4.0 Darwin Kernel Version 24.4.0: Fri Apr 11 18:33:39 PDT 2025; root:xnu-11417.101.15~117/RELEASE_ARM64_T6020 arm64\r\n```\r\n\r\n```shell\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\n```shell\r\n56790 | com.apple.ActivityMonitor  | Activity Monitor\r\n803   | com.apple.finder           | Finder\r\n1183  | com.microsoft.teams2       | Microsoft Teams\r\n1546  | com.jetbrains.intellij     | IntelliJ IDEA\r\n1624  | com.microsoft.Outlook      | Microsoft Outlook\r\n1692  | org.mozilla.firefox        | Firefox\r\n36081 | com.electron.dockerdesktop | Docker Desktop\r\n```\r\n\r\n###\r\nAttached video demonstrates the issue:\r\nIn the recording, only IntelliJ IDEA is shown. I switch focus by clicking on other windows (no workspace switching involved), and the lag becomes apparent. This suggests the issue may be related to window focus handling, not necessarily workspace switching.\r\n\r\nhttps://github.com/user-attachments/assets/02399e80-c47e-4478-b213-072f8f75fa94\r\n\r\n",
      "created_at": "2025-05-14T12:07:12Z",
      "updated_at": "2025-06-17T12:19:50Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dasvh",
        "avatar_url": "https://avatars.githubusercontent.com/u/131653108?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgSCM",
      "number": 1474,
      "title": "second activation of same binding",
      "body": "It would be sweet to be able to define what happens if the same key activation is repeated. For example if I do `alt - 1` twice in a row. One case I would use it immediately would be to\r\n\r\n```\r\n# on first press switch to workspace 1, on repeated presses do focus right\r\nalt-1 = [ ['workspace 1'], ['focus right'] ]\r\n```\r\n\r\nor it could be global way to configure repeated actions\r\n```\r\n[repeated]\r\n  'alt-[0..9,a..z]' = ['focus right]\r\n```\r\n\r\nor something along those lines.",
      "created_at": "2025-06-17T12:04:59Z",
      "updated_at": "2025-06-17T12:05:00Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Arch-vile",
        "avatar_url": "https://avatars.githubusercontent.com/u/2006859?u=d51454ceacbec48437cd264a2d13e10ee56993a3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ace_q",
      "number": 690,
      "title": "Aerospace dies when screen is locked",
      "body": "Hey folks,\r\n\r\nI've just noticed that when the computer screen locks due to lack of activity,\r\nAeroSpace dies and I need to restart it (and put all windows in their specific\r\nworkspaces).\r\n\r\nIs there a way to prevent that?\r\n\r\nThanks,\r\nMarcelo.\r\n",
      "created_at": "2024-11-12T02:19:22Z",
      "updated_at": "2025-06-16T11:59:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "marcelofern",
        "avatar_url": "https://avatars.githubusercontent.com/u/17491689?u=5b56388d936be3d828cd1924a3fac93a9aa3d39c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af57C",
      "number": 1431,
      "title": "Fullscreen  Ghostty Terminal being moved right or left when changing Tab",
      "body": "### Body\n\nHello I just installed Aerospace and running the basic setting. \r\nI just force assigned workspace to monitor. I run just 1 monitor, so total 2 screens.\r\nMac pro m3 JIS keyboard.\r\n\r\nI have Ghostty terminal in fullscreen with few terminal tabs open, when I use : `command + \"num\"` to switch tabs, it seem like the terminal window get moved randomly to the right or left. \r\nIt also happened once when switch focus to a workspace assigned to the laptop using : `option + 7`. \r\n\r\nit should stay fullscreen. \r\nI can't figure what trigger this problems, at it does not happen all the time... \r\n\r\nI am still testing to narrow down the problem. \r\nIf anyone had this kind of problems before, I would love to know how to fix it .\r\n\r\nthanks you very much.\r\n",
      "created_at": "2025-05-23T09:06:31Z",
      "updated_at": "2025-06-16T07:52:36Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzaDK",
        "body": "It might be related to [this, on ghostty's doc](https://ghostty.org/docs/help/macos-tiling-wms), if you haven't noticed yet. It makes this kind of weird behaviors. "
      },
      "user": {
        "login": "sa-kevin",
        "avatar_url": "https://avatars.githubusercontent.com/u/173228888?u=1dd08b547bf1b2c5d410b62393687b718c856ac8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgQWa",
      "number": 1473,
      "title": "Replicating default command-tab with Aerospace workspaces",
      "body": "What is the most practical with the default behavior of `cmd+tab` is that it enables switching quickly between 3 (or more) apps with only two presses of `tab`. It would be great to be able to have the same behavior with Aerospaces's workspaces.\r\n\r\nCurrently, we can switch back and forth workspaces between 2 workspaces or focus on the previous/next workspace in alphabetical order (with wrapping) among all existing workspaces, even those without any window inside.\r\nThe behavior replicating `cmd+tab` would be to focus on the next/previous workspace **with a window inside** (with wrapping), and also to sort the workspaces **from the most recently focused to the least recently focused**.\r\nThis replicates the original switch back and forth by pressing `cmd+tab`, switch with the previous previous workspace with `cmd+(tab tab)`, etc.\r\n\r\nI'm not sure if it's compatible with how Aerospace handles shortcuts at the moment because with this version, `cmd(tab tab)` would be different from `cmd+tab cmd+tab` (we lose the associativity in a way).\r\n\r\nAlso I believe it's currently not possible to remove the default cmd+tab like other shortcuts, so we can't remap anything to it.",
      "created_at": "2025-06-15T19:23:49Z",
      "updated_at": "2025-06-15T19:24:41Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Kajiih",
        "avatar_url": "https://avatars.githubusercontent.com/u/111422357?u=7468e4862fa9231b0bffa4f089fb225ff9873fd5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeqBe",
      "number": 1167,
      "title": "Define workspace layout in config.toml?",
      "body": "Is it possible to define Workspace with layout different from root layout ?",
      "created_at": "2025-03-04T04:35:54Z",
      "updated_at": "2025-06-12T19:47:56Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "santhoshr",
        "avatar_url": "https://avatars.githubusercontent.com/u/2510419?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgKmo",
      "number": 1464,
      "title": "is MacOS Sequoia 15.5 supported?",
      "body": "### Body\n\nHi, i tried to start aerospace but i got this error:\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\nVersion: 0.18.5-Beta\r\nGit hash: 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nrefreshSessionEvent: nil\r\nDate: 2025-06-09 07:52:08 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/initAppBundle.swift:15:14 initAppBundle()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001048d2b38 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 2260\r\n1   AeroSpace                           0x00000001048fd14c $s6Common5check__4file4line6column8functionySb_SSyXKSSS2iSStF + 92\r\n2   AeroSpace                           0x0000000104755058 $s9AppBundle04initaB0yyF + 488\r\n3   AeroSpace                           0x00000001046ed9a0 $s9AeroSpace0aB3AppV7SwiftUI0C0AadEPxycfCTW + 20\r\n4   SwiftUI                             0x00000001c84ce5b0 $s7SwiftUI3AppPAAE4mainyyFZ + 208\r\n5   AeroSpace                           0x00000001046ed9e0 main + 36\r\n6   dyld                                0x0000000197636b98 start + 6076\r\n\r\n```\r\n\r\nmy areospace.toml file : \r\n\r\n```\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        0\r\nouter.right =      0\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-a = 'workspace A' # In your config, you can drop workspace bindings that you don't need\r\nalt-b = 'workspace B'\r\nalt-c = 'workspace C'\r\nalt-d = 'workspace D'\r\nalt-e = 'workspace E'\r\nalt-f = 'workspace F'\r\nalt-g = 'workspace G'\r\nalt-i = 'workspace I'\r\nalt-m = 'workspace M'\r\nalt-n = 'workspace N'\r\nalt-o = 'workspace O'\r\nalt-p = 'workspace P'\r\nalt-q = 'workspace Q'\r\nalt-r = 'workspace R'\r\nalt-s = 'workspace S'\r\nalt-t = 'workspace T'\r\nalt-u = 'workspace U'\r\nalt-v = 'workspace V'\r\nalt-w = 'workspace W'\r\nalt-x = 'workspace X'\r\nalt-y = 'workspace Y'\r\nalt-z = 'workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-a = 'move-node-to-workspace A'\r\nalt-shift-b = 'move-node-to-workspace B'\r\nalt-shift-c = 'move-node-to-workspace C'\r\nalt-shift-d = 'move-node-to-workspace D'\r\nalt-shift-e = 'move-node-to-workspace E'\r\nalt-shift-f = 'move-node-to-workspace F'\r\nalt-shift-g = 'move-node-to-workspace G'\r\nalt-shift-i = 'move-node-to-workspace I'\r\nalt-shift-m = 'move-node-to-workspace M'\r\nalt-shift-n = 'move-node-to-workspace N'\r\nalt-shift-o = 'move-node-to-workspace O'\r\nalt-shift-p = 'move-node-to-workspace P'\r\nalt-shift-q = 'move-node-to-workspace Q'\r\nalt-shift-r = 'move-node-to-workspace R'\r\nalt-shift-s = 'move-node-to-workspace S'\r\nalt-shift-t = 'move-node-to-workspace T'\r\nalt-shift-u = 'move-node-to-workspace U'\r\nalt-shift-v = 'move-node-to-workspace V'\r\nalt-shift-w = 'move-node-to-workspace W'\r\nalt-shift-x = 'move-node-to-workspace X'\r\nalt-shift-y = 'move-node-to-workspace Y'\r\nalt-shift-z = 'move-node-to-workspace Z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n```",
      "created_at": "2025-06-09T07:53:54Z",
      "updated_at": "2025-06-09T15:19:27Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzKPa",
        "body": "Hi, I just added the `aerospace.toml` file to ~/.config, not to my home directory."
      },
      "user": {
        "login": "uscne",
        "avatar_url": "https://avatars.githubusercontent.com/u/38867931?u=e6fd1ee56d6ace93869a29b79025b68c88a53c6b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgKtU",
      "number": 1466,
      "title": "Add `--fail-if-noop` for `move` command",
      "body": "One use case I can think of for this flag is to conditionally chain it with `move-node-to-monitor`, like this\r\n\r\n```\r\naerospace move down --fail-if-noop || aerospace move-node-to-monitor down --focus-follows-window\r\n```\r\n\r\nThis would give me a more natural feel while moving the window around the setup, as if all windows are a huge workspace combined.",
      "created_at": "2025-06-09T10:01:12Z",
      "updated_at": "2025-06-09T10:03:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "antran22",
        "avatar_url": "https://avatars.githubusercontent.com/u/22423559?u=3349666dfb60228b8a55d7d3c39fb1dda9f09aae&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgJvW",
      "number": 1460,
      "title": "Dragging window with modifier key to join with mouse",
      "body": "The basic mouse manipulation support (moving windows within the current layout node and resizing them) is great. However, one of the messiest manipulations to get right entirely with the keyboard actions I find is `joint-with`. It seems like dragging a window with a modifier key held could naturally allow joining that window with whatever node it was dragged over, instead of moving past that node.",
      "created_at": "2025-06-07T20:45:08Z",
      "updated_at": "2025-06-08T17:32:00Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzIVK",
        "body": "I don't like how it's primarily done in the majority of other tiling window managers – that the windows have left-down-up-right-center areas, and the behavior is different depending on where you drop the window. In such systems, users have to be too precise with their move movements.\r\n\r\nThe idea with the modifier is much nicer, thanks for proposing, created a tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1462\r\n\r\nA fair warning: the priority is low cause it's about the mouse."
      },
      "user": {
        "login": "jrk",
        "avatar_url": "https://avatars.githubusercontent.com/u/9147?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgKFI",
      "number": 1461,
      "title": "Move window within workspace and across monitors with the same shortcut",
      "body": "I'm wondering if it's possible to recreate i3 experience of moving window across the monitors with the same shortcut.\r\nE.g \"opt + shift + h\" moves window to the left within a workspace, but when it's at left edge, the same shortcut moves the window to another screen.\r\n\r\nHere's a diagram that illustrates desired behavior:\r\n![image](https://github.com/user-attachments/assets/c823fb13-698c-44dd-a5a5-3c8b01324a11)\r\n",
      "created_at": "2025-06-08T13:42:58Z",
      "updated_at": "2025-06-08T13:43:41Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mflis",
        "avatar_url": "https://avatars.githubusercontent.com/u/15031715?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgG-6",
      "number": 1456,
      "title": "Provide workspace name when listing windows",
      "body": "I have seen this pattern in multiple `skethcybar` configurations to figure out which window belongs to which workspace:\r\n\r\n```\r\n  while IFS= read -r sid; do\r\n    while IFS= read -r line; do\r\n    # --- snipped ---\r\n    done < <(aerospace list-windows --workspace \"$sid\")\r\n  done < <(aerospace list-workspaces)\r\n```\r\n\r\nThis causes <number of workspaces> calls to `list-windows` which causes delays in the UI rendering due to waiting for processes to run. To fix this issue I have added a new interpolation variable to the output of `list-windows` named `window-workspace-name`, which for me improved the responsiveness of `skethcybar` a bit. I am curious if this is something that you think could be upstreamed.",
      "created_at": "2025-06-04T20:24:21Z",
      "updated_at": "2025-06-04T20:24:23Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Potochi",
        "avatar_url": "https://avatars.githubusercontent.com/u/34789154?u=e47bfc21650fa2c7bf49fe43ba5477997acfe207&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgGOW",
      "number": 1453,
      "title": "Enable more characters for keybinds (like ÆØÅ)",
      "body": "i have Norwegian keyboard, so having access to these keys would be awesome :) i figure this would be create for other lang keyboard also. ",
      "created_at": "2025-06-04T10:23:50Z",
      "updated_at": "2025-06-04T19:35:09Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AzAmj",
        "body": "https://nikitabobko.github.io/AeroSpace/guide#key-mapping"
      },
      "user": {
        "login": "shroomyboy",
        "avatar_url": "https://avatars.githubusercontent.com/u/143202669?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af7ze",
      "number": 1438,
      "title": "All windows moved to last opened workspace after screensaver",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Enable screensaver (animated picture. not screen off. without password). Set screensaver time f.e. 1 minute\r\n2. Open 3 windows on 3 separate work spaces\r\n3. Wait until screensaver started and wake up computer\r\n\r\nExpected result:\r\nState preserved\r\nActual result:\r\nWindows messed up and moved to last active workspace\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n",
      "created_at": "2025-05-25T18:02:39Z",
      "updated_at": "2025-06-04T12:21:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ay_j4",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1216"
      },
      "user": {
        "login": "mishazawa",
        "avatar_url": "https://avatars.githubusercontent.com/u/7611372?u=137c8453276f70b0be0eada3b49d225cd1bdfac3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgDu3",
      "number": 1450,
      "title": "How to avoid all chrome windows getting to focus when switching to as ws with one window?",
      "body": "my issue is that if i have a chrome window on workspace 1 and 2, if i go to ws 2 then the ws 1 is also brought to focus im launching chrome windows like this\r\n```\r\nalt-b = '''exec-and-forget osascript -e '\r\ntell application \"Google Chrome\"\r\n    make new window\r\n    activate\r\nend tell'\r\n'''\r\n```\r\n\r\n\r\nalso how do i properly launch wezterm now that we are here i tried this\r\n```\r\nalt-space = '''exec-and-forget osascript -e '\r\ntell application \"WezTerm\"\r\n    do script\r\n    activate\r\nend tell'\r\n'''\r\n```\r\n\r\nbut it dosent work\r\n",
      "created_at": "2025-06-02T14:19:18Z",
      "updated_at": "2025-06-04T12:20:40Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlejandroSanchez90",
        "avatar_url": "https://avatars.githubusercontent.com/u/127575426?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae8xy",
      "number": 1225,
      "title": "What keybindings could i use on a european keyboard",
      "body": "On the European layout of my Mac keyboard, the keys Alt + 1 to Alt + 9 are assigned to characters that I use regularly, such as {} and []. Does anyone have an example of alternative keybindings I could use for this layout? ",
      "created_at": "2025-03-21T10:22:34Z",
      "updated_at": "2025-06-04T10:23:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DominikBabic06",
        "avatar_url": "https://avatars.githubusercontent.com/u/129493636?u=dfe6e5ad2bb6548145f22609d6b99a369aba94bf&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgENz",
      "number": 1451,
      "title": "advice for managing multiple browser workspace/profile windows",
      "body": "i've been using Aerospace daily for a few months now, but there's one bit of configuration i've been unable to sort out. i use Vivaldi for a web browser, which has various ways of organizing things (profiles/workspaces), but i'm not sure there's a way for Aerospace to consistently differentiate my windows.\r\n\r\nto give an example, i frequently have my \"personal\" profile on one screen and my \"work\" profile on the other. my workaround for this currently is to use Vivaldi Snapshot (which has a distinct package ID) for work, which is fine, but it makes my browser config really messy when the two profiles aren't able to share settings.\r\n\r\ni'm not sure this is so much an issue with Aerospace as it is a limitation of what Vivaldi (or other browsers) can offer at this level, so i'm curious if anyone has suggestions for getting around it. i've thought about doing something with process IDs - maybe using some kind of script to open the desired profile and storing the PID so Aerospace can use it?",
      "created_at": "2025-06-03T01:40:38Z",
      "updated_at": "2025-06-03T01:40:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "iznaut",
        "avatar_url": "https://avatars.githubusercontent.com/u/36773942?u=e14996811a880b2c83b3d0d16a74b9cef10d721f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgAPG",
      "number": 1445,
      "title": "`AppBundle.MacWindow is already unbound.`",
      "body": "### Body\n\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000102c428fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000102ad66cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000102ad6978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000102a559a8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 560\r\n    4   AeroSpace                           0x0000000102a58465 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x0000000102a56549 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000102a3c431 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n    7   AeroSpace                           0x0000000102a7e605 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x0000000102a9c149 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ7_ + 1\r\n    10  AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000284264461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000284264109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000102a9ac99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x0000000284264461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000284264109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x0000000102a9816d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x0000000102a7e155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x0000000102a343f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000028429883d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-05-29 16:37:15 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.5 (Build 24F74)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000102c41f28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000102ad6a84 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000102a559a8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 560\r\n3   AeroSpace                           0x0000000102a58465 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x0000000102a56549 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000102a3c431 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n6   AeroSpace                           0x0000000102a7e605 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x0000000102a9c149 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ7_ + 1\r\n9   AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000284264461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000284264109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x0000000102a9ac99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x0000000102a349b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000284264461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x0000000284264109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x0000000102a9816d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x0000000102a7e155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x0000000102a343f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000028429883d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n<hangs indefinitely>\r\n```\r\n",
      "created_at": "2025-05-29T16:40:30Z",
      "updated_at": "2025-06-02T09:54:30Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ay5QJ",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "samuela",
        "avatar_url": "https://avatars.githubusercontent.com/u/226872?u=77a7e7d5d716a64aa859dd02f3d5564848f4c0dc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af5tO",
      "number": 1430,
      "title": "Exclude Window from Aerospace control or eventing",
      "body": "Is there or can there be a way to exclude a window ID from aerospace control / eventing? \r\n\r\nLanguageTool has a little helper app UI that pops up for certain apps (mail, MS Word, etc.) and it seems to be controlled with a LaunchAgent that lags a bit, so I send a command to go to next space and 200ms latter the little UI helper gets focus after the app in the next space, so aerospace gives me an exec-on-workspace-change that yanks me right back to the original space I moved away from. ",
      "created_at": "2025-05-23T04:50:17Z",
      "updated_at": "2025-06-02T09:29:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenbanks-peng",
        "avatar_url": "https://avatars.githubusercontent.com/u/26904200?u=a6f1165e21ce6d7c2d4574f1ae4573cef4c7a00e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfmWZ",
      "number": 1386,
      "title": "`on-monitor-disconnected` | `on-monitor-connectred` | dynamic workspaces with monitor attach/detach",
      "body": "tl;dr;\r\n\r\n- I want workspace to be created/torn down when I attach/detach monitor.\r\n- When the monitor becomes unavailable, all windows are collected and sent to the default workspace for a monitor. \r\n- When a monitor is attached  that are normally assigned to a workspace, go there when a monitor is attached. \r\n\r\n---\r\n\r\nMaybe this is a wild idea, but I use at least 4 different monitors (including internal laptop screen) as I move between locations: office & home. \r\n\r\n1. Sometimes single display on macbook internal display\r\n2. Sometimes in clamshell mode with 1 external **ultrawide** monitor attached\r\n3.  Sometimes in clamshell mode with 2 external monitors (1 main **ultrawide**, 1 **16:9**) attached\r\n\r\nI use the \"force workspace to monitor\" feature because I have a very clear idea how I want each workspace to be set up. I don't use addtional workspaces - 1 per monitor:\r\n\r\n- (option 1) internal monitor: 1 column, vertical accordion\r\n- (option 2 and 3 above) ultrawide main external monitor: 2 columns, both vertical accordions\r\n- (option 3) 16:9 secondary monitor: all floating\r\n\r\nthe trouble is, to accommodate 3 different monitors, I have 3 different workspace, each forced to a specific monitor:\r\n\r\n\r\n```toml\r\n[workspace-to-monitor-force-assignment]\r\n'P1' = '^built-in retina display$'\r\n'S1' = 'MSI MAG401QR'\r\n'S2' = 'MAG274QRF-QD'\r\n```\r\n\r\nHowever, when I disconnect these monitors (for example, going from 3 -> 1, the 3 workspaces remain and the windows stay on the workspaces they were on. when am using just my laptop I want all the windows to automatically collect on to this workspace. When the monitors are re-attached, I want them to be distributed to the workspaces they were on previously. \r\n\r\nI'm guessing this is way beyond the scope of aerospace?\r\n\r\n\r\n\r\n",
      "created_at": "2025-05-06T03:30:37Z",
      "updated_at": "2025-06-01T09:51:32Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ortonomy",
        "avatar_url": "https://avatars.githubusercontent.com/u/6688676?u=bf67a86032e6aefd254d7ad786310448fb1a301e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfSSs",
      "number": 1298,
      "title": "Zen browswers PiP player not being detected by config",
      "body": "I currently have this in my config for Zen's PiP window.\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id= \"app.zen-browser.zen\"\r\nif.window-title-regex-substring= \"Picture-in-Picture\"\r\nrun = ['layout floating']\r\n```\r\n\r\nBut no matter what the PiP player will always pop up as being tiled. This wasn't an issue before 0.17.1 but also still persists on 0.18.1",
      "created_at": "2025-04-14T15:14:34Z",
      "updated_at": "2025-05-31T20:51:47Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TaylorJonesTRT",
        "avatar_url": "https://avatars.githubusercontent.com/u/9523996?u=9c62ba9ec15a5277e242820846dc8efe46da7aab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgAJP",
      "number": 1444,
      "title": "Offer an installation alternative via the MacPorts package manager",
      "body": "Here's the installation documentation for Aeropress:\r\nhttps://nikitabobko.github.io/AeroSpace/guide#installation\r\n\r\nHere's the MacPorts package coverage:\r\nhttps://ports.macports.org",
      "created_at": "2025-05-29T14:56:52Z",
      "updated_at": "2025-05-29T14:56:53Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "UnchartedSystems",
        "avatar_url": "https://avatars.githubusercontent.com/u/20145459?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgAE5",
      "number": 1443,
      "title": "Gap between menu bar and window on macOS & Alacritty SimpleFullScreen",
      "body": "### Body\n\nI'm noticing a small gap between the macOS menu bar and the top of windows (with all applications).\r\nI have set all `gaps` to 0 in my config.\r\nAttaching a screenshot for reference.\r\n\r\nHas anyone else run into this issue or found a workaround?\r\n\r\nExpected result: There should be no gap between menubar and window\r\nActual result: Little gap between both.\r\n\r\nSide Note:\r\n1. I am also trying to setup something like when the aerospace starts, i want multiple instances of my terminal in couple of workspace, like i want to open terminal in workspace 7,8,9,10 when aerospace starts, Is there any way to achieve the same?\r\n\r\n2. I'm using alacritty which has `SimpleFullScreen` option in *start_mode*, when it starts in that mode, it basically utilizes whole screen, but when i switch back to the same workspace again, it's not having auto-focus in the terminal, i need to use to mouse click to gain focus to the terminal, any workarounds?\r\n\r\nThank you.\r\n<img width=\"1470\" alt=\"image\" src=\"https://github.com/user-attachments/assets/5942ad0c-82fa-4067-9c0d-bf8651dab88a\" />\r\n",
      "created_at": "2025-05-29T13:27:48Z",
      "updated_at": "2025-05-29T16:32:45Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "detoxifiedplant",
        "avatar_url": "https://avatars.githubusercontent.com/u/125733893?u=7b37f69b1c56b37fa02a3954ac8dccdd1478e774&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af9ko",
      "number": 1442,
      "title": "Direction of newly created windows",
      "body": "Is it possible to change the direction of newly created windows when in horizontal tiled layout? I want them to open to the left side of the focused window rather than the right",
      "created_at": "2025-05-27T12:10:07Z",
      "updated_at": "2025-05-27T18:13:54Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyryM",
        "body": "Answering you original question: no, currently it's not possible "
      },
      "user": {
        "login": "amlanjlahkar",
        "avatar_url": "https://avatars.githubusercontent.com/u/89011246?u=f977407fb28f50b56362046dfcd7a49dc32f70f6&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae0by",
      "number": 1206,
      "title": "How can I create this layout",
      "body": "Sorry for this very dumb question, but I am struggling to understand how to create this kind of layout:\r\n\r\n```shell\r\nh_tiles\r\n├── window 1\r\n└── v_tiles\r\n    ├── window 2 (focused)\r\n    └── window 3\r\n```\r\n\r\nIt should be pretty easy to achieve, but I cannot understand how to do it when I use:\r\n\r\n```\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n```\r\n\r\nIt just rearranges current windows.\r\n\r\nI come from Linux Sway, where this is a bit more intuitive. You just change the direction of the next window, and it will be created as H or V.\r\n",
      "created_at": "2025-03-13T22:20:05Z",
      "updated_at": "2025-05-27T17:07:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ayq4p",
        "body": "aerospace only supports two layouts: tiled and accordion. To simulate a master-stack layout like the one you're trying to achive you **NEED** to order them explicitely. However it should be possible to automate this with available [query commands](https://nikitabobko.github.io/AeroSpace/commands#query-commands), specifically `list-workspaces` and `list-windows` and then registering a callback that detects new windows\r\nhttps://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback"
      },
      "user": {
        "login": "paolomainardi",
        "avatar_url": "https://avatars.githubusercontent.com/u/8747?u=000e93e7d87e3614ec8c266cc88db1a4b059086a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af86W",
      "number": 1441,
      "title": "Cannot switch to a window, if cursor is on a password field.",
      "body": "When I sign in on a web app and my cursor is in the password input field,\r\nswitching workspaces does not work.\r\n\r\nThat's only on the password input field, \\***not\\*** on the username/email input field.\r\n\r\nI'll appreciate any workaround on this weird behavour.",
      "created_at": "2025-05-26T23:43:08Z",
      "updated_at": "2025-06-02T13:27:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyqTu",
        "body": "This is a built-in security feature in macOS. When the user has a password field in focus, you shouldn't listen for any keystrokes."
      },
      "user": {
        "login": "gachikuku",
        "avatar_url": "https://avatars.githubusercontent.com/u/11743804?u=abf810290e2d5e777542713f28063908caf1064a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af6zd",
      "number": 1432,
      "title": "Condition on 'on-focus-changed' and 'exec-on-workspace-change'",
      "body": "Is it possible to add conditions to the callbacks 'on-focus-changed' and 'exec-on-workspace-change' similar to what can be done for the 'on-window-detected'?",
      "created_at": "2025-05-24T06:49:23Z",
      "updated_at": "2025-05-27T08:18:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "a-alak",
        "avatar_url": "https://avatars.githubusercontent.com/u/77401305?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af8l1",
      "number": 1439,
      "title": "Electron panel app doesn't persist across workspaces",
      "body": "I’m running into an issue with an Electron app I’m building when used alongside Aerospace. The app is intended to function as an always-on-top, always-visible panel, but it currently doesn’t persist across workspaces—Aerospace confines it to a single screen.\r\n\r\nInterestingly, the behavior changes depending on the order of operations. If I launch the Electron app before starting Aerospace, it works as expected and remains visible across all workspaces. But if I start Aerospace first and then launch the app, it gets pinned to just one workspace.\r\n\r\nThis makes me suspect the issue may be related to how Electron simulates NSPanel-like behavior or how Aerospace initializes and manages windows at startup. It seems possible that Aerospace does something at launch that enables cross-workspace persistence for existing windows but doesn’t apply the same logic to new ones.\r\n\r\nCurious if anyone has insight into what Aerospace might be doing at startup, or where I should start digging into its code to better understand and potentially fix this behavior.\r\n",
      "created_at": "2025-05-26T14:22:27Z",
      "updated_at": "2025-05-26T14:32:34Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "schester44",
        "avatar_url": "https://avatars.githubusercontent.com/u/15207595?u=9a4db0b7244990fe6b492effc4fd867d4bb9c9a9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcRJI",
      "number": 656,
      "title": "Mouse move/resize compatibility",
      "body": "I don't know, if this was mentioned before, i couldn't find it anywhere. I used to use yabai as tiling window manager and there was a feature to move or resize windows on a workspace by holding a modifier and holding left (move) or right (resize) click. If i use the default macos builtin solution (at the corners or the title bar), this works with aerospace. But if I use a tool like Easy Move + Resize (https://github.com/dmarcotte/easy-move-resize), this is just flickering around and doing nothing at the end of the day. Is there any reason, why this is not working ? Is it a bug or on purpose ? Would it be possible to either make it compatible to external move and resize toolings or just build it into aerospace ? \r\n\r\nI'm using a single 4k monitor and I always have multiple windows on screen and am resizing them in both directions (horizontal and vertical) with the mouse was always faster than shortcuts to resize dimensions independently. ",
      "created_at": "2024-11-02T11:55:02Z",
      "updated_at": "2025-05-26T08:46:39Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "freisenhauer",
        "avatar_url": "https://avatars.githubusercontent.com/u/25230073?u=fe923a86d686373231c3ef06bf36d45db3bcbbc9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af7VG",
      "number": 1435,
      "title": "Multiple-tab Terminal.app leads to false tiling",
      "body": "### Body\n\n<img width=\"2670\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f454b497-a907-4803-a292-a66bd0aadacf\" />\r\n\r\nif a new tab is created: \r\n<img width=\"2560\" alt=\"image\" src=\"https://github.com/user-attachments/assets/225bc6a9-6b6f-45a0-8de7-98f9ed04ddd0\" />\r\n\r\nNote that if switched to the other tab, the active terminal window occupies the other half of the space. \r\n\r\n\r\nExpected result: terminal.app still takes up the entirety of the space. \r\nActual result: \r\n1) the space is divided into the total number of tabs in terminal.app (e.g. if 2 tabs, then space is divided into 2), \r\n2) the active window only takes up 1/x of the space. Rotating through the tabs could see that the active window of terminal.app jumps through different tiles of the space. \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-05-24T23:24:44Z",
      "updated_at": "2025-06-02T09:58:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AylVI",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/68"
      },
      "user": {
        "login": "kzssc",
        "avatar_url": "https://avatars.githubusercontent.com/u/37780271?u=4655137bb8da2a0fe8cd5bbc8c11270d8560ed13&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af7VC",
      "number": 1434,
      "title": "cmd+tab doesn't always make the app forefront",
      "body": "### Body\n\ncmd+tab\r\n\r\nExpected result: chosen app takes forefront / switches to the space that contains said app. \r\nActual result: app is activated, just not forefront. \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-05-24T23:19:04Z",
      "updated_at": "2025-05-24T23:19:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kzssc",
        "avatar_url": "https://avatars.githubusercontent.com/u/37780271?u=4655137bb8da2a0fe8cd5bbc8c11270d8560ed13&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac_II",
      "number": 795,
      "title": "Configurable corner for hidden windows",
      "body": "Hi!  I think it would be really handy to be able to configure which corner Aerospace tries to use for hidden windows.  I've read the [note on proper monitor arrangement](https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement) and understand that there are limitations that this is designed to deal with; I'm just wondering if it's possible to add a configuration option to Aerospace that would cause it to try to use, say, the upper right corner instead of the lower right corner?  \r\n\r\nMy monitors are arranged such that I have two identical standalone displays mounted to my desk with my laptop display on the desk to the bottom right of the right-most display (see screenshot).  Whenever I change which workspace is active in the middle monitor, the hidden windows from the other workspaces get \"hidden\" into the bottom half of my laptop monitor because it's situated on the bottom right.  It would be a lot of work for me to rearrange my desk to put the monitor on the left.  I can sort of work around it by shifting the arrangement so that the laptop display is pushed up, but then mouse movement between displays feels incongruous.  I could get a stand for my laptop but I'd prefer not to.\r\n\r\nIt seems like this would be a fairly common physical configuration, so maybe worth investing some time into making this an option?\r\n\r\nThanks for considering!\r\n\r\n![image](https://github.com/user-attachments/assets/c894a243-9ca8-46b1-92a0-19e749730ef1)\r\n",
      "created_at": "2024-12-02T14:55:20Z",
      "updated_at": "2025-05-23T06:46:52Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dantswain",
        "avatar_url": "https://avatars.githubusercontent.com/u/463747?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af34o",
      "number": 1429,
      "title": "move-workspace-to-monitor brings wrong workspace to foreground on departure monitor",
      "body": "### Body\n\nSteps to reproduce:\r\n\r\nThree monitor setup:\r\nmonitor-1, monitor-2, monitor-3\r\n\r\nThree workspaces:\r\nworkspace-A, workspace-B, workspace-C\r\n\r\n**Scenario 1:**\r\nAll three workspaces are on monitor-1\r\n1. `activate workspace-A`\r\n2. `activate workspace-B`\r\n3. `activate workspace-C`\r\n4. `activate workspace-A`\r\n\r\n5. move workspace-A to monitor-2 with:\r\n    `move-workspace-to-monitor --wrap-around right`\r\n    focus moves with workspace-A to monitor-2\r\n\r\n**Actual result:**\r\nmonitor-1 shows workspace-B\r\n**Expected result:**\r\nmonitor-1 should show workspace-C as this was the previously active workspace on this monitor.\r\n\r\n---\r\n**Scenario 2:**\r\nAll three workspaces are on monitor-2\r\n1. `activate workspace-A`\r\n2. `activate workspace-B`\r\n3. `activate workspace-C`\r\n4. `activate workspace-A`\r\n\r\n5. move workspace-A to monitor-1 with:\r\n    `move-workspace-to-monitor --wrap-around left`\r\n    focus moves with workspace-A to monitor-1\r\n\r\n**Actual result:**\r\nmonitor-2 shows workspace-0\r\n**Expected result:**\r\nmonitor-2 shows workspace-C as this was the previously active workspace on this monitor.\r\n\r\nSame result occurs when moving workspace-A to monitor-3 with:\r\n        `move-workspace-to-monitor --wrap-around right`\r\n\r\n---\r\n**Scenario 3:**\r\nAll three workspaces are on monitor-3\r\n1. `activate workspace-A`\r\n2. `activate workspace-B`\r\n3. `activate workspace-C`\r\n4. `activate workspace-A`\r\n\r\n5. move workspace-A to monitor-2 with:\r\n    `move-workspace-to-monitor --wrap-around left`\r\n    focus moves with workspace-A to monitor-2\r\n\r\n**Actual result:**\r\nmonitor-3 shows workspace-1\r\n**Expected result:**\r\nmonitor-3 shows workspace-C as this was the previously active workspace on this monitor\r\n\r\n\r\n### Additional info\r\nAerospace has fundamentally improved my macOS experience, thank you.",
      "created_at": "2025-05-21T16:09:31Z",
      "updated_at": "2025-05-21T16:09:32Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nickjvturner",
        "avatar_url": "https://avatars.githubusercontent.com/u/34604855?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdpaU",
      "number": 915,
      "title": "Does somebody have a pre-compiled keybinding list for the German qwertz? Or any other tips for using it with German keyboard?",
      "body": "I'm loving this! Yet I'm struggling a bit setting this up on my German keyboard as the slashes, periods, plus... are all somewhere else. Also the alt-l is the at-symbol for emails;) I'd be very grateful for any tips and tricks",
      "created_at": "2025-01-02T16:24:26Z",
      "updated_at": "2025-05-20T22:39:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "RobinKohrs",
        "avatar_url": "https://avatars.githubusercontent.com/u/48288925?u=1a77684257fa6adeb0edf51da1783cfd1c4c3770&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af2bR",
      "number": 1428,
      "title": "Ghost windows for some workspaces",
      "body": "### Body\n\nSteps to reproduce: (Not sure how exactly to reproduce as this only happens with some workspaces and I have to switch to a different one for it to work again)\r\n1. Go to buggy workspace\r\n2. open two apps (should open side by side)\r\n3. Close one app\r\n\r\nExpected result: One app fills the screen instead of being stuck in half\r\nActual result: One app only fills half the screen and the other half is a ghost window\r\n\r\n### Additional info\r\nVideo attached\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n\r\n```\r\n\r\n\r\n\r\nRan aerospace-debug\r\n```\r\ncom.googlecode.iterm2.window.30 windowId: 30\r\ncom.googlecode.iterm2.window.30 workspace: G\r\ncom.googlecode.iterm2.window.30 treeNodeParent: AppBundle.TilingContainer\r\ncom.googlecode.iterm2.window.30 recognizedAsDialog: false\r\ncom.googlecode.iterm2.window.30 AXTitle: Optional(aerospace debug-windows)\r\ncom.googlecode.iterm2.window.30 AXRole: Optional(AXWindow)\r\ncom.googlecode.iterm2.window.30 AXSubrole: Optional(AXStandardWindow)\r\ncom.googlecode.iterm2.window.30 AXFocused: Optional(0)\r\ncom.googlecode.iterm2.window.30 AXFullScreen: Optional(0)\r\ncom.googlecode.iterm2.window.30 AXFrame: Optional(<AXValue 0x60000382fb00> {value = x:1920.000000 y:35.000000 w:630.000000 h:1394.000000 type = kAXValueCGRectType})\r\ncom.googlecode.iterm2.window.30 AXPosition: Optional(<AXValue 0x60000235f9c0> {value = x:1920.000000 y:35.000000 type = kAXValueCGPointType})\r\ncom.googlecode.iterm2.window.30 AXGrowArea: nil\r\ncom.googlecode.iterm2.window.30 AXMinimizeButton: AXUIElement {\r\ncom.googlecode.iterm2.window.30      AXRole: Optional(AXButton)\r\ncom.googlecode.iterm2.window.30      AXTitle: nil\r\ncom.googlecode.iterm2.window.30      AXSubrole: Optional(AXMinimizeButton)\r\ncom.googlecode.iterm2.window.30      AXEnabled: Optional(1)\r\ncom.googlecode.iterm2.window.30      AXParent: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXTopLevelUIElement: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.googlecode.iterm2.window.30 }\r\ncom.googlecode.iterm2.window.30 AXDocument: nil\r\ncom.googlecode.iterm2.window.30 AXSections: [\r\ncom.googlecode.iterm2.window.30         Optional({\r\ncom.googlecode.iterm2.window.30             SectionDescription = Content;\r\ncom.googlecode.iterm2.window.30             SectionObject = \"<AXUIElement 0x60000235e7c0> {pid=921}\";\r\ncom.googlecode.iterm2.window.30             SectionUniqueID = AXContent;\r\ncom.googlecode.iterm2.window.30         }),\r\ncom.googlecode.iterm2.window.30         Optional({\r\ncom.googlecode.iterm2.window.30             SectionDescription = \"Top Level Navigator\";\r\ncom.googlecode.iterm2.window.30             SectionObject = \"<AXUIElement 0x60000235f930> {pid=921}\";\r\ncom.googlecode.iterm2.window.30             SectionUniqueID = AXTopLevelNavigator;\r\ncom.googlecode.iterm2.window.30         })\r\ncom.googlecode.iterm2.window.30 ]\r\ncom.googlecode.iterm2.window.30 AXCloseButton: AXUIElement {\r\ncom.googlecode.iterm2.window.30      AXRole: Optional(AXButton)\r\ncom.googlecode.iterm2.window.30      AXTitle: nil\r\ncom.googlecode.iterm2.window.30      AXSubrole: Optional(AXCloseButton)\r\ncom.googlecode.iterm2.window.30      AXEnabled: Optional(1)\r\ncom.googlecode.iterm2.window.30      AXParent: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXTopLevelUIElement: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.googlecode.iterm2.window.30 }\r\ncom.googlecode.iterm2.window.30 AXMain: Optional(1)\r\ncom.googlecode.iterm2.window.30 AXActivationPoint: Optional(<AXValue 0x60000235f9c0> {value = x:1990.000000 y:49.000000 type = kAXValueCGPointType})\r\ncom.googlecode.iterm2.window.30 AXFullScreenButton: AXUIElement {\r\ncom.googlecode.iterm2.window.30      AXRole: Optional(AXButton)\r\ncom.googlecode.iterm2.window.30      AXTitle: nil\r\ncom.googlecode.iterm2.window.30      AXSubrole: Optional(AXFullScreenButton)\r\ncom.googlecode.iterm2.window.30      AXEnabled: Optional(1)\r\ncom.googlecode.iterm2.window.30      AXParent: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXTopLevelUIElement: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.googlecode.iterm2.window.30 }\r\ncom.googlecode.iterm2.window.30 AXProxy: nil\r\ncom.googlecode.iterm2.window.30 AXDefaultButton: nil\r\ncom.googlecode.iterm2.window.30 AXMinimized: Optional(0)\r\ncom.googlecode.iterm2.window.30 AXParent: Optional(<AXUIElement Application 0x600002343060> {pid=921})\r\ncom.googlecode.iterm2.window.30 AXTitleUIElement: AXUIElement(windowId=30, title=nil, role=\"AXStaticText\", subrole=nil)\r\ncom.googlecode.iterm2.window.30 AXCancelButton: nil\r\ncom.googlecode.iterm2.window.30 AXModal: Optional(0)\r\ncom.googlecode.iterm2.window.30 AXZoomButton: AXUIElement {\r\ncom.googlecode.iterm2.window.30      AXRole: Optional(AXButton)\r\ncom.googlecode.iterm2.window.30      AXTitle: nil\r\ncom.googlecode.iterm2.window.30      AXSubrole: Optional(AXFullScreenButton)\r\ncom.googlecode.iterm2.window.30      AXEnabled: Optional(1)\r\ncom.googlecode.iterm2.window.30      AXParent: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXTopLevelUIElement: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      AXWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2.window.30      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.googlecode.iterm2.window.30 }\r\ncom.googlecode.iterm2.window.30 AXSize: Optional(<AXValue 0x60000235fbd0> {value = w:630.000000 h:1394.000000 type = kAXValueCGSizeType})\r\ncom.googlecode.iterm2.window.30 AXToolbarButton: nil\r\ncom.googlecode.iterm2.window.30 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.googlecode.iterm2           AXRole: Optional(AXApplication)\r\ncom.googlecode.iterm2           AXTitle: Optional(iTerm2)\r\ncom.googlecode.iterm2           AXFunctionRowTopLevelElements: [\r\ncom.googlecode.iterm2           ]\r\ncom.googlecode.iterm2           AXFrame: nil\r\ncom.googlecode.iterm2           AXFocusedUIElement: AXUIElement(windowId=30, title=nil, role=\"AXTextArea\", subrole=nil)\r\ncom.googlecode.iterm2           AXFrontmost: Optional(1)\r\ncom.googlecode.iterm2           AXExtrasMenuBar: nil\r\ncom.googlecode.iterm2           AXMainWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2           AXFocusedWindow: AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2           AXMenuBar: Optional(<AXUIElement 0x60000235ec70> {pid=921})\r\ncom.googlecode.iterm2           AXWindows: [\r\ncom.googlecode.iterm2               AXUIElement(windowId=30, title=\"aerospace debug-windows\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.googlecode.iterm2           ]\r\ncom.googlecode.iterm2           AXSize: nil\r\ncom.googlecode.iterm2           AXPosition: nil\r\ncom.googlecode.iterm2           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.github.GitHubClient.window.42 windowId: 42\r\ncom.github.GitHubClient.window.42 workspace: G\r\ncom.github.GitHubClient.window.42 treeNodeParent: AppBundle.TilingContainer\r\ncom.github.GitHubClient.window.42 recognizedAsDialog: false\r\ncom.github.GitHubClient.window.42 AXTitle: Optional(GitHub Desktop)\r\ncom.github.GitHubClient.window.42 AXRole: Optional(AXWindow)\r\ncom.github.GitHubClient.window.42 AXSubrole: Optional(AXStandardWindow)\r\ncom.github.GitHubClient.window.42 AXFocused: Optional(0)\r\ncom.github.GitHubClient.window.42 AXFullScreen: Optional(0)\r\ncom.github.GitHubClient.window.42 AXFrame: Optional(<AXValue 0x60000382fd80> {value = x:650.000000 y:35.000000 w:960.000000 h:1394.000000 type = kAXValueCGRectType})\r\ncom.github.GitHubClient.window.42 AXPosition: Optional(<AXValue 0x60000234f570> {value = x:650.000000 y:35.000000 type = kAXValueCGPointType})\r\ncom.github.GitHubClient.window.42 AXGrowArea: nil\r\ncom.github.GitHubClient.window.42 AXMinimizeButton: AXUIElement {\r\ncom.github.GitHubClient.window.42      AXRole: Optional(AXButton)\r\ncom.github.GitHubClient.window.42      AXTitle: nil\r\ncom.github.GitHubClient.window.42      AXSubrole: Optional(AXMinimizeButton)\r\ncom.github.GitHubClient.window.42      AXEnabled: Optional(1)\r\ncom.github.GitHubClient.window.42      AXParent: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXTopLevelUIElement: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.GitHubClient.window.42 }\r\ncom.github.GitHubClient.window.42 AXDocument: nil\r\ncom.github.GitHubClient.window.42 AXSections: [\r\ncom.github.GitHubClient.window.42         Optional({\r\ncom.github.GitHubClient.window.42             SectionDescription = Content;\r\ncom.github.GitHubClient.window.42             SectionObject = \"<AXUIElement 0x60000234bfc0> {pid=924}\";\r\ncom.github.GitHubClient.window.42             SectionUniqueID = AXContent;\r\ncom.github.GitHubClient.window.42         }),\r\ncom.github.GitHubClient.window.42         Optional({\r\ncom.github.GitHubClient.window.42             SectionObject = \"<AXUIElement 0x60000234b810> {pid=924}\";\r\ncom.github.GitHubClient.window.42             SectionUniqueID = AXContainer;\r\ncom.github.GitHubClient.window.42         })\r\ncom.github.GitHubClient.window.42 ]\r\ncom.github.GitHubClient.window.42 AXCloseButton: AXUIElement {\r\ncom.github.GitHubClient.window.42      AXRole: Optional(AXButton)\r\ncom.github.GitHubClient.window.42      AXTitle: nil\r\ncom.github.GitHubClient.window.42      AXSubrole: Optional(AXCloseButton)\r\ncom.github.GitHubClient.window.42      AXEnabled: Optional(1)\r\ncom.github.GitHubClient.window.42      AXParent: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXTopLevelUIElement: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.github.GitHubClient.window.42 }\r\ncom.github.GitHubClient.window.42 AXMain: Optional(1)\r\ncom.github.GitHubClient.window.42 AXActivationPoint: Optional(<AXValue 0x60000234f570> {value = x:-1.000000 y:1441.000000 type = kAXValueCGPointType})\r\ncom.github.GitHubClient.window.42 AXFullScreenButton: AXUIElement {\r\ncom.github.GitHubClient.window.42      AXRole: Optional(AXButton)\r\ncom.github.GitHubClient.window.42      AXTitle: nil\r\ncom.github.GitHubClient.window.42      AXSubrole: Optional(AXFullScreenButton)\r\ncom.github.GitHubClient.window.42      AXEnabled: Optional(1)\r\ncom.github.GitHubClient.window.42      AXParent: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXTopLevelUIElement: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.GitHubClient.window.42 }\r\ncom.github.GitHubClient.window.42 AXProxy: nil\r\ncom.github.GitHubClient.window.42 AXDefaultButton: nil\r\ncom.github.GitHubClient.window.42 AXMinimized: Optional(0)\r\ncom.github.GitHubClient.window.42 AXParent: Optional(<AXUIElement Application 0x600002342070> {pid=924})\r\ncom.github.GitHubClient.window.42 AXTitleUIElement: nil\r\ncom.github.GitHubClient.window.42 AXCancelButton: nil\r\ncom.github.GitHubClient.window.42 AXModal: Optional(0)\r\ncom.github.GitHubClient.window.42 AXZoomButton: AXUIElement {\r\ncom.github.GitHubClient.window.42      AXRole: Optional(AXButton)\r\ncom.github.GitHubClient.window.42      AXTitle: nil\r\ncom.github.GitHubClient.window.42      AXSubrole: Optional(AXFullScreenButton)\r\ncom.github.GitHubClient.window.42      AXEnabled: Optional(1)\r\ncom.github.GitHubClient.window.42      AXParent: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXTopLevelUIElement: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      AXWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient.window.42      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.github.GitHubClient.window.42 }\r\ncom.github.GitHubClient.window.42 AXSize: Optional(<AXValue 0x600002342070> {value = w:960.000000 h:1394.000000 type = kAXValueCGSizeType})\r\ncom.github.GitHubClient.window.42 AXToolbarButton: nil\r\ncom.github.GitHubClient.window.42 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.github.GitHubClient           AXRole: Optional(AXApplication)\r\ncom.github.GitHubClient           AXTitle: Optional(GitHub Desktop)\r\ncom.github.GitHubClient           AXFunctionRowTopLevelElements: [\r\ncom.github.GitHubClient           ]\r\ncom.github.GitHubClient           AXManualAccessibility: Optional(0)\r\ncom.github.GitHubClient           AXFrame: nil\r\ncom.github.GitHubClient           AXFocusedUIElement: nil\r\ncom.github.GitHubClient           AXFrontmost: Optional(1)\r\ncom.github.GitHubClient           AXExtrasMenuBar: nil\r\ncom.github.GitHubClient           AXMainWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient           AXFocusedWindow: AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient           AXMenuBar: Optional(<AXUIElement 0x600002342070> {pid=924})\r\ncom.github.GitHubClient           AXWindows: [\r\ncom.github.GitHubClient               AXUIElement(windowId=42, title=\"GitHub Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.github.GitHubClient           ]\r\ncom.github.GitHubClient           AXSize: nil\r\ncom.github.GitHubClient           AXPosition: nil\r\ncom.github.GitHubClient           Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```\r\n\r\nhttps://github.com/user-attachments/assets/72142250-3d13-4285-a850-5cde281344ef\r\n\r\n\r\n",
      "created_at": "2025-05-20T10:19:49Z",
      "updated_at": "2025-05-20T12:53:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyX7I",
        "body": "Please update. 0.14 is very old"
      },
      "user": {
        "login": "v1dya",
        "avatar_url": "https://avatars.githubusercontent.com/u/55044178?u=ddb3c1b0a926e779d7f82858d6f665a8b0d8620a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Af0UE",
      "number": 1426,
      "title": "Aerospace Runtime Error",
      "body": "\r\nAt the time this occurred I was interacting with the menu item for Maestral (dropbox client) and attempting to open the \"Show recent changes...\" menu.\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.17.1-Beta\r\nGit hash: 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nDate: 2025-05-17 22:12:42 +0000\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:7:72 parent\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\nrefreshSessionEvent: Optional(Common.RefreshSessionEvent.ax(\"AXFocusedWindowChanged\"))\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001082493bb $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlF + 1611\r\n1   AeroSpace                           0x00000001080c21bc $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 140\r\n2   AeroSpace                           0x00000001080c1505 $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 53\r\n3   AeroSpace                           0x000000010809ca2c $s9AppBundle16updateFocusCacheyyAA6WindowCSgF + 60\r\n4   AeroSpace                           0x000000010809f3cc $s9AppBundle14refreshSession_26screenIsDefinitelyUnlocked7startup4bodyx6Common07RefreshD5EventO_S2bxyXEtlFyt_Tg503$s9a27Bundle16refreshAndLayout_26efg26Unlocked7startupy6Common19ldM14O_S2btFyyXEfU_Tf1nnnnc_n + 620\r\n5   AeroSpace                           0x00000001080a5b9e $s9AppBundle10refreshObs_2ax5notif4dataySo13AXObserverRefa_So011AXUIElementI0aSo08CFStringI0aSvSgtFTo + 94\r\n6   HIServices                          0x00007ff808c50e84 _XXMIGPostNotification + 889\r\n7   HIServices                          0x00007ff808c73adb _XPostNotification + 323\r\n8   HIServices                          0x00007ff808c34f81 mshMIGPerform + 190\r\n9   CoreFoundation                      0x00007ff8021e9218 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41\r\n10  CoreFoundation                      0x00007ff8021e9157 __CFRunLoopDoSource1 + 543\r\n11  CoreFoundation                      0x00007ff8021e7da5 __CFRunLoopRun + 2748\r\n12  CoreFoundation                      0x00007ff8021e6cb2 CFRunLoopRunSpecific + 536\r\n13  HIToolbox                           0x00007ff80dc030d4 RunCurrentEventLoopInMode + 281\r\n14  HIToolbox                           0x00007ff80dc05f97 ReceiveNextEventCommon + 499\r\n15  HIToolbox                           0x00007ff80dd8f19a _BlockUntilNextEventMatchingListInModeWithFilter + 63\r\n16  AppKit                              0x00007ff805b98e39 _DPSNextEvent + 912\r\n17  AppKit                              0x00007ff806626997 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1263\r\n18  AppKit                              0x00007ff805b89f19 -[NSApplication run] + 610\r\n19  AppKit                              0x00007ff805b5d085 NSApplicationMain + 803\r\n20  SwiftUI                             0x00007ff911a61fb1 _NSWindowGetCGDisplayID + 218358\r\n21  SwiftUI                             0x00007ff911db32c0 SwiftUIGlue2Class + 1443536\r\n22  SwiftUI                             0x00007ff912049a5b SwiftUIGlue2Class + 4157035\r\n23  AeroSpace                           0x0000000108035dbe main + 30\r\n24  dyld                                0x00007ff801d5b530 start + 3056\r\n",
      "created_at": "2025-05-17T22:15:20Z",
      "updated_at": "2025-05-19T16:36:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "chasingtheflow",
        "avatar_url": "https://avatars.githubusercontent.com/u/718368?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfwNm",
      "number": 1411,
      "title": "Shift focus to an empty workspace doesn't change windows focus",
      "body": "### Body\r\n\r\nHello there!\r\nThanks for this project, I really missed i3wm like WM for mac\r\n\r\nI'm struggling with an issue regarding focus and empty spaces\r\n\r\n## Problem\r\nI noticed that once you move focus to an empty workspace, the window originally focused on the previous workspace remain focused, it only lose focus when you click on the empty desktop. This causes issues when using the command `exec-and-forget open /Application/MyApp.app` which assuming the \"MyApp\" was focused it won't retake focus, cuz the builtin WM think it is already focused. See steps to reproduce and the video\r\n\r\nhttps://github.com/user-attachments/assets/d7142af9-7eae-4e8f-9d6c-4d0bb70d5534\r\n\r\n\r\n## Issue\r\n\r\nAssuming this config\r\n```toml\r\n[mode.main.binding]\r\ncmd-0 = \"workspace 0\"\r\ncmd-1 = \"workspace 1\" # the terminal is here\r\ncmd-2 = \"workspace 2\" # this workspace is empty\r\n\r\nctrl-cmd-enter = [\"exec-and-forget open -a ~/Applications/Alacritty.app\"]\r\n```\r\n\r\nSteps to reproduce:\r\n1. Focus on a window, for instance the terminal.\r\n2. Move focus to a empty workspace (cmd+2)\r\n3. Press cmd + ctrl + enter  \r\n\r\nExpected result:\r\nAssuming the ws 1 is focused on `MyApp`\r\nUpon shifting focus to an empty space the window focus goes to finder(maybe?)\r\nOnce you call `open /Application/MyApp.app` the focus goes back to it\r\n\r\nActual result:\r\nFocus stays with previous window and upon calling `open  /Application/MyApp.app`, since for the builtin WM \"MyApp\" is focused, it does nothing\r\n\r\n### Additional info\r\n\r\n\r\n\r\n```shell\r\n$ aerospace -v\r\n\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\n\r\n$sw_vers -productVersion                                                                                                                                   [13:44:44]\r\n15.4.1\r\n\r\n```\r\n",
      "created_at": "2025-05-14T11:53:22Z",
      "updated_at": "2025-05-17T06:51:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "cristianoliveira",
        "avatar_url": "https://avatars.githubusercontent.com/u/3959744?u=f21e7f1678b25eb59d323e4d61ff9498b05ad67e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfLnZ",
      "number": 1268,
      "title": "Intellij idea [[on-window-detected]] does not recognise if.window-title-regex-substring in some cases.",
      "body": "Hi comunity\r\nMaybe someone else experienced the same issue.\r\non-window-detected works for me for example for google chrome where I can send different profiles to different workspaces. \r\nBut somehow it does not work for Intellij idea (different projects in different workspaces)\r\n\r\n[[on-window-detected]]\r\n\tif.app-id = 'com.jetbrains.intellij'\r\n\tif.window-title-regex-substring = 'inwestyn'\r\n\trun = 'move-node-to-workspace i'\r\n\r\n[[on-window-detected]]\r\n\tif.app-id = 'com.jetbrains.intellij'\r\n\tif.window-title-regex-substring = 'alpin2'\r\n\trun = 'move-node-to-workspace 2'\r\n\r\nIs there a way to debug recognized window title during callback. If I leave only app-id then callback works fine. \r\n",
      "created_at": "2025-04-07T08:58:55Z",
      "updated_at": "2025-05-17T00:47:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyQ4t",
        "body": "https://nikitabobko.github.io/AeroSpace/guide#on-window-detected-callback\r\n\r\n> Some windows initialize their title after the window appears. window-title-regex-substring may not work as expected for such windows "
      },
      "user": {
        "login": "domelqq",
        "avatar_url": "https://avatars.githubusercontent.com/u/551905?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfypC",
      "number": 1420,
      "title": "Cyclic navigation rather than two-dimensional navigation",
      "body": "Can I navigate through the windows in a cyclic manner, e.g., like awesome wm for linux, using something like \"focus-next-window\" and \"focus-previous-window\", which can be mapped, e.g., to `alt-j` and `alt-k`\r\n\r\nI think this will provide an easier approach to the four-key navigation system `hjkl`",
      "created_at": "2025-05-16T08:40:14Z",
      "updated_at": "2025-05-16T21:15:21Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyQni",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/248"
      },
      "user": {
        "login": "DrWaleedAYousef",
        "avatar_url": "https://avatars.githubusercontent.com/u/12213197?u=eb16c6689bd99a304af16b0af4702c65601bad74&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcvoT",
      "number": 745,
      "title": "meta key (left/right alts)",
      "body": "Is there way to differentiate between the left/right alt keys in the configuration? \r\n\r\nI'm using iterm2 and would like to set the right option key to be `esc+` for usage with tmux/nvim. ",
      "created_at": "2024-11-22T18:14:58Z",
      "updated_at": "2025-05-16T16:34:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dblum-analog",
        "avatar_url": "https://avatars.githubusercontent.com/u/113616854?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfyHS",
      "number": 1419,
      "title": "Bind brightness keys",
      "body": "Is there a way to bind the brightness up/down keys in the config? I'd like to bind them to run [m1ddc](https://github.com/waydabber/m1ddc) using exec-and-forget. I know I could install a separate program like `skhd`, but I've got all my other keybindings in `aerospace` already.",
      "created_at": "2025-05-15T19:58:50Z",
      "updated_at": "2025-05-15T19:58:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rcorre",
        "avatar_url": "https://avatars.githubusercontent.com/u/2496231?u=2a46dcfdbcdc02f29ac395d8de5efd222fa174bc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50p",
      "number": 1007,
      "title": "Resize like yabai",
      "body": "The current resize behavior is a little weird to me, can we add a new resize feature that moves the separate line between windows instead of just fixed on increase/decrease the current window size?\r\nfor example like this in yabai:\r\n```bash\r\nlctrl + alt - h : yabai -m window --resize left:-50:0; \\\r\n                  yabai -m window --resize right:-50:0\r\nlctrl + alt - j : yabai -m window --resize bottom:0:50; \\\r\n                  yabai -m window --resize top:0:50\r\nlctrl + alt - k : yabai -m window --resize top:0:-50; \\\r\n                  yabai -m window --resize bottom:0:-50\r\nlctrl + alt - l : yabai -m window --resize right:50:0; \\\r\n                  yabai -m window --resize left:50:0\r\n\r\n```",
      "created_at": "2023-12-28T03:22:16Z",
      "updated_at": "2025-05-15T17:46:30Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "HCHogan",
        "avatar_url": "https://avatars.githubusercontent.com/u/78535316?u=f329b8a4d77eea382fd27cb01ca044d78c065b68&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyhy",
      "number": 949,
      "title": "Window switching sometimes doesn't result in the window appearing",
      "body": "I might be unable to properly search for this and I'm sure there's an ongoing discussion about this, but when I cmd tab from a window in one space to an app in another space, sometimes the macOS status bar shows the name of the new window, so it's active, but aerospace hasn't switched spaces and hasn't registered that the old space is no longer in focus. doing cmd tab twice usually works. or triggering a full screen command which brings the focused window into view. probably my biggest issue with the app",
      "created_at": "2025-01-06T18:57:13Z",
      "updated_at": "2025-05-15T06:19:29Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yspreen",
        "avatar_url": "https://avatars.githubusercontent.com/u/12631527?u=096663679fc62daeb4a7d45f17b3d6534c256bd9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afwqi",
      "number": 1415,
      "title": "Focus an app and force it to full screen",
      "body": "I have a number of note taking apps that I keep open all the time in the same workspace in a tiling format. I'd like to create a key binding that will automatically focus each of those apps _and_ shift that app's window to full screen. I thought this would work:\r\n```\r\n...\r\ncmd-alt-ctrl-enter = 'fullscreen'\r\n...\r\ncmd-shift-l = ['exec-and-forget open -a /Applications/Logseq.app', 'trigger-binding --mode main cmd-alt-ctrl-enter']\r\n```\r\nThe first step works - the app does get the focus - but the second step, which I hoped/thought would maximize it doesn't seem to be doing the right thing. Have I borked the syntax? Maybe misunderstood the `trigger-binding` command?\r\n\r\nWould appreciate any thoughts.\r\n\r\nUPDATE: I accidentally discovered that if I hit `cmd-shift-l` twice, I get the right behavior. The first time focuses the app and the second time maximizes it. Is that how the array of commands is supposed to work?",
      "created_at": "2025-05-14T17:21:25Z",
      "updated_at": "2025-05-14T21:52:58Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "robwilkerson",
        "avatar_url": "https://avatars.githubusercontent.com/u/7735?u=612b98cea1088892a6a69f131541cfae2eb561a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afwfd",
      "number": 1414,
      "title": "\"Windows must always have a parent. The Window was unbound at\"",
      "body": "### Body\n\nSteps to reproduce: I honestly have no idea how to reproduce. It just happened out of the blue AFAICT.\r\n\r\nExpected result: no error\r\nActual result: error prompting me to create a discussion here\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    Windows must always have a parent. The Window was unbound at:\r\n    0   AeroSpace                           0x0000000100e528fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000100ce66cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000100ce6978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000100cdfe90 $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n    4   AeroSpace                           0x0000000100cb9d00 $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n    5   AeroSpace                           0x0000000100cb5679 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ6_ + 1\r\n    6   AeroSpace                           0x0000000100c449b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    7   libswift_Concurrency.dylib          0x00000002790ee461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    8   libswift_Concurrency.dylib          0x00000002790ee109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    9   AeroSpace                           0x0000000100cb494d $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n    10  AeroSpace                           0x0000000100c449b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x00000002790ee461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x00000002790ee109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000100cb3eb5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n    14  AeroSpace                           0x0000000100cb466d $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n    15  AeroSpace                           0x0000000100c449b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000027912283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-05-14 14:46:43 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:8:29 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100e51f28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100ce8fa0 $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 260\r\n2   AeroSpace                           0x0000000100ce7fec $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000100ce0bc0 $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000100cb9495 $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000100cac449 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ9_ + 1\r\n6   AeroSpace                           0x0000000100c449b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x00000002790ee461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x00000002790ee109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000100caac99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x0000000100c449b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x00000002790ee461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x00000002790ee109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000100ca816d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x0000000100c8e155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x0000000100c443f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000027912283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n... hangs forever ...\r\n```",
      "created_at": "2025-05-14T14:50:15Z",
      "updated_at": "2025-05-14T20:35:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyJ6u",
        "body": "You are\r\n> Version: 0.18.4-Beta\r\n\r\nthis have been fixed in 0.18.5.\r\nhttps://github.com/nikitabobko/AeroSpace/releases/tag/v0.18.5-Beta"
      },
      "user": {
        "login": "samuela",
        "avatar_url": "https://avatars.githubusercontent.com/u/226872?u=77a7e7d5d716a64aa859dd02f3d5564848f4c0dc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfwPB",
      "number": 1413,
      "title": "How to move window accross workspaces on multiple monitors?",
      "body": "Basically what I want is the same behavior as `--boundaries all-monitors-outer-frame` for `focus` but for `move` such that I can move windows in the next monitor when hitting the boundary.\r\n\r\nIs that possible? How can I workaround this?\r\n\r\n```toml\r\n# What currently works for focus\r\nalt-h = 'focus --boundaries all-monitors-outer-frame left'\r\nalt-j = 'focus --boundaries all-monitors-outer-frame down'\r\nalt-k = 'focus --boundaries all-monitors-outer-frame up'\r\nalt-l = 'focus --boundaries all-monitors-outer-frame right'\r\n\r\n# What I'd love to work for moving as well\r\nalt-shift-h = 'move --boundaries all-monitors-outer-frame left'\r\nalt-shift-j = 'move --boundaries all-monitors-outer-frame down'\r\nalt-shift-k = 'move --boundaries all-monitors-outer-frame up'\r\nalt-shift-l = 'move --boundaries all-monitors-outer-frame right'\r\n```\r\n\r\nOh and by the way, thanks for the awesome work 🎉  It never felt better to use a Mac thanks to AeroSpace 🙇 ",
      "created_at": "2025-05-14T12:15:39Z",
      "updated_at": "2025-05-14T12:29:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Diaoul",
        "avatar_url": "https://avatars.githubusercontent.com/u/319220?u=7e7179d6a36b4eebf476226d7cc4c8ca26427a9a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfvFR",
      "number": 1409,
      "title": "how to change 'focus' like v_accordion style (up and down) when in h_tiles layout",
      "body": "Let say i have 2 windows opened \r\n\r\n1. at workspace 1 with layout h_tiles\r\n2. Left is app A, right is app B, in the workspace there is app C and D that is not showing on the 'monitor' or 'workspace'\r\n3. im in focus on app A  I wanted to change focus using `up` and `down` \r\n4. when i do that app A change to app C and if i pressed another `up` and `down`  it change to app D (but i like to make it interchangebly so i can just press `up` over and over and just loop the index) \r\n\r\n\r\nis it possible ? \r\n\r\nAnd oh yeah ? how do you limit numbers of window showing up on a workspace ? ",
      "created_at": "2025-05-13T16:43:24Z",
      "updated_at": "2025-05-13T16:43:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mozarik",
        "avatar_url": "https://avatars.githubusercontent.com/u/39885486?u=140badf23a06e95886896123012ddd374c14ecc0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afsie",
      "number": 1406,
      "title": "Bind workspaces to specific desktops",
      "body": "I currently use Aerospace in a way that i keep my workspaces in separate Desktops, I wonder if it's possible to bind for example, workspace 1 to desktop 1 and workspace 2 to desktop 2 in a way that I don't have to manually go and change their desktop\r\nAnd when changing between workspaces in different desktops, there's a noticeable delay in the window appearing (video below)\r\n\r\nhttps://github.com/user-attachments/assets/45a59727-d9ce-4c69-95e7-b666839b004e\r\n\r\n",
      "created_at": "2025-05-11T15:57:35Z",
      "updated_at": "2025-05-17T00:55:33Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyDgf",
        "body": "AeroSpace doesn't work with macOS desktop. Only workspace."
      },
      "user": {
        "login": "enzoenrico",
        "avatar_url": "https://avatars.githubusercontent.com/u/47016293?u=73a4ca0342ff31cd473f2ac5f5c17878ecceb2fe&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfshI",
      "number": 1405,
      "title": "Feature: A animation that I just discover",
      "body": "While playing around with my Mac setup, I stumbled upon a really cool animation effect that I think could be a great addition to Aerospace!\r\n\r\nHere’s what happened:\r\n- I set a Hot Corner (via macOS settings) to “Show Desktop.”\r\n- Then, while using Aerospace to switch workspaces, I noticed that moving the mouse to that corner during the transition triggers a sleek and smooth desktop-reveal animation.\r\n- The result? A surprisingly fun and visually engaging effect when switching between workspaces.\r\n\r\nFeature Idea:\r\nIt would be awesome if Aerospace could intentionally trigger that “Show Desktop” Hot Corner animation when switching workspaces —  by Simulating a mouse move to the hot corner during the transition just like  `move-mouse window-lazy-center`\r\n\r\nhttps://github.com/user-attachments/assets/5134fd11-c766-4a88-935b-441e87c88be4\r\n\r\n",
      "created_at": "2025-05-11T15:24:32Z",
      "updated_at": "2025-05-12T17:50:05Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "phucisstupid",
        "avatar_url": "https://avatars.githubusercontent.com/u/125681538?u=3c87a09d4ec9fceed3c871e5b52a812a23b88d7f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfsoQ",
      "number": 1408,
      "title": "How are people using/typing the hash (#) symbol?",
      "body": "Loving Aerospace so far! \r\n\r\nHowever, being a new mac user, I'm unsure how I now type the hash \"#\" given that I have a workspace on `alt+3`. I've not seen this discussed so am wondering if it's just me, or if people use `cmd` instead of `alt`...\r\n\r\nAny tips?",
      "created_at": "2025-05-11T18:05:49Z",
      "updated_at": "2025-05-12T18:38:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AyDJO",
        "body": "Ahh... I'm on an EU keyboard, where `shift+3` is £ and not #.\r\n\r\nTo fix this, I've changed my keyboard layout to `US International`"
      },
      "user": {
        "login": "pifalken",
        "avatar_url": "https://avatars.githubusercontent.com/u/54590940?u=1e8fba9dc160aa172cf1787a4151a6771b032864&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afn38",
      "number": 1391,
      "title": "How can I define a workspace where misc/random windows will be placed?",
      "body": "Hey everyone,\r\n\r\nFantastic piece of software. Only at a third try it clicked for me, but now there's now way back, it seems! ❤️ \r\n\r\nAt times, I quit Aerospace, when not performing coding tasks, work tasks.\r\nWhen starting Aerospace, all apps land in \"workspace 1\", and I can't understand why!\r\n\r\n\r\nFor context, it might be relevant.\r\n\r\nI have 4 monitors, and got all workspaces well defined, and well assigned to their monitor.\r\n\r\nFrom left to right:\r\na,z => telecue, 14\"\r\nw,s,x => vertical left\r\n1-7 + 0 => main -> can't use 8 and 9, bc in my PT layout, alt-8 and alt-9 are the square brackets `[ ]`\r\ne,d,c => vertical right\r\n\r\n\r\nWhat I expected would be that on start, all my defined \"Apps per workspace\" go there - because of `on-window-detected`\r\n\r\nTherefore, I would assume. PHPStorm would be the only app going into `workspace 1`.\r\nWhy? Because `workspace 0` is before, on config and on the UI\r\n\r\n![CleanShot 2025-05-07 at 13 21 06](https://github.com/user-attachments/assets/aa9d744b-38ac-498d-b96f-b2c08eedf7c1)\r\n\r\nWhat's happening is that ALL APPS not mentioned in a `on-window-detected`, also end up in `workspace 1`\r\n\r\nAny ideas? \r\n\r\nThank you!\r\n\r\nMy config, so that the above makes sense:\r\n\r\n```toml \r\n\r\n\r\n\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# Start AeroSpacee at login\r\nstart-at-login = false\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = [\r\n  'exec-and-forget borders active_color=0xffffafff inactive_color=0xff404344 width=10.0',\r\n  'workspace w',\r\n  'workspace e',\r\n  'workspace 1',\r\n]\r\n\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 15\r\ninner.vertical =   15\r\nouter.left =       15\r\nouter.bottom =     15\r\nouter.top =        15\r\nouter.right =      15\r\n\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\n\r\n# On top for catch-all\r\nalt-0 = 'workspace 0'\r\n\r\n# Center\r\nalt-1 = 'workspace 1' # phpstorm\r\nalt-2 = 'workspace 2' # terminals\r\nalt-3 = 'workspace 3' # browsers\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\n#left\r\nalt-w = 'workspace w'\r\nalt-s = 'workspace s'\r\nalt-x = 'workspace x'\r\n#right\r\nalt-e = 'workspace e'\r\nalt-d = 'workspace d'\r\nalt-c = 'workspace c'\r\n# Telecue\r\nalt-a = 'workspace a'\r\nalt-z = 'workspace z'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-0 = 'move-node-to-workspace 0'\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\n#left\r\nalt-shift-w = 'move-node-to-workspace w'\r\nalt-shift-s = 'move-node-to-workspace s'\r\nalt-shift-x = 'move-node-to-workspace x'\r\n#right\r\nalt-shift-e = 'move-node-to-workspace e'\r\nalt-shift-d = 'move-node-to-workspace d'\r\nalt-shift-c = 'move-node-to-workspace c'\r\n# Telecue\r\nalt-shift-a = 'move-node-to-workspace a'\r\nalt-shift-z = 'move-node-to-workspace z'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[workspace-to-monitor-force-assignment]\r\n# Center monitor (MAG321CURV)\r\n'1' = 'MAG321CURV'\r\n'2' = 'MAG321CURV'\r\n'3' = 'MAG321CURV'\r\n'4' = 'MAG321CURV'\r\n'5' = 'MAG321CURV'\r\n'6' = 'MAG321CURV'\r\n'7' = 'MAG321CURV'\r\n\r\n# Left monitor (LEN L28u-30 (1))\r\n'w' = '^LEN\\s+L28u-30\\s*\\(1\\)$'\r\n's' = '^LEN\\s+L28u-30\\s*\\(1\\)$'\r\n'x' = '^LEN\\s+L28u-30\\s*\\(1\\)$'\r\n\r\n# Right monitor (LEN L28u-30 (2))\r\n'e' = '^LEN\\s+L28u-30\\s*\\(2\\)$'\r\n'd' = '^LEN\\s+L28u-30\\s*\\(2\\)$'\r\n'c' = '^LEN\\s+L28u-30\\s*\\(2\\)$'\r\n\r\n# Top monitor (Wimaxit FHD)\r\n'a' = 'Wimaxit FHD'\r\n'z' = 'Wimaxit FHD'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.jetbrains.PhpStorm'\r\nrun = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.google.Chrome'\r\nrun = 'move-node-to-workspace w'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.googlecode.iterm2'\r\nrun = 'move-node-to-workspace e'\r\n[[on-window-detected]]\r\nif.app-id = 'com.DanPristupov.Fork'\r\nrun = 'move-node-to-workspace e'\r\n[[on-window-detected]]\r\nif.app-id = 'be.spatie.ray'\r\nrun = 'move-node-to-workspace e'\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyapp.TablePlus-setapp'\r\nrun = 'move-node-to-workspace e'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'net.whatsapp.WhatsApp'\r\nrun = 'move-node-to-workspace c'\r\n[[on-window-detected]]\r\nif.app-id = 'ru.keepcoder.Telegram'\r\nrun = 'move-node-to-workspace c'\r\n[[on-window-detected]]\r\nif.app-id = 'com.hnc.Discord'\r\nrun = 'move-node-to-workspace c'\r\n\r\n\r\n\r\n\r\n```\r\n\r\n\r\n\r\n",
      "created_at": "2025-05-07T12:23:10Z",
      "updated_at": "2025-05-12T15:19:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ijpatricio",
        "avatar_url": "https://avatars.githubusercontent.com/u/26031459?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afpop",
      "number": 1398,
      "title": "Is there a way to rename workspaces in the drop-down menu?",
      "body": "I've been on Linux for a decade+ and got a Mac recently, and am happy I found this project exists to try and get me close to my i3 config! Therefore this question might be dumb...\r\n\r\nI'm not sure how to avoid having all my workspaces named `Built-in Retina Display`. \r\n\r\n<img width=\"313\" alt=\"Screenshot 2025-05-08 at 23 41 24\" src=\"https://github.com/user-attachments/assets/fa194f66-1f32-4fa4-921d-d2e385dd7736\" />\r\n\r\nThanks\r\n",
      "created_at": "2025-05-08T22:44:22Z",
      "updated_at": "2025-05-11T18:07:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ax5yq",
        "body": "actually, that's not your workspace name, it is the name of monitor that workspace assigned to. \n\nRetina is macOS built-in display. You can get all names via list-monitors.\n\nYour workspace name is 1, 2, etc."
      },
      "user": {
        "login": "pifalken",
        "avatar_url": "https://avatars.githubusercontent.com/u/54590940?u=1e8fba9dc160aa172cf1787a4151a6771b032864&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afsjo",
      "number": 1407,
      "title": "Smart Gaps feature",
      "body": "When there is only one window, have no gaps but when there are multiple window in a workspace, have gaps!",
      "created_at": "2025-05-11T16:31:34Z",
      "updated_at": "2025-05-11T16:31:35Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "MichaelOli123",
        "avatar_url": "https://avatars.githubusercontent.com/u/153888495?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afsdn",
      "number": 1404,
      "title": "alt-enter open app shortcut not working",
      "body": "Hi, I am trying to use the exec and forget osascript provided in the default config, but it does not work to open Ghostty. I am using this to make the shortcut:\r\n```\r\n   alt-enter = '''exec-and-forget osascript -e '\r\n   tell application \"Ghostty\"\r\n        do script\r\n       activate\r\n   end tell'\r\n   '''\r\n```\r\n\r\nhere is my config:\r\n```\r\nstart-at-login = true\r\n\r\n# Notify Sketchybar about workspace change\r\nexec-on-workspace-change = [\r\n  '/bin/bash',\r\n  '-c',\r\n  'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE',\r\n]\r\n# Reference: https://github.com/i3/i3/blob/next/etc/config\r\n\r\n# i3 doesn't have \"normalizations\" feature that why we disable them here.\r\n# But the feature is very helpful.\r\n# Normalizations eliminate all sorts of weird tree configurations that don't make sense.\r\n# Give normalizations a chance and enable them back.\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# Mouse follows focus when focused monitor changes\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n\r\n[gaps]\r\n    inner.horizontal = 10\r\n    inner.vertical = 10\r\n    outer.left = 8\r\n    outer.bottom = 8\r\n    outer.top = [{ monitor.'built-in' = 16 }, 48]\r\n    outer.right = 8\r\n\r\n[mode.main.binding]\r\n    # See: https://nikitabobko.github.io/AeroSpace/goodies#open-a-new-window-with-applescript\r\n   alt-enter = '''exec-and-forget osascript -e '\r\n   tell application \"Ghostty\"\r\n        do script\r\n       activate\r\n   end tell'\r\n   '''\r\n\r\n    #alt-enter = 'exec-and-forget open -n /Applications/Ghostty.app'\r\n\r\n    # i3 wraps focus by default\r\n    alt-h = 'focus --boundaries-action wrap-around-the-workspace left'\r\n    alt-j = 'focus --boundaries-action wrap-around-the-workspace down'\r\n    alt-k = 'focus --boundaries-action wrap-around-the-workspace up'\r\n    alt-l = 'focus --boundaries-action wrap-around-the-workspace right'\r\n\r\n    alt-shift-h = 'move left'\r\n    alt-shift-j = 'move down'\r\n    alt-shift-k = 'move up'\r\n    alt-shift-l = 'move right'\r\n\r\n    alt-f = 'fullscreen'\r\n\r\n    alt-shift-e = 'balance-sizes'\r\n\r\n    alt-w = 'layout h_accordion' # 'layout tabbed' in i3\r\n    alt-s = 'layout tiles horizontal vertical' # 'layout toggle split' in i3\r\n\r\n    alt-shift-space = 'layout floating tiling' # 'floating toggle' in i3\r\n\r\n    # Not supported, because this command is redundant in AeroSpace mental model.\r\n    # See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows\r\n    #alt-space = 'focus toggle_tiling_floating'\r\n\r\n    # `focus parent`/`focus child` are not yet supported, and it's not clear whether they\r\n    # should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5\r\n    # alt-a = 'focus parent'\r\n\r\n    alt-1 = 'workspace 1'\r\n    alt-2 = 'workspace 2'\r\n    alt-3 = 'workspace 3'\r\n    alt-4 = 'workspace 4'\r\n    alt-5 = 'workspace 5'\r\n\r\n    alt-left = 'workspace prev'\r\n    alt-right = 'workspace next'\r\n\r\n    alt-shift-1 = 'move-node-to-workspace 1'\r\n    alt-shift-2 = 'move-node-to-workspace 2'\r\n    alt-shift-3 = 'move-node-to-workspace 3'\r\n    alt-shift-4 = 'move-node-to-workspace 4'\r\n    alt-shift-5 = 'move-node-to-workspace 5'\r\n\r\n    alt-shift-left = 'move-node-to-workspace prev'\r\n    alt-shift-right = 'move-node-to-workspace next'\r\n\r\n    alt-shift-c = 'reload-config'\r\n\r\n    alt-r = 'mode resize'\r\n\r\n    alt-minus = 'resize smart -50'\r\n    alt-equal = 'resize smart +50'\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Calculator'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.SoftwareUpdateLauncher'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Dictionary'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Settings'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'us.zoom.xos'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.PhotoBooth'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.python.python'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.AppStore'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.ActivityMonitor'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'io.mpv'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.colliderli.iina'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.utmapp.UTM'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'chat.openai.ChatGPT'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.SystemProfiler'\r\nrun = 'layout floating'\r\n\r\n\r\n[mode.resize.binding]\r\n    h = 'resize width -50'\r\n    j = 'resize height +50'\r\n    k = 'resize height -50'\r\n    l = 'resize width +50'\r\n    enter = 'mode main'\r\n    esc = 'mode main'\r\n\r\n# after-startup-command = [\r\n# 'exec-and-forget borders style=round active_color=\"glow(0xffebbcba)\" inactive_color=0xff6e6a86 width=6.0 hidpi=off order=a'\r\n# ]\r\n\r\n```",
      "created_at": "2025-05-11T14:04:48Z",
      "updated_at": "2025-05-11T16:29:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "MichaelOli123",
        "avatar_url": "https://avatars.githubusercontent.com/u/153888495?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfrpH",
      "number": 1402,
      "title": "`macos-option-as-alt` configuration?",
      "body": "I often use the international/special character layer on my keyboard for adding accents/diacritics or inserting symbols such as ≈. This layer is accessed by holding down the Option key and pressing a relevant letter. After switching to AeroSpace, this feature is no longer accessible. \r\n\r\nOther applications, such as Ghostty, expose a configuration to allow for interpreting the Option key as an Alt key to interact with its alt-based hotkeys, with options for neither, both, or one of the left/right option keys. I usually configure my right option key to be treated as Alt in this manner, so that my left option key can remain in use for those special characters. \r\n\r\nAre there good reasons to avoid implementing this feature, in terms of complexity/priority/etc.? If not, could this feature be added?",
      "created_at": "2025-05-10T15:17:20Z",
      "updated_at": "2025-05-10T15:19:20Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0x4D5352",
        "avatar_url": "https://avatars.githubusercontent.com/u/67082011?u=c7d78ff630bbf963539f98106086a1cfc0af3d80&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afqf8",
      "number": 1400,
      "title": "workspace-to-monitor-force-assignment show commands as workspaces?",
      "body": "### Body\n\nSteps to reproduce:\r\n1. In aerospace config add a section for [workspace-to-monitor-force-assignment] (somewhere in the middle of the file, above additional configuration)\r\n\r\n```\r\n...initial portion of your config...\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'main'\r\n3 = 'main'\r\n4 = 'main'\r\n5 = 'main'\r\n6 = ['secondary', 'main']\r\n7 = ['secondary', 'main']\r\n8 = ['secondary', 'main']\r\n9 = ['secondary', 'main']\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\n...additional config...\r\n```\r\n\r\n3. Reload config\r\n4. Look at workspaces - any additional settings from the config (after the force-assignment section) are listed as workspaces\r\n\r\nExpected result:\r\nThe workspaces should be shown as usual (i.e. 1-9) without additional commands registering as workspaces\r\n\r\nActual result:\r\nAny commands that exist in the config after the definition of the workspace-to-monitor-force-assignment show up as 'workspaces'. For example in the above snippet I would see 'alt-h' as a 'workspace'\r\n\r\nWorkaround:\r\nMove the 'workspace-to-monitor-force-assignment' section to be the last section in the file.\r\n\r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-05-09T14:25:05Z",
      "updated_at": "2025-05-10T13:33:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ax9VS",
        "body": "```\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\n...additional config...\r\n\r\n```\r\n\r\ngiven TOML, these are categorized as part of `[workspace-to-monitor-force-assignment]` until next `[]`, thses keybindings should under `[mode.main.binding]` indeed."
      },
      "user": {
        "login": "hannylicious",
        "avatar_url": "https://avatars.githubusercontent.com/u/3648225?u=8b5dff4d21d91994a107049bbaadd5ad95713e96&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfqK0",
      "number": 1399,
      "title": "Is there anyway to auto center a floating window ?",
      "body": "Recreationally :\r\n+ Arc browser has a picture in picture functionality I want to be able to treat this as a separate workspace. I want it to auto move to a workspace and center within the workspace.\r\n\r\n<img width=\"866\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8c7d16c9-ae87-4116-b202-71fa4f37ab5b\" />\r\n\r\nWork wise:\r\n+ Job has a couple of in house software that can't be rescaled and by default it is a floating window (unsure why this is the case). I would like to be able to center it with either a hotkey or automatically. ",
      "created_at": "2025-05-09T10:32:33Z",
      "updated_at": "2025-05-09T10:32:34Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Mazbrew",
        "avatar_url": "https://avatars.githubusercontent.com/u/82868826?u=998618a969cbf5bdb8c66dd7f757e982ed2d78a0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afn9h",
      "number": 1392,
      "title": "Animations like hyprland",
      "body": "Will the Aerospace window manager have animations like hyprland for example in the near future?",
      "created_at": "2025-05-07T13:48:47Z",
      "updated_at": "2025-05-09T03:08:12Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Rics-Dev",
        "avatar_url": "https://avatars.githubusercontent.com/u/97336083?u=6e5b2f562a37d418744fec7ae569ddc96b8f9cdb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfpXg",
      "number": 1397,
      "title": "Assign an application to all workspaces?",
      "body": "e.g, when I'm using Zoom to share my screen, the Zoom screen-sharing popup keeps stuttering if the shared application is in a different workspace. I'm hoping assigning the app to all workspaces might help avoid this issue.\r\n\r\nHere's my current config file: [aerospace.toml](https://github.com/saadjs/dotfiles/blob/main/aerospace/aerospace.toml)",
      "created_at": "2025-05-08T16:32:18Z",
      "updated_at": "2025-05-08T16:32:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "saadjs",
        "avatar_url": "https://avatars.githubusercontent.com/u/66745745?u=0d9d2a96cda77e27ee6e7c493952741b4cba5eab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afl9E",
      "number": 1383,
      "title": "Tiling gaps not respected when more than 2 windows",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Install Aerospace\r\n2. Put config (Tried with i3/default)\r\n3. Open 2 apps, aerospace splits them correctly\r\n4. Open another app, apps are overlap.\r\nExpected result: Equal gap within all apps, and balanced.\r\nActual result: Gaps are overlapped.\r\n\r\n### Additional info\r\nrunning balance-sizes not helping also. Happens only on vertical.\r\nUninstalling not helping, also reverting to older version.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n<img width=\"1800\" alt=\"Screenshot 2025-05-05 at 18 29 15\" src=\"https://github.com/user-attachments/assets/423bae5b-ed98-4640-a91a-8238bd3ad13a\" />\r\n<img width=\"1800\" alt=\"Screenshot 2025-05-05 at 18 29 31\" src=\"https://github.com/user-attachments/assets/ea30e77b-b517-47d7-a079-1292134dee4b\" />\r\n\r\n",
      "created_at": "2025-05-05T15:31:26Z",
      "updated_at": "2025-05-08T07:06:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "lidorpipl",
        "avatar_url": "https://avatars.githubusercontent.com/u/49155851?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afn3t",
      "number": 1390,
      "title": "Disable tiling on selected workspaces",
      "body": "It would be nice to have the option to disable tiling on selected workspaces. This would give the benefit of using tiling and the regular desktop. For example, I may use workspace 1 for terminal, 2 for editor, 3 for browser, and then 4 would be a regular workspace with overlapping windows.",
      "created_at": "2025-05-07T12:19:44Z",
      "updated_at": "2025-05-07T13:52:33Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ax1Z6",
        "body": "#260 "
      },
      "user": {
        "login": "diegobernardes",
        "avatar_url": "https://avatars.githubusercontent.com/u/14483?u=f42ecf74ec19c3ee06efc695246d939523245a99&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afnl6",
      "number": 1389,
      "title": "Bulding MacOS apps resources recommendations?",
      "body": "I know this is not related to AeroSpace, but I couldn't find a find to contact nikita anywhere. 😅 \r\n\r\nI am staring to learn how to build macos apps, and I want to build a macos app that's like a system-wide keyboartd shortcuts, but based on key sequences.\r\n\r\nThe problem is, I am struggling to find good resources for this, and I like the approach AeroSpace has taken. Could anyone help me with some relevant resources?\r\n\r\nThank you!",
      "created_at": "2025-05-07T07:44:12Z",
      "updated_at": "2025-05-07T07:44:13Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "corpooo",
        "avatar_url": "https://avatars.githubusercontent.com/u/12585256?u=779fe167a71bba51917b4f26209f2a6e4c25e278&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeVCY",
      "number": 1081,
      "title": "Ignoring the picture-in-picture window from a brower or any app?",
      "body": "I use Zen browser as my daily and it has the picture in picture feature. Every time I use the pip it stays in the workspace the browser is in. I tried this \r\n\r\n```\r\n[[on-window-detected]]\r\n    if.app-id = 'app.zen-browser.zen'\r\n    run = ['move-node-to-workspace Z']\r\n\r\n\r\n[[on-window-detected]]\r\n    if.app-id = 'app.zen-browser.zen'\r\n    if.window-title-regex-substring = 'Picture-in-Picture'\r\n    run = ['layout floating']\r\n    check-further-callback = true\r\n\r\n```\r\nTo differentiate between the type of windows from the same app but it doesn't work. Any ideas?",
      "created_at": "2025-02-12T04:24:58Z",
      "updated_at": "2025-05-07T00:12:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Vib1240n",
        "avatar_url": "https://avatars.githubusercontent.com/u/71455013?u=fcb0433f04b075d28205c2ddebe3e2d502931949&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfnDg",
      "number": 1387,
      "title": "Can I put all windows and all workspaces in floating mode by default?",
      "body": "By default one has tiling mode up all the time and has to switch on floating mode for each app and and workspace. \r\nHow can I make floating mode to be default and activate tiling only when needed?\r\n\r\nThe closest I find in the config file is \r\n```\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles' \r\n```\r\nbut it's either files or accordeon, not float ... \r\n\r\nCan I float on everything by default? ",
      "created_at": "2025-05-06T17:22:45Z",
      "updated_at": "2025-05-06T18:51:28Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axy-x",
        "body": "```\r\n[[on-window-detected]]\r\n    check-further-callbacks = true\r\n    run = 'layout floating'\r\n```\r\nbut reloading the config was not enough I had to quit aerospace and open it again"
      },
      "user": {
        "login": "foice",
        "avatar_url": "https://avatars.githubusercontent.com/u/9378357?u=63ead4161d1351752cb8caacfeb180aa38edbb08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflJv",
      "number": 1378,
      "title": "toml schema for config file",
      "body": "hello! I have really been enjoying aerospace and following its development for the past several months. I recently came across a tool called starship.rs, it allows users to create very customizable terminal prompts. while starship and aerospace are quite disparate, they both share a similar toml configuration structure. \r\n\r\nin the starship project they have included a schema such that users can get autocompletions in their editor for all the various toml keys by adding a simple header at the top of their config file (as described here: https://starship.rs/config/). I would like to write something like this for the aerospace project with the aim of making this wonderful tool more accessible to more people. \r\n\r\nwould this be something you think would align with the project values? I wanted to check first before opening a pull request. thanks for your time and consideration. ",
      "created_at": "2025-05-04T14:47:57Z",
      "updated_at": "2025-05-06T12:40:10Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nealxm",
        "avatar_url": "https://avatars.githubusercontent.com/u/88364802?u=e25f0c340a5de539b74d57fcf67c713c9222ba56&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfdN_",
      "number": 1347,
      "title": "Windows blink when changing focus",
      "body": "### Add a body\n\nSteps to reproduce:\r\n1. open two windows\r\n2. change focus\r\n\r\n![2025-04-25 11 19 47](https://github.com/user-attachments/assets/7dfa33a4-18fd-481c-970b-ac1d1bcc5c44)\r\n\r\nExpected result:\r\nno blink\r\n\r\n\r\nActual result:\r\nwindows blinks\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n",
      "created_at": "2025-04-26T11:33:10Z",
      "updated_at": "2025-05-06T04:43:23Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axa1u",
        "body": "Please make sure that you don't have any other window manager running in parallel"
      },
      "user": {
        "login": "KKKZOZ",
        "avatar_url": "https://avatars.githubusercontent.com/u/70520782?u=848145cc61e692f2360cfd31a1ca55495917f8d5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfmLZ",
      "number": 1385,
      "title": "Sharing a window in a Zoom meeting doesn't seem to work with AeroSpace running",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Have AeroSpace running and managing spaces/windows\r\n2. Get on a Zoom call\r\n3. In Zoom select `Share` and pick an application window to share (like Chrome)\r\n\r\nExpected result:\r\n\r\nEveryone sees the application window on the Zoom call and I see the application window in whatever AeroSpace layout I have set up and can interact with it.\r\n\r\nActual result:\r\n\r\nNot sure what everyone else sees on the call, but I just see my macOS desktop. The window is being shared, but it's not visible to me in any way that I can see and interact with it at first.\r\n\r\nIf I use Cmd-Tab and move to another application window and then back to my shared application window, everything comes back and I can interact with the window as expected.\r\n\r\nIt's not the end of the world to have to tab away and back to the shared window. But it's surprising the first time it happens.\r\n\r\nSharing the entire desktop works fine.\r\n\r\n### Additional info\r\n\r\n```shell\r\n> aerospace --version\r\naerospace CLI client version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\nAeroSpace.app server version: 0.18.5-Beta 4213dfd9d958dbfe3f801e07d7d5af53303baa75\r\n```\r\n\r\nZoom version is 6.4.6 (53970) running on macOS 15.4.1 (24E263).\r\n",
      "created_at": "2025-05-05T20:54:52Z",
      "updated_at": "2025-05-05T20:54:53Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ianchesal",
        "avatar_url": "https://avatars.githubusercontent.com/u/291808?u=35e3ca6f29905af318ba56ed4a2668069b02e2fa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afk6b",
      "number": 1375,
      "title": "Arc (Chromium) window keeps yanking focus back to its workspace – causes rapid “flash-back” loop when using AeroSpace virtual workspaces",
      "body": "Given that this is likely an issue with Arc and macOS, I will place it in general rather than potential-bugs.\r\n\r\n## TL;DR\r\n\r\nWhen the *foreground* window is **Arc** ` and I try to move from Workspace **W** to any other Workspace **T** using the normal hotkeys, the screen briefly lands on **T** and then—within a few ms—jumps right back to **W**.\r\nThe bug isn’t always triggered on the first switch; normal-speed keypresses often work—until one flashback occurs. After that first incident, every subsequent normal-speed switch enters a repeatable “flashback” loop (rapid key-spamming still lets me escape).\r\n\r\nI believe the root cause is Arc’s (Chromium’s) frequent background call to `-[NSWindow makeKeyAndOrderFront:]`, which forcibly re-keys the hidden window. Because AeroSpace emulates workspaces by merely hiding/showing windows (they all physically remain on Desktop 1), that call pulls focus back to the Arc window, and AeroSpace then dutifully “follows” the change—hence the loop.\r\n\r\n---\r\n\r\n## Environment\r\n\r\n| Item                          | Value                                                        |\r\n| ----------------------------- | ------------------------------------------------------------ |\r\n| macOS                         | 15.4.1 (Apple Silicon)                                         |\r\n| Displays have separate Spaces | **Disabled**                                                 |\r\n| AeroSpace                     | 0.18.4-Beta                                |\r\n| Arc                           | 1.91.2 (Chromium 135.0.7049.116)                                        |\r\n| Other browsers                | Zen (no issue)    |\r\n\r\n---\r\n\r\n## Steps to reproduce\r\n\r\n1. Assign Arc to Workspace **W**; open any other app in Workspace **T**.\r\n2. Press the shortcut (e.g. ⌥+T) once, at normal typing speed, to move from **W** → **T**.\r\n\r\n_Note_: It may take one or two normal-speed attempts before you see the first flashback. Once it happens, repeating step 2 reliably reproduces the loop for the rest of the session.\r\n\r\n---\r\n\r\n## Observed behaviour\r\n\r\n* The display shows Workspace T *for a split-second*, then immediately snaps back to Workspace W (Arc).\r\n* If I keep pressing the shortcut slowly, the cycle repeats: flash to T → snap back to W.\r\n* Only by **spamming** the shortcut very fast can I stay on Workspace T.\r\n\r\n---\r\n\r\n## Expected behaviour\r\n\r\nAfter one keypress, the view should stay on Workspace T, leaving Arc hidden (ordered out) until I explicitly return.\r\n\r\n---\r\n\r\n## What I have already tried\r\n\r\n* **Disabled** `Displays have separate Spaces` – had been off from day 1.\r\n* Closed every utility that might spawn invisible floating windows.\r\n* Examined `AXWindowRole` / `subrole` in Arc – nothing special.\r\n* Tested Chrome, Edge, VS Code – they show similar (but less frequent) rebounds; non-Chromium apps (Safari, Terminal, Obsidian-native) never do.\r\n* Searched related reports:\r\n\r\n  * **AeroSpace**: [#289](https://github.com/nikitabobko/AeroSpace/issues/289) “Chrome window: Looping/Bouncing Between Workspaces” (looks identical, but their solution relied on the *Displays…* toggle).\r\n  * **yabai**: [#1662](https://github.com/koekeishiya/yabai/issues/1662) “Arc Browser Holds Focus”, [#2269](https://github.com/koekeishiya/yabai/issues/2269) “Yabai + Arc spaces switching”. Both blame Arc’s focus retention.\r\n  * **Reddit**: “[Cmd + Tab switching spaces on macOS?](https://www.reddit.com/r/ArcBrowser/comments/1bf4tiz/cmdtab_switching_spaces_on_macos/)” – Arc ignores the system toggle *When switching to an application, switch to a space with open windows for the application*.\r\n\r\n---\r\n\r\n## Hypothesis (needs confirmation)\r\n\r\n```\r\nArc window is hidden by AeroSpace (hideInCorner)\r\n│\r\n└─> Arc/Chromium background event fires (tab title change, download toast, Command Bar, Sidekick, etc.)\r\n    │\r\n    └─> Chromium calls -[NSWindow makeKeyAndOrderFront:]\r\n         • orderFront  ⇒ window becomes visible again\r\n         • makeKey     ⇒ window becomes key window\r\n         ⇒ WindowServer must reveal Arc’s desktop\r\n             │\r\n             └─> AeroSpace sees “user switched focus back”, dutifully warps\r\n```\r\n\r\nBecause **Zen** (Firefox-based) doesn’t call `makeKeyAndOrderFront:` nearly as aggressively, the issue vanishes the moment I switch browsers.\r\n\r\n---\r\n\r\n## Why this matters\r\n\r\n*Breaks* the fundamental workflow of virtual workspaces if any Chromium/Electron app is in the mix—Arc is simply the most egregious because its UI animations and helpers trigger the call far more often.\r\n\r\n---\r\n\r\n## Questions / possible paths\r\n\r\n1. **Ignore key-window changes from a hidden window?**\r\n   Would it be feasible for AeroSpace to treat `orderFront` events coming *immediately* after its own `orderOut:` as “noise” and suppress the automatic workspace re-evaluation for a short debounce window?\r\n\r\n2. **Expose a per-app override?**\r\n   Perhaps a configuration flag like\r\n\r\n   ```toml\r\n   [[window_rule]]\r\n   app = \"Arc\"\r\n   ignore_key_front = true\r\n   ```\r\n\r\n3. Has anyone found a way to stop Chromium from issuing that `makeKeyAndOrderFront:` under the hood?\r\n\r\nThanks for maintaining a SIP-friendly tiler—would love to nail down this last edge case.\r\n\r\n",
      "created_at": "2025-05-04T03:43:29Z",
      "updated_at": "2025-05-05T19:49:43Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "a322655",
        "avatar_url": "https://avatars.githubusercontent.com/u/17927678?u=9867cff56fada83e7d685502381c21c032445c57&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfmEV",
      "number": 1384,
      "title": "Echo `list-windows` with GUI",
      "body": "Is there a way to take the output of an aerospace command and print it within the GUI interface? Ideally, it would be great to have a keyboard shortcut that could do something like `'exec-and-forget aerospace list-windows --focused --interactive --gui'` (or ` ... | xargs echo`) and uses the `showMessageInGui()` function, like `reload-config` does.",
      "created_at": "2025-05-05T17:46:15Z",
      "updated_at": "2025-05-17T00:57:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxwTM",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/236"
      },
      "user": {
        "login": "arnold-c",
        "avatar_url": "https://avatars.githubusercontent.com/u/24391445?u=95c0e8d78abe34c41105a095c4ee38671da52f20&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflwP",
      "number": 1382,
      "title": "How do you use binding on 'right shift' key ?",
      "body": "just like the title say",
      "created_at": "2025-05-05T11:39:32Z",
      "updated_at": "2025-05-05T11:39:33Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mozarik",
        "avatar_url": "https://avatars.githubusercontent.com/u/39885486?u=140badf23a06e95886896123012ddd374c14ecc0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflqY",
      "number": 1381,
      "title": "Bind for next node",
      "body": "Hi,\r\nI checked the documentation and only found that you can move to nodes like (left|down|up|right)\r\nbut there's no bind to just do like next or prev. I come from awesomewm that's why I'm wondering if there's something like that in here. where I just could say next and move to the next node, without needing to know if its up down right left or whatever.\r\nIf it's not possible would it be easy to implement?\r\n\r\nThank you.",
      "created_at": "2025-05-05T09:25:03Z",
      "updated_at": "2025-05-05T09:25:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "cshjsc",
        "avatar_url": "https://avatars.githubusercontent.com/u/47149574?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfjpB",
      "number": 1368,
      "title": "Grouping windows of same app",
      "body": "Hi! Really enjoying aerospace so far. \r\n\r\nI want to automate grouping windows of the same app, but couldn't figure out how that can be done. For example, I have Code open and want to load multiple PDFs to take notes, and would like the PDFs to be in an accordion container in a group. \r\n\r\nIs there anyone who had successfully set up something similar to what I am trying to do and can share their setup, or guidance on how this can be done? Thanks in advance!",
      "created_at": "2025-05-02T10:42:33Z",
      "updated_at": "2025-05-06T05:46:06Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxuXp",
        "body": "Update: Seems like this can't be achieved, so I made a fork and added a `group-windows` command. If anyone is interested, feel free to fork https://github.com/EnhancedJax/AeroSpace/tree/EnhancedJax/dev. Hope something similar can be added to Aerospace! "
      },
      "user": {
        "login": "EnhancedJax",
        "avatar_url": "https://avatars.githubusercontent.com/u/80020581?u=62d6a5b3d81c4a38674a95905b5eff2ade3c3f50&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflSE",
      "number": 1379,
      "title": "Using `join-with` Properly",
      "body": "New Aerospace user here, so please bear with me. I have a default layout that tiles horizontally. In a particular workspace, I have 3 windows open; from left to right, a TUI window (WezTerm) and 2 browser windows (Brave). I'd like to join the 2 rightmost windows (the browser windows) and tile them vertically, but I'm having trouble with something - maybe my config, maybe my keybindings. I hoping someone here can help.\r\n\r\nI have the following config in place (for clarity, this is snippet containing only what I _think_ to be relevant):\r\n\r\n```shell\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'horizontal'\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\n\r\n# I've commented the `move` commands that have this same keybinding\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n```\r\n\r\nGiven those 3 windows, if I focus on the middle window and hit `alt-shift-l`, nothing really happens. This doesn't seem surprising, but I thought I might be able to follow that with `alt-/` to shift just those 2 rightmost windows to a vertically tiled layout, but it continues to act on all 3 windows, shifting all of them to tile vertically.\r\n\r\nCan someone help me understand what I'm doing wrong? I feel like I must be misunderstanding something in the documentation, but I can't seem to find the hook.\r\n\r\nThanks!",
      "created_at": "2025-05-04T19:40:30Z",
      "updated_at": "2025-05-05T14:10:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axt4i",
        "body": "Argh! Modes strike again. I hadn't noticed that the keybinding to join windows was available in service mode. I think I have a handle on this now. For anyone searching later, the specific answer to my question, the path is:\r\n\r\n`alt-shift-semicolon` (to enter service mode) --> `alt-shift-l` (to join the middle window with the rightmost window)\r\n\r\nThis seems to automatically place the joined windows in a vertically tiled layout which is what I was after. My apologies for asking and then answering."
      },
      "user": {
        "login": "robwilkerson",
        "avatar_url": "https://avatars.githubusercontent.com/u/7735?u=612b98cea1088892a6a69f131541cfae2eb561a4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflS6",
      "number": 1380,
      "title": "put the window at the center, no matter what",
      "body": "Can I place a window at the center of the screen, even if overlapping with others? I understand that moving a window to the center makes it overlap with other, and overlaps are not what you do tiling for, but having always the window you work on on the far right or far left of the screen is tiring on the neck, you are never looking straight(!).\r\n\r\nAm I missing something obvious on how to use AeroSpace? I think working on the window you have in front of your nose is more natural than constantly having to look either left or right. \r\n\r\nI think this was sort of asked [here](https://github.com/nikitabobko/AeroSpace/discussions/633) but the answers are so complicated that I doubt there is no simple way or they are trying to accomplish more. In Rectangle this is just one combokey stroke ... \r\n![image](https://github.com/user-attachments/assets/ed06d3b9-dc6d-4365-805b-10bfa91df22d)",
      "created_at": "2025-05-04T20:19:42Z",
      "updated_at": "2025-05-04T20:19:42Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "foice",
        "avatar_url": "https://avatars.githubusercontent.com/u/9378357?u=63ead4161d1351752cb8caacfeb180aa38edbb08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfiHM",
      "number": 1358,
      "title": "Feature Request: Add before-quit-command support to clean up resources on exit",
      "body": "AeroSpace currently supports after-login-command and after-startup-command hooks, enabling user-defined startup automation.\r\n\r\nI would like to request the addition of a before-quit-command option in the configuration file to allow users to clean up or stop background processes on exit.  I use Janky Borders when using aerospace to help me see where my window focus is since i have a 3 monitor setup.  So I suggest  for example something like:\r\n\r\n\r\n```toml\r\nbefore-quit-command = ['exec-and-forget killall borders']\r\n```\r\n\r\n\r\nI tried searching for if there was one and couldn't find it and I didn't find any discussions about it, so if it is already there, sorry for bringing this up and if someone could point me in the right direction that would be great.  Currently I just use a wrapper script for opening and closing aerospace. \r\n\r\nIn my search I saw that internally, the application already calls beforeTermination() during signal handling (AppServerTerminationHandler), so exposing this as a user-configurable hook would align well with the app’s existing architecture.\r\n\r\nespecially since it already has the ability to run after start up commands. \r\n\r\nThanks for consideration of this feature. \r\n\r\n\r\n",
      "created_at": "2025-04-30T15:55:08Z",
      "updated_at": "2025-05-04T18:52:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "allreddv",
        "avatar_url": "https://avatars.githubusercontent.com/u/27244741?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AflJu",
      "number": 1377,
      "title": "Camera is hidden After switching desktops in CleanShot",
      "body": "### Body\n\nSteps to reproduce:\r\n1. Open Up Cleanshot to record screen\r\n2. Choose Webcam as source\r\n3. Switch to another desktop and little circle showing webcam is gone\r\n\r\nExpected result:\r\nActual result: It should be there no matter the desktop change. \r\n\r\n### Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\naerospace CLI client version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n\r\n[This](https://github.com/pourmand1376/.dotfiles/blob/main/aerospace/.aerospace.toml) is also my aerospace configuration. \r\n",
      "created_at": "2025-05-04T14:45:36Z",
      "updated_at": "2025-05-04T14:45:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pourmand1376",
        "avatar_url": "https://avatars.githubusercontent.com/u/32064808?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afj0-",
      "number": 1370,
      "title": "Aerospace runtime error when just moving around and quit?",
      "body": "### Add a body\r\n\r\nSteps to reproduce:\r\n\r\nnot sure how to reproduce this, but it occurs when i randomly moving around workspace and cmd+q some windows.\r\n\r\nit happens about 3 times during 2days.\r\n\r\nExpected result: No crash\r\nActual result: Crash\r\n\r\nmay be duplicate of #1306\r\n\r\ni saw the 0.18.4 may reduce this problem, but it seems not for me..\r\n\r\n\r\n## Additional info\r\n\r\nerror message that pops up\r\n\r\n```shell\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    Windows must always have a parent. The Window was unbound at:\r\n    0   AeroSpace                           0x00000001003aa8fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x000000010023e6cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x000000010023e978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000100237e90 $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n    4   AeroSpace                           0x0000000100211d00 $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n    5   AeroSpace                           0x000000010020d679 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ6_ + 1\r\n    6   AeroSpace                           0x000000010019c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    7   libswift_Concurrency.dylib          0x0000000269abe461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    8   libswift_Concurrency.dylib          0x0000000269abe109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    9   AeroSpace                           0x000000010020c94d $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n    10  AeroSpace                           0x000000010019c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000269abe461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000269abe109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x000000010020beb5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n    14  AeroSpace                           0x000000010020c66d $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n    15  AeroSpace                           0x000000010019c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000269af283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: onFocusChanged\r\nDate: 2025-05-02 14:26:20 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 92980 ID: com.microsoft.VSCode\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:8:29 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001003a9f28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100240fa0 $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 260\r\n2   AeroSpace                           0x000000010023ffec $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000100238bc0 $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000100211495 $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000100204449 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ9_ + 1\r\n6   AeroSpace                           0x000000010019c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x0000000269abe461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x0000000269abe109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000100202c99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x000000010019c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000269abe461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000269abe109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x000000010020016d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x00000001001fead1 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n15  AeroSpace                           0x000000010019c3f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x0000000269af283d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```\r\n",
      "created_at": "2025-05-02T14:30:23Z",
      "updated_at": "2025-05-04T11:37:13Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxtEz",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1306"
      },
      "user": {
        "login": "shj1081",
        "avatar_url": "https://avatars.githubusercontent.com/u/143889446?u=de5e23d13d0f8c6ffdfd0c4367c64faa89c8a967&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afkz7",
      "number": 1374,
      "title": "Can I rename the workspaces, say use \"Server\" instead of \"S\"",
      "body": "I end up forgetting what \"S\" stands for, was it \"Social\" or \"Server\" or \"Study\"? \r\nWould it be possible to still use single key shortcuts, like \"S\", but give the workspace a name like \"Study\" ? ",
      "created_at": "2025-05-03T21:32:36Z",
      "updated_at": "2025-05-04T09:43:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxsfD",
        "body": "Yes, you can even add emojis if you wish. They'll also show up in the menu bar no problem.\r\nFor instance:\r\n`ctrl-alt-n = 'workspace Notes📝'`\r\n"
      },
      "user": {
        "login": "foice",
        "avatar_url": "https://avatars.githubusercontent.com/u/9378357?u=63ead4161d1351752cb8caacfeb180aa38edbb08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afk-t",
      "number": 1376,
      "title": "`exec-on-workspace-change` falsely triggered on some extra events",
      "body": "As mentioned [here](https://github.com/nikitabobko/AeroSpace/issues/1315#issuecomment-2826350252), some window creation/closing within the same workspace will falsely trigger `exec-on-workspace-change`.\r\n\r\nNot a big deal, but better be optimized to improve performance.\r\n\r\nVersion:\r\n```\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n```",
      "created_at": "2025-05-04T07:37:33Z",
      "updated_at": "2025-05-07T08:54:45Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "blindFS",
        "avatar_url": "https://avatars.githubusercontent.com/u/568457?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfkPv",
      "number": 1373,
      "title": "Configure position of focused window when using join-with",
      "body": "If I want to join 2 windows I want to specify that the window I'm focused on at the time of the join-with should be on top/the leftmost always. Is there a way to do that? I have both normalizations on atm",
      "created_at": "2025-05-03T00:10:09Z",
      "updated_at": "2025-05-03T00:11:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jeffrytyn",
        "avatar_url": "https://avatars.githubusercontent.com/u/42385584?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfkNx",
      "number": 1372,
      "title": "Preserve tiling orientation when toggling between floating modes",
      "body": "When I float a tiled window in a vertical orientation, it changes the orientation to horizontal when I tile it back. I would like for the node to preserve the vertical orientation. Is there any way to do this? My initial guess was it has something to do with `default-root-container-orientation` being `auto`? My monitor is wider than it is tall, but because the space it's tiling into is taller than wide, I'd figure it would default to a vertical orientation\r\n\r\n\r\nhttps://github.com/user-attachments/assets/7f274ca7-e334-4884-a197-e9217bec2cca",
      "created_at": "2025-05-02T23:26:04Z",
      "updated_at": "2025-05-02T23:26:06Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jeffrytyn",
        "avatar_url": "https://avatars.githubusercontent.com/u/42385584?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afibc",
      "number": 1359,
      "title": "After wake/login, most windows end up piled up in one workspace (18.4 beta)",
      "body": "### Add a body\n\nThis is happening on my single-display M4 Mac Mini only, and not on my M1 MacBook Pro which has a second display attached. This is a new issue that I haven't seen until 18.x. \r\n\r\nSteps to reproduce:\r\n1. Wake up / log in after being away from the machine for several+ hours\r\n2. Sometimes all my windows that don't have forced workspace assignments end up piled up in one workspace. These would include 8-15 Firefox windows, several Chrome windows, Cursor windows, etc.\r\n\r\n\r\nExpected result: Windows stay out.\r\nActual result: Windows that don't have forced workspace assignments end up piled up in one workspace\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n```\r\n",
      "created_at": "2025-05-01T00:00:55Z",
      "updated_at": "2025-05-02T16:17:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axmsr",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1216"
      },
      "user": {
        "login": "jack4git",
        "avatar_url": "https://avatars.githubusercontent.com/u/8593676?u=685e20869f5c1a0bcbd3317a3ea72122e58f6d72&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afim0",
      "number": 1360,
      "title": "Window sizing inconsistency when move-node-workspace across monitors",
      "body": "```\r\n#!/usr/bin/env bash\r\n\r\n# https://github.com/nikitabobko/aerospace/issues/510\r\n\r\nset -euo pipefail\r\n\r\nAPP_ID=\"$1\"\r\nSCRATCHPAD_WS=\"${2:-NSP}\"\r\n\r\nAERO=\"/opt/homebrew/bin/aerospace\"\r\n\r\nFORMAT_ALL=\"%{window-id}%{right-padding} | %{app-bundle-id}%{right-padding} | %{workspace}\"\r\n\r\nrun() {\r\n \"$AERO\" \"$@\" >/dev/null 2>&1 || exit 0\r\n}\r\n\r\nrun_capture() {\r\n \"$AERO\" \"$@\" 2>/dev/null || exit 0\r\n}\r\n\r\nmain() {\r\n local list_output=\"$(run_capture list-windows --all --format \"$FORMAT_ALL\")\"\r\n\r\n read -r win_id ws <<<\"$(echo \"$list_output\" |\r\n  grep -F \"$APP_ID\" |\r\n  awk -F'|' 'NR==1 {\r\n      win_id = $1\r\n      ws = $3\r\n      gsub(/[^0-9]/, \"\", win_id)\r\n      gsub(/^[ \\t]+|[ \\t]+$/, \"\", ws)\r\n      print win_id, ws\r\n    }')\"\r\n\r\n # Check if app exists in list\r\n if [ -z \"$win_id\" ]; then\r\n  open -b \"$APP_ID\"\r\n  sleep 0.5\r\n  exit 0\r\n fi\r\n\r\n local current_ws=\"$(run_capture list-workspaces --focused)\"\r\n\r\n if [ \"$current_ws\" = \"$SCRATCHPAD_WS\" ]; then\r\n  exit 0\r\n fi\r\n\r\n if [ \"$ws\" != \"$current_ws\" ]; then\r\n  # Workaround: move to scratchpad first to force window resizing when moving back to the current workspace\r\n  # This ensures the window is properly resized when switching workspaces.\r\n  run move-node-to-workspace \"$SCRATCHPAD_WS\" --window-id \"$win_id\"\r\n  run move-node-to-workspace \"$current_ws\" --window-id \"$win_id\" --focus-follows-window\r\n else\r\n  run move-node-to-workspace \"$SCRATCHPAD_WS\" --window-id \"$win_id\"\r\n fi\r\n}\r\n\r\nmain\r\n```\r\n\r\n```\r\nalt-shift-a = 'exec-and-forget ~/bin/nsp.sh com.github.wez.wezterm W'\r\n```\r\n\r\n\r\n\r\nI implemented this shell script above to have a Guake-style window for my WezTerm. \r\n\r\nI noticed that when using move-node-to-workspace to move a window from its current workspace (on a different monitor) to the focused workspace, the window sometimes retains the size from the previous monitor—if there are already other windows in the target workspace).\r\n\r\nTo work around this, I added an extra step: first moving the window to a scratchpad workspace to force it into fullscreen, then moving it to the current workspace to ensure it gets resized properly when switching workspaces:\r\n\r\n```\r\n  run move-node-to-workspace \"$SCRATCHPAD_WS\" --window-id \"$win_id\"\r\n```\r\n\r\nHowever, I found that this workaround doesn’t resolve the issue, as explained in the actual results section with images. \r\n\r\nSo, as the last resort I will quickly press Alt + Shift + F twice to toggle fullscreen on and off to ensure it gets resized properly.\r\n\r\n### Steps to reproduce:\r\n\r\n1. Open WezTerm on the Retina display.\r\n2. Change focus to the other monitor, then press Alt + Shift + A to move WezTerm to that monitor’s workspace.\r\n3. Change focus back to the Retina display, then press Alt + Shift + A to move WezTerm back to monitor’s  Retina display -- then the window size is incorrect.\r\n\r\n\r\n### Expected result:\r\n\r\nThis is the normal results when using a single display, which would also be the expected result\r\n\r\n<img width=\"1728\" alt=\"before\" src=\"https://github.com/user-attachments/assets/9d1650e9-0144-4e24-b629-6d680a481012\" />\r\n\r\n### Actual result:\r\n\r\nThis is the actual result w/o the workaround: as you can see, the red box at the bottom highlights that the right window’s height is too short. The part of the red box visible in the expected result screenshot is either missing in the following image or pushed beyond the display boundary, indicating that the window’s width is larger.\r\n\r\n<img width=\"1728\" alt=\"after\" src=\"https://github.com/user-attachments/assets/37ad28e5-414f-4095-8234-c17da3b7c33b\" />\r\n\r\nThis is the actual result with the workaround: However, I found that this workaround only fixes the window height issue, the width is still too large, as shown in the following image.\r\n\r\n<img width=\"1728\" alt=\"Screenshot 2025-04-30 at 22 43 53\" src=\"https://github.com/user-attachments/assets/7d5b1013-4515-4b1d-a756-57c794872f38\" />\r\n\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n\r\nI'm using 0.18.4-Beta, SNAPSHOT is only to try the i3 style menu bar.\r\n\r\n```\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.0.0-SNAPSHOT 5b52dcf3680121c18b15ef589b40f815049d160e\r\n```",
      "created_at": "2025-05-01T05:48:46Z",
      "updated_at": "2025-05-02T15:39:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxpHi",
        "body": "Related links:\r\n- https://github.com/nikitabobko/AeroSpace/issues/143\r\n- https://github.com/nikitabobko/AeroSpace/issues/335\r\n- de93349dc342175b0f8332d2db4c41c433378eb1\r\n- 35143f77603bbf2a234a4bb972c7e462a8081ba1\r\n\r\nI appreciate the detailed issue, but I won't investigate it, since I'm pretty sure that it's macOS weirdness\r\n\r\nNevertheless, here are a few pointers:\r\n\r\n**1.** You can try to disable/enable 'Displays have separate Spaces' in System Settings\r\n\r\n**2.** You can try to play with order in which AeroSpace sets the top left corner and the size of the windows:\r\n\r\n```diff\r\n﻿﻿diff --git a/Sources/AppBundle/tree/MacApp.swift b/Sources/AppBundle/tree/MacApp.swift\r\nindex 76974123..464d0916 100644\r\n--- a/Sources/AppBundle/tree/MacApp.swift\r\n+++ b/Sources/AppBundle/tree/MacApp.swift\r\n@@ -384,9 +384,13 @@ extension [UInt32: AxWindow] {\r\n private func setFrame(_ window: AXUIElement, _ topLeft: CGPoint?, _ size: CGSize?) {\r\n     // Set size and then the position. The order is important https://github.com/nikitabobko/AeroSpace/issues/143\r\n     //                                                        https://github.com/nikitabobko/AeroSpace/issues/335\r\n+\r\n+    // You can try to play with \"set size\" vs \"set top left corner\" order\r\n     if let size { window.set(Ax.sizeAttr, size) }\r\n-    if let topLeft { window.set(Ax.topLeftCornerAttr, topLeft) } else { return }\r\n-    if let size { window.set(Ax.sizeAttr, size) }\r\n+    if let topLeft { window.set(Ax.topLeftCornerAttr, topLeft) }\r\n+\r\n+    // Or you can also try to drop the second \"setSize\"\r\n+    // if let size { window.set(Ax.sizeAttr, size) }\r\n }\r\n \r\n // Some undocumented magic\r\n\r\n```"
      },
      "user": {
        "login": "zhenpewu",
        "avatar_url": "https://avatars.githubusercontent.com/u/96321255?u=a0b2e07b23bcee117f7b6a30bc2fd580b74586bb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfjnP",
      "number": 1367,
      "title": "Aerospace constant 25-30% cpu usage",
      "body": "\r\nSteps to reproduce:\r\n1. Start aerospace\r\n2. Open activity monitor or top\r\n3. Look at AeroSpace cpu usage\r\n\r\nExpected result: I'd expect it to be low at idle when not doing anything like switching workspaces.\r\nActual result: Surprisingly high 25-30% cpu usage\r\n\r\n## Additional info\r\nI have an M4 Pro so it doesn't feel slow at all just concerned that Aerospace is eating cpu unnecessarily which will impact battery life etc.\r\n\r\nI have noticed this across multiple versions and also across restarts.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n```\r\n",
      "created_at": "2025-05-02T10:02:11Z",
      "updated_at": "2025-05-02T15:19:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axpmb",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/545"
      },
      "user": {
        "login": "lucaciraolo",
        "avatar_url": "https://avatars.githubusercontent.com/u/5068011?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfjLR",
      "number": 1366,
      "title": "Warp terminal window not listed or detected",
      "body": "### Add a body\n\nThis is o macOS 15.4.1 and Warp https://www.warp.dev/ version v0.2025.04.23.08.11.stable_01\r\n\r\nSteps to reproduce:\r\n1. select Warp terminal window\r\n2.try to move it to another workspace or monitor using key shortcut\r\n\r\nExpected result:\r\nWarp window is moved\r\nActual result:\r\nwindow is not moved or window from another application is moved\r\n\r\n## Additional info\r\nApplication is not listed using `aerospace list-apps`\r\nWindow is not listed using `aerospace list-windows --all`\r\nActivating debug-windows in macOS Terminal, selecting Warp terminal window and going back to Terminal to deactivate debug-windows lists only `com.apple.Terminal.window.` and `com.apple.Terminal`\r\n\r\nIt seems that this used to work and possibly was broken with new macOS update 15.4 or Warp update\r\nConfiguration below behaved properly and launched app was correctly placed in A workspace\r\n```\r\n[[on-window-detected]]\r\n    if.app-id = 'dev.warp.Warp-Stable'    \r\n    run = 'move-node-to-workspace A'\r\n```\r\n\r\n```shell\r\naerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n```\r\n",
      "created_at": "2025-05-01T20:53:33Z",
      "updated_at": "2025-05-02T12:33:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxpIS",
        "body": "Aaah, it's good old problem that when you update the application and don't restart it, macOS blocks all further accessibility requests.\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/1018\r\nhttps://github.com/nikitabobko/AeroSpace/issues/237#issuecomment-2184114928\r\n\r\nPlease restart AeroSpace"
      },
      "user": {
        "login": "ivenhov",
        "avatar_url": "https://avatars.githubusercontent.com/u/778457?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afit7",
      "number": 1362,
      "title": "Aerospace Runtime Error when Neovide quits",
      "body": "### Add a body\r\n\r\nSteps to reproduce:\r\n1. Quit Neovide\r\n2. See the error\r\n\r\nBtw, I only saw it once, so I don't think I can reproduce it cleanly\r\n\r\nCould be related: #991 but I don't think it's that related\r\n\r\nExpected result: No crash\r\nActual result: Crash\r\n\r\n## Additional info\r\n\r\nError message:\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    Windows must always have a parent. The Window was unbound at:\r\n    0   AeroSpace                           0x0000000104b7a8fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000104a0e6cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000104a0e978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000104a07e90 $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n    4   AeroSpace                           0x00000001049e1d00 $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n    5   AeroSpace                           0x00000001049dd679 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ6_ + 1\r\n    6   AeroSpace                           0x000000010496c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    7   libswift_Concurrency.dylib          0x0000000280352461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    8   libswift_Concurrency.dylib          0x0000000280352109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    9   AeroSpace                           0x00000001049dc94d $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n    10  AeroSpace                           0x000000010496c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000280352461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000280352109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001049dbeb5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n    14  AeroSpace                           0x00000001049dc66d $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n    15  AeroSpace                           0x000000010496c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000028038683d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: onFocusChanged\r\nDate: 2025-05-01 09:08:22 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:8:29 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104b79f28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104a10fa0 $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 260\r\n2   AeroSpace                           0x0000000104a0ffec $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000104a08bc0 $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x00000001049e1495 $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x00000001049d4449 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ9_ + 1\r\n6   AeroSpace                           0x000000010496c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x0000000280352461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x0000000280352109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x00000001049d2c99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x000000010496c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000280352461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000280352109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x00000001049d016d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x00000001049cead1 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n15  AeroSpace                           0x000000010496c3f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000028038683d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```",
      "created_at": "2025-05-01T09:11:51Z",
      "updated_at": "2025-05-02T11:43:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxpFd",
        "body": "Created a tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1369"
      },
      "user": {
        "login": "matt-dong-123",
        "avatar_url": "https://avatars.githubusercontent.com/u/148605800?u=c4059c6455da424126f499c8853b77f79dff6f73&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfjFF",
      "number": 1364,
      "title": "Allow a window in all workspaces [like for Pic-in-Pic] windows",
      "body": "Currently my preview windows are stuck to a workspace.",
      "created_at": "2025-05-01T18:06:48Z",
      "updated_at": "2025-05-01T18:06:49Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "laciferin2024",
        "avatar_url": "https://avatars.githubusercontent.com/u/170102251?u=99876f83d9b12a3dd4c10cf30a523550353cf264&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfQDI",
      "number": 1279,
      "title": "New Tab in Finder creates akward space when in tiled mode",
      "body": "Hello\r\n\r\nI maybe found a bug. When i open any window (Browser, Terminal...) and as second window i choose the Finder, they are normal tiled. But if i then make in the Finder a new Tab, it creates a big space between the two windows.\r\n\r\nBefore new Tab:\r\n![Bildschirmfoto 2025-04-11 um 15 48 27](https://github.com/user-attachments/assets/278009d9-d976-46ca-95c9-c08c20b4da36)\r\n\r\nAfter new Tab:\r\n![Bildschirmfoto 2025-04-11 um 15 48 11](https://github.com/user-attachments/assets/840a75a3-6f4d-4414-8c5e-22fe609ad558)\r\n\r\nDo you have this too?\r\n\r\nThanks",
      "created_at": "2025-04-11T13:56:27Z",
      "updated_at": "2025-05-17T00:54:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxnF_",
        "body": "Ran in to this issue with terminal as well, took a bit more googling but found the answer. As this was the first link on google I'm adding the answer here;\r\n\r\nMacOS tabs are seen as windows and it causes issues with terminal, finder and a bunch of different apps;\r\n\r\nhttps://github.com/nikitabobko/AeroSpace/issues/68\r\n\r\nThe solution is to not use tabs, but to use Aerospace accordions. It's quite a few extra shortcut keys to get used to but there is a good tutorial of how they work here; https://youtu.be/-FoWClVHG5g?t=459"
      },
      "user": {
        "login": "Defprog86",
        "avatar_url": "https://avatars.githubusercontent.com/u/59998592?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aez7X",
      "number": 1204,
      "title": "Ghostty Tab potential bug?",
      "body": "Hey,\r\n\r\nI’m using the default config for Aerospace and mostly default for Ghostty. When I switch tabs (only tabs have this issue), Aerospace kinda freaks out. It’s not a big deal, but I figured I’d send a bug report.\r\n\r\n\r\nThanks for this amazing project!\r\nhttps://github.com/user-attachments/assets/8efb3495-3b8d-4ca4-bbe3-3f72583d598b\r\n\r\nEdit : idk how to close disccussion but found an answer - the problem is in the way apple handles new tabs api so for now only workarounds work .\r\n\r\n\r\n",
      "created_at": "2025-03-13T13:28:42Z",
      "updated_at": "2025-04-30T10:20:16Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "buzzedowl",
        "avatar_url": "https://avatars.githubusercontent.com/u/177368717?u=b121beb86ffd5aca9697bfe0f2b9e820ac4eff5d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afgzf",
      "number": 1356,
      "title": "Alt-Key bindings don't work when Kitty Terminal is the focused application",
      "body": "### Steps to reproduce:\r\n1. Have aerospace\r\n2. Have the Kitty terminal\r\n3. Try to operate a Alt-based key binding while Kitty is focused (e.g. jump to a workspace)\r\n\r\n#### Expected result:\r\nThe command completes\r\n#### Actual result:\r\nThe keybinding doesn't execute the aerospace command and instead outputs the default character for said keybinding (e.g. `Alt-d` outputs `∂`)\r\n\r\n### Additional info\r\nRestarting Aerospace nor Kitty resolves the issue. This only seems to occur with Kitty terminal, not with other terminals (e.g. Ghostty or iTerm)\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nAeroSpace.app server version: 0.18.4-Beta 96c745197e2ee22e61c0bda17427166a1695b8a7\r\n$ kitty -v\r\nkitty 0.41.1 created by Kovid Goyal\r\n```\r\n",
      "created_at": "2025-04-29T14:43:11Z",
      "updated_at": "2025-04-29T14:45:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jviall",
        "avatar_url": "https://avatars.githubusercontent.com/u/6645999?u=4f82aa8235bcdf80d4ac9ec48ef717e0df7ed1d5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfgyM",
      "number": 1355,
      "title": "Workspace 1 fullscreens everything",
      "body": "### Description\r\n\r\nTo be honest, I am not sure how to reproduce. It keeps happening, maybe after the mac goes to sleep and only full restart of the computer solves it. Maybe I am missing something but I don't know how to go about investigating it and much less solving it. Maybe someone has a hunch. I was unable to find a similar issue in the discussions or issues.\r\n\r\n**Expected result**: All workspaces allow windows to go fullscreen and back. So, if no window is fullscreen, new windows just make everything else smaller but everything can be seen.\r\n\r\n**Actual result**: More often than not, workspace 1 becomes broken. All screens are fullscreen. So all windows are overlapping each other. New windows change nothing. Running the fullscreen toggle does nothing. The rest of the workspaces work the same.\r\n\r\n## Additional info\r\n\r\nIncidentally, workspace 1 is what I use mainly for Edge browser. But this issue is not limited to it, any other apps moved to workspace 1 have the same behavior.\r\n\r\nUpdating aerospace did not solve the problem.\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n```\r\n\r\nI'll be happy to try to produce more info if someone points me in the right direction to do so.",
      "created_at": "2025-04-29T14:27:06Z",
      "updated_at": "2025-04-29T14:27:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bepuca",
        "avatar_url": "https://avatars.githubusercontent.com/u/44361528?u=34b32bf07fb2415265358b8d9abbd1004f2c42c8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afgqy",
      "number": 1354,
      "title": "Support for dynamic outer.top padding based on focused display (SketchyBar spacing issue)",
      "body": "I'm running into a UI spacing issue when using Aerospace in combination with SketchyBar. To account for the presence of SketchyBar, I applied a fixed outer.top padding value (e.g., outer.top = 40) in the Aerospace config.\r\n\r\nThis works well on one display (e.g., my external monitor), but results in excessive whitespace on another (e.g., my MacBook display). The issue stems from the fixed padding not adapting to differences in screen setups.\r\n\r\nWould be nice by just detecting what display in focus to change outer.top px.  For now i just made simple bash script which can be integreted to mac shortcuts or zsh alias to quickly change your outer.top \r\n\r\n<details>\r\n<summary>Bash Script</summary>\r\n\r\n```bash\r\n#!/bin/bash\r\n\r\nCONFIG_PATH=\"$HOME/.config/aerospace/aerospace.toml\"\r\nMONITOR=$(aerospace list-monitors --focused)\r\n\r\n// Put your prefet monitor name from aerospace list-monitors --focused\r\nif [ \"$MONITOR\" == \"1 | LC32G7xT\" ]; then\r\n    cat <<'EOF' > \"$CONFIG_PATH\"\r\nafter-login-command = []\r\n\r\nafter-startup-command = []\r\n\r\nstart-at-login = true\r\n\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE PREV_WORKSPACE=$AEROSPACE_PREV_WORKSPACE'\r\n]\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 30\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\nkey-mapping.preset = 'qwerty'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        45\r\nouter.right =      0\r\n\r\n[mode.main.binding]\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\n\r\nalt-shift-f = 'fullscreen'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\nalt-shift-semicolon = 'mode service'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main']\r\nf = ['layout floating tiling', 'mode main']\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\nEOF\r\n    echo \"✅ New config written to $CONFIG_PATH\"\r\nelse\r\n    cat <<'EOF' > \"$CONFIG_PATH\"\r\nafter-login-command = []\r\n\r\nafter-startup-command = []\r\n\r\nstart-at-login = true\r\n\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE PREV_WORKSPACE=$AEROSPACE_PREV_WORKSPACE'\r\n]\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 30\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\nkey-mapping.preset = 'qwerty'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n[gaps]\r\ninner.horizontal = 0\r\ninner.vertical =   0\r\nouter.left =       0\r\nouter.bottom =     0\r\nouter.top =        15\r\nouter.right =      0\r\n\r\n[mode.main.binding]\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\n\r\nalt-shift-f = 'fullscreen'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\nalt-shift-semicolon = 'mode service'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main']\r\nf = ['layout floating tiling', 'mode main']\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\nEOF\r\n    echo \"✅ New config written to $CONFIG_PATH\"\r\nfi\r\n\r\naerospace reload-config\r\n```\r\n\r\nif anybody knows better solution to solve it i would be pleased to see them ",
      "created_at": "2025-04-29T12:47:23Z",
      "updated_at": "2025-04-29T12:54:54Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rauf322",
        "avatar_url": "https://avatars.githubusercontent.com/u/82578227?u=1f623fa21da37c9bdd66464b4a0dbd2526b3b09f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AffjS",
      "number": 1351,
      "title": "AeroSpace Runtime Error",
      "body": "### Add a body\n\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000104b5e8fc $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001049f26cc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x00000001049f2978 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x00000001049719a8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 560\r\n    4   AeroSpace                           0x0000000104974465 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x0000000104972549 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x0000000104958431 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n    7   AeroSpace                           0x000000010499a605 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x00000001049b8149 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ7_ + 1\r\n    10  AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x000000027010a461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x000000027010a109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001049b6c99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x000000027010a461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000027010a109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x00000001049b416d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x000000010499a155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001049503f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x000000027013e83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.4-Beta\r\nGit hash: 96c745197e2ee22e61c0bda17427166a1695b8a7\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-04-28 13:42:50 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/TreeNode.swift:122:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104b5df28 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001049f2a84 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x00000001049719a8 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 560\r\n3   AeroSpace                           0x0000000104974465 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x0000000104972549 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x0000000104958431 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n6   AeroSpace                           0x000000010499a605 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x00000001049b8149 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ7_ + 1\r\n9   AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x000000027010a461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x000000027010a109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001049b6c99 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x00000001049509b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x000000027010a461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x000000027010a109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x00000001049b416d $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x000000010499a155 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001049503f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x000000027013e83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-04-28T13:44:52Z",
      "updated_at": "2025-04-29T11:53:19Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axg8u",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "kaovilai",
        "avatar_url": "https://avatars.githubusercontent.com/u/11228024?u=a904c23df0940f046077de487157c93228927b9a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfgBt",
      "number": 1353,
      "title": "AeroSpace Runtime Error",
      "body": "### Add a body\n\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-04-28 13:26:14 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.3.2 (Build 24D81)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x000000010271d3a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001025b5b1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x00000001025b4b70 $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 64\r\n3   AeroSpace                           0x000000010251e668 $sSS9AppBundleE15expandFormatVar3objs6ResultOyAA9PrimitiveOS2Ss5Error6CommonyHCg_GAA7AeroObjO_tYaKFTY0_ + 1312\r\n4   AeroSpace                           0x0000000102522711 $sSa9AppBundleAA7AeroObjORszlE12formatToJson_21ignoreRightPaddingVars6ResultOyS3Ss5Error6CommonyHCg_GSayAI16StringInterTokenOG_SbtYaKFTQ1_ + 1\r\n5   AeroSpace                           0x0000000102542471 $s9AppBundle18ListWindowsCommandV3runySbAA6CmdEnvV_AA0G2IoCtYaKFTf4dnn_nTQ3_ + 1\r\n6   AeroSpace                           0x000000010253e5cd $s9AppBundle18ListWindowsCommandVAA0E0A2aDP3runySbAA6CmdEnvV_AA0G2IoCtYaKFTWTQ0_ + 1\r\n7   AeroSpace                           0x0000000102518439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n8   AeroSpace                           0x0000000102517d79 $s9AppBundle7CommandPAAE3runyAA9CmdResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ2_ + 1\r\n9   AeroSpace                           0x0000000102596dfd $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_AHyYaYbKScMYcXEfU_TQ1_ + 1\r\n10  AeroSpace                           0x00000001025103f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n11  AeroSpace                           0x000000010257bb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ12_ + 1\r\n12  AeroSpace                           0x00000001025109b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n13  libswift_Concurrency.dylib          0x00000002670cec95 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  libswift_Concurrency.dylib          0x00000002670ce931 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  AeroSpace                           0x0000000102579025 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n16  AeroSpace                           0x00000001025109b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x00000002670cec95 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n18  libswift_Concurrency.dylib          0x00000002670ce931 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n19  AeroSpace                           0x0000000102576351 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n20  AeroSpace                           0x0000000102596bf1 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n21  AeroSpace                           0x00000001025109b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n22  libswift_Concurrency.dylib          0x0000000267105035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-04-29T00:44:27Z",
      "updated_at": "2025-04-29T11:51:55Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axg8l",
        "body": "Please update to 0.18.4"
      },
      "user": {
        "login": "situmorang-com",
        "avatar_url": "https://avatars.githubusercontent.com/u/35418900?u=cfb401ee2ac7a62f637aa7f3718ba690f82c87c0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50d",
      "number": 1005,
      "title": "How to Configure Bob's Window to Float Instead of Opening in a New Workspace",
      "body": "### Description\r\ni am trying to configuer the window management for an application named \"Bob\" using Aerospace. My foal is to make the Bob applicaion window float whenecer it appears,instead of having it open in a new workspace.\r\n\r\nHere is the current configuarion i am useing :\r\n``` toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.hezongyidev.Bob'\r\ncheck-further-callbacks = true\r\nrun = 'layout floating'\r\n\r\n```\r\n### Problem:\r\nDespite this configuration, Bob’s window still opens in a new workspace rather than floating. I’ve confirmed the app ID is correct using the following command:\r\n\r\n```shell\r\n\r\nmdls -name kMDItemCFBundleIdentifier -r /Applications/bob.app\r\n```\r\nThis returns: com.hezongyidev.Bob\r\n\r\n### Hypothesis:\r\nI suspect the issue may be related to how Bob operates. The application primarily uses floating windows to display information, and it’s possible that these floating windows are invoked through a system-level API that doesn’t directly associate them with Bob’s main application process. This might explain why Aerospace isn’t handling them as expected. If the floating window is technically not part of the bob application (from the perspective of the window manager), it might not be applying the expected layout.\r\n\r\n<img width=\"1630\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e5e8cd57-bf2e-4880-bda8-544f666dabe9\">\r\n",
      "created_at": "2024-08-14T06:00:08Z",
      "updated_at": "2025-04-29T06:30:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yaotutu",
        "avatar_url": "https://avatars.githubusercontent.com/u/21394924?u=f0fe6bd9b669e37dae104908cf16cb630d511366&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aff-k",
      "number": 1352,
      "title": "AeroSpace Runtime Error",
      "body": "### Add a body\n\nSteps to reproduce:\r\n- General usage, I didn't notice when this popped up\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: globalObserver(NSWorkspaceDidActivateApplicationNotification)\r\nDate: 2025-04-28 20:48:13 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100e213a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100cb9b1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x0000000100cb8bdc $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000100cb0e6c $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000100c8a93d $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000100c86cb5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ4_ + 1\r\n6   AeroSpace                           0x0000000100c149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000026e2f6461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x000000026e2f6109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000100c8673d $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ1_ + 1\r\n10  AeroSpace                           0x0000000100c149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x000000026e2f6461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x000000026e2f6109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000100c85ca5 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ1_ + 1\r\n14  AeroSpace                           0x0000000100c8645d $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x0000000100c149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000026e32a83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-04-28T22:52:15Z",
      "updated_at": "2025-04-29T06:02:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axfrg",
        "body": "maybe upgrade to 0.18.4 first."
      },
      "user": {
        "login": "jack4git",
        "avatar_url": "https://avatars.githubusercontent.com/u/8593676?u=685e20869f5c1a0bcbd3317a3ea72122e58f6d72&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfQ3d",
      "number": 1281,
      "title": "After some time, AeroSpace stops automatically switching spaces when I activate an already running app using Raycast",
      "body": "Potential 0.18.0 regression\r\n\r\nI've noticed some unusual behavior with the new version of AeroSpace when used with Raycast. Initially, everything works as expected. However, after some time, AeroSpace stops automatically switching spaces when I activate an already running app using Raycast. Additionally, the floating Raycast Notes window no longer moves between workspaces. When I open apps through Alfred or Finder, AeroSpace switches workspaces correctly.\r\n\r\nAfter reverting to the previous version of AeroSpace, the problem has not happened again. So far, I have not been able to determine the cause.\r\n\r\nUpdate: When I open an app using Raycast, the menu bar briefly switches to the new workspace (showing the app name and workspace indicator), but then quickly returns to the previous workspace.\r\n\r\nOriginally reported by @FelixLisczyk https://github.com/nikitabobko/AeroSpace/issues/131#issuecomment-2797216437",
      "created_at": "2025-04-12T18:51:01Z",
      "updated_at": "2025-04-28T08:15:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axa4v",
        "body": "Ok, don't ask why, but I realized what was the actual cause. The actual cause is https://github.com/nikitabobko/AeroSpace/issues/1324"
      },
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Afbyd",
      "number": 1338,
      "title": "##### AeroSpace Runtime Error #####",
      "body": "Steps to reproduce:\r\n1. I switched quickly from one workspace to another via hotkey\r\n\r\nExpected result:\r\n Switch to workspace quickly \r\nActual result:\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-04-24 20:02:44 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.1.1 (Build 24B91)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001050353a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104ecdb1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x0000000104eccbdc $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000104ec4e6c $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000104e9e93d $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000104e92035 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ21_ + 1\r\n6   AeroSpace                           0x0000000104e289b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000026ffbae19 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x000000026ffbaab5 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000104e906a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x0000000104e289b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x000000026ffbae19 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x000000026ffbaab5 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000104e8db45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x0000000104e74305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x0000000104e283f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000026fff1035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-04-24T20:06:08Z",
      "updated_at": "2025-04-27T08:46:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Axb7Z",
        "body": "Please update AeroSpace https://github.com/nikitabobko/AeroSpace/issues/1306"
      },
      "user": {
        "login": "kungfusheep",
        "avatar_url": "https://avatars.githubusercontent.com/u/6867511?u=7963f358d49d106d4f60fb5b8de74e379c5bb789&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfdPI",
      "number": 1348,
      "title": "When I watch YouTube in full screen in first screen, the second screen goes black",
      "body": "### Add a body\n\nSteps to reproduce:\r\n1. two monitors\r\n2. first screen chrome full screen watch youtube second screen safari watch other video on other website.\r\n3. the second screen goes black\r\n\r\nExpected result: before works fine.\r\nActual result:\r\n\r\n## Additional info\r\n\r\n```shell\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n```\r\n",
      "created_at": "2025-04-26T12:11:09Z",
      "updated_at": "2025-04-26T13:12:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "glepnir",
        "avatar_url": "https://avatars.githubusercontent.com/u/41671631?u=05da364cc07dc4b85b72d30878825d561769dd04&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfdMh",
      "number": 1346,
      "title": "window mistakenly spanning across different monitors - drag'n drop",
      "body": "### Add a body\n\nI read about this issue: https://github.com/nikitabobko/AeroSpace/issues/143 but didn't help me..\r\n\r\nSteps to reproduce:\r\n1. Open a single window1 - left monitor\r\n2. Open a second window2 - right monitor\r\n3. Observe that half of the window2 is on left monitor and other half of the window2 is on right monitor when drag'n dropping\r\n\r\nExpected result: similar to using shortcuts, when moving a window from right monitor to left monitor(by moving to a different space) the window should be fully displayed on the target display not prolonged\r\n\r\nActual result: when drag and dropping from right to left the window span across the two monitors, doesn't happen using shortcuts (cmd-shift-6 =['move-node-to-workspace 6', 'workspace 6'])\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n\r\n```\r\n- 'displays have separate spaces' is disabled\r\n- left monitor: external DELL P2417H 1920 x 1080 (1080p FHD - Full High Definition)\r\n- right monitor: LEN G32qc-10 2560 x 1440 (QHD/WQHD - Wide Quad High Definition)\r\n\r\n![image](https://github.com/user-attachments/assets/f550efbd-e8a9-43de-a453-2705965d05ea)\r\n",
      "created_at": "2025-04-26T10:34:55Z",
      "updated_at": "2025-04-26T11:07:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "crates51",
        "avatar_url": "https://avatars.githubusercontent.com/u/42578442?u=b5e670199ee52970630eb59cf93ec446ac713f01&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfaV0",
      "number": 1335,
      "title": "exec-and-forget screencapture does not capture the screen",
      "body": "### Add a body\n\nSteps to reproduce:\r\n1. add a shortcut like `alt-shift-s = 'exec-and-forget screencapture -i -c'`\r\n2. use the screenshot and capture something\r\n3. It will ask for permissions, despite having them, and then capture only the backgroupd\r\n\r\nExpected result: Screen captured \r\nActual result: Captures the background. Asks for permissions for Aerospace to record the screen, when it already has\r\n\r\n## Additional info\r\n\r\nThe config is:\r\n```\r\nalt-shift-s = 'exec-and-forget screencapture -i -c'\r\n```\r\n\r\nIt was working in 0.16 but 0.18.2-Beta started to not work",
      "created_at": "2025-04-23T12:13:17Z",
      "updated_at": "2025-04-24T20:44:12Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxXC1",
        "body": "Please try to remove AeroSpace from `Screen & System Audio Recording` page and add it back (and by remove I mean not the on/off toggle but the minus button)\r\n\r\nIn 0.17 version, I had to change the signing certificate because the previous has expired, that's why I think you observe the problem. Those self-issued certificates have a maximum length of one year, so it's going to be an annual experience\r\n\r\nBTW, a nice use case with `screencapture` command, I might steal, and I think it's worthy of adding it to the goodies page, so PRs are welcome"
      },
      "user": {
        "login": "keymon",
        "avatar_url": "https://avatars.githubusercontent.com/u/280032?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfbdR",
      "number": 1337,
      "title": "Sometimes some windows can't be opened after a period of time when they are not focused.",
      "body": "### Add a body\n\nSteps to reproduce:\r\n1. Open some windows in `c` workspace (e.g., currently problem was found for Outlook, Teams, Finder)\r\n2. After a period of time (not sure how long), when switched to the `c` workspace, these windows disappeared and can't be open again (actually still existed in background), unless restarting AeroSpace.\r\n\r\nExpected result: open windows normally\r\nActual result: can't be open\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\naerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nAeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n```\r\n",
      "created_at": "2025-04-24T13:22:07Z",
      "updated_at": "2025-04-24T13:22:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bowentan",
        "avatar_url": "https://avatars.githubusercontent.com/u/11927318?u=39a1ecfadb76a74d55726e85a2b9cec5b61c4806&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfXIX",
      "number": 1322,
      "title": "Crash after closing Window (Kitty) in 3 windows in 1 workspace",
      "body": "I was having 3 windows, Brave/Kitty/VSCode, I closed (cmd+q) Kitty and I got a crashed, arrangement as follows:  \r\n![image](https://github.com/user-attachments/assets/ca972ab4-69e2-45db-83f7-3baf2272d1d7)\r\n\r\nLogs:\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-04-19 14:39:28 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001048213a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001046b9b1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x00000001046b8b70 $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 64\r\n3   AeroSpace                           0x0000000104622668 $sSS9AppBundleE15expandFormatVar3objs6ResultOyAA9PrimitiveOS2Ss5Error6CommonyHCg_GAA7AeroObjO_tYaKFTY0_ + 1312\r\n4   AeroSpace                           0x0000000104626711 $sSa9AppBundleAA7AeroObjORszlE12formatToJson_21ignoreRightPaddingVars6ResultOyS3Ss5Error6CommonyHCg_GSayAI16StringInterTokenOG_SbtYaKFTQ1_ + 1\r\n5   AeroSpace                           0x0000000104646471 $s9AppBundle18ListWindowsCommandV3runySbAA6CmdEnvV_AA0G2IoCtYaKFTf4dnn_nTQ3_ + 1\r\n6   AeroSpace                           0x00000001046425cd $s9AppBundle18ListWindowsCommandVAA0E0A2aDP3runySbAA6CmdEnvV_AA0G2IoCtYaKFTWTQ0_ + 1\r\n7   AeroSpace                           0x000000010461c439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n8   AeroSpace                           0x000000010461bd79 $s9AppBundle7CommandPAAE3runyAA9CmdResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ2_ + 1\r\n9   AeroSpace                           0x000000010469adfd $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_AHyYaYbKScMYcXEfU_TQ1_ + 1\r\n10  AeroSpace                           0x00000001046143f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n11  AeroSpace                           0x000000010467fb91 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ12_ + 1\r\n12  AeroSpace                           0x00000001046149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n13  libswift_Concurrency.dylib          0x0000000282442461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000282442109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  AeroSpace                           0x000000010467d025 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n16  AeroSpace                           0x00000001046149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x0000000282442461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n18  libswift_Concurrency.dylib          0x0000000282442109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n19  AeroSpace                           0x000000010467a351 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n20  AeroSpace                           0x000000010469abf1 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n21  AeroSpace                           0x00000001046149b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n22  libswift_Concurrency.dylib          0x000000028247683d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```\r\n\r\n",
      "created_at": "2025-04-19T14:42:21Z",
      "updated_at": "2025-04-24T12:39:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alexandre-thauvin",
        "avatar_url": "https://avatars.githubusercontent.com/u/27420929?u=65912530e9b21ab6399b20d9b37b573b0d334b96&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZUL",
      "number": 1330,
      "title": "How can I accomplish this layout in Aerospace?",
      "body": "I have a widescreen monitor. How can I accomplish this layout in Aerospace? I want to always have a central main window (probably browser, or IDE) and 4 smaller windows (Spotify, whatsapp, etc) around the main one:\r\n\r\n![CleanShot 2025-04-22 at 15 24 59](https://github.com/user-attachments/assets/18a20d14-81f0-47a9-8306-df2aa6409b96)\r\n",
      "created_at": "2025-04-22T12:28:11Z",
      "updated_at": "2025-04-24T11:02:28Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "felipegrin",
        "avatar_url": "https://avatars.githubusercontent.com/u/17812579?u=b83f158b147fb70085e3c3fe419ba8d9648e6bf2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfaXF",
      "number": 1336,
      "title": "How to make Firefox's picture-in-picture window start in floating mode while Firefox is in tiling mode?",
      "body": "How can I find it's app/window name in mac os?",
      "created_at": "2025-04-23T12:36:50Z",
      "updated_at": "2025-04-23T13:10:59Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxTBO",
        "body": "Since this was a duplicate, I wrote my workaround that I just found in the discussion below.\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/1298#discussioncomment-12922892"
      },
      "user": {
        "login": "senntore",
        "avatar_url": "https://avatars.githubusercontent.com/u/58325574?u=aa95078f40b0e7f77fdbb79dc03128210f62d21d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfYJl",
      "number": 1327,
      "title": "Windows always have parent",
      "body": "### Add a body\n\nSteps to reproduce:\r\nnot sure...\r\n\r\n\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-04-21 7:40:40 am +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4.1 (Build 24E263)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104d493a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104be1b1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x0000000104be0bdc $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000104bd8e6c $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000104bb293d $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000104ba6035 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ21_ + 1\r\n6   AeroSpace                           0x0000000104b3c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000027cf96461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x000000027cf96109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000104ba46a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x0000000104b3c9b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x000000027cf96461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x000000027cf96109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000104ba1b45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x0000000104b88305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n15  AeroSpace                           0x0000000104b3c3f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x000000027cfca83d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n",
      "created_at": "2025-04-21T07:42:40Z",
      "updated_at": "2025-04-23T10:43:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxSqo",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1306"
      },
      "user": {
        "login": "kzssc",
        "avatar_url": "https://avatars.githubusercontent.com/u/37780271?u=4655137bb8da2a0fe8cd5bbc8c11270d8560ed13&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZ6l",
      "number": 1334,
      "title": "AppBundle.MacWindow is already unbound",
      "body": "### Add a body\n\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000104cad3a0 $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x0000000104b42bb4 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000104b42e60 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000104b23100 $s9AppBundle19validateStillPopups33_EA737387E8EE73FEB20FFAD7FE91D51ELLyyYaKFTY25_ + 56\r\n    4   AeroSpace                           0x0000000104b20fa1 $s9AppBundle21normalizeLayoutReasonyyYaKFTQ4_ + 1\r\n    5   AeroSpace                           0x0000000104b12cf1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ7_ + 1\r\n    6   AeroSpace                           0x0000000104b12725 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ3_ + 1\r\n    7   AeroSpace                           0x0000000104b17e35 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTwB6Common19RefreshSessionEventOSg_ytTg5017$s9AppBundle25runjk67Blocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5l12O_S2btYaKFyyY6KXEfU_AKS2bTf1nncnnnn_nTQ2_ + 1\r\n    8   AeroSpace                           0x0000000104b11c45 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ2_ + 1\r\n    9   AeroSpace                           0x0000000104b12311 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n    10  AeroSpace                           0x0000000104aa09b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x000000021bdc2215 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.1-Beta\r\nGit hash: b0efb367f0be5fbe666a3050864b907e1b93387c\r\nrefreshSessionEvent: ax(AXUIElementDestroyed)\r\nDate: 2025-04-23 02:56:35 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 35007 ID: com.google.Chrome\r\nmacOS version: Version 13.4 (Build 22F66)\r\nCoordinate: AppBundle/TreeNode.swift:121:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 2\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000104cac9cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000104b42f6c $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000104b3c29c $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n3   AeroSpace                           0x0000000104b1705c $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n4   AeroSpace                           0x0000000104b12be9 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_yyYaKXEfU_TQ5_ + 1\r\n5   AeroSpace                           0x0000000104b12725 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFyyYaKXEfU_TQ3_ + 1\r\n6   AeroSpace                           0x0000000104b17e35 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTwB6Common19RefreshSessionEventOSg_ytTg5017$s9AppBundle25runjk67Blocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5l12O_S2btYaKFyyY6KXEfU_AKS2bTf1nncnnnn_nTQ2_ + 1\r\n7   AeroSpace                           0x0000000104b11c45 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspaces023optimisticallyPreLayoutH0y6Common0dE5EventO_S2btYaKFTQ2_ + 1\r\n8   AeroSpace                           0x0000000104b12311 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TQ1_ + 1\r\n9   AeroSpace                           0x0000000104aa09b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x000000021bdc2215 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```",
      "created_at": "2025-04-23T02:58:39Z",
      "updated_at": "2025-04-23T10:42:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxSqd",
        "body": "Please update, it's already fixed https://github.com/nikitabobko/AeroSpace/issues/1297"
      },
      "user": {
        "login": "exfly",
        "avatar_url": "https://avatars.githubusercontent.com/u/22613193?u=0924c8221292608d3f22bc86cbc0b9704acb4879&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfYVE",
      "number": 1328,
      "title": "Closing a window leaves the space until mouse click since 0.18 upgrade",
      "body": "Since upgrading to v0.18 I've noticed what I think is a change in behavior, though I only started using Aerospace on 0.17.  \r\n\r\nWhen I close a window now (say with Command-w), I notice that Aerospace will leave the other windows on the screen at the same size and a gap where the previous window was.  If I click my mouse anywhere, the remaining windows resize to consume the empty space.  However, I can do something like Command-space to open spotlight and start a new app that will go into the empty slot instead if I want.\r\n\r\nIs this a feature or bug?  Is there an option to adjust the behavior?  I would swear the remaining on-screen windows resized immediately in 0.17.  I did not see any mention of this in the [0.18 release announcement](https://github.com/nikitabobko/AeroSpace/discussions/1280)",
      "created_at": "2025-04-21T11:56:19Z",
      "updated_at": "2025-04-22T16:11:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jayjanssen",
        "avatar_url": "https://avatars.githubusercontent.com/u/691356?u=f28a731f4e0903c848f671933ece504f6d8ffe08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeFq_",
      "number": 1046,
      "title": "Extending the accordion layout to allow scrolling",
      "body": "The window control of [PaperWM.spoon](https://github.com/mogenson/PaperWM.spoon) and other scrolling window managers works well for me. \r\n\r\nMaybe the accordion layout could be extended to allow a similar workflow. For example, a \"three-window horizontal accordion\" could look like the following.\r\nIf W2 is focused, a `focus right` would focus W3. If W3 is focused, a `focus right` would focus W4 in the third position and shift W3 and W2 to the left (pushing W1 off screen).\r\n```\r\n┌───────┐┌───────┐┌───────┐\r\n│       ││       ││       │\r\n│       ││       ││       │\r\n│       ││       ││       │\r\n│   W1  ││  W2   ││  W3   │\r\n│       ││       ││       │\r\n│       ││       ││       │\r\n│       ││       ││       │\r\n└───────┘└───────┘└───────┘\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
      "created_at": "2025-01-29T00:25:22Z",
      "updated_at": "2025-04-22T15:54:49Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tshort",
        "avatar_url": "https://avatars.githubusercontent.com/u/636420?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfOsc",
      "number": 1273,
      "title": "Visualize fullscreened  vs only one window",
      "body": "Is there some way to visualize whether an app is fullscreened, or just the only open app on the screen?",
      "created_at": "2025-04-10T07:24:55Z",
      "updated_at": "2025-04-22T14:49:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Willem-J-an",
        "avatar_url": "https://avatars.githubusercontent.com/u/51120533?u=b1d6b23d823108ae0d8c1022e7bfc2ffa9c2123b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfVcu",
      "number": 1317,
      "title": "v0.18.2: aerospace is capturing windows it shouldn't",
      "body": "Like the ones of notification center, or [Uebersicht](https://github.com/felixhageloh/uebersicht) (desktop widgets).\r\n\r\nThis behavior happens from time to time, causing the widgets (both the built-in ones and the Uebersicht ones) on other monitors to be dragged onto the main one.\r\n\r\nWhen I close these windows with the cli, the widgets can be manually dragged back to the other monitor again.",
      "created_at": "2025-04-17T14:55:49Z",
      "updated_at": "2025-04-22T14:31:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLah",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1324"
      },
      "user": {
        "login": "twio142",
        "avatar_url": "https://avatars.githubusercontent.com/u/64556708?u=839e47d1fcb306874b48e9a03d14039c778f5714&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZbe",
      "number": 1332,
      "title": "[v0.18.2-Beta] Firefox new window focuses desktop with firefox not the current desktop",
      "body": "### Add a body\n\nSteps to reproduce:\r\n1. Set firefox to open all links as new windows\r\n2. open firefox in workspace 2\r\n3. open slack in workplace 1\r\n4. open link in slack\r\n\r\nExpected result: opens firefox window in workplace 1\r\nActual result: opens firefox window in workplace 2\r\n\r\nthis happens 90% of the time, whereas in aerospace 0.17.2 this never happened\r\n\r\n## Additional info\r\n\r\n```shell\r\n$ aerospace -v\r\n```\r\n",
      "created_at": "2025-04-22T14:22:49Z",
      "updated_at": "2025-04-22T14:22:50Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kevinly24",
        "avatar_url": "https://avatars.githubusercontent.com/u/10552470?u=8976fc5840d3f28cdb5d61dded52a308aecd4793&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfZUj",
      "number": 1331,
      "title": "Help on 'exec-and-forget' on a script",
      "body": "Hello everyone, thank you for this amazing project.\r\n\r\nI'm currently trying to add a \"scratchpad feature\" for my AeroSpace config. Following https://github.com/nikitabobko/AeroSpace/issues/296#issuecomment-2326103392 , \r\nI have the current scripts:\r\n\r\n```toml\r\n#aerospace.toml\r\n...\r\n    ctrl-tab = 'exec-and-forget /Users/{USERNAME}/.config/aerospace/kitty_scratchpad.sh'\r\n...\r\n```\r\n\r\n```sh\r\n#~/.config/aerospace/kitty_scratchpad.sh\r\n#!/usr/bin/bash\r\n\r\nfocus_app() {\r\n  current_workspace=$(/opt/homebrew/bin/aerospace list-workspaces --focused)\r\n  app_window_id=$(/opt/homebrew/bin/aerospace list-windows --all | rg kitty_scratch | awk -F '|' '{print $1}') \r\n  /opt/homebrew/bin/aerospace focus --window-id $app_window_id\r\n  /opt/homebrew/bin/aerospace move-node-to-workspace $current_workspace\r\n  /opt/homebrew/bin/aerospace workspace $current_workspace\r\n  /opt/homebrew/bin/aerospace move-mouse window-lazy-center\r\n}\r\n\r\napp_closed() {\r\n  if [ \"$(/opt/homebrew/bin/aerospace list-windows --all | rg kitty_scratch | awk -F '|' '{print $1}')\" ]; then\r\n    false\r\n  else\r\n    true\r\n  fi\r\n}\r\n\r\napp_focused() {\r\nif [ \"$(/opt/homebrew/bin/aerospace list-windows --focused | rg kitty_scratch | awk -F '|' '{print $1}')\" ]; then\r\n    true\r\n  else\r\n    false\r\n  fi\r\n}\r\n\r\nunfocus_app() {\r\n  /opt/homebrew/bin/aerospace move-node-to-workspace 0\r\n}\r\n\r\n\r\nif app_closed; then\r\n  open -na /Applications/kitty.app/Contents/MacOS/kitty --args --title kitty_scratch\r\n  sleep 1.5\r\nelse\r\n  if app_focused; then\r\n    unfocus_app\r\n  else\r\n    focus_app\r\n  fi\r\nfi\r\n```\r\n\r\nIn a terminal, executing `bash /Users/{USERNAME}/.config/aerospace/kitty_scratchpad.sh` works as intended, but the shortcut does nothing, apparently ; \r\n\r\nCould someone guide me into the correct direction?",
      "created_at": "2025-04-22T12:37:36Z",
      "updated_at": "2025-04-22T13:30:40Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "diviyank",
        "avatar_url": "https://avatars.githubusercontent.com/u/20682356?u=0c4299161a2f705d11ee79dcb32c3e6d49906fe4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfUJs",
      "number": 1308,
      "title": "Ticktick menu no longer working in 0.18.2",
      "body": "I've just upgraded Aerospace from 0.17 to latest 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5 and can no longer open the TickTick app menu from the menu bar. It opens for a split second then gets moved off screen to a different workspace (see screen capture). This didn't happen in 0.17.\r\n\r\nIf I remove this from my config it works better, other than needing to manually move the main TickTick window to the correct workspace when reloading config.\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'com.TickTick.task.mac'\r\nrun = 'move-node-to-workspace t'\r\n```\r\n\r\nHowever, if I have the `t` workspace selected with the main TickTick window open it sometimes causes the pop-up to move from the main display to the `t` workspace, or occasionally moves the main TickTick app to the focused workspace after closing the menu.\r\n\r\nhttps://github.com/user-attachments/assets/98c1d787-84a1-4e15-998a-115bdaebc91e\r\n\r\n",
      "created_at": "2025-04-16T10:14:22Z",
      "updated_at": "2025-04-22T12:02:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLer",
        "body": "The issue will be most likely fixed by https://github.com/nikitabobko/AeroSpace/issues/1324\r\n\r\nBut I still would like to see `debug-windows` output"
      },
      "user": {
        "login": "ahouseago",
        "avatar_url": "https://avatars.githubusercontent.com/u/41902631?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfSDH",
      "number": 1294,
      "title": "Notion Focus Bug in AeroSpace 0.18",
      "body": "Hey there! I've run into an issue with AeroSpace since upgrading to version 0.18. The issue does not occur in earlier versions.\r\n\r\nI've set up my workspaces with specific apps assigned to each (like B for browser, N for Notion, etc). The problem happens when I'm using Notion and try to switch to another workspace with a keyboard shortcut. While the workspace visually changes, Notion somehow stays focused - it still shows in the menu bar and the app in my new workspace doesn't get any keyboard input.\r\n\r\nWeirdly, this only happens with Notion. Switching between other app workspaces works perfectly fine.\r\n\r\nI did some digging and added debug logs to the code. It looks like when navigating away from the Notion workspace, the `focusWindow` method never gets called because AeroSpace thinks the window ID hasn't changed.\r\n\r\nIn this example, I switch from workspace 1 (Xcode) to workspace N (Notion) and then back to workspace 1. However, when I return to workspace 1, Notion remains the active application.\r\n\r\n```\r\nWorkspaceCommand.run() started with:\r\n- args: workspace N\r\n- env: CmdEnv(windowId: nil, workspaceName: nil, pwd: nil)\r\n- io: AppBundle.CmdIo\r\n- current focus: LiveFocus(windowOrNil: Optional(AppBundle.MacWindow), workspace: AppBundle.Workspace)\r\n- previous focus: Optional(AppBundle.FrozenFocus(windowId: Optional(24427), workspaceName: \"N\", monitorId: 0))\r\n- current workspace: 1\r\n- current window: Optional(AppBundle.MacWindow)\r\n- current monitor: MonitorImpl(monitorAppKitNsScreenScreensId: 1, name: \"LG ULTRAFINE\", rect: AppBundle.Rect(topLeftX: 0.0, topLeftY: 0.0, width: 1920.0, height: 1080.0), visibleRect: AppBundle.Rect(topLeftX: 0.0, topLeftY: 25.0, width: 1920.0, height: 1055.0))\r\n- prev workspace: N\r\n- prev window: 24427\r\nWorkspaceCommand.run() resolved target: LiveFocus(windowOrNil: Optional(AppBundle.MacWindow), workspace: AppBundle.Workspace)\r\nWorkspaceCommand.run() handling direct target 'N'\r\nWorkspaceCommand.run() focusing workspace 'N'\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24447\r\nupdateFocusCache() window focus changed - attempting to focus window 24427\r\nWindow.focusWindow() called on:\r\n- window: AppBundle.MacWindow\r\n- windowId: 24427\r\n- app: Notion\r\nWindow.focusWindow() attempting to focus window 24427 on workspace N\r\nWindow.focusWindow() focus result: true\r\nupdateFocusCache() focus result: true\r\nupdateFocusCache() updated lastKnownNativeFocusedWindowId to 24427\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nWorkspaceCommand.run() started with:\r\n- args: workspace 1\r\n- env: CmdEnv(windowId: nil, workspaceName: nil, pwd: nil)\r\n- io: AppBundle.CmdIo\r\n- current focus: LiveFocus(windowOrNil: Optional(AppBundle.MacWindow), workspace: AppBundle.Workspace)\r\n- previous focus: Optional(AppBundle.FrozenFocus(windowId: Optional(24447), workspaceName: \"1\", monitorId: 0))\r\n- current workspace: N\r\n- current window: Optional(AppBundle.MacWindow)\r\n- current monitor: MonitorImpl(monitorAppKitNsScreenScreensId: 1, name: \"LG ULTRAFINE\", rect: AppBundle.Rect(topLeftX: 0.0, topLeftY: 0.0, width: 1920.0, height: 1080.0), visibleRect: AppBundle.Rect(topLeftX: 0.0, topLeftY: 25.0, width: 1920.0, height: 1055.0))\r\n- prev workspace: 1\r\n- prev window: 24447\r\nWorkspaceCommand.run() resolved target: LiveFocus(windowOrNil: Optional(AppBundle.MacWindow), workspace: AppBundle.Workspace)\r\nWorkspaceCommand.run() handling direct target '1'\r\nWorkspaceCommand.run() focusing workspace '1'\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\nupdateFocusCache() called with:\r\n- nativeFocused: Optional(AppBundle.MacWindow)\r\n- lastKnownNativeFocusedWindowId: 24427\r\nupdateFocusCache() no focus change needed (window IDs match)\r\n```\r\n\r\nHere's a link to the log statements I added: https://github.com/FelixLisczyk/AeroSpace/commit/274737d622cc451a2c30a0d54f1432849d40be48\r\n\r\nI'm happy to help troubleshoot further if you can't reproduce it - just let me know what additional info would be useful or what parts of the code I should add more logging to.\r\n\r\nThanks for looking into this!",
      "created_at": "2025-04-14T11:29:44Z",
      "updated_at": "2025-04-20T18:23:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLcX",
        "body": "Thanks, reproduced. IDK yet what causing it. The tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1325"
      },
      "user": {
        "login": "FelixLisczyk",
        "avatar_url": "https://avatars.githubusercontent.com/u/5102728?u=7394d16e506fb7d9e3e9a83be142547d14bd8cab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfUYz",
      "number": 1312,
      "title": "v0.18 regression: Aerospace moves the Raycast launcher",
      "body": "**Setup**\r\n- I'm using two displays, my MBP and an external monitor.\r\n- macOS 15.4 (24E248)\r\n- aerospace CLI client version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n- AeroSpace.app server version: 0.18.2-Beta 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\n- Raycast 1.96.0\r\n\r\n**Steps**\r\n1. Focus on a window in my MacBook's display\r\n2. Open the Raycast Launcher\r\n\r\n**What happens**\r\nThe launcher briefly appears on my external display, before being relocated to my MBP display. The launcher is also placed in a strange position on my MBP display (off-center).\r\n\r\n**What I expect to happen**\r\nThe launcher either appears centered in my MBP's display, or it stays in position in my external monitor (if that's where my mouse cursor is).\r\n\r\n**Other notes**\r\nRaycast has a setting to control where it is displayed. The issue occurs with all of these.\r\n![Raycast settings](https://github.com/user-attachments/assets/2ceba040-23b4-4d6b-bcbc-2c393057e83c)\r\n",
      "created_at": "2025-04-16T14:35:10Z",
      "updated_at": "2025-04-20T18:12:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLax",
        "body": "Very likely will be fixed in scope of https://github.com/nikitabobko/AeroSpace/issues/1324"
      },
      "user": {
        "login": "mybuddymichael",
        "avatar_url": "https://avatars.githubusercontent.com/u/186724?u=032eb3ad92c7074f3159b99c3440113b0a48e4b5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfTC8",
      "number": 1301,
      "title": "Chrome - Extensions menus are closed immediately",
      "body": "Using v0.18.2-Beta the popup menus of chrome extensions and even the extension menu itself (with the jigsaw icon) is closed immediately.\r\n\r\n```\r\ncom.google.Chrome.window.1213 windowId: 1213\r\ncom.google.Chrome.window.1213 workspace: 2_code\r\ncom.google.Chrome.window.1213 treeNodeParent: AppBundle.TilingContainer\r\ncom.google.Chrome.window.1213 isWindow: true\r\ncom.google.Chrome.window.1213 isDialogHeuristic: false\r\ncom.google.Chrome.window.1213 AXTitle: Optional(AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL))\r\ncom.google.Chrome.window.1213 AXRole: Optional(AXWindow)\r\ncom.google.Chrome.window.1213 AXSubrole: Optional(AXStandardWindow)\r\ncom.google.Chrome.window.1213 AXFocused: Optional(0)\r\ncom.google.Chrome.window.1213 AXFullScreen: Optional(0)\r\ncom.google.Chrome.window.1213 AXFrame: Optional(<AXValue 0x6000031a30c0> {value = x:20.000000 y:50.000000 w:1499.000000 h:1529.000000 type = kAXValueCGRectType})\r\ncom.google.Chrome.window.1213 AXPosition: Optional(<AXValue 0x600002a82f40> {value = x:20.000000 y:50.000000 type = kAXValueCGPointType})\r\ncom.google.Chrome.window.1213 AXGrowArea: nil\r\ncom.google.Chrome.window.1213 AXMinimizeButton: AXUIElement {\r\ncom.google.Chrome.window.1213      AXRole: Optional(AXButton)\r\ncom.google.Chrome.window.1213      AXTitle: nil\r\ncom.google.Chrome.window.1213      AXSubrole: Optional(AXMinimizeButton)\r\ncom.google.Chrome.window.1213      AXEnabled: Optional(1)\r\ncom.google.Chrome.window.1213      AXParent: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXTopLevelUIElement: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.google.Chrome.window.1213 }\r\ncom.google.Chrome.window.1213 AXDocument: Optional(https://github.com/nikitabobko/AeroSpace/blob/main/CONTRIBUTING.md)\r\ncom.google.Chrome.window.1213 AXSections: [\r\ncom.google.Chrome.window.1213         Optional({\r\ncom.google.Chrome.window.1213             SectionDescription = Content;\r\ncom.google.Chrome.window.1213             SectionObject = \"<AXUIElement 0x600002a86400> {pid=47652}\";\r\ncom.google.Chrome.window.1213             SectionUniqueID = AXContent;\r\ncom.google.Chrome.window.1213         }),\r\ncom.google.Chrome.window.1213         Optional({\r\ncom.google.Chrome.window.1213             SectionObject = \"<AXUIElement 0x600002a85ef0> {pid=47652}\";\r\ncom.google.Chrome.window.1213             SectionUniqueID = AXContainer;\r\ncom.google.Chrome.window.1213         })\r\ncom.google.Chrome.window.1213 ]\r\ncom.google.Chrome.window.1213 AXCloseButton: AXUIElement {\r\ncom.google.Chrome.window.1213      AXRole: Optional(AXButton)\r\ncom.google.Chrome.window.1213      AXTitle: nil\r\ncom.google.Chrome.window.1213      AXSubrole: Optional(AXCloseButton)\r\ncom.google.Chrome.window.1213      AXEnabled: Optional(1)\r\ncom.google.Chrome.window.1213      AXParent: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXTopLevelUIElement: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.google.Chrome.window.1213 }\r\ncom.google.Chrome.window.1213 AXMain: Optional(1)\r\ncom.google.Chrome.window.1213 AXActivationPoint: Optional(<AXValue 0x600002a82f40> {value = x:-1.000000 y:1601.000000 type = kAXValueCGPointType})\r\ncom.google.Chrome.window.1213 AXFullScreenButton: AXUIElement {\r\ncom.google.Chrome.window.1213      AXRole: Optional(AXButton)\r\ncom.google.Chrome.window.1213      AXTitle: nil\r\ncom.google.Chrome.window.1213      AXSubrole: Optional(AXFullScreenButton)\r\ncom.google.Chrome.window.1213      AXEnabled: Optional(1)\r\ncom.google.Chrome.window.1213      AXParent: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXTopLevelUIElement: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.google.Chrome.window.1213 }\r\ncom.google.Chrome.window.1213 AXProxy: nil\r\ncom.google.Chrome.window.1213 AXDefaultButton: nil\r\ncom.google.Chrome.window.1213 AXMinimized: Optional(0)\r\ncom.google.Chrome.window.1213 AXParent: Optional(<AXUIElement Application 0x600002a85680> {pid=47652})\r\ncom.google.Chrome.window.1213 AXTitleUIElement: nil\r\ncom.google.Chrome.window.1213 AXCancelButton: nil\r\ncom.google.Chrome.window.1213 AXModal: Optional(0)\r\ncom.google.Chrome.window.1213 AXZoomButton: AXUIElement {\r\ncom.google.Chrome.window.1213      AXRole: Optional(AXButton)\r\ncom.google.Chrome.window.1213      AXTitle: nil\r\ncom.google.Chrome.window.1213      AXSubrole: Optional(AXFullScreenButton)\r\ncom.google.Chrome.window.1213      AXEnabled: Optional(1)\r\ncom.google.Chrome.window.1213      AXParent: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXTopLevelUIElement: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      AXWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome.window.1213      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.google.Chrome.window.1213 }\r\ncom.google.Chrome.window.1213 AXSize: Optional(<AXValue 0x600002a85680> {value = w:1499.000000 h:1529.000000 type = kAXValueCGSizeType})\r\ncom.google.Chrome.window.1213 AXToolbarButton: nil\r\ncom.google.Chrome.window.1213 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.google.Chrome             AXRole: Optional(AXApplication)\r\ncom.google.Chrome             AXTitle: Optional(Chrome)\r\ncom.google.Chrome             AXFunctionRowTopLevelElements: [\r\ncom.google.Chrome             ]\r\ncom.google.Chrome             AXFrame: nil\r\ncom.google.Chrome             AXFocusedUIElement: AXUIElement(windowId=1213, title=\"\", role=\"AXGroup\", subrole=nil)\r\ncom.google.Chrome             AXFrontmost: Optional(1)\r\ncom.google.Chrome             AXExtrasMenuBar: nil\r\ncom.google.Chrome             AXMainWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome             AXFocusedWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome             AXMenuBar: Optional(<AXUIElement 0x600002a82f40> {pid=47652})\r\ncom.google.Chrome             AXWindows: [\r\ncom.google.Chrome                 AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.google.Chrome                 AXUIElement(windowId=1217, title=\"WhatsApp - Part of group chat - Google Chrome - Jens (Privat)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome             ]\r\ncom.google.Chrome             AXSize: nil\r\ncom.google.Chrome             AXPosition: nil\r\ncom.google.Chrome             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\ncom.google.Chrome             nsApp activationPolicy: regular\r\n\r\ncom.google.Chrome.window.1570 windowId: 1570\r\ncom.google.Chrome.window.1570 workspace: 2_code\r\ncom.google.Chrome.window.1570 treeNodeParent: AppBundle.Workspace\r\ncom.google.Chrome.window.1570 isWindow: true\r\ncom.google.Chrome.window.1570 isDialogHeuristic: true\r\ncom.google.Chrome.window.1570 AXTitle: Optional()\r\ncom.google.Chrome.window.1570 AXRole: Optional(AXWindow)\r\ncom.google.Chrome.window.1570 AXSubrole: Optional(AXUnknown)\r\ncom.google.Chrome.window.1570 AXFocused: Optional(0)\r\ncom.google.Chrome.window.1570 AXFullScreen: Optional(0)\r\ncom.google.Chrome.window.1570 AXFrame: Optional(<AXValue 0x6000031a30c0> {value = x:1068.000000 y:130.000000 w:320.000000 h:409.000000 type = kAXValueCGRectType})\r\ncom.google.Chrome.window.1570 AXPosition: Optional(<AXValue 0x600002a85ec0> {value = x:1068.000000 y:130.000000 type = kAXValueCGPointType})\r\ncom.google.Chrome.window.1570 AXGrowArea: nil\r\ncom.google.Chrome.window.1570 AXMinimizeButton: nil\r\ncom.google.Chrome.window.1570 AXDocument: Optional()\r\ncom.google.Chrome.window.1570 AXSections: [\r\ncom.google.Chrome.window.1570         Optional({\r\ncom.google.Chrome.window.1570             SectionDescription = Content;\r\ncom.google.Chrome.window.1570             SectionObject = \"<AXUIElement 0x600002a83450> {pid=47652}\";\r\ncom.google.Chrome.window.1570             SectionUniqueID = AXContent;\r\ncom.google.Chrome.window.1570         }),\r\ncom.google.Chrome.window.1570         Optional({\r\ncom.google.Chrome.window.1570             SectionObject = \"<AXUIElement 0x600002a83300> {pid=47652}\";\r\ncom.google.Chrome.window.1570             SectionUniqueID = AXContainer;\r\ncom.google.Chrome.window.1570         })\r\ncom.google.Chrome.window.1570 ]\r\ncom.google.Chrome.window.1570 AXCloseButton: nil\r\ncom.google.Chrome.window.1570 AXMain: Optional(0)\r\ncom.google.Chrome.window.1570 AXActivationPoint: Optional(<AXValue 0x600002a83360> {value = x:-1.000000 y:1601.000000 type = kAXValueCGPointType})\r\ncom.google.Chrome.window.1570 AXFullScreenButton: nil\r\ncom.google.Chrome.window.1570 AXProxy: nil\r\ncom.google.Chrome.window.1570 AXDefaultButton: nil\r\ncom.google.Chrome.window.1570 AXMinimized: Optional(0)\r\ncom.google.Chrome.window.1570 AXParent: Optional(<AXUIElement Application 0x600002a85ec0> {pid=47652})\r\ncom.google.Chrome.window.1570 AXTitleUIElement: nil\r\ncom.google.Chrome.window.1570 AXCancelButton: nil\r\ncom.google.Chrome.window.1570 AXModal: Optional(0)\r\ncom.google.Chrome.window.1570 AXZoomButton: nil\r\ncom.google.Chrome.window.1570 AXSize: Optional(<AXValue 0x600002a85ec0> {value = w:320.000000 h:409.000000 type = kAXValueCGSizeType})\r\ncom.google.Chrome.window.1570 AXToolbarButton: nil\r\ncom.google.Chrome.window.1570 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.google.Chrome             AXRole: Optional(AXApplication)\r\ncom.google.Chrome             AXTitle: Optional(Chrome)\r\ncom.google.Chrome             AXFunctionRowTopLevelElements: [\r\ncom.google.Chrome             ]\r\ncom.google.Chrome             AXFrame: nil\r\ncom.google.Chrome             AXFocusedUIElement: nil\r\ncom.google.Chrome             AXFrontmost: Optional(1)\r\ncom.google.Chrome             AXExtrasMenuBar: nil\r\ncom.google.Chrome             AXMainWindow: AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome             AXFocusedWindow: AXUIElement(windowId=1570, title=\"\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.google.Chrome             AXMenuBar: Optional(<AXUIElement 0x600002a85ad0> {pid=47652})\r\ncom.google.Chrome             AXWindows: [\r\ncom.google.Chrome                 AXUIElement(windowId=1570, title=\"\", role=\"AXWindow\", subrole=\"AXUnknown\"),\r\ncom.google.Chrome                 AXUIElement(windowId=1213, title=\"AeroSpace/CONTRIBUTING.md at main · nikitabobko/AeroSpace - Google Chrome - Jens (RTL)\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.google.Chrome                 AXUIElement(windowId=1217, title=\"WhatsApp - Part of group chat - Google Chrome - Jens (Privat)\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.google.Chrome             ]\r\ncom.google.Chrome             AXSize: nil\r\ncom.google.Chrome             AXPosition: nil\r\ncom.google.Chrome             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\ncom.google.Chrome             nsApp activationPolicy: regular\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```",
      "created_at": "2025-04-15T09:35:02Z",
      "updated_at": "2025-04-20T18:01:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxLZ1",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1324"
      },
      "user": {
        "login": "bin101",
        "avatar_url": "https://avatars.githubusercontent.com/u/12427722?u=4075b4b781ee40be05f133bc7adbb8610f87d7e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfXjm",
      "number": 1323,
      "title": "Focus change problems 0.18.2",
      "body": "These problems started with 0.18.0 and still didn't go away after the recent updates.\r\n\r\n1. In tiles mode with complex layouts and a lot of joining, moving, and closing the apps, the focus keeps moving onto \"ghost windows\" that don't appear to exist any longer, as in, they aren't just hidden but the related applications are closed. After focusing left/down/right/up AeroSpace focuses \"nothing' and centers the cursor in the spot where the node used to be in a no longer existing layout. Flattening the layout doesn't help, only app restart.\r\n2. When one monitor is in tiles mode and another is in accordion mode, when focusing left/right or top/bottom between accordion nodes the focus will sometimes randomly jump to a window on a different monitor instead of the next window in the accordion even when accordion is let's say horizontal but the monitor arrangement is vertical.",
      "created_at": "2025-04-20T08:32:26Z",
      "updated_at": "2025-04-20T08:35:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wolterkam",
        "avatar_url": "https://avatars.githubusercontent.com/u/53667145?u=7847d50b8a01b876f3514aa6457a93cb2df9020a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfXEb",
      "number": 1321,
      "title": "Sketchybar doesn't update when focused app in a different workspace changes",
      "body": "I think I should post it here, but I'm not sure\r\nIt could also just be my messy config, but it worked before the update to v0.18.0\r\n\r\n# The problem\r\n- When I click the space in sketchybar, it switches\r\n- When I use the shortcut to switch workspaces, it switches\r\n- **HOWEVER**, when I use the shortcut to switch apps, it doesn't switch\r\n- It also doesn't work when I use something like Raycast to switch apps\r\n\r\nOverall it just seems like aerospace doesn't trigger 'exec-on-workspace-change' when the focused app changes\r\n\r\nIt seems that #1310 is a related discussion, not sure though\r\nMy dots are here: github.com/matt-dong-123/dotfiles",
      "created_at": "2025-04-19T11:59:41Z",
      "updated_at": "2025-04-19T12:01:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "matt-dong-123",
        "avatar_url": "https://avatars.githubusercontent.com/u/148605800?u=c4059c6455da424126f499c8853b77f79dff6f73&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfWd_",
      "number": 1320,
      "title": "support: importing other toml files",
      "body": "My aerospace config is very big: primiarly cuz of \r\n\r\ncustom app configs. I would love to refactor the code to another file and simply my primary aerospace.toml file. ",
      "created_at": "2025-04-18T13:46:14Z",
      "updated_at": "2025-04-18T13:46:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "laciferin2024",
        "avatar_url": "https://avatars.githubusercontent.com/u/170102251?u=99876f83d9b12a3dd4c10cf30a523550353cf264&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfWFM",
      "number": 1318,
      "title": "Crash after closing MacBook Pro from work place and reopen it at home",
      "body": "I'm not sure which operation triggered this crash since I didn't do anything except for opening my mac again.\r\n\r\nThe log is as follows:\r\n\r\n```log\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-04-18 04:22:55 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.3.2 (Build 24D81)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 3\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000102c313a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000102ac9b1c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x0000000102ac8bdc $s9AppBundle8TreeNodeC11nodeMonitorAA0F0_pSgvg + 68\r\n3   AeroSpace                           0x0000000102ac0e6c $s9AppBundle9MacWindowC12hideInCorneryyAA011OptimalHideG0OYaKFTY0_ + 40\r\n4   AeroSpace                           0x0000000102a9a93d $s9AppBundle16layoutWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTQ13_ + 1\r\n5   AeroSpace                           0x0000000102a90121 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ21_ + 1\r\n6   AeroSpace                           0x0000000102a249b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x0000000262ad2c95 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   libswift_Concurrency.dylib          0x0000000262ad2931 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n9   AeroSpace                           0x0000000102a8d025 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n10  AeroSpace                           0x0000000102a249b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000262ad2c95 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  libswift_Concurrency.dylib          0x0000000262ad2931 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n13  AeroSpace                           0x0000000102a8a351 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n14  AeroSpace                           0x0000000102aaabf1 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n15  AeroSpace                           0x0000000102a249b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n16  libswift_Concurrency.dylib          0x0000000262b09035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```",
      "created_at": "2025-04-18T04:34:38Z",
      "updated_at": "2025-04-18T11:02:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxH12",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1306"
      },
      "user": {
        "login": "zhuoqun-chen",
        "avatar_url": "https://avatars.githubusercontent.com/u/73287160?u=800f350211c5fc15528602ff4af02268a58047ce&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfVYN",
      "number": 1316,
      "title": "Immediate resizing of inactive windows sometimes prevents correct resizing",
      "body": "While mouse-resizing (specifically, shrinking) the active window in a 2-window layout, the inactive window will reactively resize to adapt to the new layout, but something with the resizing seems to glitch out, causing it to not expand to fill its new space fully. When I let go of the handle on the active window, it snaps to fit the empty space where the inactive window didn't \"catch up\" to the resizing, causing it to expand beyond the target size.\r\n\r\nIs there a way to disable the resizing of other windows until I let go of the active window's resize handle? I don't care much for having the whole layout stay consistent _while_ I resize.\r\n\r\n(sorry if there's another thread on this topic, I didn't know exactly what terms to search for to find it)",
      "created_at": "2025-04-17T13:40:54Z",
      "updated_at": "2025-04-17T13:40:54Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nyaray-bontouch",
        "avatar_url": "https://avatars.githubusercontent.com/u/122350439?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfVJh",
      "number": 1313,
      "title": "PWAs no longer detected and affected by Aerospace's tiling",
      "body": "It looks like with the new 0.18 update PWAs is no longer tracked by Aerospace as apps. I've previously had them listed with `aerospace list-apps` and used their IDs for automatic tiling on opening. \r\n\r\n<img width=\"336\" alt=\"image\" src=\"https://github.com/user-attachments/assets/473b5c9f-37c9-462f-938f-0a1b513a8e5e\" />\r\n\r\n<img width=\"128\" alt=\"image\" src=\"https://github.com/user-attachments/assets/860b7fee-94d9-466b-9e55-bcf4f59fc30c\" />\r\n\r\nReporting as a potential bug as i'm not sure if this is intended behaviour or not. Would love to get them tracked and affected by Aerospace's tiling again.",
      "created_at": "2025-04-17T09:02:19Z",
      "updated_at": "2025-04-17T11:28:34Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "iamk3v",
        "avatar_url": "https://avatars.githubusercontent.com/u/30670151?u=e0b8bd186dee113af85fb3976f5c951ab57c38fa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfUSf",
      "number": 1310,
      "title": "Regression: `on-focus-changed` not being called when focusing windows through system.",
      "body": "`on-focus-changed` is not working anymore when directly focusing windows through clicking the application in the dock, spotlight, raycast etc...\r\n\r\nChanging focus through the `focus`, `focus-monitor` etc will trigger the callback as expected.\r\n\r\nThanks! ",
      "created_at": "2025-04-16T12:56:35Z",
      "updated_at": "2025-04-17T11:52:14Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxFJX",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1315"
      },
      "user": {
        "login": "rlch",
        "avatar_url": "https://avatars.githubusercontent.com/u/35163478?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfT-O",
      "number": 1307,
      "title": "AppBundle.MacWindow is already unbound crash with NEED TO RESTART !!!",
      "body": "For Unreal Engine 5.4 it crashes the Aerospace after changing the focus, presumably\r\n`Message: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000100271d7c $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001001072bc $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x0000000100107568 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x0000000100086938 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 704\r\n    4   AeroSpace                           0x00000001000893f5 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n    5   AeroSpace                           0x00000001000874d9 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n    6   AeroSpace                           0x000000010006c439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n    7   AeroSpace                           0x00000001000b07b5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n    8   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    9   AeroSpace                           0x00000001000cda39 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ10_ + 1\r\n    10  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x00000001000cc6a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n    14  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n    15  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    16  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    17  AeroSpace                           0x00000001000c9b45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n    18  AeroSpace                           0x00000001000b0305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n    19  AeroSpace                           0x00000001000643f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n    20  libswift_Concurrency.dylib          0x0000000274c8483d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.2-Beta\r\nGit hash: 7feb63d1ce9aff0d6fdaa13b42888d5b45f5dbb5\r\nrefreshSessionEvent: hotkeyBinding\r\nDate: 2025-04-16 07:01:25 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.4 (Build 24E248)\r\nCoordinate: AppBundle/TreeNode.swift:121:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001002713a8 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x0000000100107674 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x0000000100086938 $s9AppBundle31makeFloatingWindowsSeenAsTiling33_5E41CC7E5F0BE51AD60C091A166A5AF8LL9workspaceSayAA0D10WindowDataACLLVGAA9WorkspaceC_tYaKFTY11_ + 704\r\n3   AeroSpace                           0x00000001000893f5 $s9AppBundle12FocusCommandV3runySbAA6CmdEnvV_AA0F2IoCtYaKFTf4xnn_nTQ1_ + 1\r\n4   AeroSpace                           0x00000001000874d9 $s9AppBundle12FocusCommandVAA0D0A2aDP3runySbAA6CmdEnvV_AA0F2IoCtYaKFTWTQ0_ + 1\r\n5   AeroSpace                           0x000000010006c439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n6   AeroSpace                           0x00000001000b07b5 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_yyYaYbKScMYcXEfU_TQ2_ + 1\r\n7   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n8   AeroSpace                           0x00000001000cda39 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_yt_Tg5TQ10_ + 1\r\n9   AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x00000001000cc6a5 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_yt_Tg5TQ1_ + 1\r\n13  AeroSpace                           0x00000001000649b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000274c50461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  libswift_Concurrency.dylib          0x0000000274c50109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n16  AeroSpace                           0x00000001000c9b45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFyt_Tg5TQ1_ + 1\r\n17  AeroSpace                           0x00000001000b0305 $s9AppBundle12activateModeyySSSgFyycfU0_yyYaKcfU_TQ1_ + 1\r\n18  AeroSpace                           0x00000001000643f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n19  libswift_Concurrency.dylib          0x0000000274c8483d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n`",
      "created_at": "2025-04-16T07:26:52Z",
      "updated_at": "2025-04-17T12:12:55Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxCib",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1311"
      },
      "user": {
        "login": "fdgngrpjk",
        "avatar_url": "https://avatars.githubusercontent.com/u/1919004?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfSh4",
      "number": 1300,
      "title": "0.18.1: Certain overlay apps don't work anymore",
      "body": "After updating to 0.18.1, two of my own apps don't work anymore: todo.spreen.co and clipboard.spreen.co\r\n\r\nBoth are global overlay windows that previously were unaffected by AeroSpace. now they open for a split second, then automatically close because they lose focus.\r\n\r\nI also notice that during the split second of them opening, AeroSpace switches workspaces, because they are detected in my catch-all if window open statement. Previously AeroSpace just ignored them. Now it causes a desktop switch while the app is open. Both are breaking bugs for my use case. The immediate closing is more severe. The switching is especially an issue since the clipboard history is intended to work as an overlay while still seeing whatever app you had opened before.",
      "created_at": "2025-04-14T20:15:44Z",
      "updated_at": "2025-04-16T05:59:16Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yspreen",
        "avatar_url": "https://avatars.githubusercontent.com/u/12631527?u=096663679fc62daeb4a7d45f17b3d6534c256bd9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfSQY",
      "number": 1296,
      "title": "0.18.1-Beta: Desktop is visible for brief moment when switching workspaces",
      "body": "Hi,\r\n\r\nin 0.17.0-Beta, when I go from workspace 1 to workspace 2, it is (mode or less) immediate, and, more importantly, the desktop is not visible as a middle step.\r\n\r\nHowever when I have updated to 0.18.1-Beta, and try to do the same (go from 1 to 2 and back), it still is fast, but now the desktop flashes between the switching the workspaces.  I see workspace 1, press the key to go to workspace 2, for a split second (really, just a short flash) I see a desktop (including the files on it) and then the window on workspace 2 shows up.\r\n\r\nDid anyone else noticed this?  Is there some configuration I could tweak to make this not happen?\r\n\r\nThanks",
      "created_at": "2025-04-14T14:39:05Z",
      "updated_at": "2025-04-15T21:34:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AxAbl",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1305"
      },
      "user": {
        "login": "graywolf-s1",
        "avatar_url": "https://avatars.githubusercontent.com/u/177634264?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcPkH",
      "number": 655,
      "title": "Reduce freezes due to RPC calls",
      "body": "**Running into slow Aerospace?** \r\n\r\nEDIT: 12/05: ported perf patch to latest origin/main branch\r\n\r\nTry out [this branch](https://github.com/raisjn/AeroSpace/tree/dev/okay/2024_12_05_less_cpu_lockups). \r\n\r\n**Usage** \r\n\r\nRecompile the debug or release build and add the following lines to your aerospace.toml:\r\n\r\n```\r\nnew-window-detection-timeout = 100\r\n```\r\n\r\n@liamaharon suggests the following may have better results:\r\n\r\n```\r\nnew-window-detection-timeout = 50\r\nnew-window-detection-debounce = 100\r\n```\r\n\r\nWhat it does: `new-window-detection-timeout` is how long to block the main thread (up to X ms), while `new-window-detection-debounce` will coalesce calls within X ms together. \r\n\r\n\r\n**How it works**\r\n\r\nThe root cause of slowness is that Aerospace iterates over windows and uses accessibility APIs to communicate with each app. If any application is slow to respond, it blocks Aerospace's main thread from executing. To prevent Aerospace from hanging, we put the communication with apps into a new thread.\r\n\r\n**Details**\r\n\r\n`detectNewWindowsAndAttachThemToWorkspaces` calls into a debouncer and a separate queue when called from refreshSession and wait for up to X ms for it to complete. `validateStillPopups` is behind a similar debouncer + dispatch queue. \r\n\r\n\r\n*Note*: Thread safety: for detectNewWindowsAndAttachThemToWorkspace to be threadsafe, MacWindow.get() has an NSLock placed in it so that multiple threads can access it safely.   Additionally, specific work within MacWindow.get() should be moved to the main thread using a DispatchQueue\r\n\r\n\r\n**Observed Bugs:**\r\n\r\n\r\nBug A: Starting a popup window and dragging it across monitors doesn't work (for example, System Settings). The window will get stuck on a single monitor and keep hopping back.  Dragging the window within a single monitor works fine. It is possible to move the window via keyboard shortcuts, though. (I think this happens on all approaches? I haven't tested stock Aerospace)\r\n\r\nBug B: Focus follows mouse (AutoRaise application) doesn't play well with aerospace and multiple monitors. Switching the workspace on one monitor (monitor 1), then moving to another monitor (monitor 2) with the mouse will often cause the workspace on monitor 1 to switch back to the previous workspace. (I think this happens on all approaches? I haven't tested stock Aerospace)\r\n\r\n\r\n**FAQ**\r\n\r\n1. When will this be merged upstream? Answer: I have no plan to attempt to upstream this. I keep a private fork with my own changes.  I've released this particular patch because [people have been asking for the last year for performance improvements](https://github.com/nikitabobko/AeroSpace/issues/131). \r\n2. How do I install this? Answer: See @wojciech-kulik's [comment](https://github.com/nikitabobko/AeroSpace/discussions/655#discussioncomment-11460077)\r\n3. Did Aerospace crash because of this patch? Answer: Maybe. I believe [Aerospace itself is prone to crashing](https://github.com/nikitabobko/AeroSpace/issues?q=is%3Aissue+crash). \r\n",
      "created_at": "2024-11-01T04:02:46Z",
      "updated_at": "2025-04-23T08:34:58Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw4tt",
        "body": "0.18.0 features big performance improvements https://github.com/nikitabobko/AeroSpace/releases/tag/v0.18.0-Beta https://github.com/nikitabobko/AeroSpace/issues/131. The published release covers the fixes in `@raisjn` fork.\r\n\r\nI'm now all ears"
      },
      "user": {
        "login": "raisjn",
        "avatar_url": "https://avatars.githubusercontent.com/u/70462544?u=8c0ce58162b06d3520360b182f397f32fc106374&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfTaO",
      "number": 1303,
      "title": "AeroSpace option to enable only Workspaces feature and keep tiling disable",
      "body": "AeroSpace is a great app, but I've only be using its workspace features and somehow messing with the configurations I managed to disable the auto tiling features and use only the workspaces (the new macOS tilling features have been enough for my usage).\r\n\r\nMaybe, maybe, It was possible to add an option to disable other features and only use the workspaces (maybe get some performance gains with it, maybe being able to enable Macs \"Displays have separate Spaces\" so we can use Mac native drag window to edge or holding `option` key features without the performance issues).\r\n\r\nThis is basically the only configuration I truly need from AeroSpace, and I know that for some people it's also the same.\r\n```toml\r\nctrl-1 = 'workspace 1'\r\nctrl-2 = 'workspace 2'\r\nctrl-3 = 'workspace 3'\r\nctrl-4 = 'workspace 4'\r\nctrl-5 = 'workspace 5'\r\nctrl-6 = 'workspace 6'\r\nctrl-7 = 'workspace 7'\r\nctrl-8 = 'workspace 8'\r\nctrl-9 = 'workspace 9'\r\n\r\nalt-ctrl-1 = 'move-node-to-workspace 1'\r\nalt-ctrl-2 = 'move-node-to-workspace 2'\r\nalt-ctrl-3 = 'move-node-to-workspace 3'\r\nalt-ctrl-4 = 'move-node-to-workspace 4'\r\nalt-ctrl-5 = 'move-node-to-workspace 5'\r\nalt-ctrl-6 = 'move-node-to-workspace 6'\r\nalt-ctrl-7 = 'move-node-to-workspace 7'\r\nalt-ctrl-8 = 'move-node-to-workspace 8'\r\nalt-ctrl-9 = 'move-node-to-workspace 9'\r\n```\r\n\r\n\r\nMy full messy configs:\r\nhttps://gist.github.com/PsN-1/ea83a84820df7e2bd5a7c54cba65d59c",
      "created_at": "2025-04-15T15:55:39Z",
      "updated_at": "2025-04-15T20:48:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "PsN-1",
        "avatar_url": "https://avatars.githubusercontent.com/u/67563603?u=5eec52e8e2222f9829e171fe3027c1d4056c4392&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfQ3j",
      "number": 1282,
      "title": "iTerm2 keeps getting assigned to other monitors / workspace in another monitor",
      "body": "Potential 0.18.0 regression\r\n\r\nI just tried the artifacts published by lazywei. It seems my iTerm2 (hotkey floating window) keeps getting assigned to other monitors / workspace in another monitor. After setting it back to the current release version, this issue seems gone.\r\n\r\n```toml\r\n[[on-window-detected]]\r\n  if.app-id = 'com.googlecode.iterm2'\r\n  run = 'layout floating'\r\n```\r\n\r\nOriginally reported by @zhenpewu https://github.com/nikitabobko/AeroSpace/issues/131#issuecomment-2797827726",
      "created_at": "2025-04-12T18:52:23Z",
      "updated_at": "2025-04-15T09:08:36Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AetPu",
      "number": 1186,
      "title": "Aerospace commands not recognized",
      "body": "Hi,\r\n\r\nI have been using aerospace for a while. Yesterday, I was upgrading homebrew by running:\r\n`brew upgrade`\r\n\r\nAerospace was updated during this process. I am currently on v0.17.1-Beta.\r\nHowever, after the update, Aerospace seems to stop working, although it appears in the menu bar.\r\nI had to quit aerospace and relaunch it entirely. \r\n\r\nThe issue now is that it starts tiling windows now and I can use all the shortcuts I made, but I cannot use any aerospace commands in the terminal.\r\nIn fact, zsh does not recognize the \"aerospace\" prefix.\r\n![CleanShot 2025-03-07 at 14 26 10@2x](https://github.com/user-attachments/assets/9c961971-718b-4ff3-9881-1ed9d66312db)\r\nI have looked through the issues and discussions, but I only found some similar but not the same issue.",
      "created_at": "2025-03-07T06:28:02Z",
      "updated_at": "2025-04-15T06:19:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "HenryChen0517",
        "avatar_url": "https://avatars.githubusercontent.com/u/137996727?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac-0i",
      "number": 794,
      "title": "i3/sway vertical and horizontal split modes?",
      "body": "My workflow in i3/sway has always been to use vertical/horizontal split, and then open a new terminal/program/whatever that way to position it immediately. Is there an equivalent to the `split vertical|horizontal` in AeroSpace?",
      "created_at": "2024-12-02T10:34:05Z",
      "updated_at": "2025-04-15T04:22:18Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "conor-f",
        "avatar_url": "https://avatars.githubusercontent.com/u/2671067?u=91bc641db5690a1d465d81b0327aacb0f973fa05&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfRdR",
      "number": 1288,
      "title": "window without parent causes crash",
      "body": "this error tends to occur when a popup window (aka something with no parent exists)\r\n\r\ni used to use this as a dmenu style app but in 0.18.x it just results in crashes as it is not a full window and has no parent\r\nhttps://github.com/chipsenkbeil/choose\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.18.1-Beta\r\nGit hash: b0efb367f0be5fbe666a3050864b907e1b93387c\r\nrefreshSessionEvent:  socketServer\r\nDate: 2025-04-13 20:58:06 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: nil\r\nmacOS version: Version 15.1.1 (Build 24B91)\r\nCoordinate: AppBundle/Window.swift:7:70 parent\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x000000010254c9cc $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001023e5414 $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x00000001023e4468 $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 64\r\n3   AeroSpace                           0x000000010234e668 $sSS9AppBundleE15expandFormatVar3objs6ResultOyAA9PrimitiveOS2Ss5Error6CommonyHCg_GAA7AeroObjO_tYaKFTY0_ + 1312\r\n4   AeroSpace                           0x0000000102352711 $sSa9AppBundleAA7AeroObjORszlE12formatToJson_21ignoreRightPaddingVars6ResultOyS3Ss5Error6CommonyHCg_GSayAI16StringInterTokenOG_SbtYaKFTQ1_ + 1\r\n5   AeroSpace                           0x0000000102372321 $s9AppBundle18ListWindowsCommandV3runySbAA6CmdEnvV_AA0G2IoCtYaKFTf4dnn_nTQ3_ + 1\r\n6   AeroSpace                           0x000000010236e47d $s9AppBundle18ListWindowsCommandVAA0E0A2aDP3runySbAA6CmdEnvV_AA0G2IoCtYaKFTWTQ0_ + 1\r\n7   AeroSpace                           0x0000000102348439 $sSa9AppBundleAA7Command_pRszlE9runCmdSeqySbAA0E3EnvV_AA0E2IoCntYaKFTQ1_ + 1\r\n8   AeroSpace                           0x0000000102347d79 $s9AppBundle7CommandPAAE3runyAA9CmdResultVAA0E3EnvV_AA0E5StdinCtYaKFTQ2_ + 1\r\n9   AeroSpace                           0x00000001023c6cc5 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_AHyYaYbKScMYcXEfU_TQ1_ + 1\r\n10  AeroSpace                           0x00000001023403f5 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZyyYaYbScMYccfU_TATQ0_ + 1\r\n11  AeroSpace                           0x00000001023aba45 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_xyYaKXEfU_AD12ServerAnswerV_Tg5TQ12_ + 1\r\n12  AeroSpace                           0x00000001023409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n13  libswift_Concurrency.dylib          0x0000000260d92e19 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n14  libswift_Concurrency.dylib          0x0000000260d92ab5 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n15  AeroSpace                           0x00000001023a8ed9 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFxyYaKXEfU_AD12ServerAnswerV_Tg5TQ1_ + 1\r\n16  AeroSpace                           0x00000001023409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n17  libswift_Concurrency.dylib          0x0000000260d92e19 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n18  libswift_Concurrency.dylib          0x0000000260d92ab5 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n19  AeroSpace                           0x00000001023a6205 $s9AppBundle10runSession__4bodyx6Common07RefreshD5EventO_AA03RunD5GuardVxyYaYbKScMYcXEtYaKlFAD12ServerAnswerV_Tg5TQ1_ + 1\r\n20  AeroSpace                           0x00000001023c6ab9 $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaKcfU0_TQ1_ + 1\r\n21  AeroSpace                           0x00000001023409b1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlocked33optimisticallyPreLayoutWorkspacesy6Common0dE5EventO_S2btFyyYaKcfU_TATQ0_ + 1\r\n22  libswift_Concurrency.dylib          0x0000000260dc9035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n",
      "created_at": "2025-04-13T21:00:52Z",
      "updated_at": "2025-04-20T18:32:46Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw7Wu",
        "body": "I see that AeroSpace doesn't allow to focus choose window in 0.18.0 – https://github.com/nikitabobko/AeroSpace/issues/1292\r\n\r\nThe crash itself is a known problem, and is not exclusive to 0.18.0 – https://github.com/nikitabobko/AeroSpace/issues/706"
      },
      "user": {
        "login": "acsandmann",
        "avatar_url": "https://avatars.githubusercontent.com/u/157552025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfSK7",
      "number": 1295,
      "title": "v0.18.0-beta crashing every 30 minutes or so",
      "body": "Hey! Firstly, thanks for creating such a kickass project. I previously used macOS custom keybinds to switch between numbered workspaces, but hated the default transition as well as the lack of flexibility. v0.18.x looks like a very exciting release, and I'm sure a lot of hard work has gone into it!\r\n\r\nI wish I could give more details as to what I'm doing to trigger this, but I have absolutely no idea. It seems to just crash while I'm working in JetBrains IntelliJ IDEA Ultimate.\r\n\r\nEdit: I've updated to v0.18.1-beta, hoping that may help.\r\n\r\nEdit: Seems that v0.18.1-beta causes the wallpaper to pop up whenever switching spaces. Guess I'll try downgrading to v0.17.1.\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: \r\n    AppBundle.MacWindow is already unbound. The stacktrace where it was unbound:\r\n    0   AeroSpace                           0x0000000100420c1c $s6Common19getStringStacktraceSSyF + 44\r\n    1   AeroSpace                           0x00000001002b6430 $s9AppBundle8TreeNodeC13unbindIfBound33_C0BD111AB6D9D19A3A8697678A2C07EFLLAA11BindingDataVSgyF + 684\r\n    2   AeroSpace                           0x00000001002b66dc $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 28\r\n    3   AeroSpace                           0x00000001002968b0 $s9AppBundle19validateStillPopups33_EA737387E8EE73FEB20FFAD7FE91D51ELLyyYaKFTY25_ + 56\r\n    4   AeroSpace                           0x0000000100294751 $s9AppBundle21normalizeLayoutReasonyyYaKFTQ4_ + 1\r\n    5   AeroSpace                           0x0000000100286ed1 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFyyYaKXEfU_yyYaKXEfU_TQ6_ + 1\r\n    6   AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    7   libswift_Concurrency.dylib          0x0000000277514461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    8   libswift_Concurrency.dylib          0x0000000277514109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    9   AeroSpace                           0x00000001002868dd $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFyyYaKXEfU_TQ1_ + 1\r\n    10  AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    11  libswift_Concurrency.dylib          0x0000000277514461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    12  libswift_Concurrency.dylib          0x0000000277514109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n    13  AeroSpace                           0x0000000100285e59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFTQ1_ + 1\r\n    14  AeroSpace                           0x0000000100286609 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n    15  AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n    16  libswift_Concurrency.dylib          0x000000027754883d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\nVersion: 0.18.0-Beta\r\nGit hash: 30bc81f925a8e13b5130e81a9af4bcaf4b29284a\r\nrefreshSessionEvent: ax(AXUIElementDestroyed)\r\nDate: 2025-04-14 13:13:08 +0000\r\nThread name: \r\nIs main thread: true\r\naxTaskLocalAppThreadToken: PID: 65178 ID: com.jetbrains.intellij\r\nmacOS version: Version 15.4 (Build 24E248)\r\nCoordinate: AppBundle/TreeNode.swift:121:32 unbindFromParent()\r\nrecursionDetectorDuringTermination: false\r\ncli: false\r\nMonitor count: 1\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100420248 $s6Common4dieT_4file4line6column8functionxSS_SSS2iSStlF + 2256\r\n1   AeroSpace                           0x00000001002b67e8 $s9AppBundle8TreeNodeC16unbindFromParentAA11BindingDataVyF + 296\r\n2   AeroSpace                           0x00000001002afa50 $s9AppBundle9MacWindowC14garbageCollect22skipClosedWindowsCacheySb_tF + 240\r\n3   AeroSpace                           0x0000000100287480 $s9AppBundle7refresh33_9D4CAE07A16011BB7304F8F5007BD739LLyyYaKFTY2_ + 292\r\n4   AeroSpace                           0x0000000100286bdd $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFyyYaKXEfU_yyYaKXEfU_TQ0_ + 1\r\n5   AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n6   libswift_Concurrency.dylib          0x0000000277514461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n7   libswift_Concurrency.dylib          0x0000000277514109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n8   AeroSpace                           0x00000001002868dd $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFyyYaKXEfU_TQ1_ + 1\r\n9   AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n10  libswift_Concurrency.dylib          0x0000000277514461 $ss9TaskLocalC13withValueImpl_9operation9isolation4file4lineqd__xn_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n11  libswift_Concurrency.dylib          0x0000000277514109 $ss9TaskLocalC9withValue_9operation9isolation4file4lineqd__x_qd__yYaKXEScA_pSgYiSSSutYaKlFTQ1_ + 1\r\n12  AeroSpace                           0x0000000100285e59 $s9AppBundle25runRefreshSessionBlocking_16layoutWorkspacesy6Common0dE5EventO_SbtYaKFTQ1_ + 1\r\n13  AeroSpace                           0x0000000100286609 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TQ1_ + 1\r\n14  AeroSpace                           0x00000001002149d1 $s9AppBundle17runRefreshSession_26screenIsDefinitelyUnlockedy6Common0dE5EventO_SbtFyyYaKcfU_TATQ0_ + 1\r\n15  libswift_Concurrency.dylib          0x000000027754883d _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n\r\n```",
      "created_at": "2025-04-14T13:16:20Z",
      "updated_at": "2025-04-14T15:06:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw8e2",
        "body": "Thanks! Converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1297"
      },
      "user": {
        "login": "wolveix",
        "avatar_url": "https://avatars.githubusercontent.com/u/31854736?u=a6a926fb9f6f4e57e6af0c0cfe57912688e427c9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfREy",
      "number": 1284,
      "title": "If an app pop up the TouchID window, aerospace focuses on the app instead of the TouchID window.",
      "body": "It prevents me from touchID auth. \r\n\r\nMaybe related to https://github.com/nikitabobko/AeroSpace/issues/1220.",
      "created_at": "2025-04-13T06:31:50Z",
      "updated_at": "2025-04-14T07:53:39Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw7Te",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1292"
      },
      "user": {
        "login": "PannenetsF",
        "avatar_url": "https://avatars.githubusercontent.com/u/45866836?u=55c0f2fafd5f8bca34fcc15db811605805432fb4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfRxU",
      "number": 1290,
      "title": "Keyboard Meastro Model Popup Windows Fail after 17 -> 18.1 Upgrade",
      "body": "After upgrading to AeroSpace v0.18.1-Beta bOefb367, the Keyboard Maestro popup windows to de-conflict duplicate macros will immediately be forced to close and generate a macro termination notification.",
      "created_at": "2025-04-14T06:06:17Z",
      "updated_at": "2025-04-14T06:06:18Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "miles202",
        "avatar_url": "https://avatars.githubusercontent.com/u/286460?u=6fdd2bb400bdab393b32edb1d5f98da3f880a8a6&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfRI9",
      "number": 1286,
      "title": "Curly and Square brackets perform window actions instead of typing out symbols",
      "body": "Im on Sequoia 15.4, AeroSpace v0.18.0-Beta 30bc81f925a8e13b5130e81a9af4bcaf4b29284a\r\nDefault config. English keyboard and language.\r\n\r\nAny time i use symbols { } [ ] on my keyboard, it goes to workspaces 7 8 9 or hides (i think) the current app. Its really become frustrating, so much so that I have stopped using the app. \r\n\r\nIm sure this is a config issue / user error, since I cannot find any other places where this is discussed. But Im really at a loss at this point.",
      "created_at": "2025-04-13T09:26:52Z",
      "updated_at": "2025-04-14T19:50:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jensbech",
        "avatar_url": "https://avatars.githubusercontent.com/u/8881797?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfRDK",
      "number": 1283,
      "title": "Spaces reset when computer enters screen saver - Aerospace - v0.18",
      "body": "Just updated to v0.18 which works great performance wise :) \r\n\r\nHowever, I noticed a bug that occurs when the computer enters the screen saver + requires a password to wake up, upon waking up the computer all windows are on the first space.\r\n\r\nI haven't been able to reliably reproduce this bug yet but I will append steps to reproduce once I'm able to.",
      "created_at": "2025-04-13T04:48:47Z",
      "updated_at": "2025-04-13T11:43:09Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aw5Sw",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/1216"
      },
      "user": {
        "login": "gavink97",
        "avatar_url": "https://avatars.githubusercontent.com/u/78187175?u=06f34c550f960ad26da5cd54a03d46f97613207f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfPR9",
      "number": 1276,
      "title": "Visual stack accordion window icons.",
      "body": "🧠 Concept:\r\n\r\nWhen stacking windows in accordion mode, it's often hard to tell which applications are part of the stack without actively cycling through them or opening them. This idea proposes adding visual indicators or icons beside the accordion stack—similar to the macOS dock—giving you a quick, at-a-glance view of what's inside the stack.\r\n\r\n💡 Inspiration:\r\n\r\nI used the Pop!_OS tiling window manager, which has a visual tab stack. When I switched to macOS, I found a project that illustrates exactly what I'm trying to achieve: [Stackline](https://github.com/AdamWagner/stackline).\r\n\r\nThe screenshot in the README of that project shows the concept clearly. On the left side, each window in a stack is represented by a small app icon next to the stack. These icons visually indicate the apps (e.g., Terminal, Sublime Text), making navigation easier and more intuitive.\r\n\r\n<img width=\"838\" alt=\"image\" src=\"https://github.com/user-attachments/assets/209dcb9a-d457-441b-8c5c-2f4b1a3ae594\" />\r\n\r\nIf this feature already exists in AeroSpace, feel free to share it here. Unfortunately, I can’t contribute with code since I don't have enough experience, but I wanted to share the idea in case it’s helpful or possible to implement.",
      "created_at": "2025-04-10T17:48:58Z",
      "updated_at": "2025-04-11T09:48:13Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "itspedro",
        "avatar_url": "https://avatars.githubusercontent.com/u/70816902?u=f31c9143ede8fc34c10adfeeaed4894a26919a96&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfPeV",
      "number": 1277,
      "title": "Aerospace Feature Info Contribution",
      "body": "Hi there,\r\n\r\nI run a variety of detailed [MacApp comparisons](https://www.reddit.com/r/macapps/comments/1j56vvb/mac_app_comparisons_2025_update/) on Reddit, and I would like to invite someone sufficiently knowledgeable with AeroSpace to add an entry to our Window Manager comparison using this form: https://forms.gle/HbgJ8UHS4HZ8WJgSA\r\nThe last person who added an entry for it missed a lot of sections, which doesn't reflect particularly well.\r\n\r\nThanks,\r\n(u/Mstormer)",
      "created_at": "2025-04-10T22:47:00Z",
      "updated_at": "2025-04-10T22:47:01Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Mstormer",
        "avatar_url": "https://avatars.githubusercontent.com/u/10608999?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfPHM",
      "number": 1275,
      "title": "Should I move windows or workspaces, between monitors?",
      "body": "I've been using AeroSpace for a month and it's amazing. On a single screen I've been using workspace for each app type (i.e. one for browser, one for terminals, one for coding, once for chats...) and so far I'm **very** happy. Whenever I need to have two apps together I just send it to the workspace I want, and eventually, send it back to where it \"belongs\".\r\n\r\nI wonder if this is the right approach or not, and the reason I am asking is, that when I work with multiple monitors, I end up moving the workspaces between monitors a lot, and I'm not sure if that's the right approach. I assume that in many occasions I tend to put the workspaces in the middle monitor for more confort when focusing for more time in a specific app (i.e. the notes app I have on my right monitor, but if I need to write more than just a quick note, I want it in the main monitor). \r\n\r\nHowever, this approach has some drawbacks. For instance, I believe that it's slower that moving a window between workspaces, but I also experience two more inconveniences, one is that if I have a \"focused\" window, it becomes unfocused. The other, is that after moving workspaces around, I lose whichever workspace that was previously there on each monitor (say I have workspaces A|B|C on each monitor, and I move B around and back to the center, then the left monitor might end up with workspace D for example, instead of A).\r\n\r\nDo you guys use a different strategy?",
      "created_at": "2025-04-10T14:44:51Z",
      "updated_at": "2025-04-10T14:44:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jjhidalgar",
        "avatar_url": "https://avatars.githubusercontent.com/u/965036?u=41f3a1512ea29ed1c9792683b13cb3d01fdaa63d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfOxE",
      "number": 1274,
      "title": "Default all windows to be floating unless explicitly configured to be tiled",
      "body": "Thank you for the great work on Aerospace!\r\n\r\nI am currently considering switching from Amethyst to Aerospace, but there is one key feature that is holding me back. I am unsure whether Aerospace already supports this and I've just missed it in the documentation, or if it is currently unsupported.\r\n\r\nIn Amethyst, I can configure it to float all applications by default unless they are explicitly listed to be tiled which can be done using the following setting in `amethyst.yml`:\r\n\r\n```yaml\r\nfloating-is-blacklist: false\r\nfloating:\r\n  - \"com.apple.Maps\"\r\n  - \"com.apple.Music\"\r\n  - \"com.apple.Notes\"\r\n  - \"com.apple.Photos\"\r\n  ...\r\n```\r\n\r\nThis allows for a workflow where everything floats by default, and I opt in only the apps I want to tile.\r\n\r\nIn Aerospace, I understand that I can configure certain apps to float using:\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = \"com.apple.Maps\"\r\nrun = [\"layout floating\"]\r\n```\r\n\r\nIs it possible to mimic Amethyst’s `floating-is-blacklist: false` behavior in Aerospace and make everything float by default? If not, would this be a feature you'd consider adding?",
      "created_at": "2025-04-10T08:29:48Z",
      "updated_at": "2025-04-10T11:36:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwyRy",
        "body": "Yes, it's possible:\r\n\r\n```toml\r\n[[on-window-detected]]\r\n    check-further-callbacks = true\r\n    run = 'layout floating'\r\n\r\n[[on-window-detected]]\r\n    if.app-id = \"com.apple.Maps\"\r\n    run = 'layout tiling'\r\n```"
      },
      "user": {
        "login": "majjoha",
        "avatar_url": "https://avatars.githubusercontent.com/u/233988?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adx9Q",
      "number": 944,
      "title": "Browser PIP Not Following Space",
      "body": "How to get browser PIP to follow me to each space?",
      "created_at": "2025-01-10T18:59:15Z",
      "updated_at": "2025-04-09T21:58:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "qudo-code",
        "avatar_url": "https://avatars.githubusercontent.com/u/59782726?u=1fda90e3d3aa24631f7996a02787a6b8b7802423&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfNGO",
      "number": 1270,
      "title": "Is there a way to set the split direction for the next thing you open?",
      "body": "a la i3's mod+v mod+h, is there a way to dictate in which orientation the next split will be performed?",
      "created_at": "2025-04-08T17:10:02Z",
      "updated_at": "2025-04-09T19:50:18Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ttrmw",
        "avatar_url": "https://avatars.githubusercontent.com/u/3099390?u=66a79e4926402c8e8719b85a4f897728f10324d8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfN9E",
      "number": 1272,
      "title": "Is this layout possible, and if so, how do you reach it?",
      "body": "I think this layout is possible (i.e., it won't be normalized), but I can't think of a way to make it happen.\r\n\r\n```\r\nh_accordion (root)\r\n+- v_tiles\r\n|  +- window \r\n|  +- window\r\n+- v_tiles\r\n   +- window\r\n   +- window\r\n```\r\n",
      "created_at": "2025-04-09T13:06:30Z",
      "updated_at": "2025-04-09T13:07:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Cerebus",
        "avatar_url": "https://avatars.githubusercontent.com/u/49740?u=abcb1a42191e4c813c75564e73c2812cc8ba5082&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfLNC",
      "number": 1266,
      "title": "Xcode Archives window is not floating automatically",
      "body": "Archives window in Xcode should float, but instead it's tiled and buttons are located outside of the visible screen area as a result.\r\n\r\nAX info:\r\n```\r\ncom.apple.dt.Xcode.window.9267 windowId: 9267\r\ncom.apple.dt.Xcode.window.9267 workspace: 1\r\ncom.apple.dt.Xcode.window.9267 treeNodeParent: AppBundle.TilingContainer\r\ncom.apple.dt.Xcode.window.9267 isWindow: true\r\ncom.apple.dt.Xcode.window.9267 isDialogHeuristic: false\r\ncom.apple.dt.Xcode.window.9267 AXTitle: Optional(Archives)\r\ncom.apple.dt.Xcode.window.9267 AXRole: Optional(AXWindow)\r\ncom.apple.dt.Xcode.window.9267 AXSubrole: Optional(AXStandardWindow)\r\ncom.apple.dt.Xcode.window.9267 AXIdentifier: Optional(_IDEProductsUI:OrganizerWindow)\r\ncom.apple.dt.Xcode.window.9267 AXFocused: Optional(0)\r\ncom.apple.dt.Xcode.window.9267 AXFullScreen: Optional(0)\r\ncom.apple.dt.Xcode.window.9267 AXFrame: Optional(<AXValue 0x600002e4a900> {value = x:758.000000 y:43.000000 w:1000.000000 h:933.000000 type = kAXValueCGRectType})\r\ncom.apple.dt.Xcode.window.9267 AXPosition: Optional(<AXValue 0x600003568240> {value = x:758.000000 y:43.000000 type = kAXValueCGPointType})\r\ncom.apple.dt.Xcode.window.9267 AXGrowArea: nil\r\ncom.apple.dt.Xcode.window.9267 AXMinimizeButton: AXUIElement {\r\ncom.apple.dt.Xcode.window.9267      AXRole: Optional(AXButton)\r\ncom.apple.dt.Xcode.window.9267      AXTitle: nil\r\ncom.apple.dt.Xcode.window.9267      AXSubrole: Optional(AXMinimizeButton)\r\ncom.apple.dt.Xcode.window.9267      AXEnabled: Optional(1)\r\ncom.apple.dt.Xcode.window.9267      AXParent: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXTopLevelUIElement: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXWindow: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.apple.dt.Xcode.window.9267 }\r\ncom.apple.dt.Xcode.window.9267 AXDocument: nil\r\ncom.apple.dt.Xcode.window.9267 AXSections: [\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionDescription = Content;\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358d620> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXContent;\r\ncom.apple.dt.Xcode.window.9267         }),\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358ed00> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXContainer;\r\ncom.apple.dt.Xcode.window.9267         }),\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionDescription = Toolbar;\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358dfe0> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXToolbar;\r\ncom.apple.dt.Xcode.window.9267         }),\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionDescription = \"Content Navigator\";\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358c630> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXContentNavigator;\r\ncom.apple.dt.Xcode.window.9267         }),\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionDescription = Search;\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358cb40> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXSearch;\r\ncom.apple.dt.Xcode.window.9267         }),\r\ncom.apple.dt.Xcode.window.9267         Optional({\r\ncom.apple.dt.Xcode.window.9267             SectionDescription = \"Top Level Navigator\";\r\ncom.apple.dt.Xcode.window.9267             SectionObject = \"<AXUIElement 0x60000358da40> {pid=53883}\";\r\ncom.apple.dt.Xcode.window.9267             SectionUniqueID = AXTopLevelNavigator;\r\ncom.apple.dt.Xcode.window.9267         })\r\ncom.apple.dt.Xcode.window.9267 ]\r\ncom.apple.dt.Xcode.window.9267 AXCloseButton: AXUIElement {\r\ncom.apple.dt.Xcode.window.9267      AXRole: Optional(AXButton)\r\ncom.apple.dt.Xcode.window.9267      AXTitle: nil\r\ncom.apple.dt.Xcode.window.9267      AXSubrole: Optional(AXCloseButton)\r\ncom.apple.dt.Xcode.window.9267      AXEnabled: Optional(1)\r\ncom.apple.dt.Xcode.window.9267      AXParent: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXTopLevelUIElement: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXWindow: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.apple.dt.Xcode.window.9267 }\r\ncom.apple.dt.Xcode.window.9267 AXMain: Optional(1)\r\ncom.apple.dt.Xcode.window.9267 AXActivationPoint: Optional(<AXValue 0x60000358e010> {value = x:768.000000 y:57.000000 type = kAXValueCGPointType})\r\ncom.apple.dt.Xcode.window.9267 AXFullScreenButton: AXUIElement {\r\ncom.apple.dt.Xcode.window.9267      AXRole: Optional(AXButton)\r\ncom.apple.dt.Xcode.window.9267      AXTitle: nil\r\ncom.apple.dt.Xcode.window.9267      AXSubrole: Optional(AXFullScreenButton)\r\ncom.apple.dt.Xcode.window.9267      AXEnabled: Optional(1)\r\ncom.apple.dt.Xcode.window.9267      AXParent: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXTopLevelUIElement: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXWindow: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.apple.dt.Xcode.window.9267 }\r\ncom.apple.dt.Xcode.window.9267 AXProxy: nil\r\ncom.apple.dt.Xcode.window.9267 AXDefaultButton: AXUIElement {\r\ncom.apple.dt.Xcode.window.9267      AXRole: Optional(AXButton)\r\ncom.apple.dt.Xcode.window.9267      AXTitle: Optional(Distribute App)\r\ncom.apple.dt.Xcode.window.9267      AXIdentifier: Optional(_NS:14)\r\ncom.apple.dt.Xcode.window.9267      AXEnabled: Optional(1)\r\ncom.apple.dt.Xcode.window.9267      AXParent: AXUIElement(windowId=9267, title=nil, role=\"AXScrollArea\", subrole=nil)\r\ncom.apple.dt.Xcode.window.9267      AXTopLevelUIElement: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXWindow: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.apple.dt.Xcode.window.9267 }\r\ncom.apple.dt.Xcode.window.9267 AXMinimized: Optional(0)\r\ncom.apple.dt.Xcode.window.9267 AXParent: Optional(<AXUIElement Application 0x60000358e010> {pid=53883})\r\ncom.apple.dt.Xcode.window.9267 AXTitleUIElement: AXUIElement(windowId=9267, title=nil, role=\"AXStaticText\", subrole=nil)\r\ncom.apple.dt.Xcode.window.9267 AXCancelButton: nil\r\ncom.apple.dt.Xcode.window.9267 AXModal: Optional(0)\r\ncom.apple.dt.Xcode.window.9267 AXZoomButton: AXUIElement {\r\ncom.apple.dt.Xcode.window.9267      AXRole: Optional(AXButton)\r\ncom.apple.dt.Xcode.window.9267      AXTitle: nil\r\ncom.apple.dt.Xcode.window.9267      AXSubrole: Optional(AXFullScreenButton)\r\ncom.apple.dt.Xcode.window.9267      AXEnabled: Optional(1)\r\ncom.apple.dt.Xcode.window.9267      AXParent: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXTopLevelUIElement: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      AXWindow: AXUIElement(windowId=9267, title=\"Archives\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.apple.dt.Xcode.window.9267      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.apple.dt.Xcode.window.9267 }\r\ncom.apple.dt.Xcode.window.9267 AXSize: Optional(<AXValue 0x600003569e60> {value = w:1000.000000 h:933.000000 type = kAXValueCGSizeType})\r\ncom.apple.dt.Xcode.window.9267 AXToolbarButton: nil\r\ncom.apple.dt.Xcode.window.9267 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\n```",
      "created_at": "2025-04-06T19:55:05Z",
      "updated_at": "2025-04-07T06:50:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "amiv1",
        "avatar_url": "https://avatars.githubusercontent.com/u/1240012?u=870e2df6fd3b11c4692af4aa55dcb745928b6724&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfFMF",
      "number": 1250,
      "title": "Create (and move to) a new workspace with an arbitrary ID?",
      "body": "Is there any way to create a new workspace with an arbitrary ID/name? I'd like to add a binding to move the current node to a new workspace, but after reading the command list I'm not sure how to do that, other than by creating a separate binding for each possible workspace ID. Am I missing something obvious?",
      "created_at": "2025-03-31T02:36:34Z",
      "updated_at": "2025-04-06T22:58:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BatmanAoD",
        "avatar_url": "https://avatars.githubusercontent.com/u/2313807?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfLRr",
      "number": 1267,
      "title": "Creating workspaces with arbitrary IDs",
      "body": "Original discussion: https://github.com/nikitabobko/AeroSpace/discussions/1250\r\n\r\nI would like a way to create a workspace with an arbitrary ID, rather than hardcoding the possible workspace IDs in my configuration. This would also require some way to navigate to the newly-created workspaces.\r\n\r\nHere's what I have in my configuration now:\r\n\r\n```toml\r\n[mode.main.binding]\r\n    alt-shift-enter = 'exec-and-forget aerospace move-node-to-workspace --focus-follows-window $(expr $(aerospace list-workspaces --all | wc -l) + 1)'\r\n\r\n    alt-comma = 'exec-and-forget aerospace list-workspaces --monitor focused --empty no | aerospace workspace prev --wrap-around'\r\n    alt-period = 'exec-and-forget aerospace list-workspaces --monitor focused --empty no | aerospace workspace next --wrap-around'\r\n    alt-shift-comma = 'move-node-to-workspace prev --wrap-around --focus-follows-window'\r\n    alt-shift-period = 'move-node-to-workspace next --wrap-around --focus-follows-window'\r\n```\r\n\r\nThis enables creating a new workspace with an ID based on the number of existing workspaces plus one, and then navigating through all workspaces without knowing what their IDs are.\r\n\r\nIt would be nice if these were built-in commands rather than complex `exec-and-forget`s.",
      "created_at": "2025-04-06T22:54:54Z",
      "updated_at": "2025-04-06T22:58:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BatmanAoD",
        "avatar_url": "https://avatars.githubusercontent.com/u/2313807?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfJ_G",
      "number": 1261,
      "title": "Fixing the sluggishness on high cpu usage?",
      "body": "Hey,\r\n\r\nI have been using aerospace for a while now and I love it (coming from i3).\r\n\r\nBut I was getting some weird bad sluggish behaviours:\r\n- taking time to change workspace (freezing, then stacked commands executing all at once)\r\n- Windows suddenly appearing on my current workspace\r\n\r\nMy average cores usage was not high, but my `efficiency` core were pretty much maxed out when this was worse.\r\n\r\nI wondered if aerospace was  configured as a background mode, then only using my overloaded efficiency cores and becoming unresponsive.\r\n\r\nI then changed it to a `utility` mode and it seems to have much improved the overall stability: no sluggishness, not app appearing on my current workspace so far, much faster to change workspace and more windows.\r\n\r\nHere how you do it:\r\n- Quit aerospace\r\n- Run: \r\n`taskpolicy -c utility /Applications/AeroSpace.app/Contents/MacOS/AeroSpace`\r\n- Start aerospace (I did it from the terminal, I don't know if using the UI to start it impacts this or not:\r\n`/Applications/AeroSpace.app/Contents/MacOS/AeroSpace`\r\n\r\nI also tried to pin down which other processes were configured to run on efficiency core to see if I could lower the load on that as well.\r\nI just found Chrome 🤷 and set this as well as `utility` mode.\r\n\r\nCan you test on your end  and see if I was just lucky for the last 2 days?\r\n\r\nCheers.\r\n\r\n\r\n",
      "created_at": "2025-04-04T16:28:00Z",
      "updated_at": "2025-04-04T17:16:45Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mathieurousseau",
        "avatar_url": "https://avatars.githubusercontent.com/u/915153?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfJH5",
      "number": 1260,
      "title": "How can i tile my ios Simulator?",
      "body": "How can i auto tile my ios simulator to be always on the right and then my terminal show also auto adjust its width as well, right now my simulator is stuck in the left corner.\r\nAlso, im currently using the default config from aerospace docs.\r\n![image](https://github.com/user-attachments/assets/3f731c53-0502-4765-bbed-8ab38aed31bc)\r\n",
      "created_at": "2025-04-03T18:53:23Z",
      "updated_at": "2025-04-03T18:59:06Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Raiden-16F7",
        "avatar_url": "https://avatars.githubusercontent.com/u/59868973?u=31d90846bdb73726bbbe5c17986d64b5d695e3e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AedzM",
      "number": 1112,
      "title": "monospaced menu bar looks too wide for multi-monitor workspaces",
      "body": "Hi team,\r\n\r\nI tried the 1.17.0 Beta, I found monospaced menu bar looks too wide for multi-monitor workspaces, Ty.\r\n\r\n<img width=\"614\" alt=\"Screenshot 2025-02-18 at 12 29 56\" src=\"https://github.com/user-attachments/assets/c0b61683-8e4f-409b-936d-6189616608b3\" />\r\n",
      "created_at": "2025-02-18T20:31:29Z",
      "updated_at": "2025-04-03T16:56:41Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwgpI",
        "body": "https://github.com/nikitabobko/AeroSpace/pull/1049#issuecomment-2776378117 "
      },
      "user": {
        "login": "zhenpewu",
        "avatar_url": "https://avatars.githubusercontent.com/u/96321255?u=a0b2e07b23bcee117f7b6a30bc2fd580b74586bb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfBtQ",
      "number": 1239,
      "title": "Make Aerospace work nicely with AltTab",
      "body": "Hi Everyone! \r\n\r\nI would really like to start working with Aerospace, but there is one thing holding me back currently and that is getting it to work in combination with AltTab nicely. When I have AltTab active and I press alt + tab to switch, the screen starts toggling through different spaces. I am not skilled enough to understand what is happening. Does someone know how to make them play nicely?\r\n\r\nKind regards!",
      "created_at": "2025-03-26T20:48:18Z",
      "updated_at": "2025-04-03T16:40:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Basvos91",
        "avatar_url": "https://avatars.githubusercontent.com/u/75041953?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfGhs",
      "number": 1254,
      "title": "Multi-monitor focus question",
      "body": "Is there any way to configure aerospace to add a keyboard shortcut (alt-l) that does this:\r\n\r\nIf I have two monitors A and B, where A is to the left of B.\r\nIf I have two windows side by side on monitor A, and I'm focused on the left window, I'd like \"alt-l\" to focus on the window on the right. Then if I hit \"alt-l\" again, I'd like focus to move to the left-most window on Monitor B.\r\nSimilarly, \"alt-h\" should move focus to the right-most window on Monitor A.",
      "created_at": "2025-04-01T09:42:57Z",
      "updated_at": "2025-04-02T18:00:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwZVm",
        "body": "See: `focus --focus-boundaries`"
      },
      "user": {
        "login": "jtsao22",
        "avatar_url": "https://avatars.githubusercontent.com/u/98278?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfGsd",
      "number": 1255,
      "title": "Aerospace jumping between windows/spaces when switching language",
      "body": "Steps to reproduce:\r\n1. Have two spaces, each with an app open\r\n2. Focus on some input field in app one, then go to app two and focus on an input field there\r\n3. Change language and then quicky go to the other space (e.g. for me it's {ctrl+space, alt+i} )\r\n4. If the issue isn't reproduced immediately, repeat step 3\r\n\r\nWhile switching between spaces, you're going to notice that sometimes (for me it usually takes 2 space switches to reproduce) you're almost immediately returned back to the space you've switched from.\r\n\r\nFew notes:\r\n- I'm pretty sure it's related to the language switch thingy that appears next to the cursor as you switch languages (image below). If you dismiss it with esc, or wait for it to disappear, the problem isn't reproduced\r\n- Don't think it's a macOS problem, since the issue isn't reproduced when I switch apps using cmd+tab\r\n- Sometimes you're brought back to the previous space when you change language after switching spaces (not prior to, as described in steps above), but it's harder to reproduce. Not sure what happens, but the displayed window in this scenario looks unfocused and you have to focus on it manually (either with mouse, or by navigating via shortcut to _the space you're currently in_ according to the status bar) for aerospace navigation shortcuts to work\r\n\r\nTested on macOS 15.3.2 and aerospace 0.17.1-Beta\r\n\r\n![image](https://github.com/user-attachments/assets/5253326c-ea47-43e6-8806-4aa8102853d4)\r\n",
      "created_at": "2025-04-01T12:55:00Z",
      "updated_at": "2025-04-02T13:08:42Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwZ2j",
        "body": "The bug you're describing is the logic that keeps the currently focused workspace focused when a window dies. This logic is only applied to windows, not popups (reference in the source code: `MacWindow.swift` file `garbageCollect` function)\r\n\r\nBut according to your log:\r\n\r\n> com.googlecode.iterm2.window.222 treeNodeParent: AppBundle.MacosPopupWindowsContainer\r\n> com.googlecode.iterm2.window.222 isWindow: false\r\n\r\nThe language switch popup is properly detected being a popup, not a window, so I don't understand how it can happen.\r\n\r\n---\r\n\r\nTheory: iTerm 2 itself brings the focus back when one of its popups disappears. You can check it by:\r\n1. Quit AeroSpace\r\n2. Focus iTerm\r\n3. Trigger the language popup\r\n4. Quickly focus another app with cmd-tab\r\n\r\nDoes it happen in apps different from iTerm?\r\n\r\n--- \r\n\r\nI have the language popup disabled, and I don't use iTerm. Sorry, I don't care about this bug report enough to do anything with it. You can try to run AeroSpace from sources with the following patch to debug the problem yourself:\r\n\r\n```diff\r\ndiff --git a/Sources/AppBundle/tree/MacWindow.swift b/Sources/AppBundle/tree/MacWindow.swift\r\nindex afd561a7..b7edb334 100644\r\n--- a/Sources/AppBundle/tree/MacWindow.swift\r\n+++ b/Sources/AppBundle/tree/MacWindow.swift\r\n@@ -79,23 +79,6 @@ final class MacWindow: Window {\r\n         }\r\n         axObservers = []\r\n         let focus = focus\r\n-        if let deadWindowWorkspace, deadWindowWorkspace == focus.workspace ||\r\n-            deadWindowWorkspace == prevFocusedWorkspace && prevFocusedWorkspaceDate.distance(to: .now) < 1\r\n-        {\r\n-            switch parent.cases {\r\n-                case .tilingContainer, .workspace, .macosHiddenAppsWindowsContainer, .macosFullscreenWindowsContainer:\r\n-                    let deadWindowFocus = deadWindowWorkspace.toLiveFocus()\r\n-                    _ = setFocus(to: deadWindowFocus)\r\n-                    // Guard against \"Apple Reminders popup\" bug: https://github.com/nikitabobko/AeroSpace/issues/201\r\n-                    if focus.windowOrNil?.app != app {\r\n-                        // Force focus to fix macOS annoyance with focused apps without windows.\r\n-                        //   https://github.com/nikitabobko/AeroSpace/issues/65\r\n-                        deadWindowFocus.windowOrNil?.nativeFocus()\r\n-                    }\r\n-                case .macosPopupWindowsContainer, .macosMinimizedWindowsContainer:\r\n-                    break // Don't switch back on popup destruction\r\n-            }\r\n-        }\r\n     }\r\n \r\n     private func observe(_ handler: AXObserverCallback, _ notifKey: String) -> Bool {\r\n\r\n```"
      },
      "user": {
        "login": "CruelAddict",
        "avatar_url": "https://avatars.githubusercontent.com/u/36333286?u=faa11e29770c631bf6c3fdb362123f920d59e965&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfGbR",
      "number": 1253,
      "title": "Is AeroSpace incompatible with godot?",
      "body": "I've using aerospace for few weeks now and im happy with it, but recently I'm trying to learn godot for some game dev.\r\nSome how every time I open an godot project, the AeroSpace become very slow and hard to respon.\r\nI try this combination on my mac book pro and an IMac, end up the same result.\r\nCan any one share any experience with me or any thing I can do to avoid this problem.",
      "created_at": "2025-04-01T08:01:50Z",
      "updated_at": "2025-04-01T09:39:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "NYX-shell",
        "avatar_url": "https://avatars.githubusercontent.com/u/137836679?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfF_S",
      "number": 1252,
      "title": "Is it possible to move an entire tree to another workspace?",
      "body": "Forgive me is this is a stupid question or one with an obvious answer, but is there a way to move the entire tree to a different workspace? Sometimes I have a complex layout in place but I realize I want it to be in a different workspace. Is easily doable without moving each window one-by-one?\r\n\r\n[move-node-to-workspace](https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace) doesn't immediately appear to support this.",
      "created_at": "2025-03-31T19:15:23Z",
      "updated_at": "2025-03-31T20:08:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwX7M",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/940"
      },
      "user": {
        "login": "mybuddymichael",
        "avatar_url": "https://avatars.githubusercontent.com/u/186724?u=032eb3ad92c7074f3159b99c3440113b0a48e4b5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfEqJ",
      "number": 1247,
      "title": "the firefox pip bug not fixed yet",
      "body": "bug: https://github.com/nikitabobko/AeroSpace/issues/1108\r\n```bash\r\naerospace --version\r\naerospace CLI client version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n```\r\n<img width=\"2554\" alt=\"image\" src=\"https://github.com/user-attachments/assets/3b826a3e-c6c6-43cd-85db-c7e6bd8ce287\" />\r\n",
      "created_at": "2025-03-30T06:45:44Z",
      "updated_at": "2025-03-30T06:46:13Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "phucisstupid",
        "avatar_url": "https://avatars.githubusercontent.com/u/125681538?u=3c87a09d4ec9fceed3c871e5b52a812a23b88d7f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfEbi",
      "number": 1246,
      "title": "native full screen switch to other workspace",
      "body": "Hi, when I have a window in native full-screen mode on an external monitor and try to switch to a different workspace on the same monitor, the workspace doesn't change, and the full-screen window remains in focus. I can see in the macOS menu bar that the workspace is switching, but the full-screen window stays on top. Is this expected behavior?\r\n\r\nmac sequoia\r\nversion: 0.17.1-Beta",
      "created_at": "2025-03-29T18:48:21Z",
      "updated_at": "2025-03-29T18:48:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "techeddie",
        "avatar_url": "https://avatars.githubusercontent.com/u/55590878?u=afb379e8025019113b0e5b1f956eed1c4f245a26&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfDZX",
      "number": 1244,
      "title": "Auto Tiling - Horizontal / Vertical in sequence",
      "body": "Hi everyone,\n\nI am new to aerospace and trying to configure in a way I like. \n\nI was wondering, if there is a way to configure it to tile new windows one vertical than hortizontal ... maybe like in yabai?\n\nThanks!",
      "created_at": "2025-03-28T12:13:05Z",
      "updated_at": "2025-03-28T15:03:51Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwRIv",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/260"
      },
      "user": {
        "login": "ikamii",
        "avatar_url": "https://avatars.githubusercontent.com/u/98892946?u=78dfc273d34c7852a7c92c5b452e9c7f7480fadf&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AetYK",
      "number": 1188,
      "title": "Can't move focus through floating windows",
      "body": "The documentation clearly states moving focus should through floating windows should be possible. In my case it's not.\r\n\r\nExample configuration to reproduce\r\n```\r\ndefault-root-container-layout = 'accordion'\r\ndefault-root-container-orientation = 'horizontal'\r\n\r\n[[on-window-detected]]\r\n    check-further-callbacks = true\r\n    run = ['layout floating'] \r\n```\r\n\r\nThe intention is to make all windows float \"normally\" but still leverage the aerospace functionalities for 'custom spaces' and 'focus'. Is that possible ?\r\n",
      "created_at": "2025-03-07T09:34:38Z",
      "updated_at": "2025-03-28T13:37:33Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwRLT",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/521"
      },
      "user": {
        "login": "davibe",
        "avatar_url": "https://avatars.githubusercontent.com/u/123929?u=a22876fcbf9b4f101c6d004ec8ab51c9e9ea4cba&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae0yL",
      "number": 1208,
      "title": "monitor-id and monitor-appkit-nsscreen-screens-id",
      "body": "Hi, \r\n\r\nI’ve looked around quite a bit but couldn’t find a solid answer—maybe I just need more coffee! ☕🙂\r\n\r\nAre the values of monitor-appkit-nsscreen-screens-id and monitor-id supposed to be the same?\r\n\r\nI’m trying to debug an issue in [simple-bar](https://github.com/Jean-Tinland/simple-bar), where I have access to the real macOS screen ID, but I can’t seem to match it with Aerospace. Any insights would be greatly appreciated!\r\n\r\n**monitor-id** = aerospace own order ?\r\n**monitor-appkit-nsscreen-screens-id** = macOS screen order ?\r\n\r\n\r\n```\r\n❯ aerospace list-monitors --format '%{monitor-name} %{monitor-id} %{monitor-appkit-nsscreen-screens-id}' --json\r\n[\r\n  {\r\n    \"monitor-name\" : \"MSI MAG342CQR\",\r\n    \"monitor-appkit-nsscreen-screens-id\" : 1,\r\n    \"monitor-id\" : 1\r\n  },\r\n  {\r\n    \"monitor-appkit-nsscreen-screens-id\" : 2,\r\n    \"monitor-id\" : 2,\r\n    \"monitor-name\" : \"P34w-20\"\r\n  }\r\n]\r\n```\r\n\r\n```\r\n❯ swift -e 'import AppKit; for screen in NSScreen.screens { print(screen.localizedName, screen.deviceDescription[NSDeviceDescriptionKey(\"NSScreenNumber\")]!) }'\r\nMSI MAG342CQR 2\r\nP34w-20 3\r\n```",
      "created_at": "2025-03-14T05:25:28Z",
      "updated_at": "2025-03-28T13:36:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwRK4",
        "body": "`monitor-appkit-nsscreen-screens-id` is different from `screen.deviceDescription[NSDeviceDescriptionKey(\"NSScreenNumber\")]`\r\n\r\n`monitor-appkit-nsscreen-screens-id` is the index of monitor in `NSScreen.screens` array"
      },
      "user": {
        "login": "MatsHaby",
        "avatar_url": "https://avatars.githubusercontent.com/u/35406567?u=6b8f256c9c06924135047d5c60e1c7e375eb9b71&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aexxn",
      "number": 1203,
      "title": "crashing when unplugging screen",
      "body": "Happens when I unplug from my dock\r\n\r\n\r\n```\r\nMessage: Window(title: 'Optional(\"kogan-credit-card – sentry.py\")', role: 'Optional(\"AXWindow\")', subrole: 'Optional(\"AXStandardWindow\")', identifier: 'nil', modal: 'Optional(\"false\")', windowId: 'Optional(\"55041\")') is already unbound\r\nVersion: 0.16.0-Beta\r\nGit hash: d172dfd8a92f2d339f3d46a12a297e43e80768ca\r\nCoordinate: /Users/bobko/a/AeroSpace/Sources/AppBundle/tree/TreeNode.swift:115:34 unbindFromParent()\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100dd3648 $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlF + 740\r\n1   AeroSpace                           0x0000000100c83324 $s9AppBundle33restoreClosedWindowsCacheIfNeeded19newlyDetectedWindowSbAA0K0C_tF + 2548\r\n2   AeroSpace                           0x0000000100c70c28 $s9AppBundle9MacWindowC3get3app02axD07startupACSgAA0cA0C_So14AXUIElementRefaSbtFZTf4nnnd_n + 1648\r\n3   AeroSpace                           0x0000000100c6cfa0 $sSTsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlFSaySo14AXUIElementRefaG_9AppBundle6WindowCTg503$s9f55Bundle03MacA0C25detectNewWindowsAndGetAll7startupSayAA6h15CGSb_tFAGSgSo14D9RefaXEfU_AI0kF0CSbTf1cn_nTf4ngn_n + 248\r\n4   AeroSpace                           0x0000000100c657ac $s9AppBundle03MacA0C25detectNewWindowsAndGetAll7startupSayAA6WindowCGSb_tF + 256\r\n5   AeroSpace                           0x0000000100c555d0 $s9AppBundle41detectNewWindowsAndAttachThemToWorkspaces33_9D4CAE07A16011BB7304F8F5007BD739LL7startupySb_tF + 384\r\n6   AeroSpace                           0x0000000100c52f30 $s9AppBundle14refreshSession26screenIsDefinitelyUnlocked7startup10forceFocus4bodyxSb_S2bxyXEtlFyt_Tg503$s9a32Bundle16refreshAndLayout26screenfG31Unlocked7startupySb_SbtFyyXEfU_Tf1nnnnc_n + 736\r\n7   AeroSpace                           0x0000000100bf7824 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZTf4nd_n + 384\r\n8   AeroSpace                           0x0000000100bf6b08 $s10Foundation12NotificationVIeghn_So14NSNotificationCIeyBhy_TR + 116\r\n9   CoreFoundation                      0x000000019f41134c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 128\r\n10  CoreFoundation                      0x000000019f4a220c ___CFXRegistrationPost_block_invoke + 88\r\n11  CoreFoundation                      0x000000019f4a2154 _CFXRegistrationPost + 436\r\n12  CoreFoundation                      0x000000019f3dff9c _CFXNotificationPost + 732\r\n13  Foundation                          0x00000001a0599fd4 -[NSNotificationCenter postNotificationName:object:userInfo:] + 88\r\n14  AppKit                              0x00000001a311e9e8 applicationStatusSubsystemCallback + 728\r\n15  LaunchServices                      0x000000019f8b7118 ___LSScheduleNotificationFunction_block_invoke_2 + 52\r\n16  CoreFoundation                      0x000000019f41c420 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28\r\n17  CoreFoundation                      0x000000019f41c330 __CFRunLoopDoBlocks + 356\r\n18  CoreFoundation                      0x000000019f41b760 __CFRunLoopRun + 2432\r\n19  CoreFoundation                      0x000000019f41a724 CFRunLoopRunSpecific + 588\r\n20  HIToolbox                           0x00000001aa972530 RunCurrentEventLoopInMode + 292\r\n21  HIToolbox                           0x00000001aa978348 ReceiveNextEventCommon + 676\r\n22  HIToolbox                           0x00000001aa978508 _BlockUntilNextEventMatchingListInModeWithFilter + 76\r\n23  AppKit                              0x00000001a2f85034 _DPSNextEvent + 660\r\n24  AppKit                              0x00000001a38e92d4 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688\r\n25  AppKit                              0x00000001a2f78060 -[NSApplication run] + 480\r\n26  AppKit                              0x00000001a2f4e854 NSApplicationMain + 888\r\n27  SwiftUI                             0x00000001ce06ba6c $s7SwiftUI6runAppys5NeverOSo21NSApplicationDelegate_So11NSResponderCXcFTf4e_nAA07TestingdG0C_Tg5Tm + 160\r\n28  SwiftUI                             0x00000001ce4df3f8 $s7SwiftUI6runAppys5NeverOxAA0D0RzlF + 140\r\n29  SwiftUI                             0x00000001ce85af38 $s7SwiftUI3AppPAAE4mainyyFZ + 224\r\n30  AeroSpace                           0x0000000100bf53ec main + 36\r\n31  dyld                                0x000000019efb4274 start + 2840\r\n```",
      "created_at": "2025-03-11T22:31:04Z",
      "updated_at": "2025-03-28T13:34:48Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwRKv",
        "body": "Please update, it's been fixed in the latest versions"
      },
      "user": {
        "login": "fraser-langton",
        "avatar_url": "https://avatars.githubusercontent.com/u/39111573?u=1e14ac1487c8bce698a62d016b6190c0dda88c12&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae1Or",
      "number": 1209,
      "title": "Zen Browser 1.8.* and  1.9.1b is ignoring workspace",
      "body": "I am using latest version of Aerospace and after restart of my MacMini  M4 , the zen browser has updated and now it is ignoring workspaces. It is visible on all workspaces. Tiled fullscreen. If a workspace has open windows it be behind the window . ",
      "created_at": "2025-03-14T13:29:09Z",
      "updated_at": "2025-03-28T13:34:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nelreina",
        "avatar_url": "https://avatars.githubusercontent.com/u/5773049?u=aed54d6843c772a5d2ac92869aae8f3e88c42e23&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae9Hs",
      "number": 1228,
      "title": "Edge and Workspace Conflict",
      "body": "If there are multiple instances of Edge in different monitors and workspaces, it switches to a random one.\r\n\r\nFor example,\r\n\r\n- Workspace A - Edge + Slack - Monitor 1\r\n- Workspace B - Edge - Monitor 2\r\n- Workspace C - Edge + Cursor - Monitor 3\r\n- Workspace D - Discord - Monitor 1/2/3\r\n\r\nWhen I press `alt + B`, it randomly goes to A/B/C but never to D.\r\n\r\nThis problem is very specific to the Edge browser.\r\n\r\nAny help is appreciated. Thanks.",
      "created_at": "2025-03-21T16:20:07Z",
      "updated_at": "2025-03-28T13:29:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dipta007",
        "avatar_url": "https://avatars.githubusercontent.com/u/13894030?u=c0a59c8f3eec895822cf2612d714790547f7170d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AclvZ",
      "number": 713,
      "title": "Always Keep Floating Windows On Top - Define workspace layouts",
      "body": "It's possible for a floating window to slide behind the tiled windows.  If there is a way to prevent it? But I would expect it to the be the default behavior because who wants a floating window to hide behind another window? This may be due to the fact that floating windows are part of the layout tree.  \r\n\r\nI would also like to define workspaces where all windows float while other workspaces tile.\r\n\r\nOther tiling managers have the concept of a scratchpad that can slide in or fade in on-top of your tiling windows and you can stick things like widgets and stuff on the scratchpad. Then show or hide the scratchpad as needed. \r\n\r\nI see some preliminary consideration for sticky windows (available on all workspaces) that would be nice to have as well.\r\n\r\nThere appears to be a bug where some windows (Arc Browser) may be moved to the furthest right on the layout tree.  This usually happens when exiting full screen, etc. The window then moves on it's own.  Keep my windows where I positioned them and don't re-sort them.  ",
      "created_at": "2024-11-16T19:20:16Z",
      "updated_at": "2025-03-27T21:01:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvEDO",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/4"
      },
      "user": {
        "login": "stottm",
        "avatar_url": "https://avatars.githubusercontent.com/u/83365555?u=e49f4ca79b800133e976f5ce0023712bd8a9d4e4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfCho",
      "number": 1241,
      "title": "Browser prompting for security key auth crashes AeroSpace",
      "body": "##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n    Using Firefox 136.0.3 (aarch64) when needing to change some Github settings it prompts for user security key (if that is what they have as their 2nd Auth) and that caused a crash and this box to pop up. Didn't have an image to post but this is what I'm talking about: https://www.yubion.com/post/setting-up-two-factor-authentication-using-yubikey-on-github?lang=en\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.17.1-Beta\r\nGit hash: 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nDate: 2025-03-27 15:24:46 +0000\r\nmacOS version: Version 15.3.2 (Build 24D81)\r\nCoordinate: AppBundle/Window.swift:7:72 parent\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\nrefreshSessionEvent: Optional(Common.RefreshSessionEvent.ax(\"AXFocusedWindowChanged\"))\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x00000001003e23dc $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlF + 1472\r\n1   AeroSpace                           0x0000000100278f2c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 144\r\n2   AeroSpace                           0x00000001002782c4 $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 64\r\n3   AeroSpace                           0x0000000100256d58 $s9AppBundle16updateFocusCacheyyAA6WindowCSgF + 68\r\n4   AeroSpace                           0x00000001002592a8 $s9AppBundle14refreshSession_26screenIsDefinitelyUnlocked7startup4bodyx6Common07RefreshD5EventO_S2bxyXEtlFyt_Tg503$s9a27Bundle16refreshAndLayout_26efg26Unlocked7startupy6Common19ldM14O_S2btFyyXEfU_Tf1nnnnc_n + 632\r\n5   AeroSpace                           0x000000010025eb60 $s9AppBundle10refreshObs_2ax5notif4dataySo13AXObserverRefa_So011AXUIElementI0aSo08CFStringI0aSvSgtFTo + 108\r\n6   HIServices                          0x000000018fe6eaac _XXMIGPostNotification + 896\r\n7   HIServices                          0x000000018fe9ffcc _XPostNotification + 356\r\n8   HIServices                          0x000000018fe4f394 mshMIGPerform + 212\r\n9   CoreFoundation                      0x00000001894f8e38 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 60\r\n10  CoreFoundation                      0x00000001894f8d58 __CFRunLoopDoSource1 + 524\r\n11  CoreFoundation                      0x00000001894f76b8 __CFRunLoopRun + 2248\r\n12  CoreFoundation                      0x00000001894f6734 CFRunLoopRunSpecific + 588\r\n13  HIToolbox                           0x0000000194a65530 RunCurrentEventLoopInMode + 292\r\n14  HIToolbox                           0x0000000194a6b348 ReceiveNextEventCommon + 676\r\n15  HIToolbox                           0x0000000194a6b508 _BlockUntilNextEventMatchingListInModeWithFilter + 76\r\n16  AppKit                              0x000000018d06e848 _DPSNextEvent + 660\r\n17  AppKit                              0x000000018d9d4c24 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688\r\n18  AppKit                              0x000000018d061874 -[NSApplication run] + 480\r\n19  AppKit                              0x000000018d038068 NSApplicationMain + 888\r\n20  SwiftUI                             0x00000001b819670c $s7SwiftUI6runAppys5NeverOSo21NSApplicationDelegate_So11NSResponderCXcFTf4e_nAA07TestingdG0C_Tg5Tm + 160\r\n21  SwiftUI                             0x00000001b860c9a0 $s7SwiftUI6runAppys5NeverOxAA0D0RzlF + 140\r\n22  SwiftUI                             0x00000001b8988e68 $s7SwiftUI3AppPAAE4mainyyFZ + 224\r\n23  AeroSpace                           0x00000001001f9500 main + 36\r\n24  dyld                                0x0000000189090274 start + 2840\r\n",
      "created_at": "2025-03-27T15:39:40Z",
      "updated_at": "2025-03-28T13:27:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwPW9",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/706"
      },
      "user": {
        "login": "EnocFlores",
        "avatar_url": "https://avatars.githubusercontent.com/u/33188190?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AfB1e",
      "number": 1240,
      "title": "new release",
      "body": "hey, could we get a 17.2 release in order to push some of the new features onto a release; namely the new query values...",
      "created_at": "2025-03-27T00:17:52Z",
      "updated_at": "2025-03-27T00:18:12Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "acsandmann",
        "avatar_url": "https://avatars.githubusercontent.com/u/157552025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae_qx",
      "number": 1238,
      "title": "multi monitor case, when docker moved, the outer.bottom messed up",
      "body": "I use two monitors and show a sketchybar at the bottom, so I config the `outer.bottom =     [{monitor.1 = 40}, 10]`, when the docker shows at the monitor 2, everything looks fine, but when it goes to monitor 1, the windows will overlap with the bar on monitor 1 while the gap will be large on monitor 2. I don't know the cause, can anyone help?",
      "created_at": "2025-03-25T01:42:59Z",
      "updated_at": "2025-03-25T01:43:00Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "marsjane",
        "avatar_url": "https://avatars.githubusercontent.com/u/45665172?u=f22086d5203c4ba3024c3f826ced1a090e014128&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae_Yv",
      "number": 1236,
      "title": "Widescreen layout broken",
      "body": "nothing to see here",
      "created_at": "2025-03-24T17:34:12Z",
      "updated_at": "2025-03-24T17:43:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ricardomatias",
        "avatar_url": "https://avatars.githubusercontent.com/u/8850708?u=386bddd52eee02f37cc6ade7c93de2030cb0e29a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae_Q1",
      "number": 1234,
      "title": "FL Studio App (com.image-line.flstudio): Window is prevalent in all virtual workspaces, cannot run aerospace actions on window",
      "body": "Hello all,\r\n\r\nI have an issue with FL Studio, I've tried to reset all settings, but the following listed behaviors are persistent: \r\n1. Aerospace doesn't seem to identify FL Studio, it simply continues to span in the background across all virtual workspaces.\r\n2. This means that I can't change focus to FL Studio, and that I can manually change the dimensions of the window.\r\n\r\nPlease see attached: https://github.com/user-attachments/assets/77e09d39-6d92-4629-a85c-e0dc3ba3b813\r\n",
      "created_at": "2025-03-24T15:16:36Z",
      "updated_at": "2025-03-24T17:28:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "HYAdev",
        "avatar_url": "https://avatars.githubusercontent.com/u/70421236?u=ba136ff219cc8b1c1f64af9c138ddaa9ab63fd46&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae_FE",
      "number": 1233,
      "title": "Switching Between Applications with No Animation Delay?",
      "body": "[Per the GitHub README](https://github.com/nikitabobko/AeroSpace?tab=readme-ov-file#key-features)\r\n> Fast workspaces switching without animations and without the necessity to disable SIP\r\n\r\nThis led me to believe that I could do the following:\r\n\r\n1. Set application A to fullscreen\r\n2. Set application B to fullscreen\r\n3. Press *some* keybind, and toggle between application A and application B\r\n4. This toggle is instant, with no animation\r\n\r\nI understand that this can be done with other applications after disabling SIP, so the appeal of AeroSpace to me was the promise that this could be done _without_ disabling SIP.\r\n\r\nAfter spending a few hours using this app, I was able to get steps 1-3 working, but not step 4.\r\n\r\nI've spent some time in [the docs](https://nikitabobko.github.io/AeroSpace/guide) and trying a few different things, but was unable to get steps 1-4 all working.\r\n\r\nSo my question is:\r\n- Is it possible via AeroSpace to get steps 1-4 working **without disabling SIP**?\r\n\r\n\r\nThanks!\r\n",
      "created_at": "2025-03-24T12:24:05Z",
      "updated_at": "2025-03-24T12:24:06Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "joeyagreco",
        "avatar_url": "https://avatars.githubusercontent.com/u/57115019?u=6bb58cc8eb8b6e959cc22d9af621b5cfe98e8edc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyXC",
      "number": 945,
      "title": "Multiple configs for different screen setups",
      "body": "I use a laptop at work which is plugged into a monitor, otherwise I use my laptop screen.\r\n\r\nCurrently I comment part of my config depending on the location:\r\n\r\n```toml\r\n# Desktop\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'  # WezTerm\r\nrun = 'move-node-to-workspace 1'       # Terminal workspace\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefox'      # Firefox\r\nrun = 'move-node-to-workspace 1'       # Browser workspace\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.figma.Desktop'        # Figma\r\nrun = 'move-node-to-workspace 2'       # Design workspace\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"net.whatsapp.WhatsApp\"\r\nrun = 'move-node-to-workspace 3'       # Communication workspace\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.cron.electron'        # Calendar\r\nrun = 'move-node-to-workspace 4'       \r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'        # Spotify\r\nrun = 'move-node-to-workspace 5'       # Design workspace\r\n\r\n# Laptop\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.github.wez.wezterm'  # WezTerm\r\n# run = 'move-node-to-workspace 1'       # Terminal workspace\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'org.mozilla.firefox'      # Firefox\r\n# run = 'move-node-to-workspace 2'       # Browser workspace\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.figma.Desktop'        # Figma\r\n# run = 'move-node-to-workspace 3'       # Design workspace\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = \"net.whatsapp.WhatsApp\"\r\n# run = 'move-node-to-workspace 4'       # Communication workspace\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.cron.electron'        # Calendar\r\n# run = 'move-node-to-workspace 5'       \r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.spotify.client'        # Spotify\r\n# run = 'move-node-to-workspace 6'       # Design workspace\r\n```\r\n\r\nand then run :\r\n\r\n`bash\r\nosascript -e 'quit app \"AeroSpace\"' && open -a AeroSpace\r\n`\r\n\r\nIt would be great to have a way of switiching layouts, or configs.",
      "created_at": "2025-01-11T12:25:10Z",
      "updated_at": "2025-03-23T14:03:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alexokten",
        "avatar_url": "https://avatars.githubusercontent.com/u/60609268?u=a7377a23c5f81be314f2178c1eb7acd0bd555ae2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae-L_",
      "number": 1230,
      "title": "Binding reload-config in the main binding mode is unreliable.",
      "body": "To reproduce, run AeroSpace with the following config snippet:\r\n```\r\n[mode.main.binding]\r\n    # dialog command is to indicate whether the keybinding was triggered.\r\n    alt-e = ['reload-config', '''exec-and-forget osascript -e 'display dialog \"Test\"' ''']\r\n```\r\n\r\nPressing alt-e once triggers the keybind as expected. However, pressing alt-e a second time will no longer trigger the key binding.\r\n\r\nI suspect the issue is that the [HotKey library](https://github.com/soffes/HotKey/) ties hotkey registration/deregistration to the lifetime of the HotKey object: https://github.com/soffes/HotKey/blob/a3cf605d7a96f6ff50e04fcb6dea6e2613cfcbe4/Sources/HotKey/HotKey.swift#L30-L50\r\n\r\nHotkey handlers are called with the `HotKey` object still in scope:\r\nhttps://github.com/soffes/HotKey/blob/a3cf605d7a96f6ff50e04fcb6dea6e2613cfcbe4/Sources/HotKey/HotKeysController.swift#L127-L133\r\n\r\nWhen a `ReloadConfigCommand` triggered by a hotkey resets and reinstalls hotkeys, the `HotKey` for the reload is still alive. I suspect this causes attempts to register the same hotkey in the reloaded config to fail silently at:\r\nhttps://github.com/soffes/HotKey/blob/a3cf605d7a96f6ff50e04fcb6dea6e2613cfcbe4/Sources/HotKey/HotKeysController.swift#L69-L72\r\n\r\nIt's pretty easy to work around this in practice by binding `exec-and-forget aerospace reload-config` instead of `reload-config`, but it would be nice if this sharp edge didn't exist.\r\n\r\nPerhaps a fix could be to change `ReloadConfigCommand` to dispatch a separate callback to the main thread so that the config reload no longer runs from inside a hotkey handler. Alternately, `resetHotKeys` could unregister existing hotkeys by setting `isPaused = true` on every hotkey before clearing `hotkeys`.\r\n\r\nbtw, thank you so much for building AeroSpace - I have long wished for a macOS window manager that implements its own workspaces instead of building on the not-great Spaces model/APIs!",
      "created_at": "2025-03-23T09:55:40Z",
      "updated_at": "2025-03-23T11:15:42Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AwCL4",
        "body": "Thanks for the thorough issue. I reproduced the problem and converted it to an issue https://github.com/nikitabobko/AeroSpace/issues/1231"
      },
      "user": {
        "login": "rickyz",
        "avatar_url": "https://avatars.githubusercontent.com/u/616784?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae81L",
      "number": 1226,
      "title": "After quitting application, remain in the current workspace, even if it's left empty?",
      "body": "I have observed that if I have say 2 application windows (A1 & A2) on workspace 1 (W1), and 1 application window (A3) on workspace 2 (W2):\r\n\r\n- If I quit W1/A2:\r\n  - focus moves to W1/A1\r\n- If I quit W1/A1:\r\n  - focus moves to W2/A3\r\n\r\nIs it possible to remain on workspace 1, even if it's left empty?",
      "created_at": "2025-03-21T11:21:31Z",
      "updated_at": "2025-03-21T11:21:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "carlosneves0",
        "avatar_url": "https://avatars.githubusercontent.com/u/9116538?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae2hD",
      "number": 1212,
      "title": "Grid layout",
      "body": "When there are several windows on a workspace, it can be easier (than accordian layouts) to have an overview of these windows with a grid-layout (where the number of rows and columns in the grid adapt to the number of windows).\r\n\r\nThis is also a useful layout to have for smaller numbers of windows (e.g. 4 windows would automatically distribute to a quadrant of the workspace).",
      "created_at": "2025-03-15T18:43:35Z",
      "updated_at": "2025-03-20T10:51:06Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "edgimar",
        "avatar_url": "https://avatars.githubusercontent.com/u/393850?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aerhp",
      "number": 1176,
      "title": "Change App Assignments Based on Monitor",
      "body": "Hi, I have an idea for how I want to manage my windows but I'm not entirely sure how to go about it. I basically have two \"modes\" for using aerospace:\r\n- Builtin Display\r\n  - This should basically have a workspace per app using mnemonics (t for terminal, b for browser, etc)\r\n- Ultrawide\r\n  - For this I want to have two or three apps per workspace, and just have workspaces 1,2,3...\r\n\r\nThey aren't used together, as when I plug my laptop in I close it and put it in a stand.\r\n\r\nI feel like I need some mix of the `on-window-detected` callbacks and `workspace-to-monitor-force-assignment`, but I'm not sure how to have it handle the two different workspaces inside the callback.\r\n\r\nHas anyone done anything similar? Is this even possible?\r\n\r\nThanks!",
      "created_at": "2025-03-05T13:35:56Z",
      "updated_at": "2025-03-19T10:27:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "GV14982",
        "avatar_url": "https://avatars.githubusercontent.com/u/7041175?u=698504a26b0d23796497defc48d1d143aa057221&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae5qi",
      "number": 1222,
      "title": "0.17.1-Beta, macOS 15.3.2, Flakes out after ~4 hours, hides and won't let me select windows.",
      "body": "New user here, tried searching around and don't see anything that exactly fits this issue.  It's probably something I'm doing.  Next step is to enable debug mode, but any insight is appreciated.\r\n\r\nConfig:\r\n```\r\nafter-startup-command = [\r\n  'exec-and-forget sketchybar',\r\n  'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0',\r\n]\r\n\r\nexec-on-workspace-change = [\r\n  '/bin/bash',\r\n  '-c',\r\n  'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE --reload',\r\n  'exec-and-forget borders active_color=0xffe1e3e4 inactive_color=0xff494d64 width=5.0',\r\n]\r\n\r\nstart-at-login = true\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 300\r\n\r\ndefault-root-container-layout = 'tiles'\r\n\r\ndefault-root-container-orientation = 'auto'\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Forklift'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'ChatGPT'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'finder'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'slack'\r\nrun = ['move-node-to-workspace S']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Arc'\r\nrun = ['move-node-to-workspace A']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Discord'\r\nrun = ['move-node-to-workspace D']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'Messages'\r\nrun = ['move-node-to-workspace M']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'kitty'\r\nrun = ['move-node-to-workspace T']\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'OrcaSlicer'\r\nrun = ['move-node-to-workspace O']\r\n\r\n[key-mapping]\r\npreset = 'dvorak'\r\n\r\n[gaps]\r\ninner.horizontal = 20\r\ninner.vertical = 20\r\nouter.left = 20\r\nouter.bottom = 20\r\nouter.top = 10\r\nouter.right = 80\r\n\r\n[mode.main.binding]\r\nalt-ctrl-shift-f = 'fullscreen'\r\nalt-ctrl-f = 'layout floating tiling'\r\n\r\nalt-shift-left = 'join-with left'\r\nalt-shift-down = 'join-with down'\r\nalt-shift-up = 'join-with up'\r\nalt-shift-right = 'join-with right'\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1 --focus-follows-window'\r\nalt-shift-2 = 'move-node-to-workspace 2 --focus-follows-window'\r\nalt-shift-3 = 'move-node-to-workspace 3 --focus-follows-window'\r\nalt-shift-4 = 'move-node-to-workspace 4 --focus-follows-window'\r\n\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\nalt-shift-semicolon = 'mode service'\r\nalt-shift-enter = 'mode apps'\r\n\r\nalt-t = 'exec-and-forget open -a /Applications/Kitty.app'\r\nalt-c = 'exec-and-forget open -a /Applications/ChatGPT.app'\r\nalt-a = 'exec-and-forget open -a /Applications/Arc.app'\r\nalt-o = 'exec-and-forget open -a /Applications/OrcaSlicer.app'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = [\r\n  'layout floating tiling',\r\n  'mode main',\r\n] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n```",
      "created_at": "2025-03-18T20:49:41Z",
      "updated_at": "2025-03-18T21:25:57Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sinkr",
        "avatar_url": "https://avatars.githubusercontent.com/u/696374?u=9716c7b134bb62ae95d3c72f6b87f9bff6d2fc5a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae5Jq",
      "number": 1219,
      "title": "Opening pop-up in Calendar app (new event) makes Aerospace refocus to the next available window on the workspace",
      "body": "Stumbling on a bit of an annoying quirk quite often. \r\n\r\nThis happens f you have both the Apple Calendar app, and one or more other applications open in one workspace. \r\nIf you are in the Calendar app, and create a new event - this creates a small pop-up to type in the event details - Aerospace will switch to the next window after a few keystrokes. \r\n\r\nThis gets annoying quickly, especially if that next window is Slack or something that allows typing or messaging. \r\nWorkaround is temporarily closing the other window(s) and just having the Calendar app open in a workspace. \r\n\r\n**Steps to reproduce**\r\n1. Have Calendar and another application open\r\n2. Create a new Calendar event, start typing in the title\r\n3. Observe what happens after a few keystrokes\r\n\r\n**Expected result**\r\nThe pop-up stays in focus and you can finish the event\r\n\r\n**Actual result**\r\nThe pop-up is unfocused, and the next available window is selected. ",
      "created_at": "2025-03-18T13:43:16Z",
      "updated_at": "2025-03-18T15:22:24Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Av1jv",
        "body": "Thanks, converted to an issue: https://github.com/nikitabobko/AeroSpace/issues/1220"
      },
      "user": {
        "login": "hiddekramermusic",
        "avatar_url": "https://avatars.githubusercontent.com/u/101638728?u=b1c19681cb9830c8fbe03f6c97ae9685a0d71429&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae4sw",
      "number": 1218,
      "title": "limited available window",
      "body": "Aerospace opens 10th windows which I can't reach using keyboard. Is there anyway so that workspace only last til 10 instead of making it be able to create any workspace",
      "created_at": "2025-03-18T06:09:10Z",
      "updated_at": "2025-03-18T06:09:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DMelisena",
        "avatar_url": "https://avatars.githubusercontent.com/u/65994685?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzW8",
      "number": 973,
      "title": "Video stuttering when a web browser is in tiling layout",
      "body": "Summary:\r\nWhenever I am watching any video the video will stutter through as choppy playback, sound unaffected, unless I move my mouse constantly on the video. So far I've had this happen only on subscription sites (Paramount, Disney, Hulu, etc) but not sites like YouTube or CorridorDigital.com.\r\nIf I take the window out of tiling and float it the issue goes away and the video plays as normal with no choppiness. This happens in Edge, Chrome, Brave, Firefox Dev, and Zen.",
      "created_at": "2025-01-12T17:36:37Z",
      "updated_at": "2025-03-18T02:01:44Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TaylorJonesTRT",
        "avatar_url": "https://avatars.githubusercontent.com/u/9523996?u=9c62ba9ec15a5277e242820846dc8efe46da7aab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae4Eq",
      "number": 1217,
      "title": "Apple DAW Logic Pro not working with Aerospace",
      "body": "It seems Aerospace can't really perform any window resizing on Logic Pro.",
      "created_at": "2025-03-17T14:22:24Z",
      "updated_at": "2025-03-17T14:58:49Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sorae42",
        "avatar_url": "https://avatars.githubusercontent.com/u/34794115?u=98f190855e29b62db23b256d1bf3c436a6d73e51&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae28R",
      "number": 1213,
      "title": "Windows coming into the workspace seemingly randomly",
      "body": "I think this issue has been happening since 0.17.0 but don't pin me exactly on that. \r\n\r\nI've had it a few times now that some application windows randomly come into the current workspace I'm in.\r\n\r\nI think this issue has been happening more frequently when the system is a bit under stress and maybe the whole window management is under stress (this sometimes happens with Applications like IntelliJ who make some APIs slow as far as I understood)\r\n\r\nHas anyone else had windows appearing in their workspace? It always seems to be the same kind of applications. In my case Microsoft Outlook and IntelliJ",
      "created_at": "2025-03-16T07:05:57Z",
      "updated_at": "2025-03-16T12:57:39Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Avvmu",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1216"
      },
      "user": {
        "login": "check24-danielpaschsannapiu",
        "avatar_url": "https://avatars.githubusercontent.com/u/139363947?u=44579782eaa18f6d5738316c4d2d3be058db4fdc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AesXy",
      "number": 1182,
      "title": "aerospace windows layout become chaos when mac wake up from sleep almost every time",
      "body": "I love this program but recently when I wake up mac from sleep the layout is always in chaos. I'm confused and I don't want to give each app a specified workspace I want to manage by myself. I even try to use hammserspoon to record layout when the mac is sleeping but useless. So I have no idea to solve this problem. :)\r\n\r\nthis is my version , system info and config\r\n```\r\naerospace CLI client version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n```\r\n                                              OS: macOS Sequoia 15.3.1 arm64\r\n                                         │ ├ Kernel: Darwin 24.3.0\r\n                                         │ ├󰏖 Packages: 284 (brew), 39 (brew-cask)\r\n                                         │ ├ Shell: zsh 5.9\r\n                                         │ ├ OS Age: 20153 days\r\n                                         └ └ Uptime: 1 day, 8 hours, 23 mins\r\n```\r\n\r\n```toml\r\nafter-login-command = [\r\n # 'exec-and-forget ~/.config/aerospace/scripts/pin_window.sh $AEROSPACE_PREV_WORKSPACE $AEROSPACE_FOCUSED_WORKSPACE',\r\n]\r\n\r\nexec-on-workspace-change = [\r\n  '/bin/bash',\r\n  '-c',\r\n  '$(brew --prefix)/bin/sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE',\r\n  # '~/.config/aerospace/scripts/pin_window.sh $AEROSPACE_PREV_WORKSPACE $AEROSPACE_FOCUSED_WORKSPACE',\r\n]\r\nafter-startup-command = [\r\n  # 'exec-and-forget ~/.config/aerospace/scripts/bsp_tiling.sh',\r\n]\r\n\r\non-focus-changed = [\r\n  'exec-and-forget sketchybar --trigger aerospace_focus_change',\r\n  'move-mouse window-lazy-center',\r\n]\r\n\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\nstart-at-login = false\r\n\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 0\r\n\r\ndefault-root-container-layout = 'tiles'\r\n\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 10\r\ninner.vertical = 10\r\nouter.left = 5\r\nouter.right = 5\r\nouter.bottom = [{ monitor.'^built-in retina display$' = 3 }, 5]\r\nouter.top = [{ monitor.'^built-in retina display$' = 5 }, 40]\r\n\r\n[exec] # Again, you don't need to copy all config sections to your config.\r\ninherit-env-vars = true # If you don't touch \"exec\" section,\r\n[exec.env-vars] # it will fallback to \"default-config.toml\"\r\nPATH = '/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}'\r\nXDG_CONFIG_HOME = '${HOME}/.config'\r\n\r\n[mode.main.binding]\r\n\r\nalt-t=[\r\n  'exec-and-forget ~/.config/aerospace/scripts/center_window.sh',\r\n  'move-mouse window-force-center',\r\n]\r\n\r\nshift-alt-f = [\r\n  'layout floating tiling',\r\n  'mode main',\r\n] \r\n\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\nalt-k = ['exec-and-forget open /Applications/Kitty.app']\r\nalt-z = ['exec-and-forget open -a Zotero']\r\nalt-i = ['exec-and-forget open -a iTerm']\r\nalt-g = ['exec-and-forget open -a Ghostty']\r\nalt-w = ['exec-and-forget open /Applications/WeChat.app']\r\nalt-q = ['exec-and-forget open /Applications/QQ.app']\r\nalt-a = ['exec-and-forget open /Applications/Arc.app']\r\nalt-f = ['exec-and-forget open -a Finder']\r\nalt-s = ['exec-and-forget open -a Spotify']\r\nalt-c = ['exec-and-forget open -a Visual\\ Studio\\ Code']\r\n\r\ncmd-shift-backspace = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger request_bg REQUEST_BG=false',\r\n]\r\ncmd-shift-w = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger request_bg REQUEST_BG=true',\r\n]\r\n\r\ncmd-shift-down = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger cycle_bg CYCLE=next',\r\n]\r\n\r\ncmd-shift-up = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger cycle_bg CYCLE=prev',\r\n]\r\n\r\ncmd-shift-right = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger select_bg SELECT=true',\r\n]\r\n\r\n\r\ncmd-shift-left = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger select_bg SELECT=false',\r\n]\r\n\r\ncmd-shift-enter = [\r\n  'exec-and-forget $(brew --prefix)/bin/sketchybar --trigger select_bg SELECT=true',\r\n]\r\n\r\nshift-ctrl-s=[\r\n    'exec-and-forget $(brew --prefix)/bin/aerospace list-windows --all --format \"%{window-id}%{workspace}%{app-bundle-id}\" --json > ~/.config/aerospace/scripts/layout.json && osascript -e \"display notification \\\"layout save\\\" with title \\\"success\\\"\"'\r\n]\r\n\r\nshift-ctrl-r=[\r\n    'exec-and-forget ~/.config/aerospace/scripts/recovery_layout.sh'\r\n]\r\n\r\nshift-ctrl-c=[\r\n    'exec-and-forget ~/.config/aerospace/scripts/custom_bar_themes light || ~/.config/aerospace/scripts/custom_bar_themes dark'\r\n]\r\n\r\nshift-ctrl-b=[\r\n    'exec-and-forget ~/.config/aerospace/scripts/custom_bar_themes blur || ~/.config/aerospace/scripts/custom_bar_themes black'\r\n]\r\nshift-ctrl-t=[\r\n    'exec-and-forget ~/.config/aerospace/scripts/change_theme.sh'\r\n]\r\n\r\nshift-ctrl-w=[\r\n    'exec-and-forget ~/.config/aerospace/scripts/random_wallpapers.sh ~/.config/wallpapers'\r\n]\r\n\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\nalt-shift-enter = 'flatten-workspace-tree'\r\nctrl-w = 'close'\r\n\r\nalt-shift-p = 'fullscreen'\r\n\r\n# focus\r\nshift-alt-h = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors left'\r\nshift-alt-j = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors down'\r\nshift-alt-k = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors up'\r\nshift-alt-l = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors right'\r\nshift-alt-c='focus right --boundaries-action wrap-around-the-workspace'\r\n# alt-shift-h = ['focus left']\r\n# alt-shift-j = ['focus down']\r\n# alt-shift-k = ['focus up']\r\n# alt-shift-l = ['focus right']\r\n\r\n# See  https://nikitabobko.github.io/AeroSpace/commands#move\r\ncmd-shift-h = ['move left']\r\ncmd-shift-j = ['move down']\r\ncmd-shift-k = ['move up']\r\ncmd-shift-l = ['move right']\r\n\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nctrl-shift-h = 'resize smart -50'\r\nctrl-shift-l = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-0 = 'workspace 10'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nctrl-cmd-1 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 1']\r\nctrl-cmd-2 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 2']\r\nctrl-cmd-3 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 3']\r\nctrl-cmd-4 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 4']\r\nctrl-cmd-5 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 5']\r\nctrl-cmd-6 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 6']\r\nctrl-cmd-7 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 7']\r\nctrl-cmd-8 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 8']\r\nctrl-cmd-9 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 9']\r\nctrl-cmd-0 = ['exec-and-forget ~/.config/aerospace/scripts/switch_workspaces.sh 10']\r\n\r\n\r\nalt-cmd-1 = ['move-node-to-workspace 1', 'workspace 1']\r\nalt-cmd-2 = ['move-node-to-workspace 2', 'workspace 2']\r\nalt-cmd-3 = ['move-node-to-workspace 3', 'workspace 3']\r\nalt-cmd-4 = ['move-node-to-workspace 4', 'workspace 4']\r\nalt-cmd-5 = ['move-node-to-workspace 5', 'workspace 5']\r\nalt-cmd-6 = ['move-node-to-workspace 6', 'workspace 6']\r\nalt-cmd-7 = ['move-node-to-workspace 7', 'workspace 7']\r\nalt-cmd-8 = ['move-node-to-workspace 8', 'workspace 8']\r\nalt-cmd-9 = ['move-node-to-workspace 9', 'workspace 9']\r\nalt-cmd-0 = ['move-node-to-workspace 10', 'workspace 10']\r\n\r\nalt-left = ['workspace prev --wrap-around']\r\nalt-right = ['workspace next --wrap-around']\r\nalt-cmd-c = ['move-workspace-to-monitor --wrap-around next']\r\n\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'focus-monitor --wrap-around next'\r\n\r\ncmd-shift-s = 'mode service'\r\ncmd-shift-d = 'mode RDP'\r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main' # Monitor sequence number from left to right. 1-based indexing\r\n2 = 'main' # Main monitor\r\n3 = 'main' # Main monitor\r\n4 = 'main' # Main monitor\r\n5 = 'main' # Main monitor\r\n6 = 'main' # Main monitor\r\n# 7 = 'main'                # Main monitor\r\n# 8 = 'main'                # Main monitor\r\n# 9 = ['secondary', 'main'] # Main monitor\r\n10 = ['secondary','main']          # Non-main monitor in case when there are only two monitors\r\n\r\n[mode.floating.binding]\r\nalt-t = [\r\n    'exec-and-forget ~/.config/aerospace/scripts/center_window.sh',\r\n    'move-mouse window-force-center',\r\n    'mode main'\r\n]\r\nalt-shift-semicolon = 'mode service'\r\nesc = 'mode main'\r\n\r\nh = 'exec-and-forget ~/.config/aerospace/scripts/move-floating.sh -32 0'\r\nj = 'exec-and-forget ~/.config/aerospace/scripts/move-floating.sh 0 32'\r\nk = 'exec-and-forget ~/.config/aerospace/scripts/move-floating.sh 0 -32'\r\nl = 'exec-and-forget ~/.config/aerospace/scripts/move-floating.sh 32 0'\r\n\r\nshift-h = 'exec-and-forget ~/.config/aerospace/scripts/resize-floating-centered.sh -128 0'\r\nshift-j = 'exec-and-forget ~/.config/aerospace/scripts/resize-floating-centered.sh 0 -128'\r\nshift-k = 'exec-and-forget ~/.config/aerospace/scripts/resize-floating-centered.sh 0 128'\r\nshift-l = 'exec-and-forget ~/.config/aerospace/scripts/resize-floating-centered.sh 128 0'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\ncmd-shift-h = ['join-with left', 'mode main']\r\ncmd-shift-j = ['join-with down', 'mode main']\r\ncmd-shift-k = ['join-with up', 'mode main']\r\ncmd-shift-l = ['join-with right', 'mode main']\r\n\r\n[mode.RDP.binding]\r\nshift-cmd-q = ['reload-config', 'mode main']\r\n\r\n\r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tencent.xinWeChat'\r\nif.window-title-regex-substring = '^(?!WeChat \\(Chats\\)|微信 \\(聊天\\)).*$'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tencent.qq'\r\nif.window-title-regex-substring = '^(?!QQ).*$'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.blenderfoundation.blender '\r\nif.window-title-regex-substring = '^(?!Blender).*$'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.360.cloudui'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Maps'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.MobileSMS'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.AppStore'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Photos'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.iCal'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.weather'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.reminders'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'io.github.clash-verge-rev.clash-verge-rev'\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.colliderli.iina'\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.codeweavers.CrossOver'\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = '(Picture in Picture|Picture-in-Picture|画中画)'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.bandisoft.mac.bandizip'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.electron.1zilc.fishing-funds\"\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.mathworks.matlab\"\r\nif.window-title-regex-substring = \"^(?!MATLAB).*$\"\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.xingin.discover\"\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.hypergryph.arknights\"\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = '(MuMu|exe)'\r\nrun = ['layout floating', 'move-node-to-workspace 5']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'company.thebrowser.Browser'\r\nif.during-aerospace-startup = true\r\nrun = 'move-node-to-workspace 1'\r\n\r\n# [[on-window-detected]]\r\n# if.app-id = 'com.microsoft.autoupdate2'\r\n# if.window-title-regex-substring='Microsoft AutoUpdate'\r\n# run = 'close'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tencent.xinWeChat'\r\nrun = 'move-node-to-workspace 2'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tencent.qq'\r\nrun = 'move-node-to-workspace 2'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'net.kovidgoyal.kitty'\r\nrun = 'move-node-to-workspace 3'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nif.during-aerospace-startup = true\r\nrun = 'move-node-to-workspace 4'\r\n\r\n# [[on-window-detected]]\r\n# if.window-title-regex-substring = '(不背|Zotero|Margin)'\r\n# run = ['move-node-to-workspace 3']\r\n\r\n```",
      "created_at": "2025-03-06T09:53:46Z",
      "updated_at": "2025-03-16T12:45:57Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvvmC",
        "body": "Tracking issue: https://github.com/nikitabobko/AeroSpace/issues/1216"
      },
      "user": {
        "login": "xbunax",
        "avatar_url": "https://avatars.githubusercontent.com/u/50800571?u=06afb810ccc622067524f6e1d0e24e10bd36dec9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae2-i",
      "number": 1214,
      "title": "I have made an indicator app for aerospace",
      "body": "I’ve created an aerospace indicator that appears when you press the \"Option\" key, showing the currently active workspace and the apps it contains. For those who don’t want to use SketchyBar, this software is worth a try. Feel free to use it and submit any issues or pull requests.\r\n\r\nhttps://github.com/rien7/AeroIndicator\r\n\r\n![Screenshot-fa50BLdS@2x](https://github.com/user-attachments/assets/4a4d5d6c-c6fc-4408-878c-f2e0aec9e5fa)\r\n",
      "created_at": "2025-03-16T08:43:10Z",
      "updated_at": "2025-03-16T08:43:11Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rien7",
        "avatar_url": "https://avatars.githubusercontent.com/u/47098554?u=ad2b4100ec967a7c299e3493bcf259a162ca0230&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae2AQ",
      "number": 1211,
      "title": "Zoom the focused window to fill the workspace",
      "body": "Say we have the following layout:\r\n\r\n```\r\nh_tiles\r\n├── window 1\r\n└── window 2 (focused)\r\n```\r\n\r\nI would like similar functionality to the tmux command to Zoom the active pane, `C-b z`. This would temporarily display the layout as if it was the following:\r\n\r\n```\r\nh_tiles\r\n└── window 2 (focused)\r\n```\r\n\r\nThen upon exiting the zoom, the previous layout is restored.\r\n\r\nThis way we could quickly use all the screen real estate on a single app, then go back to the split layout quickly.",
      "created_at": "2025-03-15T04:18:20Z",
      "updated_at": "2025-03-15T04:25:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mattcoleanderson",
        "avatar_url": "https://avatars.githubusercontent.com/u/49250378?u=dfb2bdcde30c2ab5b5001704e3ff872cf2cd0e49&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ae0ca",
      "number": 1207,
      "title": "Is it possible to resize with mouse like Sway/i3 ?",
      "body": "As per the subject, is it possible to configure something such as `mod + left/right click` to resize windows?",
      "created_at": "2025-03-13T22:46:12Z",
      "updated_at": "2025-03-13T22:46:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "paolomainardi",
        "avatar_url": "https://avatars.githubusercontent.com/u/8747?u=000e93e7d87e3614ec8c266cc88db1a4b059086a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdLYC",
      "number": 838,
      "title": "save and recovery layout",
      "body": "sometimes I don't want to set the window to the pointed workspaces, so I write scripts to save the current layout to a json file and use python script to recovery the layout.\r\nThis is my [dotfiles](https://github.com/xbunax/dotfiles)\r\n```\r\nshift-ctrl-s=[\r\n    'exec-and-forget /opt/homebrew/bin/aerospace list-windows --all --format \"%{window-id}%{workspace}%{app-bundle-id}\" --json >~/.config/aerospace/scripts/layout.json'\r\n]\r\n```\r\n\r\n```python3\r\n#!/usr/bin/python3\r\n\r\nimport json\r\nimport os\r\nimport subprocess\r\n\r\nlayout_file = \"~/.config/aerospace/scripts/layout.json\"\r\n\r\nif not os.path.isfile(layout_file):\r\n    exit(1)\r\n\r\n\r\ntry:\r\n    with open(layout_file, \"r\", encoding=\"utf-8\") as f:\r\n        layout_data = json.load(f)\r\nexcept json.JSONDecodeError as e:\r\n\r\n    exit(1)\r\n\r\n\r\nfor window in layout_data:\r\n    window_id = window.get(\"window-id\")\r\n    workspace = window.get(\"workspace\")\r\n\r\n\r\n    if window_id is None or workspace is None:\r\n        continue\r\n\r\n    try:\r\n        workspace = int(workspace)\r\n    except ValueError:\r\n        continue\r\n\r\n\r\n    command = [\r\n        \"/opt/homebrew/bin/aerospace\",\r\n        \"move-node-to-workspace\",\r\n        \"--window-id\", str(window_id),\r\n        str(workspace),\r\n        \"--fail-if-noop\"\r\n    ]\r\n\r\n    try:\r\n        subprocess.run(command, check=True)\r\n\r\n```",
      "created_at": "2024-12-10T09:42:41Z",
      "updated_at": "2025-03-12T03:52:40Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "xbunax",
        "avatar_url": "https://avatars.githubusercontent.com/u/50800571?u=06afb810ccc622067524f6e1d0e24e10bd36dec9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aexcs",
      "number": 1201,
      "title": "Can the menu-bar entry for Aerospace be removed?",
      "body": "I don't see a config option to remove the menu-bar entry for Aerospace. Since Aerospace recommends disabling \"Displays have separate Spaces\", and since Macbooks now default to having a black notch in the middle of the screen and only displaying persistent menu icons on the right side of that notch, there is limited space for any icons, and the Aerospace one takes up quite a bit of room.\r\n\r\nCan it be disabled?\r\n\r\nEdit: command-click and dragging the icon off the menu bar just closes the application.",
      "created_at": "2025-03-11T16:53:59Z",
      "updated_at": "2025-03-11T17:02:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "BatmanAoD",
        "avatar_url": "https://avatars.githubusercontent.com/u/2313807?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeIdz",
      "number": 1055,
      "title": "Focus doesn't change on creating a new tab in chrome.",
      "body": "I noticed this on upgrading from 0.15.2 -> 0.16.2. I haven't confirmed whether this happens with any application with tabs or not (only chrome), but the issue is the following:\r\n\r\nIf I have a window (say, apple mail) open in workspace M and I click a link, the desired (and I believe intended?) behavior is for aerospace to automatically change my focus to the workspace associated with that new link. I have the following in my configuration for example,\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.google.Chrome'\r\nrun = 'move-node-to-workspace B'\r\n```\r\n\r\nMy expectation in how it should work (and how it has, in fact, worked before) is that after moving the node to the new workspace, the focus should change to workspace B, however, after version 0.16.2 that stopped happening. \r\n\r\nThe odd thing is that it does happen on the first instance of me clicking the link, but then after clicking it again (or even clicking a different one...) it no longer moves the focus to that workspace. I suspect this is because it is a *tab* being opened at this point, rather than a new window.\r\n\r\nI have downgraded to 0.15.2 for the time being. I'd be happy to hear if this is intended behavior then how to configure it to behave how it did in 0.15.2. Thanks!",
      "created_at": "2025-01-31T21:07:14Z",
      "updated_at": "2025-03-11T10:14:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Noahhw46",
        "avatar_url": "https://avatars.githubusercontent.com/u/98559180?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AerVF",
      "number": 1175,
      "title": "Accordion main layout with a vertical tiling child",
      "body": "Hello.\r\nI want  to have a main layout of accordion, and have one of the \"child\" ones be a vertical one.\r\nThis means having one window \"full screen\" and the other node in the accordion a vertical split.\r\n\r\n- vertical accordion\r\n  - Window A\r\n  - Vertical split\r\n    - Window B\r\n    - Window C\r\n\r\nIdeally keeping the ability to switch  between acordion nodes with my up down keybind, and between horizontal splits with my left/right keybind.\r\n\r\nIs this possible? Every time I try to switch to accordion layout all windows get flattened into the accordion",
      "created_at": "2025-03-05T09:54:37Z",
      "updated_at": "2025-03-11T09:47:17Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danielo515",
        "avatar_url": "https://avatars.githubusercontent.com/u/2270425?u=85a40c344f9f2b55652cede930cc8e1f8eaf32ad&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aew1L",
      "number": 1199,
      "title": "Per-Workspace Window Limits",
      "body": "(sorry if this had been covered but my search suggested not) \r\n\r\nFeature 1: Per-Workspace Window Limits\r\n\r\n    Allow users to set a maximum number of open windows per workspace (e.g., W: 2 windows, E: 1 window).\r\n    When the limit is reached, additional windows are automatically moved to a designated \"overflow\" workspace (e.g., R) or a new workspace.\r\n\r\nFeature 2: Workspace Priority Settings\r\n\r\n    Introduce a priority system where users can rank workspaces (e.g., Q > W > E > R).\r\n    Priority could determine:\r\n        Which workspace is focused when switching tasks.\r\n        Where new windows are placed if their preferred workspace is full (e.g., if W is full, send to R).\r\n    Example setup:\r\n        Q: High-priority, quick-access workspace (max x windows).\r\n        W: Medium-priority, main work area (max 2 windows).\r\n        E: Medium-priority, full-screen PDF viewer (max 1 window).\r\n        R: Low-priority, background apps (unlimited or user-defined).\r\n\r\nUse Case Example:\r\n\r\n    User opens 3 windows in W (limit: 2). The third window moves to R automatically.\r\n    User opens a PDF in E (limit: 1). If another window is opened there, it shifts to R or a new workspace.\r\n    Q serves as a flexible, quick-access space with a custom limit (x).\r\n\r\n",
      "created_at": "2025-03-11T08:11:13Z",
      "updated_at": "2025-03-11T08:11:46Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kzssc",
        "avatar_url": "https://avatars.githubusercontent.com/u/37780271?u=4655137bb8da2a0fe8cd5bbc8c11270d8560ed13&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aewpf",
      "number": 1198,
      "title": "XCTest Troubleshooting",
      "body": "Hi all - thanks for a great tool.  I was working to get this building locally today, and kept running into errors about not finding XCTest when `./build-debug.sh` and friends were trying to build `AppBundleTests` target.\r\n\r\n```\r\nBuilding for debugging...\r\n/Users/ME/code/AeroSpace/Sources/AppBundleTests/assert.swift:2:8: error: no such module 'XCTest'\r\n 1 | import Common\r\n 2 | import XCTest\r\n   |        `- error: no such module 'XCTest'\r\n 3 |\r\n 4 | func assertTrue(_ actual: Bool, file: String = #file, line: Int = #line) {\r\n \r\n ... repeat a bunch of times\r\n```\r\n\r\nWhile I can't explain the why (some interaction of homebrew and xcode), this post helped:\r\nhttps://forums.swift.org/t/swift-build-xctest-sometimes-missing/75881/7\r\n\r\nAfter running this command, builds runs without errors.\r\n`sudo xcode-select -s /Applications/Xcode.app`\r\n\r\nConsider adding this one to an FAQ somewhere if it's the right way to fix it.  Given that it didn't show up in discussions or issues here, it may be rare and this conversation should be enough to document it!",
      "created_at": "2025-03-11T03:49:53Z",
      "updated_at": "2025-03-11T03:50:27Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "CJBridges",
        "avatar_url": "https://avatars.githubusercontent.com/u/7446001?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AewDM",
      "number": 1197,
      "title": "Pass key through",
      "body": "I am using option as the modifier for Aerospace (as the default). I do have a MacBook with German HW keyboard layout but am using en us mainly. But sometimes I use de and then the at symbol is option-l. But with Aerospace I cannot type that. Can I configure Aerospace to ent4r the synbol?",
      "created_at": "2025-03-10T15:10:31Z",
      "updated_at": "2025-03-10T15:10:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sascha-andres",
        "avatar_url": "https://avatars.githubusercontent.com/u/3052075?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AetUT",
      "number": 1187,
      "title": "Configuration file not being read",
      "body": "Hi, i'm trying out aerospace, i wanted to edit the config but it's not working. I tried putting it both in ~/.aerospace.toml and now in ~/.config/aerospace/.aerospace.toml. Changing stuff and then reloading (both with the shortcut and the cli) doesn't read my file. Any hints on how could i troubleshoot this?",
      "created_at": "2025-03-07T08:12:43Z",
      "updated_at": "2025-03-10T17:35:11Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvZkH",
        "body": "First path looks correct but second path shouldn't have a preceding dot, try:\r\n`~/.config/aerospace/aerospace.toml`\r\n\r\nTry putting TOML syntax errors in both as a way to get quick a clear feedback re whether it's reading them at all, as a syntax error there will show an error dialog. \r\n\r\nThat should help disambiguate between whether it's a problem loading the config, or a problem having your change take the intended effect."
      },
      "user": {
        "login": "DominickVale",
        "avatar_url": "https://avatars.githubusercontent.com/u/52491108?u=4dcfcd70b701ab4e9be0aae4a7fff3dc87486b37&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aevka",
      "number": 1196,
      "title": "Need help with focus keybinds.",
      "body": "For whatever reason, alt + j, h, k, l just don't work. alt + shift + h,j,k,l don't work either. I tried other keybinds for focus and they work. Idk why this is happening. I tried closing apps with keybinds and the issue is still there. Also, nothing happens when I press alt + j,h,k,l. I'm really stumped. I have been stuck on this for 5 hours. Can someone please help me? Here is my config for reference:\r\n```\r\n\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\naccordion-padding = 300\r\n\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\nautomatically-unhide-macos-hidden-apps = false\r\n\r\n[[on-window-detected]]\r\nif.app-name-regex-substring = 'finder'\r\nrun = 'layout floating'\r\n\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n\r\n# gap between windows (inner) and between monitor edges (outer)\r\n[gaps]\r\ninner.horizontal = 20\r\ninner.vertical =   20\r\nouter.left =       20\r\nouter.bottom =     10\r\nouter.top =        10\r\nouter.right =      20\r\n\r\n[mode.main.binding]\r\nalt-ctrl-shift-f = 'fullscreen'\r\nalt-ctrl-f = 'layout floating tiling'\r\n\r\nalt-shift-left = 'join-with left'\r\nalt-shift-down = 'join-with down'\r\nalt-shift-up = 'join-with up'\r\nalt-shift-right = 'join-with right'\r\n# layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# workspace\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\n\r\n# move to workspace\r\nalt-shift-1 = 'move-node-to-workspace 1 --focus-follows-window'\r\nalt-shift-2 = 'move-node-to-workspace 2 --focus-follows-window'\r\nalt-shift-3 = 'move-node-to-workspace 3 --focus-follows-window'\r\nalt-shift-4 = 'move-node-to-workspace 4 --focus-follows-window'\r\nalt-shift-5 = 'move-node-to-workspace 5 --focus-follows-window'\r\nalt-shift-6 = 'move-node-to-workspace 6 --focus-follows-window'\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# mode\r\nalt-shift-semicolon = 'mode service'\r\nalt-shift-enter = 'mode apps'\r\n\r\nalt-t = 'exec-and-forget open -a /Applications/Alacritty.app'\r\n\r\n# service mode\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\nf = ['layout floating tiling', 'mode main'] # toggle between floating and tiling layout\r\n# backspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# apps mode\r\n# [mode.apps.binding]\r\n \r\n```",
      "created_at": "2025-03-10T06:23:46Z",
      "updated_at": "2025-03-10T06:23:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenhuang1964",
        "avatar_url": "https://avatars.githubusercontent.com/u/87556616?u=df93864acde55902721e86f5bec23c79ddd64fbf&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aet5X",
      "number": 1189,
      "title": "Any way to move parent node within workspace?",
      "body": "I'm confused about how to arrange my layout.\r\n\r\nThere seems to be no way to move the parent node of the focused window around in the layout within a workspace. There is only `move`, which acts only on the focused window, and `move-node-to-monitor` or `move-node-to-workspace`, which move across workspaces/monitors but not within it.\r\n\r\nI want to be able to move an entire accordion/tiling to a different position. In other words, I'm looking for a way transform this:\r\n```\r\nh_tiles\r\n├── v_accordion 1\r\n│   ├── window 1\r\n│   └── window 2 (focused)\r\n└── v_accordion 2\r\n    ├── window 3\r\n    └── window 4\r\n```\r\ninto this:\r\n```\r\nh_tiles\r\n├── v_accordion 2\r\n│   ├── window 3\r\n│   └── window 4\r\n└── v_accordion 1\r\n    ├── window 1\r\n    └── window 2 (focused)\r\n```\r\n\r\nApologies if this is possible already, but I just can't see how.",
      "created_at": "2025-03-07T19:13:08Z",
      "updated_at": "2025-03-07T23:43:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wmayner",
        "avatar_url": "https://avatars.githubusercontent.com/u/1775632?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AetLG",
      "number": 1185,
      "title": "Allow focus to loop through nodes within the current workspace",
      "body": "Like other linux WMs, is there a way we can currently allow `focus left` and other commands loop through all the nodes within the current workspace? \r\n\r\nIt'd be nice to be able to not have to remember the right direction when swapping between two full screen windows.",
      "created_at": "2025-03-07T03:39:41Z",
      "updated_at": "2025-03-07T03:44:17Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvYlH",
        "body": "I ended up finding exactly how to do this just as I posted this question. For anyone else wondering, you need to use `focus --boundaries-action wrap-around-the-workspace`."
      },
      "user": {
        "login": "parker789",
        "avatar_url": "https://avatars.githubusercontent.com/u/4635313?u=1b3621fc1386db52e40867be4d4d4e5a61d71ec4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aes_j",
      "number": 1184,
      "title": "Aerospace not handling window properly for Bambu Studio and brings it to front in every workspace",
      "body": "\r\nhttps://github.com/user-attachments/assets/24bf15d5-7edf-48ee-a880-6f8cd7cbe214\r\n\r\nI keep having this issue with Bambu studio app and only with Bambu studio. In my config the Bambu studio should stay in workspace B. When I launch a new instance of Bambu studio it goes to Workspace B and if I switch to another workspace it comes and starts to flicker in that workspace. In my config I have this\r\n\r\n```\r\n﻿﻿[[on-window-detected]]\r\nif.app-id = 'com.bambulab.bambu-studio'\r\nrun = ['layout floating', 'move-node-to-workspace B']\r\n```\r\n\r\nSo I can't seem to understand whats the issue. Even if I minimize the window or hide it, it still unhides/maximizes itself and then just starts to flicker in whatever workspace I am in. I know there aren't aerospace logs so I can't figure whats causing this issue. Potential bug?",
      "created_at": "2025-03-06T22:04:36Z",
      "updated_at": "2025-03-06T22:04:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Vib1240n",
        "avatar_url": "https://avatars.githubusercontent.com/u/71455013?u=fcb0433f04b075d28205c2ddebe3e2d502931949&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeIMa",
      "number": 1053,
      "title": "Set/Remember positions of windows",
      "body": "1. Remembering Window Positions Across Workspaces\r\n\r\nWould it be possible for the window manager to remember the position of windows when they are moved between workspaces? Currently, if a window is moved to another workspace or hidden, its previous position is forgotten when the window is moved back to the original workspace.\r\n\r\n2. CLI Command for Setting Window Position\r\n\r\nWould it be possible to introduce a CLI command for setting window positions? This would enable basic preset management via scripting, allowing users to organize their windows in a structured way at startup. Having this functionality would greatly improve workflow efficiency by restoring a predefined window layout automatically.\r\n\r\nI’d love to hear your thoughts on these suggestions. Thanks for all the great work on Aerospace Windows Manager!\r\n\r\nBest regards,\r\nCarl",
      "created_at": "2025-01-31T15:59:28Z",
      "updated_at": "2025-03-06T14:19:23Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "carlba",
        "avatar_url": "https://avatars.githubusercontent.com/u/1884191?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AesHG",
      "number": 1180,
      "title": "Windows are overlapping weirdly",
      "body": "I have two identical monitors one with type c and another with hdmi. this happens in one of the monitors on all workspaces. Second window does not get tiled properly (50-50) but overlaps one another.\r\n\r\n<img width=\"357\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4aec993d-0e38-4dad-b253-daa4eb28d51e\" />\r\n",
      "created_at": "2025-03-06T03:23:19Z",
      "updated_at": "2025-03-06T03:23:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shahidcodes",
        "avatar_url": "https://avatars.githubusercontent.com/u/17620737?u=c745fb201f04421f6ab9978d1a15debfc3f7eddc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aer-8",
      "number": 1179,
      "title": "Switching workspaces sometimes also switches window focus",
      "body": "Version: AeroSpace v0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n\r\nI use 1 monitor and switch across workspaces relatively quickly. I often leave windows in a horizontal accordion layout. For example, let's say I have the following setup:\r\n- workspace-a: 1 window\r\n- workspace-b: 2 windows (horizontal accordion)\r\n\r\nNot every time, but every once in a while, switching to workspace-b will focus the right most window, no matter which window was previously focused. It happens frequently enough that I end up putting my most commonly used windows to the right most position, even if that's not really where I would want it.",
      "created_at": "2025-03-05T23:52:31Z",
      "updated_at": "2025-03-05T23:52:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gordonyoon",
        "avatar_url": "https://avatars.githubusercontent.com/u/4142943?u=f61d60a5d9367c61a401487fe18114b101699335&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aer6c",
      "number": 1178,
      "title": "better mouse swipe space fast",
      "body": "I don't know how they do it, but they manage to make swiping between spaces very quick.\r\nbettermouse : https://better-mouse.com/",
      "created_at": "2025-03-05T21:32:04Z",
      "updated_at": "2025-03-05T21:32:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vincehi",
        "avatar_url": "https://avatars.githubusercontent.com/u/25566437?u=12fcd76c13b425799d9e13bc8b7f85e985593cf3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyh5",
      "number": 952,
      "title": "Switches to a wrong window after a password entry popup",
      "body": "**Describe the bug**\r\nI have this integration in my shell where sudo prompts FaceId entry on my Mac, also I have 1Password ssh integration which also creates a popup for approval when I run ssh commands.\r\nThe problem is that when I type a password or use fingerprint reader popup is closing and I focus switches to a wrong terminal window.\r\nHere is a screencast:\r\nhttps://github.com/user-attachments/assets/8e6df2d5-9d90-48f6-a798-4485c5d2e692\r\nHere is another screencast with more windows:\r\nhttps://github.com/user-attachments/assets/36614853-9712-4612-be9d-31a9c5f00c71\r\nIt seems like it switches to the last opened window in that case and not the last focused.\r\n\r\n**Related issues you could find**\r\nThis issue might be related: https://github.com/nikitabobko/AeroSpace/issues/571\r\n\r\n\r\n",
      "created_at": "2024-12-28T17:37:36Z",
      "updated_at": "2025-03-05T18:03:08Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nickkadutskyi",
        "avatar_url": "https://avatars.githubusercontent.com/u/10780527?u=9a402d1dc08e0b80f3abc0d51ee99f535bb2001f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AerwL",
      "number": 1177,
      "title": "wezterm window spawned with exec-and-forget is not always focused",
      "body": "```❯ aerospace --version\r\naerospace CLI client version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nAeroSpace.app server version: 0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n```\r\n\r\nIn my config, I have:\r\n\r\n```\r\ncmd-enter = 'exec-and-forget wezterm start'\r\n```\r\n\r\nWhen I press cmd+enter, it spawns wezterm. Sometimes the new terminal window is focused, but sometimes it is not. Is there a way to consistently focus newly-opened windows?\r\n\r\nIf I press `focus-left` or `focus-right`, I cannot focus the newly-opened window. However, if I change to/from the workspace where I created the window, now I can focus it.",
      "created_at": "2025-03-05T17:26:29Z",
      "updated_at": "2025-03-05T17:33:31Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rcorre",
        "avatar_url": "https://avatars.githubusercontent.com/u/2496231?u=2a46dcfdbcdc02f29ac395d8de5efd222fa174bc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeq12",
      "number": 1172,
      "title": "Move apps back to their default/previous workspace (after already moved)",
      "body": "I only have a handful of workspaces. One the them is a \"tiling workspace\" I send two apps for tiling - that might not be intended by aerospace, not sure.\r\n\r\nI have a script that picks two windows\r\n```\r\nexport OBSIDIAN_ID=$(aerospace list-windows --monitor all --app-bundle-id \"md.obsidian\" | cut -d '|' -f 1 | xargs)\r\nexport ARC_ID=$(aerospace list-windows --monitor all --app-bundle-id \"company.thebrowser.Browser\" | cut -d '|' -f 1 | xargs)\r\n\r\naerospace focus --window-id $OBSIDIAN_ID\r\naerospace move-node-to-workspace \"t\"\r\n\r\naerospace focus --window-id $ARC_ID\r\naerospace move-node-to-workspace \"t\"\r\n\r\naerospace workspace \"t\"\r\n```\r\n\r\nSo that I have a tiling setup.\r\n\r\nHow can I move back the two apps to their original/default workspace\r\n\r\nMy config has:\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'md.obsidian'\r\nrun       = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'company.thebrowser.Browser'\r\nrun       = 'move-node-to-workspace 2'\r\n```\r\n\r\nBut how can I send back the apps to their respective \"default\" or previous workspace?",
      "created_at": "2025-03-04T20:44:11Z",
      "updated_at": "2025-03-05T14:20:37Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "oschrenk",
        "avatar_url": "https://avatars.githubusercontent.com/u/52898?u=162b7f68ddc78f646cc6d72831172e6195b856f8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AerUy",
      "number": 1174,
      "title": "Move workspaces",
      "body": "Hello.\r\nFor some reason, I ended with several workspaces \"empty\". I was wondering if it could be possible to \"move\" them. This essentially means moving all the windows of the \"next\" workspace to the one being moved.\r\nLet's say I have workspaces 1, 3 and 5 with windows layout exactly how I want, and workspaces 2 and 4 are empty. I want to move 2 and 4 to the very end, this means moving all windows of 3 to 2, moving all windows from 5 to 4, and finally moving all windows from 4 to 3.\r\n\r\nIs this possible? ",
      "created_at": "2025-03-05T09:51:08Z",
      "updated_at": "2025-03-05T09:51:09Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danielo515",
        "avatar_url": "https://avatars.githubusercontent.com/u/2270425?u=85a40c344f9f2b55652cede930cc8e1f8eaf32ad&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeq5_",
      "number": 1173,
      "title": "Small changes would allow configuring multi-monitor workspaces",
      "body": "I use workspaces more like native macOS spaces—each \"Desktop\" represents a project or a task across all monitors. When I switch tasks, I switch all monitors. This is contrary to the [observation](https://nikitabobko.github.io/AeroSpace/guide#observation) in the docs that monitors are typically dedicated to particular workspaces.\r\n\r\nI think this is a use case that's fairly common, and it could be accommodated pretty easily without significant changes.\r\n\r\nSo far I've succeeded in replicating this behavior by using `workspace-to-monitor-force-assignment` and binding keys to multiple `workspace` commands (see below for an example). However, this approach does not allow for an easy way to move nodes between monitors, since the invariant mapping between workspaces and monitors means that the commands that would ordinarily allow moving nodes across monitors (by moving them to different workspaces) no longer work.\r\n\r\nI think all that's need is a command that moves a _node_ to the next/previous monitor, whichever workspace is on it currently. This would complement the existing [`move-workspace-to-monitor`](https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor) command, which moves an entire workspace.\r\n\r\nI'm happy to help in drafting a PR but would need some guidance on where to start.\r\n\r\n```\r\n[workspace-to-monitor-force-assignment]\r\n    1 = \"LG HDR 4K\"\r\n    2 = \"LG HDR 4K\"\r\n    3 = \"LG HDR 4K\"\r\n\r\n    6 = \"Built-in Retina Display\"\r\n    7 = \"Built-in Retina Display\"\r\n    8 = \"Built-in Retina Display\"\r\n\r\n    11 = \"CB272K\"\r\n    12 = \"CB272K\"\r\n    13 = \"CB272K\"\r\n\r\n[mode.main.binding]\r\n    # Bind keys to switch all three monitors simultaneously\r\n    ctrl-a = ['workspace 1', 'workspace 6', 'workspace 11']\r\n    ctrl-s = ['workspace 2', 'workspace 7', 'workspace 12']\r\n    ctrl-d = ['workspace 3', 'workspace 8', 'workspace 13']\r\n```",
      "created_at": "2025-03-04T22:28:20Z",
      "updated_at": "2025-03-04T22:37:50Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wmayner",
        "avatar_url": "https://avatars.githubusercontent.com/u/1775632?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeq0y",
      "number": 1171,
      "title": "on-window-detected fails on start up",
      "body": "```\r\n[[on-window-detected]]\r\n    if.app-id = 'com.omnigroup.OmniFocus4'\r\n    run = ['move-node-to-workspace 5']\r\n    \r\n[[on-window-detected]]\r\n    if.app-id = 'com.microsoft.Outlook'\r\n    run = ['move-node-to-workspace 5']\r\n```\r\n    \r\n OmniFocus and Outlook are both launched at start up. However, their windows are not tiled correctly. Sometimes the Outlook window is invisible or covering a part of OmniFocus.",
      "created_at": "2025-03-04T20:20:53Z",
      "updated_at": "2025-03-04T20:28:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bitbalancer",
        "avatar_url": "https://avatars.githubusercontent.com/u/85396661?u=42df04c41b7b4910b96499ee95f2ab9ee0520438&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeqwe",
      "number": 1170,
      "title": "Zoom.us cannot move workspaces after update",
      "body": "zoom.us recently updated to `Version: 6.3.10 (49367)`\r\n\r\nZoom no will not allow me to move zoom to different workspaces (option+shift+workspace-number).\r\n\r\nWondering if others are encountering this as well or if there are any known workarounds\r\n\r\n`aerospace list-windows --all --json`\r\n\r\n```\r\n[\r\n  {\r\n    \"app-name\" : \"Arc\",\r\n    \"window-id\" : 7791,\r\n    \"window-title\" : \"How to create pre-defined layouts with apps specific positions · nikitabobko/AeroSpace · Discussion #756\"\r\n  },\r\n  {\r\n    \"window-id\" : 187,\r\n    \"app-name\" : \"ChatGPT\",\r\n    \"window-title\" : \"ChatGPT\"\r\n  },\r\n  {\r\n    \"window-id\" : 11585,\r\n    \"window-title\" : \".aerospace.toml — Dev\",\r\n    \"app-name\" : \"Code\"\r\n  },\r\n  {\r\n    \"window-title\" : \"tmux a -t 0 ~\",\r\n    \"app-name\" : \"Ghostty\",\r\n    \"window-id\" : 8963\r\n  },\r\n  {\r\n    \"app-name\" : \"Slack\",\r\n    \"window-id\" : 9014,\r\n    \"window-title\" : \"Slack\"\r\n  },\r\n  {\r\n    \"app-name\" : \"Spotify\",\r\n    \"window-id\" : 69,\r\n    \"window-title\" : \"Spotify Premium\"\r\n  }\r\n]\r\n```",
      "created_at": "2025-03-04T18:39:39Z",
      "updated_at": "2025-03-04T18:53:27Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvRgu",
        "body": "ah ok, killed aerospace, re-opened, asked to allow new permissions, agreed, now its working"
      },
      "user": {
        "login": "drewbailey",
        "avatar_url": "https://avatars.githubusercontent.com/u/2614075?u=3ae568b5f4a1682f5884b8fae2ec27dabf965139&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeqll",
      "number": 1169,
      "title": "Closed CodeRunner Windows Not Unregistered",
      "body": "Hi, I ran into trouble with a specific app named \"CodeRunner\". Sometimes when I close a CodeRunner window, e.g., \"Untitled.txt\", the window is not unregistered from aerospace and leaves an empty container. \r\n\r\n![CleanShot 2025-03-04 at 16 12 54](https://github.com/user-attachments/assets/abd99122-2c89-404c-a32e-1258921a0df3)\r\n\r\nThis seems to happen inside the affected workspace when a CodeRunner window starts to flicker/glitch. I have no clue what causes this random glitches in respect to CodeRunner. However, maybe this is related to the fact that I use separate spaces for different monitors although I have no interaction between the two different workspaces.",
      "created_at": "2025-03-04T15:18:44Z",
      "updated_at": "2025-03-04T15:23:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bitbalancer",
        "avatar_url": "https://avatars.githubusercontent.com/u/85396661?u=42df04c41b7b4910b96499ee95f2ab9ee0520438&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeqQe",
      "number": 1168,
      "title": "Is there a way to define/create workspaces without binding them to any keys?",
      "body": "I'm only interested in working with a set number of workspaces, and I'm happy to navigate between them using the next/previous logic. I found out that if I remove bindings for specific workspaces, Aerospace removes them completely. I don't want to assign shortcuts that won't be used with Aerospace so that the keys are available for other apps. Is there any way to achieve that with the current version? (v0.17.1)\r\n\r\nMany thanks!",
      "created_at": "2025-03-04T09:39:27Z",
      "updated_at": "2025-03-04T10:03:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "arcaartem",
        "avatar_url": "https://avatars.githubusercontent.com/u/1636649?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AepFS",
      "number": 1165,
      "title": "minimized app opens on the wrong space",
      "body": "My workflow is based on `exec-and-forget` key bindings and initial assignment of apps to spaces with `on-window-detected`.\r\n\r\nThe issue is:\r\n\r\n1. I accidentally minimize a window (i.e. browser, bound to space 1) \r\n2. then switch to another app on another space,  (i.e. messenger, bound to space 2) , \r\n3. then want to jump to browser again, so i press a key calling exec-and-forget for browser app\r\n4. browser maximizes on my current space (space 2).\r\n5. i have to manually send browser back to space 1.\r\n\r\nProbably, the issue here is that `on-window-detected` is not called for maximizing. In this case the extra command for recalling assignments discussed [here](https://github.com/nikitabobko/AeroSpace/issues/107) would also help. \r\n\r\nI could probably disable native minimization so it would not interfere with my flow, but it feels a bit extreme (and sometimes i use it intentionally).\r\n\r\nMay be there is a configuration trick i'm missing or there is a place for improvement..",
      "created_at": "2025-03-03T09:07:12Z",
      "updated_at": "2025-03-06T17:06:29Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Emptyfruit",
        "avatar_url": "https://avatars.githubusercontent.com/u/14968783?u=cdd094d2940fa5ee60eb541e7648d345723ba381&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AenhL",
      "number": 1158,
      "title": "Query current layout",
      "body": "Is it possible to query what's the current layout for a given workspace?\r\n\r\nI'd like to script my way into adding some sort of tab indicator, similar to i3wm or [stackline](https://github.com/AdamWagner/stackline) for yabai.\r\n\r\nCurrently it's a bit hard to navigate larger stacks",
      "created_at": "2025-02-28T19:24:51Z",
      "updated_at": "2025-03-02T18:47:58Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ruigomeseu",
        "avatar_url": "https://avatars.githubusercontent.com/u/5658301?u=69c2430944553ef9ee166ac7b21df9f6c261147c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeoYr",
      "number": 1160,
      "title": "Connecting to a remote server on Finder adds invisible window",
      "body": "When using Finder to connect to a remote File server, it adds an invisible window. The workspace then functions as if there were a window there, (tiling, balancing sizes etc.) but when trying to focus on that window it removes the \"original\" Finder window. \r\n\r\nSteps to reproduce:\r\n1. Open Finder\r\n2. Press command-K and connect to remote server\r\n3. See Finder window shrink to half of its size\r\n\r\nI am on macOS Sequoia Version 15.1.1 (24B91) and AeroSpace v0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\n\r\n![Screenshot 2025-03-02 at 10 59 30](https://github.com/user-attachments/assets/cd18e1c2-ecd4-47f1-a05d-14179080411d)\r\n![Screenshot 2025-03-02 at 11 01 26](https://github.com/user-attachments/assets/6eb629b7-ac06-4280-862f-87cfa6a2a154)\r\n![Screenshot 2025-03-02 at 11 01 57](https://github.com/user-attachments/assets/9d5b7f3c-80f0-4aa0-b9b8-d012285ef27a)\r\n![Screenshot 2025-03-02 at 11 04 14](https://github.com/user-attachments/assets/4498a6c1-82b9-490d-8581-f1cc03574389)\r\n",
      "created_at": "2025-03-02T10:09:59Z",
      "updated_at": "2025-03-02T10:10:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jellytabby",
        "avatar_url": "https://avatars.githubusercontent.com/u/109531007?u=a453b7624631f750c744b4bf57b575721cc072e9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AengX",
      "number": 1157,
      "title": "a window keeps lurking in the back.",
      "body": "\r\nhttps://github.com/user-attachments/assets/39d79b07-7fa8-4c1d-aab0-97466ae62005\r\n\r\nWhy does it do it?",
      "created_at": "2025-02-28T19:00:34Z",
      "updated_at": "2025-02-28T19:00:34Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "adilJamshad",
        "avatar_url": "https://avatars.githubusercontent.com/u/47359726?u=2cf0dc69e5e91b9d1ff99590f790569415555cb4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AenCf",
      "number": 1151,
      "title": "Crash when using \"move focus to next window\" often",
      "body": "I had Excel sheets open on two different spaces, switching back and forth between them with MacOS's built in \"move focus to next window\" shortcut very often (comparing contents visually).\r\n\r\n```\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: The operation couldn’t be completed. Resource temporarily unavailable\r\nVersion: 0.17.1-Beta\r\nGit hash: 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\nDate: 2025-02-28 10:03:25 +0000\r\nmacOS version: Version 15.3.1 (Build 24D70)\r\nCoordinate: AppBundle/focus.swift:172:48 onWorkspaceChanged(_:_:)\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\nrefreshSessionEvent: Optional(Common.RefreshSessionEvent.socketServer)\r\nDisplays have separate spaces: true\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000100c160dc $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 1496\r\n1   AeroSpace                           0x0000000100c3ce18 $ss6ResultO6CommonE10getOrThrow_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   AeroSpace                           0x0000000100ab69d4 $s9AppBundle18onWorkspaceChanged33_7642A5C3292B9DD5C5AAA7E6B763F792LLyySS_SStF + 1116\r\n3   AeroSpace                           0x0000000100ab64d0 $s9AppBundle28checkOnFocusChangedCallbacksyyF + 856\r\n4   AeroSpace                           0x0000000100a5a998 $s9AppBundle14refreshSession_26screenIsDefinitelyUnlocked7startup4bodyx6Common07RefreshD5EventO_S2bxyXEtlFAF12ServerAnswerV_Tg5 + 752\r\n5   AeroSpace                           0x0000000100aca81c $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaScMYccfU1_TY0_ + 104\r\n6   AeroSpace                           0x0000000100acac2d $s9AppBundle13newConnection33_8AA123C1AC8B76A52844CE5C668569DDLLyy6SocketADCYaF6Common12ServerAnswerVyYaScMYccfU1_TATQ0_ + 1\r\n7   libswift_Concurrency.dylib          0x000000026c511035 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1\r\n```",
      "created_at": "2025-02-28T10:18:45Z",
      "updated_at": "2025-02-28T10:52:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvHMj",
        "body": "Converted to an issue https://github.com/nikitabobko/AeroSpace/issues/1153"
      },
      "user": {
        "login": "exic",
        "avatar_url": "https://avatars.githubusercontent.com/u/242107?u=d39042bea8c2c7947de26880602b5a109cf49355&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AemZ1",
      "number": 1149,
      "title": "\"Zen Mode\" or lightbox/focused mode",
      "body": "I've been using Aerospace on my Dell 49\" ultrawide for about 3 weeks now and I feel like I really am more productive than before. Having my coding window, server windows, browser windows with the Javascript console all open at the same time somehow smooths out the context switching friction.\r\n\r\nAnyway, I'm aware of the discussions on making a feature for ultrawide monitors where windows can be centred but width-limited so that the content is easier to parse because full-screen mode in these cases doesn't make sense. (https://github.com/nikitabobko/AeroSpace/discussions/621 https://github.com/nikitabobko/AeroSpace/issues/465 https://github.com/nikitabobko/AeroSpace/issues/60)\r\n\r\nMy ask would be slightly different. Sometimes I don't really want to have the distraction of all those other windows, and I want to concentrate on my code exclusively. i want to minimize distractions, so it would be great if I could toggle a \"zen mode\". My window would be centred and span, say, one-third of the display width and float to the top. Everything else would be dimmed to a level where they're not distracting me. I may only stay in this mode for 10 to 15 minutes and then I want to toggle out to check something in the browser, look up some reference, etc.\r\n\r\nWould this be difficult to implement? Does the Aerospace code structure contemplate plugins?",
      "created_at": "2025-02-27T18:09:49Z",
      "updated_at": "2025-02-27T18:09:49Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tcchau",
        "avatar_url": "https://avatars.githubusercontent.com/u/3226200?u=7db721e55088b9f7478eb18b16b438e8ef2f6d88&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AemH1",
      "number": 1147,
      "title": "ghostty new window script not working from Aerospace",
      "body": "I created an Aerospace keyboard shortcut to open a new window of my terminal app: Ghostty.  I'm using this script: https://github.com/ghostty-org/ghostty/discussions/3563#discussioncomment-11683023. \r\n\r\n```toml\r\n    alt-shift-t = '''exec-and-forget osascript -e '\r\n    tell application \"Ghostty\"\r\n\tif it is running then\r\n\t\tactivate\r\n\t\ttell application \"System Events\" to keystroke \"n\" using {command down}\r\n\telse\r\n\t\tactivate\r\n\tend if\r\n    end tell'\r\n    '''\r\n```\r\n\r\nThis script works fine if I run it directly from Script Editor.  However, when invoked via Aerospace, it refuses to open a new window, it only activates the app.  \r\n\r\nAerospace already _seems_ to have the right Accessibility settings turned on in my Settings.  What else could be the issue here?\r\n\r\n### FIX\r\n\r\nAfter writing the above, I found the solution:\r\n\r\nIn Settings -> Privacy & Security -> Accessibility  -> turn on 'Script Editor'\r\n",
      "created_at": "2025-02-27T13:43:21Z",
      "updated_at": "2025-02-27T13:50:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jayjanssen",
        "avatar_url": "https://avatars.githubusercontent.com/u/691356?u=f28a731f4e0903c848f671933ece504f6d8ffe08&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AelTg",
      "number": 1145,
      "title": "Offscreen windows being placed in wrong corner",
      "body": "My monitors are laid out so there is a corner for hidden windows in the bottom left of each, and either bottom corner of the right-most vertical monitor (see arrangement picture). However windows hidden from the main middle display are being hidden to the right, which is not a 'free' corner so they show on the right monitor.\r\n\r\nI'm using version: AeroSpace v0.17.1-Beta 407bad9fb54e9187912ba6cdd6b55df7a4c5d83e\r\n\r\n![ 2025-02-26 at 17 50 23](https://github.com/user-attachments/assets/126f4c2c-a431-4f5a-8831-c78e5cf8faf3)\r\n",
      "created_at": "2025-02-26T17:57:54Z",
      "updated_at": "2025-02-26T19:41:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvCH8",
        "body": "Duplicate of https://github.com/nikitabobko/AeroSpace/issues/413"
      },
      "user": {
        "login": "ahouseago",
        "avatar_url": "https://avatars.githubusercontent.com/u/41902631?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AekYv",
      "number": 1144,
      "title": "Are commands listed in after-startup-command ran consecutively?",
      "body": "Given the following command:\r\n\r\n\r\n```toml\r\nafter-startup-command = [\r\n  'move-workspace-to-monitor --workspace 1.Code ka270h secondary main',\r\n  'move-workspace-to-monitor --workspace 2.Browse main',\r\n  'move-workspace-to-monitor --workspace 3.Entertainment main',\r\n  'move-workspace-to-monitor --workspace 4.Comms main',\r\n  'move-workspace-to-monitor --workspace 5.System secondary main',\r\n  'move-workspace-to-monitor --workspace 6.Productivity main',\r\n  'move-workspace-to-monitor --workspace 7 secondary main',\r\n  'move-workspace-to-monitor --workspace 8 main',\r\n  'move-workspace-to-monitor --workspace 9 secondary main',\r\n  'move-workspace-to-monitor --workspace 10 main',\r\n  'workspace 1.Code', 'workspace 2.Browse'\r\n]\r\n```\r\n\r\nI would expect all my workspace to be placed on the correct monitors, which they are, and then workspace 1 and 2 to be focused in the end.\r\n\r\nHowever, this is not the case. Every time workspace 9 and 2 are focused which leads me to think these aren't consecutive.",
      "created_at": "2025-02-25T21:23:44Z",
      "updated_at": "2025-02-26T14:33:25Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mattcoleanderson",
        "avatar_url": "https://avatars.githubusercontent.com/u/49250378?u=dfb2bdcde30c2ab5b5001704e3ff872cf2cd0e49&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeiRo",
      "number": 1133,
      "title": "Windows are not fully stretched",
      "body": "The windows are not fully stretched. This will become more apparent specially when window/OS-background is dark/light.\r\n\r\nChrome on the left, VScode on the right:\r\n<img width=\"1792\" alt=\"Screenshot 2025-02-23 at 10 36 39 PM\" src=\"https://github.com/user-attachments/assets/94b424a8-0bc3-4192-9c87-6443ba328788\" />\r\n\r\nKitty terminal without borders and OS window decorations:\r\n<img width=\"1792\" alt=\"Screenshot 2025-02-23 at 10 38 54 PM\" src=\"https://github.com/user-attachments/assets/d630fb88-09e8-4a06-b67e-38d001695708\" />\r\n\r\nConfig file is untouched except A-Z workspaces are disabled.\r\n\r\nAeroSpace version: **0.17.1**\r\nMacOS version: **Sonoma 14.7.3**\r\n",
      "created_at": "2025-02-23T19:15:52Z",
      "updated_at": "2025-02-26T14:07:59Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AvAzS",
        "body": "Yes, AeroSpace intentionally adds this gap https://github.com/nikitabobko/AeroSpace/blob/7e46cbe570e61c7c6ae37aef6285b22507aa05de/Sources/AppBundle/layout/layoutRecursive.swift#L7-L10 🤷 "
      },
      "user": {
        "login": "farbodvand",
        "avatar_url": "https://avatars.githubusercontent.com/u/13926209?u=6670ecbe987a2ab483b5196b845aefe596d7bcfa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AekYo",
      "number": 1143,
      "title": "Unexpected Workspace Switching When Navigating Windows",
      "body": "My issue is that I use Microsoft Teams for work, with Teams open on Workspace 1. When I receive a video call, I tend to move the video call window to Workspace 2. However, if I’m in Workspace 2 and I press Option + H/L to move to the next window in the same workspace, it takes me back to Workspace 1 where the main Teams window is located. Is there a way to fix this issue?",
      "created_at": "2025-02-25T21:20:14Z",
      "updated_at": "2025-02-26T10:28:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlejandroSanchez90",
        "avatar_url": "https://avatars.githubusercontent.com/u/127575426?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AejUj",
      "number": 1136,
      "title": "Aerospace start to work slow while playing any video in mpv",
      "body": "While video is playing every command of aerospace starts to work with noticable delay, from half up to 3! seconds. If I pause a video, aerospace works as always.  \r\n\r\nI tried with VLC and it works fine.\r\n\r\n\r\n\r\nDevice: **Apple M1 Sonoma 14.5**\r\n\r\n\r\n**( default config from docs )**\r\n```\r\naerospace CLI client version: 0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\nAeroSpace.app server version: 0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\n```\r\n\r\n**( zero config )**\r\n```\r\nmpv 0.39.0 Copyright © 2000-2024 mpv/MPlayer/mplayer2 projects\r\nlibplacebo version: v7.349.0\r\nFFmpeg version: 7.1\r\nFFmpeg library versions:\r\n   libavcodec      61.19.100\r\n   libavdevice     61.3.100\r\n   libavfilter     10.4.100\r\n   libavformat     61.7.100\r\n   libavutil       59.39.100\r\n   libswresample   5.3.100\r\n   libswscale      8.3.100\r\n```\r\n",
      "created_at": "2025-02-24T20:47:29Z",
      "updated_at": "2025-03-20T21:50:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Zik42",
        "avatar_url": "https://avatars.githubusercontent.com/u/20891802?u=168c8594213584de2a73c84c09f9507d64281980&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AekIN",
      "number": 1141,
      "title": "Aerospace detecting  an instance in app  as new Window",
      "body": "when running aerospace opening an instance of an app will see it as a new windows instaead of running in the same windows. an will try to split the window.",
      "created_at": "2025-02-25T15:54:42Z",
      "updated_at": "2025-02-25T15:54:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vdboots",
        "avatar_url": "https://avatars.githubusercontent.com/u/9152628?u=3d2525b2d760a3e61575a31b575961a20bc79ca5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeZ3Z",
      "number": 1093,
      "title": "Different gap.outer.top depending on monitor configuration",
      "body": "I normally have my laptop plugged into a usb-c dock with 2 external monitors.  I have one of the externals as my primary monitor and the laptop is to my left.  I have sketchybar at the top with a height of 32 and I have the osx menubar auto-hide.\r\nIn this configuration, Aerospace seems to for sketchybar being at the top of all of my monitors and my gap settings can be set to 5.  When I use my laptop unplugged and my laptop is my only screen, the windows cover sketchbar.  I must set gap.outer.top = 32 in order to account for sketchybar.\r\nIs this a bug that Aerospace is not consistent in accounting for sketchybar or is there some configuration setting I need to change?\r\n",
      "created_at": "2025-02-15T20:46:32Z",
      "updated_at": "2025-02-25T13:18:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "albertsj1",
        "avatar_url": "https://avatars.githubusercontent.com/u/141736?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aej4m",
      "number": 1139,
      "title": "iTerm 2 quick terminal",
      "body": "Hey, I was wondering what the best way to set up iTerm's quick terminal (through their global hotkey). I currently have this in my config, which kinda makes it work\r\n\r\n```toml\r\n[[on-window-detected]]\r\n    if.app-id = 'com.googlecode.iterm2'\r\n    if.window-title-regex-substring = \"quake\"\r\n    run = 'layout floating'\r\n```\r\n\r\nbut if I don't have my \"real\" iTerm windows hidden, they get focussed/unfocussed very briefly when closing the quick terminal. This results in a visual flash if they're on the same monitor as the current active workspace, or the cursor moving between the monitors if not. I know this could be something with iTerm itself but was wondering if someone had a good setup for this in combination with Aerospace.",
      "created_at": "2025-02-25T11:38:51Z",
      "updated_at": "2025-02-25T11:38:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "janglad",
        "avatar_url": "https://avatars.githubusercontent.com/u/9323842?u=5ddf6643fd4280b92d205bc0e714f3b8f3716502&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AecvX",
      "number": 1104,
      "title": "v0.17.0-Beta",
      "body": "Update codesign certificate due to expiration. **AeroSpace will re-request accessibility permission.**\r\n\r\n**New features**\r\n- https://github.com/nikitabobko/AeroSpace/issues/846 Add `window-is-fullscreen` to `list-windows` `--format` flag. By @jonathancyu\r\n- https://github.com/nikitabobko/AeroSpace/issues/377 Add new command list-modes. By @bendiksolheim\r\n- https://github.com/nikitabobko/AeroSpace/issues/766 `move-workspace-to-monitor` now can also accepts `(left|down|up|right|<monitor-pattern>...)`. By @franzl1096\r\n\r\n**Improvements**\r\n- Float Firefox Picture in Picture window by default\r\n- https://github.com/nikitabobko/AeroSpace/issues/56 Make menu font monospaced. By @mobile-ar\r\n- https://github.com/nikitabobko/AeroSpace/discussions/1036 Don't treat \"Ghostty Quick Terminal\" as a real windows\r\n- https://github.com/nikitabobko/AeroSpace/issues/1001 Delay new window detection until mouse is up\r\n  - Now, Google Chrome picture in picture is floating by default (YouTube, Google Meet)\r\n  - Brave tabs now detected as tiling windows when the tab is \"dragged out\"\r\n  - Now, dragging tabs between Google Chrome windows is smoother\r\n\r\n**Bug fixes**\r\n- Firefox non-native video fullscreen is now considered a window (`about:config -> full-screen-api.macos-native-full-screen -> false`)\r\n- https://github.com/nikitabobko/AeroSpace/issues/1089 Fix bug. If the window is closed on inactive workspace, don't focus the workspace. By @yspreen\r\n- Fix bug: `flatten-workspace-tree` ignored its cli args\r\n- https://github.com/nikitabobko/AeroSpace/issues/1101 Fix bug. Don't treat share window purple \"pill\" indicator as a window\r\n\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/nikitabobko/AeroSpace/releases/tag/v0.17.0-Beta'>v0.17.0-Beta</a>.</em>",
      "created_at": "2025-02-17T20:28:01Z",
      "updated_at": "2025-02-25T10:18:31Z",
      "category": {
        "name": "announcements-releases",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AejbF",
      "number": 1138,
      "title": "How to expel/unjoin a window from a column?",
      "body": "I'm using `flatten-workspace-tree`, but that's a bit much.  ",
      "created_at": "2025-02-25T00:04:55Z",
      "updated_at": "2025-02-26T10:30:15Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Au8mD",
        "body": "Ayy, simple move command."
      },
      "user": {
        "login": "mgutz",
        "avatar_url": "https://avatars.githubusercontent.com/u/32134?u=e801dd8e9583bc341af2173a22c79d76e2c616fc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AefGE",
      "number": 1115,
      "title": "The small float tips in firefox will be trated as a window in v0.17.0-Beta",
      "body": "See the picture below \r\n<img width=\"210\" alt=\"image\" src=\"https://github.com/user-attachments/assets/15b8e042-e146-4aa8-8cad-a407f9f740f4\" />\r\n\r\nAerospace will treat this small tips as a regular window and try to layout it. This issue doesn't exit in v0.16.2-Beta",
      "created_at": "2025-02-19T23:30:26Z",
      "updated_at": "2025-02-24T18:27:13Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Au4xm",
        "body": "Fixed in 0.17.1-Beta"
      },
      "user": {
        "login": "wd",
        "avatar_url": "https://avatars.githubusercontent.com/u/58177?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aei2X",
      "number": 1135,
      "title": "Multiple browser windows - how do you handle this in AeroSpace?",
      "body": "Hi,\r\n\r\nI use multiple browser windows (Chrome at the moment) to differentiate between work, private, youtube, homelab and other stuff.\r\nMacOS/AeroSpace registers only one app (aerospace list-apps), so it is not possible to move a specific Chrome-window to a specific Space automatically.\r\nThis is especially annoying when restarting Chrome or the Mac.\r\n\r\nHow do you guys handle this? ",
      "created_at": "2025-02-24T11:38:48Z",
      "updated_at": "2025-02-24T11:39:56Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sunch4se",
        "avatar_url": "https://avatars.githubusercontent.com/u/45451054?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeVBx",
      "number": 1080,
      "title": "See all accordion windows instead of only adjacent ones",
      "body": "# The Basic Idea\r\n\r\nIt's nice to use the accordion layout as it largely increases the space you have for the current application, while also maintaining *some* context about the rest of the workspace. However, I think it might be nice to have the option to see just a little more context.\r\n\r\nSometimes, when I have to switch to a window that isn't directly to the left/right or top/bottom in my accordion layout, I find myself having to think briefly about where one of my windows is in the whole stack. I use accordion a lot with just two windows at a time, since it's super convenient moving back and forth between them when knowing all the open windows and where they are in relation to each other without losing a lot of screen space. I feel like it could be beneficial to, similarly, be able to see the entire context of the accordion layout with more windows in it as well.\r\n\r\nSo what I was thinking was either an option to use the accordion layout \"expanded\" (if that word makes sense here) or having a separate layout kind that's less stacked and more (in my mind) accordion-like. This would modify the default behavior of the accordion from showing just the one adjacent window on either side of the focused window with $\\text{accordion-padding}$  size to, instead, show all $x$ windows in one direction and $y$ windows in the other, each having $\\text{accordion-padding}$ size (i.e. the focused window would have a $x \\cdot \\text{accordion-padding}$ sized gap on one side, and a $y \\cdot \\text{accordion-padding}$ sized gap on the other). To me, the option (as opposed to a new, separate layout) feels like it would fit in better with all of Aerospace's current features and philosophy, with something along the lines of an `accordion-style` config option which can be `stacked` (current default) or `expanded` (or better fitting words).\r\n\r\n# Argument Against This\r\n\r\nI see how with an absurd amount of windows this would cause the focused window to get smaller and smaller and shift more in one direction than the other due to the gap on either side being dependent on the number of windows. Whereas with the way it works now, the focused window always has the same size and position, irrespective of the how many windows on either side.\r\n\r\nAt the same time, though, I rarely have more than 3 *maybe* 4 windows open in the same workspace as I think that (arguably) wouldn't be a very effective use of a window manager like Aerospace. I believe that for a reasonable number of windows, these things aren't really an issue. I find that the benefit of having the focused window stay the same \"maximum\" size in the accordion layout is diminished by making the sacrifice of not seeing the entire workspace's context -- with the current way accordion works, if I am prioritizing screen space I'd rather just make the window fullscreen (i.e., maximize, not native) since I can't see any of my other apps in accordion anyways, then un-fullscreen when I want to move to another window, eliminating that niche in which the accordion layout would be useful.\r\n\r\n# What I've Tried\r\n\r\nThe closest I was able to mimic this behavior and layout was by turning off the automatic container flattening by disabling `enable-normalization-flatten-containers` so that I can have a container with just one window, and another container with lets say two windows, both in the root container. If I make the layout of both the root container and the container with two windows accordion, then both `accordion-padding`'s are seen like how I described -- though this is the case only when a specific window is focused and only in one of the directions, so this isn't actually a solution, but rather just my \"prototyping\" of how the layout would look in a certain instance. \r\n\r\n# TL;DR\r\n\r\nIn short, it would be useful to have the choice to see a bit of all windows in either direction of the focused window in the accordion layout, rather than just being able see *that* there are windows in either direction.\r\n\r\n---\r\n\r\nI hope everything made sense, and that I explained the idea and it's utility decently. Would any of you use this? Do you think that this would be a reasonable/useful feature?\r\n\r\nThanks!\r\n\r\n",
      "created_at": "2025-02-12T04:13:04Z",
      "updated_at": "2025-02-23T22:46:26Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dfl0",
        "avatar_url": "https://avatars.githubusercontent.com/u/130588561?u=7a5246d0e8c4e4c289574020a712663d121bffa3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeiD5",
      "number": 1131,
      "title": "Layout requirements - how do I achieve these things?",
      "body": "# 1. Different layouts for different displays\r\n\r\n- I regularly switch between my built-in mac display (16:10) and an ultrawide external display (21:9)\r\n- I want to use horizontal accordion only on on my 16:10 internal display, and then a 2 column horizontal split on the ultrawide, with each column being a vertical accordion\r\n\r\nAnyone know how to write the config file to achieve this?\r\n\r\n# 2. Two column horizontal split, with each column being a vertical accordion\r\n\r\nLike this \r\n\r\n![CleanShot 2025-02-23 at 19 56 30](https://github.com/user-attachments/assets/531b1e2b-4d78-47d1-b799-ea7b057759d2)\r\n\r\nIs it even possible?",
      "created_at": "2025-02-23T11:56:47Z",
      "updated_at": "2025-02-23T14:08:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ortonomy",
        "avatar_url": "https://avatars.githubusercontent.com/u/6688676?u=bf67a86032e6aefd254d7ad786310448fb1a301e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad27g",
      "number": 984,
      "title": "Layout changes after exiting fullscreen on sites like YouTube, Netflix, etc.",
      "body": "First of all, I love Aerospace! It has made me so much productive, and I can't imagine using my mac without it!\r\n\r\nI am writing to hopefully resolve a bug I am facing - when I enter fullscreen on any app, and then exit, my window layouts change.\r\n\r\nFor example, a typical window arrangement I have is having Arc browser on the left side, and Apple notes app on the right side. So consider this flow:\r\n1. I am watching youtube on Arc browser\r\n2. I enter fullscreen mode to watch the video. (Or if I go full screen on any app)\r\n3. I press escape to exit fullscreen\r\n\r\nOnce I exit full screen, Arc browser moves to the right of the screen, instead of being on the left as I had it originally. Since going fullscreen on videos is something I do many times a day, this layout change gets annoying!\r\n\r\nPlease let me know if I am just missing some configuration that takes care of this, or if this indeed is an actual bug. Thank you so much!",
      "created_at": "2025-01-15T13:20:37Z",
      "updated_at": "2025-02-23T13:20:01Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vedprakash2302",
        "avatar_url": "https://avatars.githubusercontent.com/u/33724654?u=c326d05ae0ca5701990ba90053cb0cc87f2fe08b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AedXX",
      "number": 1110,
      "title": "There is a display issue with the monospaced font menu bar newly added in v0.17.0 version",
      "body": "**I prefer setting the system appearance to light mode while using a dark mode wallpaper.**\r\n\r\n**However, this combination causes the monospace font in the menu bar (#56) to appear in dark , making it difficult to see.**\r\n\r\n- **light mode & dark wallpaper (My Setting)**\r\n    <img width=\"529\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6a69556d-4d18-46da-bda1-8e405fd211ce\" />\r\n\r\n- light mode & light wallpaper\r\n    <img width=\"505\" alt=\"image\" src=\"https://github.com/user-attachments/assets/331081ec-29f8-4b85-9e74-e0b0c83cd11a\" />\r\n\r\nVersion\r\n- AeroSpace v0.17.0-Beta\r\n- macOS Ventura 13.7.4 (MBP 2017 Intel Chip)",
      "created_at": "2025-02-18T12:11:13Z",
      "updated_at": "2025-02-23T11:58:43Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Au4xh",
        "body": "Fixed in 0.17.1-Beta"
      },
      "user": {
        "login": "monsterhxw",
        "avatar_url": "https://avatars.githubusercontent.com/u/38623561?u=8adb1deb717be0124630748a5ba9d39da49569bf&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aehzu",
      "number": 1129,
      "title": "Use PgUp and PgDn in key bindings",
      "body": "I am trying to guess the name for the \"Page Up\" and \"Page Down\" keys, because the guide doesn't specify in any of the sections. I would expect these keys to be listed in \"special keys\".\r\n\r\nIt's a little funny that the discoverability of the key notations is only mentioned in a comment in the default config, so far as I have seen. Is there a comprehensive list of all these key notations so that I don't have to guess?\r\n\r\nI have also tried:\r\n```toml\r\n[key-mapping.key-notation-to-key-code]\r\npage_up = '0x74'\r\n```",
      "created_at": "2025-02-22T22:07:21Z",
      "updated_at": "2025-02-22T22:07:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "spikespaz",
        "avatar_url": "https://avatars.githubusercontent.com/u/12502988?u=f027e150e3c7591c56a47247376ddf2910cec6fa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AehP8",
      "number": 1124,
      "title": "window on seperate space effecting current windows",
      "body": "",
      "created_at": "2025-02-21T21:58:10Z",
      "updated_at": "2025-02-22T21:16:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "PeytonIsHere",
        "avatar_url": "https://avatars.githubusercontent.com/u/83377575?u=e7a15bfa204ddf901a4859fb9a94f2755f502bac&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aehq_",
      "number": 1128,
      "title": "workspace prev / next exception logic to use prev/next based on NUMERICAL ORDER",
      "body": "I would like `aerospace list-workspaces --monitor focused --empty | aerospace workspace next` to bring me to the next empty workspace based on NUMERICAL ORDER, even if the current focused workspace is not in the list of workspaces piped to workspace next. \r\n\r\nAlso correspondingly for --empty ... prev, --empty no ... prev, --empty no ... next.\r\n\r\nUse Case example:\r\n\r\nWindows on workspaces 1, 2, 5, 6\r\nNo windows on workspaces: 3, 4, 7, 8\r\n\r\nIf the focus workspace is 3, then I would expect the next non-empty workspace to be 5. But `aerospace list-workspaces --monitor focused --empty no | aerospace workspace next` takes me to workspace 1. Since 3 is not in the list, it seems the exception path for next is the first of the list (1) , instead of the next NUMERICALLY ORDERED space in the list (5).\r\n",
      "created_at": "2025-02-22T16:43:55Z",
      "updated_at": "2025-02-22T16:45:01Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenbanks-peng",
        "avatar_url": "https://avatars.githubusercontent.com/u/26904200?u=a6f1165e21ce6d7c2d4574f1ae4573cef4c7a00e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeg7u",
      "number": 1123,
      "title": "Crash report",
      "body": "Aerospace version: 0.17.0-Beta\r\nmacOS: 15.3 Beta (24D5055b)\r\n\r\nI had 2 Anki windows open (the Decks window, and the Add window). I then opened the Browse window and Aerospace crashed.\r\n\r\n```\r\n-------------------------------------\r\nTranslated Report (Full Report Below)\r\n-------------------------------------\r\n\r\nProcess:               AeroSpace [13799]\r\nPath:                  /Volumes/VOLUME/*/AeroSpace.app/Contents/MacOS/AeroSpace\r\nIdentifier:            bobko.aerospace\r\nVersion:               0.17.0-Beta (???)\r\nCode Type:             ARM-64 (Native)\r\nParent Process:        launchd [1]\r\nUser ID:               501\r\n\r\nDate/Time:             2025-02-21 17:37:51.0233 +0200\r\nOS Version:            macOS 15.3 (24D5055b)\r\nReport Version:        12\r\nAnonymous UUID:        67CADAEE-62EB-3CE1-CE2A-DFC1EEDFD6EB\r\n\r\nSleep/Wake UUID:       879348CB-E9C6-4C21-894D-017762A9347F\r\n\r\nTime Awake Since Boot: 100000 seconds\r\nTime Since Wake:       6027 seconds\r\n\r\nSystem Integrity Protection: enabled\r\n\r\nCrashed Thread:        0  Dispatch queue: com.apple.main-thread\r\n\r\nException Type:        EXC_BREAKPOINT (SIGTRAP)\r\nException Codes:       0x0000000000000001, 0x0000000104e6470c\r\n\r\nTermination Reason:    Namespace SIGNAL, Code 5 Trace/BPT trap: 5\r\nTerminating Process:   exc handler [13799]\r\n\r\nThread 0 Crashed::  Dispatch queue: com.apple.main-thread\r\n0   AeroSpace                     \t       0x104e6470c specialized MoveMouseCommand.run(_:_:) + 1352\r\n1   AeroSpace                     \t       0x104e64550 specialized MoveMouseCommand.run(_:_:) + 908\r\n2   AeroSpace                     \t       0x104e63dfc protocol witness for Command.run(_:_:) in conformance MoveMouseCommand + 68\r\n3   AeroSpace                     \t       0x104e3abf8 Array<A>.runCmdSeq(_:_:) + 884\r\n4   AeroSpace                     \t       0x104e8ed48 onFocusChanged(_:) + 272\r\n5   AeroSpace                     \t       0x104e8e690 checkOnFocusChangedCallbacks() + 800\r\n6   AeroSpace                     \t       0x104e9150c specialized refreshSession<A>(_:screenIsDefinitelyUnlocked:startup:body:) + 740\r\n7   AeroSpace                     \t       0x104e33c98 closure #1 in static GlobalObserver.initObserver() + 476\r\n8   AeroSpace                     \t       0x104e33db0 thunk for @escaping @callee_guaranteed (@guaranteed NSEvent) -> () + 48\r\n9   AppKit                        \t       0x18a5ab0c4 GlobalObserverHandler + 92\r\n10  HIToolbox                     \t       0x191887108 DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1256\r\n11  HIToolbox                     \t       0x191884e60 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 356\r\n12  HIToolbox                     \t       0x191885058 SendEventToEventTargetWithOptions + 44\r\n13  HIToolbox                     \t       0x1918817e8 ToolboxEventDispatcherHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 468\r\n14  HIToolbox                     \t       0x19188753c DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 2332\r\n15  HIToolbox                     \t       0x191884e60 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 356\r\n16  HIToolbox                     \t       0x191884cf0 SendEventToEventTarget + 40\r\n17  AppKit                        \t       0x189e9a99c _DPSNextEvent + 1000\r\n18  AppKit                        \t       0x18a800c24 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688\r\n19  AppKit                        \t       0x189e8d874 -[NSApplication run] + 480\r\n20  AppKit                        \t       0x189e64068 NSApplicationMain + 888\r\n21  SwiftUI                       \t       0x1b4fb970c specialized runApp(_:) + 160\r\n22  SwiftUI                       \t       0x1b542f9a0 runApp<A>(_:) + 140\r\n23  SwiftUI                       \t       0x1b57abe68 static App.main() + 224\r\n24  AeroSpace                     \t       0x104e31978 main + 36\r\n25  dyld                          \t       0x185ebc274 start + 2840\r\n\r\nThread 1::  Dispatch queue: com.apple.root.default-qos\r\n0   libsystem_kernel.dylib        \t       0x186203804 __accept + 8\r\n1   AeroSpace                     \t       0x10509efe0 Socket.acceptClientConnection(invokeDelegate:) + 452\r\n2   AeroSpace                     \t       0x104e9fd3c closure #3 in startUnixSocketServer() + 148\r\n3   AeroSpace                     \t       0x104ea250c thunk for @escaping @callee_guaranteed @Sendable () -> () + 28\r\n4   libdispatch.dylib             \t       0x186087854 _dispatch_call_block_and_release + 32\r\n5   libdispatch.dylib             \t       0x1860895b4 _dispatch_client_callout + 20\r\n6   libdispatch.dylib             \t       0x18608c700 _dispatch_queue_override_invoke + 916\r\n7   libdispatch.dylib             \t       0x18609b4cc _dispatch_root_queue_drain + 392\r\n8   libdispatch.dylib             \t       0x18609bcd8 _dispatch_worker_thread2 + 156\r\n9   libsystem_pthread.dylib       \t       0x18623839c _pthread_wqthread + 228\r\n10  libsystem_pthread.dylib       \t       0x1862370f0 start_wqthread + 8\r\n\r\nThread 2:: com.apple.NSEventThread\r\n0   libsystem_kernel.dylib        \t       0x1861faf54 mach_msg2_trap + 8\r\n1   libsystem_kernel.dylib        \t       0x18620d604 mach_msg2_internal + 80\r\n2   libsystem_kernel.dylib        \t       0x186203af8 mach_msg_overwrite + 480\r\n3   libsystem_kernel.dylib        \t       0x1861fb29c mach_msg + 24\r\n4   CoreFoundation                \t       0x186324a4c __CFRunLoopServiceMachPort + 160\r\n5   CoreFoundation                \t       0x1863232ac __CFRunLoopRun + 1212\r\n6   CoreFoundation                \t       0x186322734 CFRunLoopRunSpecific + 588\r\n7   AppKit                        \t       0x189fbf278 _NSEventThread + 148\r\n8   libsystem_pthread.dylib       \t       0x18623c2e4 _pthread_start + 136\r\n9   libsystem_pthread.dylib       \t       0x1862370fc thread_start + 8\r\n\r\nThread 3:\r\n0   libsystem_pthread.dylib       \t       0x1862370e8 start_wqthread + 0\r\n\r\nThread 4:\r\n0   libsystem_pthread.dylib       \t       0x1862370e8 start_wqthread + 0\r\n\r\n\r\nThread 0 crashed with ARM Thread State (64-bit):\r\n    x0: 0x000000016afce1b8   x1: 0x000000016afce209   x2: 0x0000000000000000   x3: 0x000000016afce1d9\r\n    x4: 0x0000000400000003   x5: 0x0000000000000003   x6: 0x0000000000000000   x7: 0x0000000000000003\r\n    x8: 0x0000000000000000   x9: 0x0000000104e647a0  x10: 0x0000000104e6452c  x11: 0x0000000000000168\r\n   x12: 0x00000001efc551a8  x13: 0x706564627974651f  x14: 0x00000000a8e05854  x15: 0x00000000a8c05040\r\n   x16: 0x0000000186272a10  x17: 0x00000001f81d9e10  x18: 0x0000000000000000  x19: 0x0000600000510900\r\n   x20: 0x000000016afce1b8  x21: 0x0000600000206080  x22: 0x00006000037f8720  x23: 0x000000000000006c\r\n   x24: 0x0000000000000000  x25: 0x0000000000000000  x26: 0x0000000000000001  x27: 0xd000000000000020\r\n   x28: 0x000000016afce210   fp: 0x000000016afce2d0   lr: 0x0000000104e64550\r\n    sp: 0x000000016afce190   pc: 0x0000000104e6470c cpsr: 0x20001000\r\n   far: 0x0000000000000000  esr: 0xf2000001 (Breakpoint) brk 1\r\n\r\nBinary Images:\r\n       0x104e30000 -        0x105157fff bobko.aerospace (0.17.0-Beta) <6bd2381f-9d42-3ff0-9b90-89a2d84f4c91> /Applications/AeroSpace.app/Contents/MacOS/AeroSpace\r\n       0x111ae8000 -        0x111af3fff libobjc-trampolines.dylib (*) <9954d590-e413-35cf-b660-bc2de4134e8f> /usr/lib/libobjc-trampolines.dylib\r\n       0x112ca0000 -        0x113343fff com.apple.AGXMetalG13X (324.6) <d03677d4-c896-3fd7-88c0-abed05133e06> /System/Library/Extensions/AGXMetalG13X.bundle/Contents/MacOS/AGXMetalG13X\r\n       0x189e5f000 -        0x18b29bfff com.apple.AppKit (6.9) <b7c27979-84c5-3bd7-aa07-8fcf10e12a5d> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit\r\n       0x19178d000 -        0x191a94fff com.apple.HIToolbox (2.1.1) <594ec893-f002-3f09-bd1c-59e9b238dc8b> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox\r\n       0x1b4f6e000 -        0x1b6717fff com.apple.SwiftUI (6.3.5.1) <f767e6f0-17d1-3634-93a5-66785a892f49> /System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI\r\n       0x185eb6000 -        0x185f37f43 dyld (*) <b0de56c1-e3d4-3740-a0ab-0bd0a040a9a8> /usr/lib/dyld\r\n               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???\r\n       0x18626f000 -        0x186276feb libsystem_platform.dylib (*) <ea50bee7-1bbb-3afd-b7f3-75f12d703e5c> /usr/lib/system/libsystem_platform.dylib\r\n       0x1861fa000 -        0x186234ff7 libsystem_kernel.dylib (*) <eee9d0d3-dffc-37cb-9ced-b27cd0286d8c> /usr/lib/system/libsystem_kernel.dylib\r\n       0x186085000 -        0x1860cbfff libdispatch.dylib (*) <eb8b954d-cfd1-383c-bf15-6100d0281617> /usr/lib/system/libdispatch.dylib\r\n       0x186235000 -        0x186241fff libsystem_pthread.dylib (*) <fba158c4-2eb3-3130-a201-dbbfa96a87ac> /usr/lib/system/libsystem_pthread.dylib\r\n       0x1862a7000 -        0x18679bfff com.apple.CoreFoundation (6.9) <c208ae1d-332a-338f-908a-44ca342f03dc> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation\r\n\r\nExternal Modification Summary:\r\n  Calls made by other processes targeting this process:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n  Calls made by this process:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n  Calls made by all processes on this machine:\r\n    task_for_pid: 0\r\n    thread_create: 0\r\n    thread_set_state: 0\r\n\r\nVM Region Summary:\r\nReadOnly portion of Libraries: Total=1.6G resident=0K(0%) swapped_out_or_unallocated=1.6G(100%)\r\nWritable regions: Total=1.4G written=658K(0%) resident=658K(0%) swapped_out=0K(0%) unallocated=1.4G(100%)\r\n\r\n                                VIRTUAL   REGION \r\nREGION TYPE                        SIZE    COUNT (non-coalesced) \r\n===========                     =======  ======= \r\nActivity Tracing                   256K        1 \r\nAttributeGraph Data               1024K        1 \r\nColorSync                          208K        9 \r\nCoreAnimation                       16K        1 \r\nCoreGraphics                        48K        3 \r\nCoreServices                        16K        1 \r\nFoundation                          16K        1 \r\nKernel Alloc Once                   32K        1 \r\nMALLOC                             1.4G       82 \r\nMALLOC guard page                  384K       24 \r\nMach message                       960K       10 \r\nSTACK GUARD                       56.1M        5 \r\nStack                             10.1M        5 \r\nVM_ALLOCATE                        112K        7 \r\n__AUTH                            5244K      674 \r\n__AUTH_CONST                      70.3M      917 \r\n__CTF                               824        1 \r\n__DATA                            24.7M      899 \r\n__DATA_CONST                      23.9M      927 \r\n__DATA_DIRTY                      2751K      341 \r\n__FONT_DATA                        2352        1 \r\n__INFO_FILTER                         8        1 \r\n__LINKEDIT                       612.3M        4 \r\n__OBJC_RW                         2374K        1 \r\n__TEXT                             1.0G      948 \r\n__TPRO_CONST                       272K        2 \r\nmapped file                      222.9M       30 \r\nowned unmapped memory               48K        1 \r\npage table in kernel               658K        1 \r\nshared memory                      912K       13 \r\n===========                     =======  ======= \r\nTOTAL                              3.4G     4912 \r\n\r\n\r\n\r\n-----------\r\nFull Report\r\n-----------\r\n\r\n{\"app_name\":\"AeroSpace\",\"timestamp\":\"2025-02-21 17:38:10.00 +0200\",\"app_version\":\"0.17.0-Beta\",\"slice_uuid\":\"6bd2381f-9d42-3ff0-9b90-89a2d84f4c91\",\"build_version\":\"\",\"platform\":1,\"bundleID\":\"bobko.aerospace\",\"share_with_app_devs\":0,\"is_first_party\":0,\"bug_type\":\"309\",\"os_version\":\"macOS 15.3 (24D5055b)\",\"roots_installed\":0,\"name\":\"AeroSpace\",\"incident_id\":\"00748777-0CE1-47A0-B5FD-55B849EB3541\"}\r\n{\r\n  \"uptime\" : 100000,\r\n  \"procRole\" : \"Default\",\r\n  \"version\" : 2,\r\n  \"userID\" : 501,\r\n  \"deployVersion\" : 210,\r\n  \"modelCode\" : \"MacBookPro18,3\",\r\n  \"coalitionID\" : 1772,\r\n  \"osVersion\" : {\r\n    \"train\" : \"macOS 15.3\",\r\n    \"build\" : \"24D5055b\",\r\n    \"releaseType\" : \"User\"\r\n  },\r\n  \"captureTime\" : \"2025-02-21 17:37:51.0233 +0200\",\r\n  \"codeSigningMonitor\" : 1,\r\n  \"incident\" : \"00748777-0CE1-47A0-B5FD-55B849EB3541\",\r\n  \"pid\" : 13799,\r\n  \"translated\" : false,\r\n  \"cpuType\" : \"ARM-64\",\r\n  \"roots_installed\" : 0,\r\n  \"bug_type\" : \"309\",\r\n  \"procLaunch\" : \"2025-02-20 10:58:34.2827 +0200\",\r\n  \"procStartAbsTime\" : 117214223281,\r\n  \"procExitAbsTime\" : 2534903343957,\r\n  \"procName\" : \"AeroSpace\",\r\n  \"procPath\" : \"\\/Volumes\\/VOLUME\\/*\\/AeroSpace.app\\/Contents\\/MacOS\\/AeroSpace\",\r\n  \"bundleInfo\" : {\"CFBundleShortVersionString\":\"0.17.0-Beta\",\"CFBundleIdentifier\":\"bobko.aerospace\"},\r\n  \"storeInfo\" : {\"deviceIdentifierForVendor\":\"A26E3527-7D80-5558-97CC-67F98E6EF7B5\",\"thirdParty\":true},\r\n  \"parentProc\" : \"launchd\",\r\n  \"parentPid\" : 1,\r\n  \"coalitionName\" : \"bobko.aerospace\",\r\n  \"crashReporterKey\" : \"67CADAEE-62EB-3CE1-CE2A-DFC1EEDFD6EB\",\r\n  \"codeSigningID\" : \"bobko.aerospace\",\r\n  \"codeSigningTeamID\" : \"\",\r\n  \"codeSigningFlags\" : 570425861,\r\n  \"codeSigningValidationCategory\" : 10,\r\n  \"codeSigningTrustLevel\" : 4294967295,\r\n  \"instructionByteStream\" : {\"beforePC\":\"+mdQqfxvT6npI05t6ytNbe0zTG3\\/QwWRwANf1iAAINQgACDUIAAg1A==\",\"atPC\":\"IAAg1OgKQPkBBQCRAACAUiIAgFLjAxeqB54BlPcDAKqAAgD5VP\\/\\/Fw==\"},\r\n  \"bootSessionUUID\" : \"ADD709ED-8D63-4C96-B80A-117BA624F5A9\",\r\n  \"wakeTime\" : 6027,\r\n  \"sleepWakeUUID\" : \"879348CB-E9C6-4C21-894D-017762A9347F\",\r\n  \"sip\" : \"enabled\",\r\n  \"exception\" : {\"codes\":\"0x0000000000000001, 0x0000000104e6470c\",\"rawCodes\":[1,4377167628],\"type\":\"EXC_BREAKPOINT\",\"signal\":\"SIGTRAP\"},\r\n  \"termination\" : {\"flags\":0,\"code\":5,\"namespace\":\"SIGNAL\",\"indicator\":\"Trace\\/BPT trap: 5\",\"byProc\":\"exc handler\",\"byPid\":13799},\r\n  \"os_fault\" : {\"process\":\"AeroSpace\"},\r\n  \"extMods\" : {\"caller\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"system\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"targeted\":{\"thread_create\":0,\"thread_set_state\":0,\"task_for_pid\":0},\"warnings\":0},\r\n  \"faultingThread\" : 0,\r\n  \"threads\" : [{\"triggered\":true,\"id\":115827,\"threadState\":{\"x\":[{\"value\":6089925048},{\"value\":6089925129},{\"value\":0},{\"value\":6089925081},{\"value\":17179869187},{\"value\":3},{\"value\":0},{\"value\":3},{\"value\":0},{\"value\":4377167776},{\"value\":4377167148,\"symbolLocation\":872,\"symbol\":\"specialized MoveMouseCommand.run(_:_:)\"},{\"value\":360},{\"value\":8317653416,\"symbolLocation\":60840,\"symbol\":\"InitialAllocationPool\"},{\"value\":8098989879002948895},{\"value\":2833274964},{\"value\":2831175744},{\"value\":6545680912,\"symbolLocation\":0,\"symbol\":\"_platform_memmove\"},{\"value\":8457657872},{\"value\":0},{\"value\":105553121577216},{\"value\":6089925048},{\"value\":105553118388352},{\"value\":105553174955808},{\"value\":108},{\"value\":0},{\"value\":0},{\"value\":1},{\"value\":14987979559889010720},{\"value\":6089925136}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":4377167184},\"cpsr\":{\"value\":536875008},\"fp\":{\"value\":6089925328},\"sp\":{\"value\":6089925008},\"esr\":{\"value\":4060086273,\"description\":\"(Breakpoint) brk 1\"},\"pc\":{\"value\":4377167628,\"matchesCrashFrame\":1},\"far\":{\"value\":0}},\"queue\":\"com.apple.main-thread\",\"frames\":[{\"imageOffset\":214796,\"symbol\":\"specialized MoveMouseCommand.run(_:_:)\",\"symbolLocation\":1352,\"imageIndex\":0},{\"imageOffset\":214352,\"symbol\":\"specialized MoveMouseCommand.run(_:_:)\",\"symbolLocation\":908,\"imageIndex\":0},{\"imageOffset\":212476,\"symbol\":\"protocol witness for Command.run(_:_:) in conformance MoveMouseCommand\",\"symbolLocation\":68,\"imageIndex\":0},{\"imageOffset\":44024,\"symbol\":\"Array<A>.runCmdSeq(_:_:)\",\"symbolLocation\":884,\"imageIndex\":0},{\"imageOffset\":388424,\"symbol\":\"onFocusChanged(_:)\",\"symbolLocation\":272,\"imageIndex\":0},{\"imageOffset\":386704,\"symbol\":\"checkOnFocusChangedCallbacks()\",\"symbolLocation\":800,\"imageIndex\":0},{\"imageOffset\":398604,\"symbol\":\"specialized refreshSession<A>(_:screenIsDefinitelyUnlocked:startup:body:)\",\"symbolLocation\":740,\"imageIndex\":0},{\"imageOffset\":15512,\"symbol\":\"closure #1 in static GlobalObserver.initObserver()\",\"symbolLocation\":476,\"imageIndex\":0},{\"imageOffset\":15792,\"symbol\":\"thunk for @escaping @callee_guaranteed (@guaranteed NSEvent) -> ()\",\"symbolLocation\":48,\"imageIndex\":0},{\"imageOffset\":7651524,\"symbol\":\"GlobalObserverHandler\",\"symbolLocation\":92,\"imageIndex\":3},{\"imageOffset\":1024264,\"symbol\":\"DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*)\",\"symbolLocation\":1256,\"imageIndex\":4},{\"imageOffset\":1015392,\"symbol\":\"SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*)\",\"symbolLocation\":356,\"imageIndex\":4},{\"imageOffset\":1015896,\"symbol\":\"SendEventToEventTargetWithOptions\",\"symbolLocation\":44,\"imageIndex\":4},{\"imageOffset\":1001448,\"symbol\":\"ToolboxEventDispatcherHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*)\",\"symbolLocation\":468,\"imageIndex\":4},{\"imageOffset\":1025340,\"symbol\":\"DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*)\",\"symbolLocation\":2332,\"imageIndex\":4},{\"imageOffset\":1015392,\"symbol\":\"SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*)\",\"symbolLocation\":356,\"imageIndex\":4},{\"imageOffset\":1015024,\"symbol\":\"SendEventToEventTarget\",\"symbolLocation\":40,\"imageIndex\":4},{\"imageOffset\":244124,\"symbol\":\"_DPSNextEvent\",\"symbolLocation\":1000,\"imageIndex\":3},{\"imageOffset\":10099748,\"symbol\":\"-[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]\",\"symbolLocation\":688,\"imageIndex\":3},{\"imageOffset\":190580,\"symbol\":\"-[NSApplication run]\",\"symbolLocation\":480,\"imageIndex\":3},{\"imageOffset\":20584,\"symbol\":\"NSApplicationMain\",\"symbolLocation\":888,\"imageIndex\":3},{\"imageOffset\":309004,\"symbol\":\"specialized runApp(_:)\",\"symbolLocation\":160,\"imageIndex\":5},{\"imageOffset\":4987296,\"symbol\":\"runApp<A>(_:)\",\"symbolLocation\":140,\"imageIndex\":5},{\"imageOffset\":8642152,\"symbol\":\"static App.main()\",\"symbolLocation\":224,\"imageIndex\":5},{\"imageOffset\":6520,\"symbol\":\"main\",\"symbolLocation\":36,\"imageIndex\":0},{\"imageOffset\":25204,\"symbol\":\"start\",\"symbolLocation\":2840,\"imageIndex\":6}]},{\"id\":115838,\"threadState\":{\"x\":[{\"value\":4},{\"value\":0},{\"value\":6090484060},{\"value\":5526030626},{\"value\":0},{\"value\":4260102651},{\"value\":105553178189728},{\"value\":6090479504},{\"value\":128},{\"value\":0},{\"value\":105553178189728},{\"value\":111461681790976},{\"value\":16},{\"value\":105553178149868},{\"value\":2095104},{\"value\":2043},{\"value\":30},{\"value\":506},{\"value\":0},{\"value\":5526030352},{\"value\":5526030626},{\"value\":0},{\"value\":6090484384},{\"value\":0},{\"value\":5526030404},{\"value\":8316930752,\"symbolLocation\":1536,\"symbol\":\"_dispatch_root_queues\"},{\"value\":9223372041234917056},{\"value\":14987979559889010718},{\"value\":4380140784}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":4379504608},\"cpsr\":{\"value\":1610616832},\"fp\":{\"value\":6090485152},\"sp\":{\"value\":6090483952},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6545225732},\"far\":{\"value\":0}},\"queue\":\"com.apple.root.default-qos\",\"frames\":[{\"imageOffset\":38916,\"symbol\":\"__accept\",\"symbolLocation\":8,\"imageIndex\":9},{\"imageOffset\":2551776,\"symbol\":\"Socket.acceptClientConnection(invokeDelegate:)\",\"symbolLocation\":452,\"imageIndex\":0},{\"imageOffset\":458044,\"symbol\":\"closure #3 in startUnixSocketServer()\",\"symbolLocation\":148,\"imageIndex\":0},{\"imageOffset\":468236,\"symbol\":\"thunk for @escaping @callee_guaranteed @Sendable () -> ()\",\"symbolLocation\":28,\"imageIndex\":0},{\"imageOffset\":10324,\"symbol\":\"_dispatch_call_block_and_release\",\"symbolLocation\":32,\"imageIndex\":10},{\"imageOffset\":17844,\"symbol\":\"_dispatch_client_callout\",\"symbolLocation\":20,\"imageIndex\":10},{\"imageOffset\":30464,\"symbol\":\"_dispatch_queue_override_invoke\",\"symbolLocation\":916,\"imageIndex\":10},{\"imageOffset\":91340,\"symbol\":\"_dispatch_root_queue_drain\",\"symbolLocation\":392,\"imageIndex\":10},{\"imageOffset\":93400,\"symbol\":\"_dispatch_worker_thread2\",\"symbolLocation\":156,\"imageIndex\":10},{\"imageOffset\":13212,\"symbol\":\"_pthread_wqthread\",\"symbolLocation\":228,\"imageIndex\":11},{\"imageOffset\":8432,\"symbol\":\"start_wqthread\",\"symbolLocation\":8,\"imageIndex\":11}]},{\"id\":115902,\"name\":\"com.apple.NSEventThread\",\"threadState\":{\"x\":[{\"value\":268451845},{\"value\":21592279046},{\"value\":8589934592},{\"value\":314473210445824},{\"value\":0},{\"value\":314473210445824},{\"value\":2},{\"value\":4294967295},{\"value\":18446744073709550527},{\"value\":2},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":73219},{\"value\":0},{\"value\":0},{\"value\":18446744073709551569},{\"value\":8457656848},{\"value\":0},{\"value\":4294967295},{\"value\":2},{\"value\":314473210445824},{\"value\":0},{\"value\":314473210445824},{\"value\":6093922408},{\"value\":8589934592},{\"value\":21592279046},{\"value\":21592279046},{\"value\":4412409862}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":6545266180},\"cpsr\":{\"value\":4096},\"fp\":{\"value\":6093922256},\"sp\":{\"value\":6093922176},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6545190740},\"far\":{\"value\":0}},\"frames\":[{\"imageOffset\":3924,\"symbol\":\"mach_msg2_trap\",\"symbolLocation\":8,\"imageIndex\":9},{\"imageOffset\":79364,\"symbol\":\"mach_msg2_internal\",\"symbolLocation\":80,\"imageIndex\":9},{\"imageOffset\":39672,\"symbol\":\"mach_msg_overwrite\",\"symbolLocation\":480,\"imageIndex\":9},{\"imageOffset\":4764,\"symbol\":\"mach_msg\",\"symbolLocation\":24,\"imageIndex\":9},{\"imageOffset\":514636,\"symbol\":\"__CFRunLoopServiceMachPort\",\"symbolLocation\":160,\"imageIndex\":12},{\"imageOffset\":508588,\"symbol\":\"__CFRunLoopRun\",\"symbolLocation\":1212,\"imageIndex\":12},{\"imageOffset\":505652,\"symbol\":\"CFRunLoopRunSpecific\",\"symbolLocation\":588,\"imageIndex\":12},{\"imageOffset\":1442424,\"symbol\":\"_NSEventThread\",\"symbolLocation\":148,\"imageIndex\":3},{\"imageOffset\":29412,\"symbol\":\"_pthread_start\",\"symbolLocation\":136,\"imageIndex\":11},{\"imageOffset\":8444,\"symbol\":\"thread_start\",\"symbolLocation\":8,\"imageIndex\":11}]},{\"id\":1807062,\"frames\":[{\"imageOffset\":8424,\"symbol\":\"start_wqthread\",\"symbolLocation\":0,\"imageIndex\":11}],\"threadState\":{\"x\":[{\"value\":6091632640},{\"value\":48435},{\"value\":6091096064},{\"value\":0},{\"value\":409603},{\"value\":18446744073709551615},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":0},\"cpsr\":{\"value\":4096},\"fp\":{\"value\":0},\"sp\":{\"value\":6091632640},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6545436904},\"far\":{\"value\":0}}},{\"id\":1879981,\"frames\":[{\"imageOffset\":8424,\"symbol\":\"start_wqthread\",\"symbolLocation\":0,\"imageIndex\":11}],\"threadState\":{\"x\":[{\"value\":6092779520},{\"value\":128051},{\"value\":6092242944},{\"value\":0},{\"value\":409603},{\"value\":18446744073709551615},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0},{\"value\":0}],\"flavor\":\"ARM_THREAD_STATE64\",\"lr\":{\"value\":0},\"cpsr\":{\"value\":4096},\"fp\":{\"value\":0},\"sp\":{\"value\":6092779520},\"esr\":{\"value\":1442840704,\"description\":\" Address size fault\"},\"pc\":{\"value\":6545436904},\"far\":{\"value\":0}}}],\r\n  \"usedImages\" : [\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64\",\r\n    \"base\" : 4376952832,\r\n    \"CFBundleShortVersionString\" : \"0.17.0-Beta\",\r\n    \"CFBundleIdentifier\" : \"bobko.aerospace\",\r\n    \"size\" : 3309568,\r\n    \"uuid\" : \"6bd2381f-9d42-3ff0-9b90-89a2d84f4c91\",\r\n    \"path\" : \"\\/Applications\\/AeroSpace.app\\/Contents\\/MacOS\\/AeroSpace\",\r\n    \"name\" : \"AeroSpace\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 4591616000,\r\n    \"size\" : 49152,\r\n    \"uuid\" : \"9954d590-e413-35cf-b660-bc2de4134e8f\",\r\n    \"path\" : \"\\/usr\\/lib\\/libobjc-trampolines.dylib\",\r\n    \"name\" : \"libobjc-trampolines.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 4610195456,\r\n    \"CFBundleShortVersionString\" : \"324.6\",\r\n    \"CFBundleIdentifier\" : \"com.apple.AGXMetalG13X\",\r\n    \"size\" : 6963200,\r\n    \"uuid\" : \"d03677d4-c896-3fd7-88c0-abed05133e06\",\r\n    \"path\" : \"\\/System\\/Library\\/Extensions\\/AGXMetalG13X.bundle\\/Contents\\/MacOS\\/AGXMetalG13X\",\r\n    \"name\" : \"AGXMetalG13X\",\r\n    \"CFBundleVersion\" : \"324.6\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6608515072,\r\n    \"CFBundleShortVersionString\" : \"6.9\",\r\n    \"CFBundleIdentifier\" : \"com.apple.AppKit\",\r\n    \"size\" : 21221376,\r\n    \"uuid\" : \"b7c27979-84c5-3bd7-aa07-8fcf10e12a5d\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/AppKit.framework\\/Versions\\/C\\/AppKit\",\r\n    \"name\" : \"AppKit\",\r\n    \"CFBundleVersion\" : \"2575.40.6\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6735581184,\r\n    \"CFBundleShortVersionString\" : \"2.1.1\",\r\n    \"CFBundleIdentifier\" : \"com.apple.HIToolbox\",\r\n    \"size\" : 3178496,\r\n    \"uuid\" : \"594ec893-f002-3f09-bd1c-59e9b238dc8b\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/Carbon.framework\\/Versions\\/A\\/Frameworks\\/HIToolbox.framework\\/Versions\\/A\\/HIToolbox\",\r\n    \"name\" : \"HIToolbox\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 7331045376,\r\n    \"CFBundleShortVersionString\" : \"6.3.5.1\",\r\n    \"CFBundleIdentifier\" : \"com.apple.SwiftUI\",\r\n    \"size\" : 24813568,\r\n    \"uuid\" : \"f767e6f0-17d1-3634-93a5-66785a892f49\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/SwiftUI.framework\\/Versions\\/A\\/SwiftUI\",\r\n    \"name\" : \"SwiftUI\",\r\n    \"CFBundleVersion\" : \"6.3.5.1\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6541762560,\r\n    \"size\" : 532292,\r\n    \"uuid\" : \"b0de56c1-e3d4-3740-a0ab-0bd0a040a9a8\",\r\n    \"path\" : \"\\/usr\\/lib\\/dyld\",\r\n    \"name\" : \"dyld\"\r\n  },\r\n  {\r\n    \"size\" : 0,\r\n    \"source\" : \"A\",\r\n    \"base\" : 0,\r\n    \"uuid\" : \"00000000-0000-0000-0000-000000000000\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6545666048,\r\n    \"size\" : 32748,\r\n    \"uuid\" : \"ea50bee7-1bbb-3afd-b7f3-75f12d703e5c\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libsystem_platform.dylib\",\r\n    \"name\" : \"libsystem_platform.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6545186816,\r\n    \"size\" : 241656,\r\n    \"uuid\" : \"eee9d0d3-dffc-37cb-9ced-b27cd0286d8c\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libsystem_kernel.dylib\",\r\n    \"name\" : \"libsystem_kernel.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6543659008,\r\n    \"size\" : 290816,\r\n    \"uuid\" : \"eb8b954d-cfd1-383c-bf15-6100d0281617\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libdispatch.dylib\",\r\n    \"name\" : \"libdispatch.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6545428480,\r\n    \"size\" : 53248,\r\n    \"uuid\" : \"fba158c4-2eb3-3130-a201-dbbfa96a87ac\",\r\n    \"path\" : \"\\/usr\\/lib\\/system\\/libsystem_pthread.dylib\",\r\n    \"name\" : \"libsystem_pthread.dylib\"\r\n  },\r\n  {\r\n    \"source\" : \"P\",\r\n    \"arch\" : \"arm64e\",\r\n    \"base\" : 6545895424,\r\n    \"CFBundleShortVersionString\" : \"6.9\",\r\n    \"CFBundleIdentifier\" : \"com.apple.CoreFoundation\",\r\n    \"size\" : 5197824,\r\n    \"uuid\" : \"c208ae1d-332a-338f-908a-44ca342f03dc\",\r\n    \"path\" : \"\\/System\\/Library\\/Frameworks\\/CoreFoundation.framework\\/Versions\\/A\\/CoreFoundation\",\r\n    \"name\" : \"CoreFoundation\",\r\n    \"CFBundleVersion\" : \"3302.1.400\"\r\n  }\r\n],\r\n  \"sharedCache\" : {\r\n  \"base\" : 6540951552,\r\n  \"size\" : 4866015232,\r\n  \"uuid\" : \"8e4eef58-c142-36ae-832b-ac95193434f9\"\r\n},\r\n  \"vmSummary\" : \"ReadOnly portion of Libraries: Total=1.6G resident=0K(0%) swapped_out_or_unallocated=1.6G(100%)\\nWritable regions: Total=1.4G written=658K(0%) resident=658K(0%) swapped_out=0K(0%) unallocated=1.4G(100%)\\n\\n                                VIRTUAL   REGION \\nREGION TYPE                        SIZE    COUNT (non-coalesced) \\n===========                     =======  ======= \\nActivity Tracing                   256K        1 \\nAttributeGraph Data               1024K        1 \\nColorSync                          208K        9 \\nCoreAnimation                       16K        1 \\nCoreGraphics                        48K        3 \\nCoreServices                        16K        1 \\nFoundation                          16K        1 \\nKernel Alloc Once                   32K        1 \\nMALLOC                             1.4G       82 \\nMALLOC guard page                  384K       24 \\nMach message                       960K       10 \\nSTACK GUARD                       56.1M        5 \\nStack                             10.1M        5 \\nVM_ALLOCATE                        112K        7 \\n__AUTH                            5244K      674 \\n__AUTH_CONST                      70.3M      917 \\n__CTF                               824        1 \\n__DATA                            24.7M      899 \\n__DATA_CONST                      23.9M      927 \\n__DATA_DIRTY                      2751K      341 \\n__FONT_DATA                        2352        1 \\n__INFO_FILTER                         8        1 \\n__LINKEDIT                       612.3M        4 \\n__OBJC_RW                         2374K        1 \\n__TEXT                             1.0G      948 \\n__TPRO_CONST                       272K        2 \\nmapped file                      222.9M       30 \\nowned unmapped memory               48K        1 \\npage table in kernel               658K        1 \\nshared memory                      912K       13 \\n===========                     =======  ======= \\nTOTAL                              3.4G     4912 \\n\",\r\n  \"legacyInfo\" : {\r\n  \"threadTriggered\" : {\r\n    \"queue\" : \"com.apple.main-thread\"\r\n  }\r\n},\r\n  \"logWritingSignature\" : \"adc3cd42a4956620ab2f9f613c331a56e1bc8ee3\",\r\n  \"trialInfo\" : {\r\n  \"rollouts\" : [\r\n    {\r\n      \"rolloutId\" : \"60356660bbe37970735c5624\",\r\n      \"factorPackIds\" : {\r\n\r\n      },\r\n      \"deploymentId\" : 250000016\r\n    },\r\n    {\r\n      \"rolloutId\" : \"65a8173205d942272410674b\",\r\n      \"factorPackIds\" : {\r\n        \"SIRI_HOME_AUTOMATION_SERVER_FLOW_DEPRECATION\" : \"65d39fa4cb0e2417d11ce5f6\"\r\n      },\r\n      \"deploymentId\" : 250000002\r\n    }\r\n  ],\r\n  \"experiments\" : [\r\n    {\r\n      \"treatmentId\" : \"993c66e1-bf83-41fd-a09f-0d8d5906d223\",\r\n      \"experimentId\" : \"664fc3cd79a61a0b8b557292\",\r\n      \"deploymentId\" : 500000013\r\n    }\r\n  ]\r\n}\r\n}\r\n\r\n```",
      "created_at": "2025-02-21T16:03:47Z",
      "updated_at": "2025-02-22T13:24:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "MatanRubin",
        "avatar_url": "https://avatars.githubusercontent.com/u/4488227?u=c0ce953c892f8d6092c68debbe4d4f12f02a51b3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AehcU",
      "number": 1125,
      "title": "resizing an app does not smoothly resize other open windows",
      "body": "Whenever i resize the window by dragging it other windows take some time to expand/contract.\r\n\r\n\r\nhttps://github.com/user-attachments/assets/bc0b4689-759b-4a78-9e94-3c309ef128ff\r\n",
      "created_at": "2025-02-22T07:20:50Z",
      "updated_at": "2025-02-22T07:20:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "DevER-M",
        "avatar_url": "https://avatars.githubusercontent.com/u/78902540?u=28189d928cc3328f3f2b00cdf2f86a084ab6f54c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aed68",
      "number": 1114,
      "title": "How can I make all windows floating by default / disable auto-tiling?",
      "body": "I’m new to AeroSpace and mostly want to use its emulation of virtual workspaces. I don’t want it to auto-tile anything. Is this possible?",
      "created_at": "2025-02-18T23:08:20Z",
      "updated_at": "2025-02-21T15:57:56Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "champagnealexandre",
        "avatar_url": "https://avatars.githubusercontent.com/u/30211986?u=9bc45f825ddd6979148ce809bcf4e46f0db3bf01&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aeg27",
      "number": 1121,
      "title": "Allow modifying position and tiling via gestures",
      "body": "I would love to see Aerospace get a “gesture mode” that makes window positioning more fluid without interfering with its keyboard-driven approach. Double-tap and hold Cmd (or another key) to enter this mode, at which point all visible windows get a subtle blur overlay to indicate that they’re interactive. While in this state, you could quickly drag or swipe windows to snap them to either corners or edges make them fit in with existing windows that are there. Very similar to what [Penc](https://github.com/dgurkaynak/Penc) is doing - except Penc isn't tiling them. \r\n\r\nThis would make it easier for people who don't want toggle configs or play with shortcuts that might mess up other shortcuts. \r\n\r\nJust an idea. \r\n\r\n",
      "created_at": "2025-02-21T14:47:21Z",
      "updated_at": "2025-02-21T14:47:22Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "seivan",
        "avatar_url": "https://avatars.githubusercontent.com/u/55424?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AedvO",
      "number": 1111,
      "title": "Command: aerospace list-modes --current?",
      "body": "I'll first explain the problem I'm trying to solve, in case there are ideas for solving it without this feature, but if not, I'd like to propose the idea for the feature. \r\n\r\nI'm using Aerospace with Sketchybar (lua version -- Sbarlua), and I've already got the functionality of showing my workspaces, active App, etc. However, because I'm using Sketchbar and hiding my MacOS Menubar, when I change modes (e.g. main, resize, service, etc) I can't see what the active mode is, unless I move my mouse up to the top of the screen and show the default MacOS menubar. So, I'm wanting to \"recreate\" the Aerospace menubar in Sketchybar, so that I can just show an icon for Aerospace with [m], [s], or [r] next to it depending on what binding mode I'm in.\r\n\r\nRIght now, I'm not sure how to achieve that because there isn't an Aerospace command for getting the current binding mode (e.g. `aerospace list-modes --current`). \r\n\r\nWhere in my lua file for sketchybar, I might be able to do something like:\r\n\r\n```\r\nsbar.exec(\"aerospace list-modes --current\", function(mode)\r\n  update_mode_display(mode)\r\nend) \r\n```",
      "created_at": "2025-02-18T19:18:13Z",
      "updated_at": "2025-02-20T21:40:52Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jarodtaylor",
        "avatar_url": "https://avatars.githubusercontent.com/u/362248?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AegBI",
      "number": 1119,
      "title": "service mode conflicts with messages",
      "body": "Expected behavior: alt-shift-semicolon enters service mode and exposes related key binds\r\n\r\nActual behavior: service mode icon does not appear in menu bar, characters are passed through to focused text field, and pressing delete to clear text closes other windows",
      "created_at": "2025-02-20T18:27:01Z",
      "updated_at": "2025-02-20T18:42:03Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TraceBivens",
        "avatar_url": "https://avatars.githubusercontent.com/u/37259201?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aef_P",
      "number": 1118,
      "title": "focus up/down broken with accordion layout",
      "body": "aerospace CLI client version: 0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\nAeroSpace.app server version: 0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\n\r\nactive windows: ghostty, safari, Zotero\r\nlayout is:\r\nworkspace 1 -> ghostty | safari/zotero (accordion)\r\nexpected behavior:\r\nfocus left/right switches between ghostty and accordion, with focus up/down switching between safari/zotero\r\n\r\nactual behavior: focus up/down will switch from zotero to safari but not the other way around.\r\nhorizontal accordion works correctly.",
      "created_at": "2025-02-20T17:48:47Z",
      "updated_at": "2025-02-20T18:40:05Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "TraceBivens",
        "avatar_url": "https://avatars.githubusercontent.com/u/37259201?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AefLm",
      "number": 1116,
      "title": "'fullscreen off' when the workspace lost focus?",
      "body": "Hi.\r\n\r\nI would like to see if any configurations are available to set `fullscreen off` when the workspace lost focus.\r\nI have tried `on-focus-changed = ['fullscreen off']`, but it turns off fullscreen on the new(current) workspace I'm on.\r\nRather, I would like to turn if off on the previous workspace - go back to tiling/accordion view automatically at the timing of the workspace lost the focus.\r\n\r\nIs there any way?",
      "created_at": "2025-02-20T02:18:29Z",
      "updated_at": "2025-02-20T02:18:30Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "twisteria",
        "avatar_url": "https://avatars.githubusercontent.com/u/73270346?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aed3L",
      "number": 1113,
      "title": "active mode in sketchybar",
      "body": "i'd like to show an indicator in sketchybar when I enter different aerospace binding modes. There is an indicator in the native aerospace menubar icon but i'd like to display something unique in sketchybar. Is there a callback or similar that I can leverage for that?",
      "created_at": "2025-02-18T21:57:43Z",
      "updated_at": "2025-02-19T03:48:52Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "schester44",
        "avatar_url": "https://avatars.githubusercontent.com/u/15207595?u=9a4db0b7244990fe6b492effc4fd867d4bb9c9a9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeYvI",
      "number": 1090,
      "title": "Can I achieve this kind of tiling with Aerospace?",
      "body": "I'm sorry if this was already answered here, but I found very hard to search it because I don't know how to call this behaviour.... so I don't even know what words to use in the search...\r\n\r\nI want to achieve this kind of behaviour when opening new windows using Aerospace, is it possible?\r\n![image](https://github.com/user-attachments/assets/e4b961b5-36f6-49af-90b9-14590c9e9d2f)\r\n\r\nI knew that I can achieve it moving the windows around, but I want to know if this could be the default behaviour of the tiling system... I mean, doing that automatically when I opened new apps",
      "created_at": "2025-02-14T14:17:35Z",
      "updated_at": "2025-02-18T12:36:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aui3l",
        "body": "#260"
      },
      "user": {
        "login": "squiter",
        "avatar_url": "https://avatars.githubusercontent.com/u/238017?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AedT8",
      "number": 1109,
      "title": "Show the current tree",
      "body": "I want to be able to restore my previous setup when restarting my computer.\r\nFor that, I writing a script that runs Aerospace commands.\r\n\r\nIf there was a command to dump the current tree, this would be trivial to implement, but currently it's not possible. \r\n\r\nThis command can be either part of the existing list-windows command's output, or maybe the debug-windows can show the tree scructure it's part of (currently it just says the type of container, but you can't trace other windows in the container, who the container's parent is nor the orientation).\r\nOr maybe a new command like debug-tree --json",
      "created_at": "2025-02-18T11:05:42Z",
      "updated_at": "2025-02-18T11:06:30Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tsauvajon",
        "avatar_url": "https://avatars.githubusercontent.com/u/22611118?u=133f0f719b343968ec9892c6d6132e41d28f4c3c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AedKR",
      "number": 1107,
      "title": "Float Firefox Developer Edition Picture in Picture window",
      "body": "Thanks for the latest update! It works with firefox but not firefox developer edition.\r\n\r\nI have been using this for now.\r\n\r\n```yml\r\n[[on-window-detected]]\r\nif.during-aerospace-startup = false\r\nif.app-id = 'org.mozilla.firefoxdeveloperedition'\r\nif.window-title-regex-substring = 'Picture-in-Picture'\r\nrun = ['layout floating']\r\n```\r\n\r\nAeroSpace v0.17.0-Beta f6876d224626a6a4c1be44d7d8d81fa12f9c46bc\r\n",
      "created_at": "2025-02-18T08:25:42Z",
      "updated_at": "2025-02-18T08:37:44Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yougotwill",
        "avatar_url": "https://avatars.githubusercontent.com/u/14887287?u=37faa2bad59febb3782dd6de8089873f5678befc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aec66",
      "number": 1106,
      "title": "how do I achieve this layout?",
      "body": "```\r\nh_tiles\r\n└── v_accordion\r\n    └── window 1\r\n└── v_accordion\r\n    └── window 2\r\n```\r\nI've tried creating two windows then calling `split vertical` && `layout v_accordion` on both but I can't keep it consistent, when moving windows in and out the layout gets disrupted and sometimes I see horizontal accordions for some reason. I might be doing this wrong but it's not clicking. I just want two stacks that I can move in and out of like in i3.",
      "created_at": "2025-02-18T01:42:47Z",
      "updated_at": "2025-02-18T03:02:12Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "diocletiann",
        "avatar_url": "https://avatars.githubusercontent.com/u/14058796?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeY9V",
      "number": 1091,
      "title": "Requesting new release with Ghostty Quick Terminal Fixes.",
      "body": "Hello @nikitabobko,\r\n\r\nI'd like to request a new release which incorporates the [Ghostty Quick Terminal](https://github.com/nikitabobko/AeroSpace/commit/233ad84224015a8bd5ab626609a370fe3b5f6ab3) fix.\r\n\r\nAerospace and Ghostty are part of my daily workflow and a new release with the above fix will fix many issues with multi-monitor and Ghostty's Quick Terminal issues.\r\n\r\nThank you again for making Aerospace!",
      "created_at": "2025-02-14T17:03:35Z",
      "updated_at": "2025-02-17T21:00:31Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kaiwalyajoshi",
        "avatar_url": "https://avatars.githubusercontent.com/u/4153518?u=41208c0d085017b954fa2fed1ec57f5567ff90a2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AecwT",
      "number": 1105,
      "title": "Layout questions",
      "body": "**How to change layout of all windows at the current workspace at once?**\n\n1. I want to press a keybinding and make i.e. all windows to change its layout simultaneously, without requirement to click on each window and invoke `layout floating tiling': <keybinding> - all windows on the workspace go tiling, <keybinding> again - all windows go floating\n2. How to navigate windows with `focus` if all windows of the workspace in floating mode? However, navigation works if at least one window is in tiling mode",
      "created_at": "2025-02-13T08:37:01Z",
      "updated_at": "2025-02-18T07:58:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aupn_",
        "body": "1. `aerospace list-windows --workspace focused --format '%{window-id}' | xargs -n1 aerospace layout floating --window-id`\r\n2. It's a known bug. You can find it in the \"Issues\" tab"
      },
      "user": {
        "login": "EmpathyZeroed",
        "avatar_url": "https://avatars.githubusercontent.com/u/189291184?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeAoX",
      "number": 1036,
      "title": "Any way to detect Ghostty Quick Terminal?",
      "body": "Looooooove Aerospace!\r\n\r\nSo, I'm wondering if there's a way you guys would recommend detecting the Ghostty Quick Terminal window?\r\n\r\nSo, I have Ghostty set to a space (T):\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'com.mitchellh.ghostty'\r\nrun = \"move-node-to-workspace T\"\r\n```\r\n\r\nI have a global keybinding for Ghostty's Quick terminal:\r\n\r\n```\r\nkeybind = global:cmd+grave_accent=toggle_quick_terminal\r\n```\r\n\r\nI'm wanting the Quick Terminal to float and not be assigned to any space. This is from within a default Ghostty instance:\r\n\r\n```\r\naerospace list-windows --all\r\n989 | Ghostty       | ~/.config/aerospace\r\n361 | Google Chrome | New Discussion · nikitabobko/AeroSpace - Google Chrome\r\n```\r\n\r\nThis is from within a Quick Terminal:\r\n\r\n```\r\naerospace list-windows --all\r\n854 | Ghostty       | ~\r\n989 | Ghostty       | ~/.config/aerospace\r\n361 | Google Chrome | New Discussion · nikitabobko/AeroSpace - Google Chrome\r\n```\r\n\r\nI can't rely on the window title because I always launch Ghostty from my home directory (`~`) and Quick Terminal can remember previous state (when it was last opened). \r\n\r\nI was curious if any one else found a solve for this!\r\n\r\n",
      "created_at": "2025-01-24T16:09:38Z",
      "updated_at": "2025-02-17T20:30:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Atkfg",
        "body": "Fixed in `main` branch: https://github.com/nikitabobko/AeroSpace/commit/233ad84224015a8bd5ab626609a370fe3b5f6ab3\r\n\r\nGhostty quick terminal simply won't be longer detected as a window, and won't be a subject for `on-window-detected` rules\r\n\r\nI will make a release with this fix next week"
      },
      "user": {
        "login": "jarodtaylor",
        "avatar_url": "https://avatars.githubusercontent.com/u/362248?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aebfu",
      "number": 1102,
      "title": "move windows around by holding the modifier key and click+drag",
      "body": "Hi!\r\namazing stuff.\r\nin i3 / sway / awesomewm, etc, you can move an entire (floating) window around by holding the modifier key and clicking anywhere on the window. this even works in tiled mode to swap window positions out.\r\n\r\nwould love this feature in aerospace, but maybe: can this be achieved already? thanks :)",
      "created_at": "2025-02-17T02:11:52Z",
      "updated_at": "2025-02-17T02:11:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nimarb",
        "avatar_url": "https://avatars.githubusercontent.com/u/246059?u=4cff1c6a9538785c2a6eef9722ffe100689130b8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeYV6",
      "number": 1088,
      "title": "screenshare with sequoia new feature seems broken",
      "body": "I updated to sequoia and it has this new feature that \"lets you see what is being shared\" \r\nWhen I screenshare my  screen  with teams / zoom  aerospace is bugging with the new feature.\r\n\r\nLet me show you how it works without aerospace and with aerospace\r\n\r\nWITHOUT aerospace\r\n![SCR-20250214-ktxq](https://github.com/user-attachments/assets/1abf7697-7d8d-4bbd-af04-48e1e533c89c)\r\nThe little purple guy + screen icon lives in the upper left corner and indicates \"this window is viewable\"\r\n\r\nWITH aerospace\r\n![SCR-20250214-kuwl-2](https://github.com/user-attachments/assets/2669db5b-69bc-4940-829a-2123eb0d8c5e)\r\nAerospace somehow moves the purple icon OUT and then it's two windows side-by-side but one oft hem is just empty space.\r\n\r\nThis leads to all kinds of weird behaviors.\r\nI tried to search and I didn't see anybody bring this up!\r\nthanks ahead of time.\r\n",
      "created_at": "2025-02-14T06:31:18Z",
      "updated_at": "2025-02-16T23:55:56Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "giladgressel",
        "avatar_url": "https://avatars.githubusercontent.com/u/6275366?u=7848748ddbf9191761ed3bcf5981759dd81670a5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeahJ",
      "number": 1098,
      "title": "Floating windows not preserving its position",
      "body": "I was wondering if floating windows were meant to preserve its position in a workspace? When I focus on windows to the right/left, the floating window will appear twice even if there is only one instance.",
      "created_at": "2025-02-16T15:24:34Z",
      "updated_at": "2025-02-16T15:24:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "HYAdev",
        "avatar_url": "https://avatars.githubusercontent.com/u/70421236?u=ba136ff219cc8b1c1f64af9c138ddaa9ab63fd46&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeZ4V",
      "number": 1094,
      "title": "Group apps with a single configuration?",
      "body": "I couldn't find anything in the docs but it would be nice to have a single array of apps that can follow a single rule. Example, Finder, System Preferences, calculator, etc., I want them all in a single workspace and all floating. Instead of writing `[[on-window-detected]]` for every app, maybe something like an array for example -\r\n```\r\n[on-windows-detected]\r\nif.app-id = ['Finder', 'system preferences', 'calculator']\r\nrun = ['layout floating', 'move-node-to-workspace 5']\r\n```\r\nwould be pretty helpful than having to write for every single app/window. I don't know if there is already a way to do this. ",
      "created_at": "2025-02-15T21:20:21Z",
      "updated_at": "2025-02-15T22:13:08Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Vib1240n",
        "avatar_url": "https://avatars.githubusercontent.com/u/71455013?u=fcb0433f04b075d28205c2ddebe3e2d502931949&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeVxr",
      "number": 1083,
      "title": "Aerospace is sensitive to the CPU load",
      "body": "When CPU load on my Mac is high (often for an unhealthy reason - the latest one was IntelliJ freezing while holding on to 100% on a couple of cores), Aerospace becomes borderline unresponsive.\n\nI propose to configure the nice in the autolaunch plist to `-10` or something to give the window manager a higher priority.",
      "created_at": "2025-02-12T10:53:12Z",
      "updated_at": "2025-02-14T14:24:46Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dc-up42",
        "avatar_url": "https://avatars.githubusercontent.com/u/53569854?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeHcW",
      "number": 1050,
      "title": "Are there logs? Where if so?",
      "body": "I was looking through the guide at https://nikitabobko.github.io/AeroSpace/guide to see where I could find the log file, if any. I wanted to raise a discussion on an issue and provide logs for context but I couldn't find a clear reference on this, nor could I find similar questions or discussions.",
      "created_at": "2025-01-30T21:08:26Z",
      "updated_at": "2025-02-13T11:50:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4At0lh",
        "body": "There are no logs"
      },
      "user": {
        "login": "djtran",
        "avatar_url": "https://avatars.githubusercontent.com/u/6515377?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad-cE",
      "number": 1032,
      "title": "How to do opposite of \"join-with\"?",
      "body": "I used `join-with` to put two windows in the same container. I clicked on a link in one of those windows, and that created a new browser window that is now in that same container. I want to take it \"out\" of that container.\r\n\r\nHow exactly does one do that? I've read the docs for all of the commands and nothing seems quite right, so I'm hoping I'm just missing something obvious. Thanks in advance!",
      "created_at": "2025-01-22T16:31:32Z",
      "updated_at": "2025-02-12T01:10:44Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "macintacos",
        "avatar_url": "https://avatars.githubusercontent.com/u/8128941?u=dc4dd8f869a40ac9d175c3fe81352278e2127e2f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeTsH",
      "number": 1077,
      "title": "single window tiling mode",
      "body": "Is there a rule to make window tiling only if it is the first window in current workspace, in qtile, it's\r\n```python\r\nfloating_layout = layout.Floating(\r\n    border_width=0, float_rules=[Match(func=lambda c: len(c.group.windows) > 1)]\r\n)\r\n```\r\n",
      "created_at": "2025-02-11T07:57:21Z",
      "updated_at": "2025-02-11T10:41:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tkkcc",
        "avatar_url": "https://avatars.githubusercontent.com/u/17373509?u=e7f432f9d566fca9005880e89e5799981a69b578&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeTtG",
      "number": 1078,
      "title": "click without raise window / preserve z order",
      "body": "there is a big tiling window A,  and a small floating window B above it, when i click A, A raise and B hide, then i can not focus B using mouse. qtile is able to preserve the z order of windows on click, using `bring_front_click=False`. is it possible in mac?",
      "created_at": "2025-02-11T08:16:25Z",
      "updated_at": "2025-02-11T08:17:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tkkcc",
        "avatar_url": "https://avatars.githubusercontent.com/u/17373509?u=e7f432f9d566fca9005880e89e5799981a69b578&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeTmS",
      "number": 1076,
      "title": "More intuitive window dragging - swap or join",
      "body": "First of all, thanks for the amazing application!\r\n\r\nIt might be cool to have window dragging behave similarly to Yabai:\r\n- when you drag into window center, it swaps windows\r\n- when you drag to side of the window (like 25% of width/height) it joins new window as horizontal/vertical tile\r\n- also Yabai gives you a visual cue, outline covering full or half of the target window\r\n\r\nCheers!",
      "created_at": "2025-02-11T05:44:04Z",
      "updated_at": "2025-02-11T05:44:05Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "a-grmbl",
        "avatar_url": "https://avatars.githubusercontent.com/u/129246996?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeTWA",
      "number": 1075,
      "title": "Aerospace cli no longer working after updating to Sequoia 15.3.1",
      "body": "I'm getting the error \r\n```\r\nCan't connect to AeroSpace server. Is AeroSpace.app running?\r\nThe operation couldn’t be completed. (Socket.Socket.Error error 1.)\r\n```\r\nUsing AeroSpace v0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8 with MacOS Sequoia 15.3.1 as stated above. I've tried reinstalling and reverting to the default config with no luck. I've verified that AeroSpace is running with the process name 'AeroSpace' and the application is working as expected in every other regard",
      "created_at": "2025-02-10T23:03:29Z",
      "updated_at": "2025-02-10T23:03:30Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "babyccino",
        "avatar_url": "https://avatars.githubusercontent.com/u/29778301?u=b87e972d4af66289307cbef82644199a449b1af1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeTHF",
      "number": 1074,
      "title": "Fullscreen when menu bar is hidden",
      "body": "I'm not sure if this is a bug or intended but even when I set menu bar to be hidden, new windows still don't fill up the whole screen.",
      "created_at": "2025-02-10T18:36:48Z",
      "updated_at": "2025-02-10T18:36:49Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ullnorse",
        "avatar_url": "https://avatars.githubusercontent.com/u/22561864?u=33be08b560efed323917838b18d4c9eaf096915c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeQpO",
      "number": 1072,
      "title": "workspace next after focus hits boundary",
      "body": "My use case is to perform a workspace prev or next if, for example, focus left/down or right/up could not move because of the boundary. \r\n\r\nUsing the default focus boundaries-action of stop, it seems to me that aerospace up/left/down/right does not provide the feedback on whether it actually moved or not, that is, whether it was able to move or whether it could not move because of the boundary.\r\n\r\nAm I missing something? Is there any way to do what I want?",
      "created_at": "2025-02-09T02:13:54Z",
      "updated_at": "2025-02-10T20:07:23Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AuMAp",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/1073"
      },
      "user": {
        "login": "kenbanks-peng",
        "avatar_url": "https://avatars.githubusercontent.com/u/26904200?u=a6f1165e21ce6d7c2d4574f1ae4573cef4c7a00e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeQjP",
      "number": 1071,
      "title": "Using env variables in config",
      "body": "I'm wondering if it's possible to use environment variables in my aerospace.toml?\r\nI'd like to DRY some of configuration for aerospace, sketchybar, and borders, and I thought the ability to use environment variables would help with this.\r\nFor example, my values for gaps in aerospace I'd like to be the same value of the border line in borders.  I'd also like the top gap to be the same as the height of sketchybar.\r\n\r\nIf that's no possible, is there any support for including a file in the aerospace.toml configuration?  I could then include a partial of the gap config that I want.\r\n\r\nThanks\r\n",
      "created_at": "2025-02-08T20:50:04Z",
      "updated_at": "2025-02-08T20:50:05Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "albertsj1",
        "avatar_url": "https://avatars.githubusercontent.com/u/141736?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad4Cp",
      "number": 987,
      "title": "Flexible accordion padding",
      "body": "Right now I can configure accordion padding only as number but for gaps I can specify different values for different monitors. \r\nI think it would be nice to have the same functionality for accordion padding as well.\r\nFor example on the small one I want to configure 50 but for my 34\" monitor 300 would be better.",
      "created_at": "2025-01-16T16:00:42Z",
      "updated_at": "2025-02-08T13:55:11Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Biktop",
        "avatar_url": "https://avatars.githubusercontent.com/u/742501?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeC33",
      "number": 1045,
      "title": "How to not focus specific application when it opens?",
      "body": "Hello,\r\n\r\nFor example, I have my Terminal that is opened.\r\n\r\nI open Firefox, the application is automatically focused.\r\nBut if I opened Slack, I don't want it to be focus.\r\n\r\nHow can I do that?\r\n",
      "created_at": "2025-01-26T22:15:03Z",
      "updated_at": "2025-02-08T11:45:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vnea",
        "avatar_url": "https://avatars.githubusercontent.com/u/10775422?u=c93d74a9dd85a04fa6d0c0bb28f836ef25477cb2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeP1v",
      "number": 1069,
      "title": "selecting a space from the menu bar dropdown faster than keyboard shortcut",
      "body": "title; i feel like there needs to be an exploration into how to make the latter a little faster. maybe there are some settings i have wrong that might be making the switching slower when done through my keyboard. ",
      "created_at": "2025-02-07T18:40:40Z",
      "updated_at": "2025-02-07T18:40:41Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "acsandmann",
        "avatar_url": "https://avatars.githubusercontent.com/u/157552025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeOUy",
      "number": 1068,
      "title": "Crash reported on startup - 0.16.2-Beta",
      "body": "No particular thing I was doing here, it just crashed on startup, restarting aerospace worked just fine.\r\n\r\n##### AeroSpace Runtime Error #####\r\n\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/issues/new\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: Windows always have parent\r\nVersion: 0.16.2-Beta\r\nGit hash: 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nCoordinate: /Users/bobko/a/AeroSpace/Sources/AppBundle/tree/Window.swift:7:72 parent\r\nrecursionDetectorDuringFailure: false\r\ncli: false\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   AeroSpace                           0x0000000102abb104 $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlF + 1076\r\n1   AeroSpace                           0x000000010295ba8c $s9AppBundle6WindowC6parentAA21NonLeafTreeNodeObject_pvg + 140\r\n2   AeroSpace                           0x000000010295aa7c $s9AppBundle8TreeNodeC13nodeWorkspaceAA0F0CSgvg + 64\r\n3   AeroSpace                           0x0000000102937424 $s9AppBundle16updateFocusCacheyyAA6WindowCSgF + 68\r\n4   AeroSpace                           0x00000001029396e8 $s9AppBundle14refreshSession26screenIsDefinitelyUnlocked7startup4bodyxSb_SbxyXEtlFyt_Tg503$s9a32Bundle16refreshAndLayout26screenfG31Unlocked7startupySb_SbtFyyXEfU_Tf1nnnc_n + 412\r\n5   AeroSpace                           0x00000001028dfd14 $s9AppBundle14GlobalObserverC7onNotif33_F1205CFDC13498282252A689C79131F6LLyy10Foundation12NotificationVFZTf4nd_n + 380\r\n6   AeroSpace                           0x00000001028defec $s10Foundation12NotificationVIeghn_So14NSNotificationCIeyBhy_TR + 116\r\n7   CoreFoundation                      0x000000019907d35c __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 128\r\n8   CoreFoundation                      0x000000019910e20c ___CFXRegistrationPost_block_invoke + 88\r\n9   CoreFoundation                      0x000000019910e154 _CFXRegistrationPost + 436\r\n10  CoreFoundation                      0x000000019904bfac _CFXNotificationPost + 732\r\n11  Foundation                          0x000000019a2066b8 -[NSNotificationCenter postNotificationName:object:userInfo:] + 88\r\n12  AppKit                              0x000000019cd98240 applicationStatusSubsystemCallback + 728\r\n13  LaunchServices                      0x0000000199522f90 ___LSScheduleNotificationFunction_block_invoke_2 + 52\r\n14  CoreFoundation                      0x0000000199088430 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28\r\n15  CoreFoundation                      0x0000000199088340 __CFRunLoopDoBlocks + 356\r\n16  CoreFoundation                      0x0000000199087128 __CFRunLoopRun + 824\r\n17  CoreFoundation                      0x0000000199086734 CFRunLoopRunSpecific + 588\r\n18  HIToolbox                           0x00000001a45f5530 RunCurrentEventLoopInMode + 292\r\n19  HIToolbox                           0x00000001a45fb17c ReceiveNextEventCommon + 216\r\n20  HIToolbox                           0x00000001a45fb508 _BlockUntilNextEventMatchingListInModeWithFilter + 76\r\n21  AppKit                              0x000000019cbfe848 _DPSNextEvent + 660\r\n22  AppKit                              0x000000019d564c24 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688\r\n23  AppKit                              0x000000019cbf1874 -[NSApplication run] + 480\r\n24  AppKit                              0x000000019cbc8068 NSApplicationMain + 888\r\n25  SwiftUI                             0x00000001c7d2670c $s7SwiftUI6runAppys5NeverOSo21NSApplicationDelegate_So11NSResponderCXcFTf4e_nAA07TestingdG0C_Tg5Tm + 160\r\n26  SwiftUI                             0x00000001c819c9a0 $s7SwiftUI6runAppys5NeverOxAA0D0RzlF + 140\r\n27  SwiftUI                             0x00000001c8518e68 $s7SwiftUI3AppPAAE4mainyyFZ + 224\r\n28  AeroSpace                           0x00000001028dd0b8 main + 36\r\n29  dyld                                0x0000000198c20274 start + 2840\r\n",
      "created_at": "2025-02-06T09:31:34Z",
      "updated_at": "2025-02-06T11:02:20Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "richardj-bsquare",
        "avatar_url": "https://avatars.githubusercontent.com/u/12759837?u=ea9a3e418fe96cee580e67eb9bd81fe0bf579264&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeKzn",
      "number": 1056,
      "title": "Improve design of App Icon and Menubar Display",
      "body": "Hey there, \r\n\r\nI love the application, and thought I should open a discussion around improving the App Icon and the menubar icon of AeroSpace. Starting design discussions are hard because its subjective from person to person. So, these are just my opinions\r\n\r\nMy main point is that the current AeroSpace App Icon suffers from a lack of polish and identity. Additionally, there is no consistency between the app icon and the menu bar icon. To be specific: \r\n\r\n![Pasted image 20250203124816](https://github.com/user-attachments/assets/5286e586-a62b-4597-84f1-ee3fcb6bce11)\r\n\r\n1. The space background from OSX Leopard, while looks beautiful - makes the Application look outdated. I feel like we could use the beautiful gradient colors of it, and make it more modern by replacing it.\r\n2. Blurred window makes the icon even busier, without providing much info. Simply following the Rectangle icon standard makes more sense to me here\r\n3. Breaks the consistency between the other elements, and not really legible - could be either removed - or made larger to be slightly legible \r\n4. No consistency between App Icon and menu-bar icon\r\n\r\nIn contrast - these are some examples of icons which I consider 'polished'.  They are all in the same category of Window management - and have modern looking icons which are also distinct. They also have consistent simplified monotone menu bar icons which match their main application icon.\r\n\r\n1. Magnet\r\n![image](https://github.com/user-attachments/assets/3c6d39d0-b38b-4534-a1d8-200dd8f8f8cc)\r\n\r\n2. Amethyst\r\n![CleanShot 2025-02-03 at 12 58 01@2x](https://github.com/user-attachments/assets/87c0c0c8-f414-45ef-9468-5e88ac7986c6)\r\n\r\nPlease let me know how you guys feel about this",
      "created_at": "2025-02-03T05:13:16Z",
      "updated_at": "2025-02-06T05:05:24Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "fullmetalsheep",
        "avatar_url": "https://avatars.githubusercontent.com/u/23723926?u=f79f27ad848c75b744e30f1e760f1c22870cf3be&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdynP",
      "number": 964,
      "title": "Stop auto-workspace switching when app close?",
      "body": "Is there a setting or command to stop workspaces from switching when an app fully closes. For example when opening a game in steam when I close the library window and a game is starting to load up it will throw me to a different workspace that has an app on it and then the steam game will try to pop up on that space instead of the one I was on. Or when I quit firefox I get tossed into the next workspace with an open app.",
      "created_at": "2025-01-11T23:43:31Z",
      "updated_at": "2025-02-06T00:59:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nlugo22",
        "avatar_url": "https://avatars.githubusercontent.com/u/133132282?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeMhU",
      "number": 1061,
      "title": "AeroSpace Not Working After Reinstallation",
      "body": "##  What hapened\r\nI created a Python virtual environment, and suddenly, AeroSpace stopped working. I tried restarting my computer and reopening it, but it still doesn’t work.  \r\n\r\nI then uninstalled AeroSpace and deleted all related files I could find, but the issue persists. I'm not sure if anyone else has encountered this or if it's a new problem.  \r\n\r\n- **Device:** MacBook Pro M2 Max (16\")  \r\n- **Operating System:** macOS  15.2 (24C101)\r\n\r\nWhen running the following command in the terminal:  \r\n```sh\r\n/Applications/AeroSpace.app/Contents/MacOS/AeroSpace\r\n```\r\nI get the followin error:\r\n```sh\r\nAssertion failed: (is_bare_key_character(*cp) || is_string_delimiter(*cp)), function parse_key, file toml.hpp, line 14038.\r\n[1]    64015 abort      /Applications/AeroSpace.app/Contents/MacOS/AeroSpace\r\n```\r\n\r\nMy aerospace.toml config:\r\n```toml\r\nenable-normalization-flatten-containers = false\r\nenable-normalization-opposite-orientation-for-nested-containers = false\r\n\r\n# Mouse follows focus when focused monitor changes\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\nafter-startup-command = [\r\n    'exec-and-forget borders'\r\n]\r\n\r\n[gaps]\r\ninner.vertical = 6\r\ninner.horizontal = 6\r\nouter.top = 6\r\nouter.bottom = 2\r\nouter.left = 1\r\nouter.right = 1\r\n\r\n[mode.main.binding]\r\nalt-cmd-ctrl-enter = 'exec-and-forget nohup Alacritty'\r\n\r\nalt-cmd-ctrl-h = 'focus left'\r\nalt-cmd-ctrl-j = 'focus down'\r\nalt-cmd-ctrl-k = 'focus up'\r\nalt-cmd-ctrl-l = 'focus right'\r\n\r\nalt-cmd-ctrl-shift-h = 'move left'\r\nalt-cmd-ctrl-shift-j = 'move down'\r\nalt-cmd-ctrl-shift-k = 'move up'\r\nalt-cmd-ctrl-shift-l = 'move right'\r\n\r\nalt-cmd-ctrl-tab = 'workspace-back-and-forth'\r\n# alt-cmd-ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around next' # Moves all items in current monitor to other monitor\r\n\r\n# Consider using 'join-with' command as a 'split' replacement if you want to enable normalizations\r\n# alt-cmd-ctrl-h = 'split horizontal'\r\nalt-cmd-ctrl-v = 'split vertical'\r\n\r\nalt-cmd-ctrl-f = 'fullscreen'\r\n\r\nalt-cmd-ctrl-s = 'layout v_accordion'               # 'layout stacking' in i3\r\nalt-cmd-ctrl-w = 'layout h_accordion'               # 'layout tabbed' in i3\r\nalt-cmd-ctrl-e = 'layout tiles horizontal vertical' # 'layout toggle split' in i3\r\n\r\nalt-cmd-ctrl-space = 'layout floating tiling' # 'floating toggle' in i3\r\n\r\n# Not supported, because this command is redundant in AeroSpace mental model.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows\r\n#alt-cmd-ctrl-space = 'focus toggle_tiling_floating'\r\n\r\n# `focus parent`/`focus child` are not yet supported, and it's not clear whether they\r\n# should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5\r\n# alt-cmd-ctrl-a = 'focus parent'\r\n\r\nalt-cmd-ctrl-1 = 'workspace 1'\r\nalt-cmd-ctrl-2 = 'workspace 2'\r\nalt-cmd-ctrl-3 = 'workspace 3'\r\nalt-cmd-ctrl-4 = 'workspace 4'\r\nalt-cmd-ctrl-5 = 'workspace 5'\r\nalt-cmd-ctrl-6 = 'workspace 6'\r\nalt-cmd-ctrl-7 = 'workspace 7'\r\nalt-cmd-ctrl-8 = 'workspace 8'\r\nalt-cmd-ctrl-9 = 'workspace 9'\r\n\r\nalt-cmd-ctrl-shift-1 = 'move-node-to-workspace 1'\r\nalt-cmd-ctrl-shift-2 = 'move-node-to-workspace 2'\r\nalt-cmd-ctrl-shift-3 = 'move-node-to-workspace 3'\r\nalt-cmd-ctrl-shift-4 = 'move-node-to-workspace 4'\r\nalt-cmd-ctrl-shift-5 = 'move-node-to-workspace 5'\r\nalt-cmd-ctrl-shift-6 = 'move-node-to-workspace 6'\r\nalt-cmd-ctrl-shift-7 = 'move-node-to-workspace 7'\r\nalt-cmd-ctrl-shift-8 = 'move-node-to-workspace 8'\r\nalt-cmd-ctrl-shift-9 = 'move-node-to-workspace 9'\r\n\r\nalt-cmd-ctrl-shift-c = 'reload-config'\r\nalt-cmd-ctrl-r = 'mode resize'\r\nalt-cmd-ctrl-t = 'mode service'\r\n\r\nalt-cmd-ctrl-c = ['layout floating', 'resize width +200', 'resize height +200']\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout\r\nshift-backspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-cmd-ctrl-h = ['join-with left', 'mode main']\r\nalt-cmd-ctrl-j = ['join-with down', 'mode main']\r\nalt-cmd-ctrl-k = ['join-with up', 'mode main']\r\nalt-cmd-ctrl-l = ['join-with right', 'mode main']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.hnc.Discord'\r\nrun = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'\r\nrun = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.pple.ical'\r\nrun = 'move-node-to-workspace 1'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.teams'\r\nrun = 'move-node-to-workspace 2'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.Outlook'\r\nrun = 'move-node-to-workspace 2'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'org.mozilla.firefoxdeveloperedition'\r\nrun = 'move-node-to-workspace 3'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nrun = 'move-node-to-workspace 4'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.findmy'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Maps'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.valvesoftware.steam'\r\nrun = 'layout floating'\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.facetime'\r\nrun = 'layout floating'\r\n\r\n[[[on-window-detected]]\r\nif.app-id = 'com.apple.findmy'\r\nrun = 'layout floating'\r\n\r\n[on-window-detected]]\r\nif.app-id = 'com.openai.chat'\r\nrun = 'layout floating'\r\n```",
      "created_at": "2025-02-04T15:18:53Z",
      "updated_at": "2025-02-05T14:09:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "andresalvareez",
        "avatar_url": "https://avatars.githubusercontent.com/u/75365680?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeM-_",
      "number": 1067,
      "title": "Monitor ordering changes",
      "body": "Hi,\r\n\r\nI am using two monitors of same brand and model. I am facing an issue whenever mac wakes up from sleep, sometimes the ids assigned in aerosapce changes as well as their positioning (i.e. Left monitor becomes the right and right becomes the left).\r\nTo fix this everytime I have to reorder the displays in the System Settings. I don't think it is a aerospace issue but I don't know where to ask this in the correct context.\r\n\r\n<img width=\"274\" alt=\"image\" src=\"https://github.com/user-attachments/assets/63a12aad-e01e-4adc-ac82-da6baaab27e0\" />\r\n",
      "created_at": "2025-02-05T03:08:40Z",
      "updated_at": "2025-02-05T03:09:06Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shahidcodes",
        "avatar_url": "https://avatars.githubusercontent.com/u/17620737?u=c745fb201f04421f6ab9978d1a15debfc3f7eddc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeMwg",
      "number": 1063,
      "title": "How do I run aerospace cli commands within Supervisor?",
      "body": "All aerospace commands hangs if they are launched withing Supervisor daemon. BUT it works from the shell.\r\n\r\n```\r\n[program:sketchybar_0]\r\ncommand=/bin/zsh -lc \"sketchybar_0 --config /Users/zik/env/sketchybar/sketchybar_0\"\r\nuser=zik\r\n```\r\nI simplified it to the minimum. And it still hangs...\r\n\r\n```\r\n[program:sketchybar_1]\r\ncommand=/opt/homebrew/bin/aerospace list-windows --all \r\nuser=zik\r\n```\r\n\r\nI also granted all permissions in settings tab of MaOs (accessability) to supervisord.\r\n\r\nI tried to dig into same problems in issues on both AeroSpace, Supervisor, compile and add some logs on aerospace to understand wher issue occurs, but having to success.\r\n\r\nCan someone help? Or atleast point me where I need to dig in, please. 🙏 \r\n\r\n\r\nI was able to get some more debug info.\r\n```\r\n[program:sketchybar_1]\r\ncommand= dtruss -f sudo -u zik /opt/homebrew/bin/aerospace list-windows --all\r\nuser=root\r\n```\r\n\r\n```\r\n  open(\"/opt/homebrew/bin/aerospace\\0\", 0x0, 0x0)                = 3 0\r\n55339/0x209ff:  lseek(0x3, 0x414000, 0x0)                = 4276224 0\r\n55339/0x209ff:  close(0x3)               = 0 0\r\n55339/0x209ff:  openat(0xFFFFFFFFFFFFFFFE, \"/Library/Preferences/Logging/com.apple.diagnosticd.filter.p\r\nlist\\0\", 0x1000104, 0x0)                 = -1 2\r\n55339/0x209ff:  lstat64(\"/opt\\0\", 0x16CFEEAA0, 0x0)              = 0 0\r\n55339/0x209ff:  lstat64(\"/opt/homebrew\\0\", 0x16CFEEAA0, 0x0)             = 0 0\r\n55339/0x209ff:  lstat64(\"/opt/homebrew/bin\\0\", 0x16CFEEAA0, 0x0)                 = 0 0\r\n55339/0x209ff:  stat64(\"/opt/homebrew/bin\\0\", 0x16CFEF800, 0x0)          = 0 0\r\n55339/0x209ff:  access(\"/opt/homebrew/bin\\0\", 0x4, 0x0)          = 0 0\r\n55339/0x209ff:  socket(0x1, 0x1, 0x0)            = 3 0\r\n55339/0x209ff:  setsockopt(0x3, 0xFFFF, 0x1022)          = 0 0\r\n55339/0x209ff:  connect(0x3, 0x600000A62AC0, 0x20)               = 0 0\r\n55339/0x209ff:  ioctl(0x0, 0x4004667A, 0x16CFF2E9C)              = -1 25\r\n55339/0x209ff:  ioctl(0x0, 0x40487413, 0x16CFF2EA0)              = -1 25\r\n55339/0x209ff:  getrlimit(0x1008, 0x16CFF2CB8, 0x0)              = 0 0\r\n55339/0x209ff:  fstat64(0x0, 0x16CFF2CB0, 0x0)           = 0 0\r\n```\r\n\r\nSOLVED BY:\r\n\r\nhttps://github.com/Supervisor/supervisor/issues/686\r\n\r\n```\r\n[program:sketchybar_0]\r\ncommand=/bin/zsh -lic \"sketchybar_0 --config /Users/zik/env/sketchybar/sketchybar_0 0<&-\"\r\nuser=zik\r\n```\r\n\r\nHope its usefull for someone <3 I have no idea how it works.\r\n\r\n",
      "created_at": "2025-02-04T20:03:59Z",
      "updated_at": "2025-02-04T20:46:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Zik42",
        "avatar_url": "https://avatars.githubusercontent.com/u/20891802?u=168c8594213584de2a73c84c09f9507d64281980&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeMmP",
      "number": 1062,
      "title": "share my trackpad swiping to change workspace program",
      "body": "I wrote a really simple program to enable 3 finger swipes to let you change which workspace you are in. It only targets workspaces with active apps inside them and might not be perfect, but it actually works unlike some of the other solutions I found. \r\n\r\nhttps://github.com/acsandmann/aerospace-swipe",
      "created_at": "2025-02-04T16:41:37Z",
      "updated_at": "2025-02-04T16:41:38Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "acsandmann",
        "avatar_url": "https://avatars.githubusercontent.com/u/157552025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIuF",
      "number": 629,
      "title": "Proposal: Fullscreen only container layout",
      "body": "With respect to [this comment](https://github.com/nikitabobko/AeroSpace/issues/558#issuecomment-2392490834) in #558, I would like to propose a configuration option.\r\n\r\nFor starters, thank you for your feedback @nikitabobko, and I agree about the 0 padding being somewhat illogical usually, however there is a use case that may warrant such a configuration. Currently, the `fullscreen` command almost does what is needed, except that it applies to an application rather than a workspace.\r\n\r\nThe scenario is this: there is at least one application ([Zed](https://zed.dev)), which sort of hides the presence of multiple windows. So if you open multiple projects, there are separate windows that occupy the same coordinates, and when you switch to the application, you get the most recent project. Then, the most practical way to switch projects is to do so in the application's project switcher, which then takes you to the correct window. All this works perfectly fine with the accordion, but since the project switching is done in the application, the accordion padding is just wasting space that isn't providing any practical information.\r\n\r\nWhat would be good is either to be able to set padding per workspace, or have a fullscreen layout for a workspace which makes every application take the full area. That does diminish the information about how many applications are open on a workspace, but in a way that is actually beneficial in certain cases.\r\n\r\n---\r\n\r\nAlso, I completely understand if this is rejected out of hand for adding complexity or ambiguity, but I'm curious if others run into this same thing. I am super happy with the current system. Thank you for all the hard work.",
      "created_at": "2024-10-04T12:52:55Z",
      "updated_at": "2025-02-04T14:13:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "theherk",
        "avatar_url": "https://avatars.githubusercontent.com/u/3605078?u=e6ebb8ef417912a258183e9183d7c06a54a2e9cd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeMOv",
      "number": 1060,
      "title": "Some keybindings suddenly stopped working",
      "body": "I recently upgraded to MacOS 15.3 (24D60), and 2 of my keybindings stopped working. Respectively the spaces `T` and `P`. I am not sure why, i tried restarting, reloading config, deleting from config and readding. It's just these 2 letters. Below is my config:\r\n\r\n```toml\r\n# Place a copy of this config to ~/.aerospace.toml\r\n# After that, you can edit ~/.aerospace.toml to your liking\r\n\r\n# It's not necessary to copy all keys to your config.\r\n# If the key is missing in your config, \"default-config.toml\" will serve as a fallback\r\n\r\n# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands\r\nafter-startup-command = []\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Possible values: (qwerty|dvorak)\r\n# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping\r\nkey-mapping.preset = 'qwerty'\r\n\r\n# Mouse follows focus when focused monitor changes\r\n# Drop it from your config, if you don't like this behavior\r\n# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks\r\n# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\non-focus-changed = \"move-mouse window-lazy-center\"\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors\r\n[gaps]\r\ninner.horizontal = 5\r\ninner.vertical = 5\r\nouter.left = 5\r\nouter.bottom = 5\r\nouter.top = 5\r\nouter.right = 5\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands\r\n\r\n# You can uncomment this line to open up terminal with alt + enter shortcut\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget\r\n# alt-enter = 'exec-and-forget open -n /System/Applications/Utilities/Terminal.app'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#focus\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\n# alt-1 = 'workspace 1'\r\n# alt-2 = 'workspace 2'\r\n# alt-3 = 'workspace 3'\r\n# alt-4 = 'workspace 4'\r\n# alt-5 = 'workspace 5'\r\n# alt-6 = 'workspace 6'\r\n# alt-7 = 'workspace 7'\r\n# alt-8 = 'workspace 8'\r\n# alt-9 = 'workspace 9'\r\nalt-b = 'workspace B'\r\nalt-c = 'workspace C'\r\nalt-d = 'workspace D'\r\nalt-g = 'workspace G'\r\nalt-i = 'workspace I'\r\nalt-m = 'workspace M'\r\nalt-n = 'workspace N'\r\nalt-p = 'workspace P'\r\nalt-s = 'workspace S'\r\nalt-t = 'workspace T'\r\nalt-w = 'workspace W'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\n# alt-shift-1 = 'move-node-to-workspace 1'\r\n# alt-shift-2 = 'move-node-to-workspace 2'\r\n# alt-shift-3 = 'move-node-to-workspace 3'\r\n# alt-shift-4 = 'move-node-to-workspace 4'\r\n# alt-shift-5 = 'move-node-to-workspace 5'\r\n# alt-shift-6 = 'move-node-to-workspace 6'\r\n# alt-shift-7 = 'move-node-to-workspace 7'\r\n# alt-shift-8 = 'move-node-to-workspace 8'\r\n# alt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-b = 'move-node-to-workspace B' # Browser\r\nalt-shift-c = 'move-node-to-workspace C' # Calendar\r\nalt-shift-d = 'move-node-to-workspace D' # IntelliJ IDEA 2\r\nalt-shift-g = 'move-node-to-workspace G' # ChatGPT\r\nalt-shift-i = 'move-node-to-workspace I' # IntelliJ IDEA\r\nalt-shift-m = 'move-node-to-workspace M' # Music\r\nalt-shift-n = 'move-node-to-workspace N' # Bear Notes\r\nalt-shift-p = 'move-node-to-workspace P' # Personal\r\nalt-shift-s = 'move-node-to-workspace S' # Slack\r\nalt-shift-t = 'move-node-to-workspace T' # Things\r\nalt-shift-w = 'move-node-to-workspace W' # Wezterm\r\n\r\nalt-shift-f = 'fullscreen'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#mode\r\nalt-shift-semicolon = 'mode service'\r\n\r\nalt-shift-r = 'mode resize'\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nb = 'balance-sizes'\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#resize\r\nminus = 'resize smart -50'\r\nequal = 'resize smart +50'\r\n\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = [\r\n  'layout floating tiling',\r\n  'mode main',\r\n] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\nrun = \"move-node-to-workspace W\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.talon-sec.Work'\r\nrun = \"move-node-to-workspace B\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.culturedcode.ThingsMac'\r\nrun = \"move-node-to-workspace T\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Safari'\r\nrun = \"move-node-to-workspace P\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.openai.chat'\r\nrun = \"move-node-to-workspace G\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nrun = \"move-node-to-workspace S\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'net.shinyfrog.bear'\r\nrun = \"move-node-to-workspace N\"\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Music'\r\nrun = \"move-node-to-workspace M\"\r\n```",
      "created_at": "2025-02-04T10:08:39Z",
      "updated_at": "2025-02-04T10:08:40Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sfc-gh-bmikaili",
        "avatar_url": "https://avatars.githubusercontent.com/u/172383519?u=4a4d1f68b54126e6d89a17b2a1d62b159fcd5daa&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac6wZ",
      "number": 782,
      "title": "Dynamic workspaces",
      "body": "Suggest to consider [dynamic workspaces](https://github.com/BurntSushi/wingo#workspaces) - where the user can give a workspace a name (and not just one letter/digit).\r\nWorkspace selection would be done using fuzzy-search.\r\nCan be helpful (for example )when there is a contention on letter 'C' between 'Code' and 'Chorme'.\n\nAnother use case - workspace per project/feature.\n\nLastly - will occupy less keyboard shortcuts",
      "created_at": "2024-11-29T23:34:24Z",
      "updated_at": "2025-02-02T06:02:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "assaf758",
        "avatar_url": "https://avatars.githubusercontent.com/u/838011?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeINc",
      "number": 1054,
      "title": "TablePlus tabs appear as separate windows",
      "body": "In tile mode, you can see that when I change tabs in TablePlus that Aerospace treats them as separate windows.\r\nIn accordion, they are still treated as separate windows, but the effect is obviously not nearly as egregious.\r\n\r\nSince I've only noticed this issue with TablePlus, it seems like they are handling their tabs/ windows in an unusual way. Nevertheless, I hope this can be resolved on the Aerospace side somehow, and it would be interesting to figure out why tabs are being treated as windows.\r\n\r\n![tableplus-full](https://github.com/user-attachments/assets/efd44fd5-f8da-44c1-8e64-4b389ae772f9)\r\n![tableplus-left](https://github.com/user-attachments/assets/27f6f880-a43f-4306-894b-1d038306ebb1)\r\n![tableplus-right](https://github.com/user-attachments/assets/afe0bd2d-5a90-4055-ae9f-43ad7ae14174)\r\n\r\n\r\n",
      "created_at": "2025-01-31T16:14:17Z",
      "updated_at": "2025-01-31T16:22:25Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "CalebSamland",
        "avatar_url": "https://avatars.githubusercontent.com/u/86679848?u=92349f7d4a325e12381282339318cb8a3fc79f19&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeIDp",
      "number": 1052,
      "title": "Same window in different workspaces (`copy` instead of `move`)",
      "body": "Halo,\r\n\r\nIs it possible to have the same window in different workspaces or maybe there is a different way how one can achieve this?\r\n\r\n---\r\n\r\n##### Example 1:\r\nI have window1, window2, window3. I want create 3 workspaces:\r\n1. | window1 | window2 |\r\n2. | window1 | window3 |\r\n3. | window1 | (fullscreen)\r\n\r\n---\r\n\r\n`I have done a [search for similar discussions]` - I did my best. Sorry if I let you down.",
      "created_at": "2025-01-31T14:07:05Z",
      "updated_at": "2025-01-31T14:21:30Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "oleg-work",
        "avatar_url": "https://avatars.githubusercontent.com/u/53688847?u=b8d7025186d88318e7f1f054bb45bd6bb5c76b6b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeHcr",
      "number": 1051,
      "title": "Aerospace constantly flickering & arranging after plugging in monitors",
      "body": "When I plug in two monitors to my macbook pro, I see my windows and workspaces constantly flickering across all three screens until I close the lid of my laptop. After I close the window, AeroSpace stabilizes and I can open my laptop lid and continue working as per usual.\r\n\r\nI was hoping to track down some logs to provide context, looking in the guide and discussions, but made a discussion post asking about them after I couldn't find any info: http://github.com/nikitabobko/AeroSpace/discussions/1050\r\n\r\nSystem:\r\n2021 Macbook Pro, M1 Pro chip running Sequoia 15.2\r\n\r\nI followed the main guide to ensure each monitor has free space in the corners, here's my display arrangement in case it's helpful.\r\n![Screenshot 2025-01-30 at 4 13 45 PM](https://github.com/user-attachments/assets/ff1d1cd2-f1cb-4cae-8a0d-2a548abd481d)",
      "created_at": "2025-01-30T21:19:12Z",
      "updated_at": "2025-01-30T21:19:13Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "djtran",
        "avatar_url": "https://avatars.githubusercontent.com/u/6515377?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adydq",
      "number": 946,
      "title": "AeroSpace and Sketchybar in nix-darwin",
      "body": "Hi,\r\n\r\nHas anyone got the exec-on-workspace change working with aerospace in nix-darwin?\r\n\r\nI can't get it to work unless they are managed manually and installed by brew. I assume it has something to do with running as a service.",
      "created_at": "2025-01-11T16:51:54Z",
      "updated_at": "2025-01-30T20:30:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AtSjS",
        "body": "It's working fine for me.  My config is very much a work in progress though and I'm using the sketchybar lua stuff.  I plan on a bunch of updates to it, but if you want to try out my setup, it's an all-in-one flake: `nix run github.com:zmre/aerospace-sketchybar-nix-lua-config`"
      },
      "user": {
        "login": "Enak-Nalla",
        "avatar_url": "https://avatars.githubusercontent.com/u/113060819?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeGFL",
      "number": 1047,
      "title": "Fail to activate window in different workspace",
      "body": "I really liked the idea of Aerospace, but I often encounter strange behavior of the windows.\r\n\r\nTo avoid listing here too many issues at once, I start with the most annoying one. Until I do not find a solution for this, I am afraid I won't be able to use Aerospace.\r\n\r\nWhen I call an application from a different workspace, the application often fails to activate (i.e., to bring it in focus). As a concrete example, from the terminal workspace `t` I open a file in terminal by calling Sublime Text Editor. I expect Sublime Text editor to receive the focus in the IDE workspace `i`. However, only 50% of the times it receives the focus. The file is opened, but then if I want to get it in focus, I need to repeat the operation twice or switch manually to the IDE workspace.\r\n\r\nThis is cumbersome and adds steps to my workflow instead of simplifying it. Did you ever encounter anything similar? Is it a known bug? Any solution? \r\n",
      "created_at": "2025-01-29T12:58:27Z",
      "updated_at": "2025-01-29T12:58:28Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alberti42",
        "avatar_url": "https://avatars.githubusercontent.com/u/61808?u=d73b1ab23fa8c4bb38205e56e178989bcd25d350&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcM6L",
      "number": 645,
      "title": "My thoughts after the first month of use",
      "body": "Hey there!\r\nI've switched to aerospace about a month ago and for my workflow, it's a big upgrade from the classic Sequoia experience or even Software like Rectangle.\r\nEspecially the straightforward config was very easy to get into.\r\nThere's two key faults i see in aerospace and want to spark a discussion about, especially 2. is very important to me.\r\n# 1. Localized keyboard layouts\r\nThe default config is completely unusable with the german macOS keyboard layout.\r\nThis is because it binds to option + 56789 and L, which in the german macOS keyboard are already bound to [, ], |, {, } and @.\r\n\r\nSo for my config, i had to unbind the workspaces 56789, so i can use the brackets.\r\nI also had to switch the navigation keys from HJKL to UIOP, so option + L is not blocked for the @ symbol.\r\n\r\nGetting to this point as a beginner is not quite beginner friendly. It could be suggested to provide localized layouts or promote a place to show off own configs so beginners can more easily get started. Once i got the hang of it though, it wasn't a problem anymore.\r\n\r\n# 2. Using aerospace alongside macOS spaces, not as a replacement\r\nAs [Josean Martinez](https://www.youtube.com/@joseanmartinez) correctly mentions in [his introduction](https://youtu.be/-FoWClVHG5g?t=200), aerospace reimplements workspaces, because there are limitations with the built in Spaces, especially in terms of keyboard shortcuts and animation speed.\r\n\r\nThe problem is, that it misses some of Mission Control and macOS spaces's most important benifits.\r\n1. Visual Overview\r\n\t- When in mission control, it is very easy to see a) which windows are open b) in which space, to get a grand perspective over the spaces.\r\n\t- Aerospace's workspaces completely lack this functionality. (Going through all the workspaces is not a suitable replacement.)\r\n\t- (Yes, enabling \"Group Windows by application\" makes it possible to graphically see every single open window, but that's not helpful since it doesn't show them in the context of their workspace, e.g. one browser instance for each workspace.)\r\n1. Mouse/Trackpad Gestures and their Speed\r\n\t - Speaking on behalf of people, who sometimes lie in bed with their laptop, _i don't want_ to use the keyboard to navigate 100% of the time.\r\n\t - The perfect window manager needs to be good at managing windows with the keyboard, as well as the mouse. The user has to have the opportunity to choose.\r\n\t - What aerospace lacks are the great and partly pretty fast Trackpad/Mouse gestures that macOS has for switching between workspaces and getting an overview (e.g. three finger swipe sideways, three finger swipe up).\r\n\r\n## So, what's the solution?\r\n1. Completely discard Mouse Navigation, which will only make 100% keyboard navigation people happy, or:\r\n2. give users the opportunity to either turn aerospace workspaces off completely, making only use of the aerospaces great tiling opportunities (Which would solve the situation for me already) or\r\n3. Implement a mode, where aerospace workspaces work together with macOS spaces. e.g. only numbered workspaces corresponding to the macOS numbered workspaces.\r\n\r\nNow, can't we already just use macOS Spaces and just stay on aerospace workspace 1 all the time? That would be nice, but no, we cannot. Let me give you an example.\r\n\r\nLet's say I'm on a macOS Space and I'm on aerospace workspace 3. Both are empty:\r\n\r\n<img width=\"1512\" alt=\"Screenshot 2024-10-29 at 22 41 20\" src=\"https://github.com/user-attachments/assets/3e139acd-1456-405e-921d-8b12f5f3b41d\">\r\n\r\nWhen i open a window, it tiles correctly as expected.\r\n\r\n<img width=\"1512\" alt=\"Screenshot 2024-10-29 at 22 41 36\" src=\"https://github.com/user-attachments/assets/b139e497-b41b-4fcc-aea4-86bb712b99ae\">\r\n\r\nBut if i now open a new macOS Space, that also belongs to workspace 3 and open another window, the newly opened window tiles **WITH THE WINDOW ON ANOTHER macOS SPACE.**\r\n\r\n<img width=\"1512\" alt=\"Screenshot 2024-10-29 at 22 41 56\" src=\"https://github.com/user-attachments/assets/393c9eca-f270-49a9-b86c-bb61a21a3ee1\">\r\n\r\nGoing back to the first space, we see, that it tiles with the other space, making it completely impossible to use macOS spaces, while aerospace is installed.\r\n\r\n<img width=\"1512\" alt=\"Screenshot 2024-10-29 at 22 42 01\" src=\"https://github.com/user-attachments/assets/6de0c730-d484-449f-8695-8d6cb8accd98\">\r\n\r\nBesides, we will never get rid of macOS spaces anyways. Things like full screen Browser videos will always create a macOS Space.\r\nUsers need a way to turn off aerospace workspaces, if they prefer to use aerospace only for window tiling, not for workspace management. Because macOS is already very good at virtual desktop management.\r\nThanks for reading through this. I'm eager to hear about your opinion.\r\nCheers!",
      "created_at": "2024-10-29T21:59:20Z",
      "updated_at": "2025-01-28T23:28:21Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Kha1r0",
        "avatar_url": "https://avatars.githubusercontent.com/u/115714947?u=6b8f33c78be04c7b95cc741a8a8fab165b74af23&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeCXN",
      "number": 1044,
      "title": "Support `move-node-to-workspace current`",
      "body": "... and allow `move-node-to-workspace` in `[[on-window-detected]]` callbacks.\r\n\r\nThe use case is to be able to open my terminal on any workspace as a floating fullscreen window:\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\nrun = [\r\n    'layout floating',\r\n    'fullscreen',\r\n    'move-node-to-workspace current',\r\n]\r\n```\r\n\r\nNow the window will \"stick\" to the first workspace it was opened on and will always switch to that workspace.",
      "created_at": "2025-01-26T16:55:50Z",
      "updated_at": "2025-01-28T19:00:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shishkin",
        "avatar_url": "https://avatars.githubusercontent.com/u/124065?u=edc92d4e7af2beb59ec0bf82cdd52bd139dc8d1a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acq8b",
      "number": 728,
      "title": "Compatibility with Displaylink",
      "body": "Hi, I'm currently utilizing Display Link to enable multiple external monitors on my MBP w/ Apple Silicon. Does anyone have any experience using AeroSpace alongside Display Link?",
      "created_at": "2024-11-19T22:39:36Z",
      "updated_at": "2025-01-28T12:01:07Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArNEj",
        "body": "wow, amazing timing! This is my first time visiting the aerospace discussions tab, and I'm exactly who you're looking for\r\n\r\nshort answer: yes. I have an M1 mac, using the built-in retina display and two external monitors hooked up through displaylink for a 3-monitor setup. I've been using Aerospace for a few days now, and it works flawlessly.\r\n\r\nIn fact, it fixes the biggest issue i had with yabai + displaylink + using a KVM to switch my monitors from my mac to my windows machine:\r\n\r\nyabai organizes everything related to monitors (moving, focusing, etc) around display indexes (ie display 1, 2, 3, etc). Every time i switched the KVM, the displaylink monitors would disappear from the mac, all the spaces on them would get moved to the retina screen, and when i switched back, Displaylink would reinitialize them in a different order. As far as the mac was concerned, the monitors were still in the same arrangement, and moving the mouse from one ot the other would still work consistently, but because the monitor indexes were different, yabai keybinds for moving focus / window to the next or prev monitor would get all borked\r\n\r\nAnother issue that aerospace fixed for me with multiple monitors on a KVM through displaylink is that every time I'd switch my KVM back to my mac, all of my spaces (monitors have separate spaces enabled) would be placed on the wrong monitor and I'd have to click and drag them all back onto the correct monitor\r\n\r\nHonestly, Spaces handling on MacOS with multiple monitors that frequently disappear and reappear is just a mess.\r\n\r\nAerospace's workspaces work much better.\r\n\r\nIn my aerospace config, i have named workspaces mapped to specific monitors. as soion as these monitors reappear in displaylink, aerospace automatically moves these workspaces back onto them, regardless of which order they reappear in:\r\n\r\n```toml\r\n[workspace-to-monitor-force-assignment]\r\n# You can assign workspaces to monitors by their names or by their patterns.\r\n# Monitor pattern is a case-insensitive substring of the monitor name.\r\ncode = ['lg', 'secondary']\r\nweb = ['lg', 'secondary']\r\nother = ['lg', 'secondary']\r\nchat = 'dell'\r\nreference = 'dell'\r\nmail = 'built-in'\r\n```"
      },
      "user": {
        "login": "seve",
        "avatar_url": "https://avatars.githubusercontent.com/u/8716829?u=913540413edcad65d0df4ca9032e25f9c1f2e945&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51q",
      "number": 1023,
      "title": "Odd screen flickering issues with Gather app",
      "body": "Hey there! Recently I've run into an issue when trying to screen share with the gather desktop app. As you can see in attached videos the 'border' that gather puts around windows flickers back and forth between the gather app and the shared screen. This does not happen with aerospace disabled. I'm not entirely sure if this is on aerospace or gather though and I'm also persuing figuring out how to report this as an issue to them but I'm doubtful they are going to put a lot of effort into supporting a relatively niche app like Aerospace.\r\n\r\nInterestingly this issue does not happen when the gather desktop is on the same screen that is being shared, but then if I try to push the gather window off to another workspace while screen sharing it kicks back up again.\r\n\r\nNot sure if this is helpful but this is the output of `aerospace debug-windows` where I start while sharing, click over into the gather window, then back to alacritty to end the debug session.\r\n```\r\norg.alacritty.window.11518 windowId: 11518\r\norg.alacritty.window.11518 workspace: 1\r\norg.alacritty.window.11518 treeNodeParent: AppBundle.TilingContainer\r\norg.alacritty.window.11518 recognizedAsDialog: false\r\norg.alacritty.window.11518 AXTitle: Optional(Alacritty)\r\norg.alacritty.window.11518 AXRole: Optional(AXWindow)\r\norg.alacritty.window.11518 AXSubrole: Optional(AXStandardWindow)\r\norg.alacritty.window.11518 AXFocused: Optional(1)\r\norg.alacritty.window.11518 AXFullScreen: Optional(0)\r\norg.alacritty.window.11518 AXFrame: Optional(<AXValue 0x6000009ea7c0> {value = x:1920.000000 y:25.000000 w:1920.000000 h:2134.000000 type = kAXValueCGRectType})\r\norg.alacritty.window.11518 AXPosition: Optional(<AXValue 0x6000012c6670> {value = x:1920.000000 y:25.000000 type = kAXValueCGPointType})\r\norg.alacritty.window.11518 AXGrowArea: nil\r\norg.alacritty.window.11518 AXMinimizeButton: AXUIElement {\r\norg.alacritty.window.11518      AXRole: Optional(AXButton)\r\norg.alacritty.window.11518      AXTitle: nil\r\norg.alacritty.window.11518      AXSubrole: Optional(AXMinimizeButton)\r\norg.alacritty.window.11518      AXEnabled: Optional(1)\r\norg.alacritty.window.11518      AXParent: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXTopLevelUIElement: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\norg.alacritty.window.11518 }\r\norg.alacritty.window.11518 AXDocument: nil\r\norg.alacritty.window.11518 AXSections: [\r\norg.alacritty.window.11518         Optional({\r\norg.alacritty.window.11518             SectionDescription = Content;\r\norg.alacritty.window.11518             SectionObject = \"<AXUIElement 0x6000012c3300> {pid=32542}\";\r\norg.alacritty.window.11518             SectionUniqueID = AXContent;\r\norg.alacritty.window.11518         })\r\norg.alacritty.window.11518 ]\r\norg.alacritty.window.11518 AXCloseButton: AXUIElement {\r\norg.alacritty.window.11518      AXRole: Optional(AXButton)\r\norg.alacritty.window.11518      AXTitle: nil\r\norg.alacritty.window.11518      AXSubrole: Optional(AXCloseButton)\r\norg.alacritty.window.11518      AXEnabled: Optional(1)\r\norg.alacritty.window.11518      AXParent: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXTopLevelUIElement: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\norg.alacritty.window.11518 }\r\norg.alacritty.window.11518 AXMain: Optional(1)\r\norg.alacritty.window.11518 AXActivationPoint: Optional(<AXValue 0x6000012c5800> {value = x:1990.000000 y:39.000000 type = kAXValueCGPointType})\r\norg.alacritty.window.11518 AXFullScreenButton: AXUIElement {\r\norg.alacritty.window.11518      AXRole: Optional(AXButton)\r\norg.alacritty.window.11518      AXTitle: nil\r\norg.alacritty.window.11518      AXSubrole: Optional(AXFullScreenButton)\r\norg.alacritty.window.11518      AXEnabled: Optional(1)\r\norg.alacritty.window.11518      AXParent: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXTopLevelUIElement: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\norg.alacritty.window.11518 }\r\norg.alacritty.window.11518 AXProxy: nil\r\norg.alacritty.window.11518 AXDefaultButton: nil\r\norg.alacritty.window.11518 AXMinimized: Optional(0)\r\norg.alacritty.window.11518 AXParent: Optional(<AXUIElement Application 0x6000012ef030> {pid=32542})\r\norg.alacritty.window.11518 AXTitleUIElement: AXUIElement(windowId=11518, title=nil, role=\"AXStaticText\", subrole=nil)\r\norg.alacritty.window.11518 AXCancelButton: nil\r\norg.alacritty.window.11518 AXModal: Optional(0)\r\norg.alacritty.window.11518 AXZoomButton: AXUIElement {\r\norg.alacritty.window.11518      AXRole: Optional(AXButton)\r\norg.alacritty.window.11518      AXTitle: nil\r\norg.alacritty.window.11518      AXSubrole: Optional(AXFullScreenButton)\r\norg.alacritty.window.11518      AXEnabled: Optional(1)\r\norg.alacritty.window.11518      AXParent: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXTopLevelUIElement: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      AXWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty.window.11518      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\norg.alacritty.window.11518 }\r\norg.alacritty.window.11518 AXSize: Optional(<AXValue 0x6000012c5800> {value = w:1920.000000 h:2134.000000 type = kAXValueCGSizeType})\r\norg.alacritty.window.11518 AXToolbarButton: nil\r\norg.alacritty.window.11518 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\norg.alacritty              AXRole: Optional(AXApplication)\r\norg.alacritty              AXTitle: Optional(Alacritty)\r\norg.alacritty              AXFunctionRowTopLevelElements: [\r\norg.alacritty              ]\r\norg.alacritty              AXFrame: nil\r\norg.alacritty              AXFocusedUIElement: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty              AXFrontmost: Optional(1)\r\norg.alacritty              AXExtrasMenuBar: nil\r\norg.alacritty              AXMainWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty              AXFocusedWindow: AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty              AXMenuBar: Optional(<AXUIElement 0x6000012c24f0> {pid=32542})\r\norg.alacritty              AXWindows: [\r\norg.alacritty                  AXUIElement(windowId=11518, title=\"Alacritty\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\norg.alacritty              ]\r\norg.alacritty              AXSize: nil\r\norg.alacritty              AXPosition: nil\r\norg.alacritty              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.gather.Gather.window.11220 windowId: 11220\r\ncom.gather.Gather.window.11220 workspace: 3\r\ncom.gather.Gather.window.11220 treeNodeParent: AppBundle.TilingContainer\r\ncom.gather.Gather.window.11220 recognizedAsDialog: false\r\ncom.gather.Gather.window.11220 AXTitle: Optional(Gather Desktop)\r\ncom.gather.Gather.window.11220 AXRole: Optional(AXWindow)\r\ncom.gather.Gather.window.11220 AXSubrole: Optional(AXStandardWindow)\r\ncom.gather.Gather.window.11220 AXFocused: Optional(0)\r\ncom.gather.Gather.window.11220 AXFullScreen: Optional(0)\r\ncom.gather.Gather.window.11220 AXFrame: Optional(<AXValue 0x6000009fce00> {value = x:3840.000000 y:361.000000 w:1728.000000 h:1078.000000 type = kAXValueCGRectType})\r\ncom.gather.Gather.window.11220 AXPosition: Optional(<AXValue 0x6000012cce10> {value = x:3840.000000 y:361.000000 type = kAXValueCGPointType})\r\ncom.gather.Gather.window.11220 AXGrowArea: nil\r\ncom.gather.Gather.window.11220 AXMinimizeButton: AXUIElement {\r\ncom.gather.Gather.window.11220      AXRole: Optional(AXButton)\r\ncom.gather.Gather.window.11220      AXTitle: nil\r\ncom.gather.Gather.window.11220      AXSubrole: Optional(AXMinimizeButton)\r\ncom.gather.Gather.window.11220      AXEnabled: Optional(1)\r\ncom.gather.Gather.window.11220      AXParent: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXTopLevelUIElement: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.gather.Gather.window.11220 }\r\ncom.gather.Gather.window.11220 AXDocument: nil\r\ncom.gather.Gather.window.11220 AXSections: [\r\ncom.gather.Gather.window.11220         Optional({\r\ncom.gather.Gather.window.11220             SectionDescription = Content;\r\ncom.gather.Gather.window.11220             SectionObject = \"<AXUIElement 0x6000012c3630> {pid=19259}\";\r\ncom.gather.Gather.window.11220             SectionUniqueID = AXContent;\r\ncom.gather.Gather.window.11220         }),\r\ncom.gather.Gather.window.11220         Optional({\r\ncom.gather.Gather.window.11220             SectionObject = \"<AXUIElement 0x6000012c3120> {pid=19259}\";\r\ncom.gather.Gather.window.11220             SectionUniqueID = AXContainer;\r\ncom.gather.Gather.window.11220         })\r\ncom.gather.Gather.window.11220 ]\r\ncom.gather.Gather.window.11220 AXCloseButton: AXUIElement {\r\ncom.gather.Gather.window.11220      AXRole: Optional(AXButton)\r\ncom.gather.Gather.window.11220      AXTitle: nil\r\ncom.gather.Gather.window.11220      AXSubrole: Optional(AXCloseButton)\r\ncom.gather.Gather.window.11220      AXEnabled: Optional(1)\r\ncom.gather.Gather.window.11220      AXParent: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXTopLevelUIElement: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.gather.Gather.window.11220 }\r\ncom.gather.Gather.window.11220 AXMain: Optional(1)\r\ncom.gather.Gather.window.11220 AXActivationPoint: Optional(<AXValue 0x6000012cc780> {value = x:-1.000000 y:2161.000000 type = kAXValueCGPointType})\r\ncom.gather.Gather.window.11220 AXFullScreenButton: AXUIElement {\r\ncom.gather.Gather.window.11220      AXRole: Optional(AXButton)\r\ncom.gather.Gather.window.11220      AXTitle: nil\r\ncom.gather.Gather.window.11220      AXSubrole: Optional(AXFullScreenButton)\r\ncom.gather.Gather.window.11220      AXEnabled: Optional(1)\r\ncom.gather.Gather.window.11220      AXParent: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXTopLevelUIElement: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.gather.Gather.window.11220 }\r\ncom.gather.Gather.window.11220 AXProxy: nil\r\ncom.gather.Gather.window.11220 AXDefaultButton: nil\r\ncom.gather.Gather.window.11220 AXMinimized: Optional(0)\r\ncom.gather.Gather.window.11220 AXParent: Optional(<AXUIElement Application 0x6000012cc780> {pid=19259})\r\ncom.gather.Gather.window.11220 AXTitleUIElement: nil\r\ncom.gather.Gather.window.11220 AXCancelButton: nil\r\ncom.gather.Gather.window.11220 AXModal: Optional(0)\r\ncom.gather.Gather.window.11220 AXZoomButton: AXUIElement {\r\ncom.gather.Gather.window.11220      AXRole: Optional(AXButton)\r\ncom.gather.Gather.window.11220      AXTitle: nil\r\ncom.gather.Gather.window.11220      AXSubrole: Optional(AXFullScreenButton)\r\ncom.gather.Gather.window.11220      AXEnabled: Optional(1)\r\ncom.gather.Gather.window.11220      AXParent: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXTopLevelUIElement: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      AXWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather.window.11220      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.gather.Gather.window.11220 }\r\ncom.gather.Gather.window.11220 AXSize: Optional(<AXValue 0x6000012e8120> {value = w:1728.000000 h:1078.000000 type = kAXValueCGSizeType})\r\ncom.gather.Gather.window.11220 AXToolbarButton: nil\r\ncom.gather.Gather.window.11220 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.gather.Gather              AXRole: Optional(AXApplication)\r\ncom.gather.Gather              AXTitle: Optional(Gather)\r\ncom.gather.Gather              AXFunctionRowTopLevelElements: [\r\ncom.gather.Gather              ]\r\ncom.gather.Gather              AXManualAccessibility: Optional(0)\r\ncom.gather.Gather              AXFrame: nil\r\ncom.gather.Gather              AXFocusedUIElement: nil\r\ncom.gather.Gather              AXFrontmost: Optional(1)\r\ncom.gather.Gather              AXExtrasMenuBar: Optional(<AXUIElement 0x6000012c3090> {pid=19259})\r\ncom.gather.Gather              AXMainWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather              AXFocusedWindow: AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather              AXMenuBar: Optional(<AXUIElement 0x6000012cc780> {pid=19259})\r\ncom.gather.Gather              AXWindows: [\r\ncom.gather.Gather                  AXUIElement(windowId=11531, title=\"Gather Border Highlight\", role=\"AXWindow\", subrole=\"AXDialog\"),\r\ncom.gather.Gather                  AXUIElement(windowId=11220, title=\"Gather Desktop\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.gather.Gather              ]\r\ncom.gather.Gather              AXSize: nil\r\ncom.gather.Gather              AXPosition: nil\r\ncom.gather.Gather              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n```\r\nThis first file is showing the screen being shared...\r\nhttps://github.com/nikitabobko/AeroSpace/assets/97697705/939c0149-894e-4299-b8cc-578841c22ef3\r\n\r\nAnd this video shows the gather desktop apps perspective...\r\nhttps://github.com/nikitabobko/AeroSpace/assets/97697705/5c0e6275-6df6-483c-bc46-0c8e08a20de9\r\n\r\nI fully recognize this is probably a really odd issue but any help would be really appreciated!",
      "created_at": "2024-05-02T20:44:47Z",
      "updated_at": "2025-01-28T08:43:47Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rmathews-eb",
        "avatar_url": "https://avatars.githubusercontent.com/u/97697705?u=16a3ce5bddb04c223f1e8547e57ee741fc43bf4f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeBzt",
      "number": 1040,
      "title": "Terminal toggle hotkey with Raycast",
      "body": "I'm using Wezterm as a terminal and have set up a hotkey (⌘ .) in Raycast for Wezterm. That allows me to toggle Wezterm window in a Guake-like way. When I installed and configured AeroSpace, I noticed that `automatically-unhide-macos-hidden-apps` feature breaks that flow. I guess it is because Raycast's app hotkeys work by showing/hiding windows. I generally would like to disable MacOS window hiding, but would like to make exceptions on the app to app basis.\r\n\r\nI wonder what others are doing in that case.",
      "created_at": "2025-01-26T10:46:23Z",
      "updated_at": "2025-01-26T15:44:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AtnTf",
        "body": "> I generally would like to disable MacOS window hiding, but would like to make exceptions on the app to app basis.\r\n\r\nCreated an issue: https://github.com/nikitabobko/AeroSpace/issues/1041"
      },
      "user": {
        "login": "shishkin",
        "avatar_url": "https://avatars.githubusercontent.com/u/124065?u=edc92d4e7af2beb59ec0bf82cdd52bd139dc8d1a&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeBo9",
      "number": 1039,
      "title": "Disable/hide the tray icon",
      "body": "Hello,\r\n\r\nIt is possible to disable/hide the tray icon?",
      "created_at": "2025-01-26T02:15:00Z",
      "updated_at": "2025-01-26T02:15:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vnea",
        "avatar_url": "https://avatars.githubusercontent.com/u/10775422?u=c93d74a9dd85a04fa6d0c0bb28f836ef25477cb2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad-iL",
      "number": 1033,
      "title": "Aerospace failing to parse valid config",
      "body": "When uncommententing the default aerospace config. \r\n\r\n[workspace-to-monitor-force-assignment]\r\n1 = 'main'\r\n2 = 'main'\r\n3 = 'main'\r\n4 = 'main'\r\n5 = 'main'\r\n6 = 'secondary'\r\n7 = 'secondary'\r\n8 = 'secondary'\r\n9 = 'secondary'\r\n10 = 'secondary'\r\n\r\nI get this error when trying to reload the config:\r\n\r\nFailed to parse /Users/jonathan/.config/aerospace/aerospace.toml\r\n\r\nworkspace-to-monitor-force-assignment.key-mapping: Expected types are 'string' or 'integer'. But actual type is 'table'",
      "created_at": "2025-01-22T18:35:49Z",
      "updated_at": "2025-01-24T19:23:17Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "JonathanDonald03",
        "avatar_url": "https://avatars.githubusercontent.com/u/129891026?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AeAwJ",
      "number": 1037,
      "title": "Having multiple layouts in a single space feels buggy",
      "body": "I'm not sure if this is a bug or I'm not understanding window handling correctly 🤔 this is whats happening:\r\n\r\nIn my `1` space, I have three windows: Arc (browser), Alacritty (terminal) and an android simulator. I'm arranging the space in a vertical accordion where the first element is the browser, and the second one is a node containing the terminal and the simmulator in a horizontal tile.\r\n\r\nWhen I switch from the browser (node 1) to the terminal using `option-j`, only the terminal window shows up and I have to press `option-l` to make the other window appear.\r\n\r\nHere is a GIF:\r\n\r\n![Screen Recording 2025-01-24 at 12 11 50](https://github.com/user-attachments/assets/5f65abf7-5375-445b-90ec-1de4e9271ee9)\r\n",
      "created_at": "2025-01-24T18:13:33Z",
      "updated_at": "2025-01-24T19:21:21Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "marcofuentes05",
        "avatar_url": "https://avatars.githubusercontent.com/u/40815025?u=1b1bf888b7343d5939f6d1e7848a4dfa391849d4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad_wy",
      "number": 1034,
      "title": "Roblox Studio induces a delay in switching Windows and Workspaces",
      "body": "**Roblox Studio** causes a very annoying delay when the window is focused and then you switch to a different window (e.g. alt + h) or switch to a different workspace (e.g. alt + 3).\r\n\r\nMore details:\r\nImagine you have your browser (or anything of the usual) focused on the left and Roblox Studio is tiled to the right. Pressing alt + L will instantly focus Studio, it works fine. However, now that you have Roblox Studio focused, if you press alt + h to go back left to the browser, there will be a long delay between your keypress and the actual window switch. It is very slow and irritating.\r\n\r\nOne thing I noticed though is that when I'm in Play mode inside Roblox Studio, the switching works ALMOST instantly (I said 'ALMOST' because If you switch windows once then it appears instantly but if you then switch a bunch of times it starts to delay/lag). Very interesting behavior. I have included a video below. Enable sound so you can hear the delay between my keypresses and the actual window change when I change to a different window from Roblox Studio. In the video I've used the accordion layout but the same delay issue still occurs in the tiled side-by-side layout.\r\n\r\nhttps://github.com/user-attachments/assets/af0bfe7c-1a08-4251-b3c8-8eed810dbba2",
      "created_at": "2025-01-23T19:12:02Z",
      "updated_at": "2025-01-23T19:22:41Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ShouxTech",
        "avatar_url": "https://avatars.githubusercontent.com/u/70824139?u=1928d650e1cef7abe8e519c8cb1b23493b378584&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5Ft",
      "number": 988,
      "title": "Randomly getting slow to the point of having to restart",
      "body": "Hey, as of a few days ago, I have been experiencing random hit of total slowness. The overall system is fine as I can fluidly interact with any foreground window (opening and closing tabs on chrome, typing on the terminal, etc). But any interaction with aerospace is slowed down to the seconds level. It sometimes wont't respond for a few seconds and then apply all my shortcut actions rapidly.\r\n\r\nMacOS 15.2 (24C101)\r\n\r\nBoth mem and CPU usage remain normal.",
      "created_at": "2025-01-17T16:08:37Z",
      "updated_at": "2025-01-22T19:21:00Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rodrigogonegit",
        "avatar_url": "https://avatars.githubusercontent.com/u/19844626?u=09b01a4400701c891c3a70200cb115fa14be9a10&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzLk",
      "number": 971,
      "title": "Issues with \"Prefer tabs when opening documents\" Setting",
      "body": "![image](https://github.com/user-attachments/assets/ca8a1117-31dc-4693-bed0-fa51ce215d33)\r\n\r\n#### **System Settings**\r\n- **Preference**: \"Prefer tabs when opening documents\" set to **Always** (found under System Settings > Desktop & Dock > Windows).\r\n\r\n#### **What's Happening**\r\nWhen this preference is enabled, opening a new window in applications like VS Code causes unexpected behavior in AeroSpace. Specifically:\r\n1. It messes up the current layout tree, leaving gaps between apps/windows.\r\n2. In some cases, AeroSpace crashes altogether.\r\n\r\n#### **Expected Behavior**\r\nWhen selecting \"New Window\" in VS Code (or similar apps), the layout tree should remain intact. Since the new window is technically opened as a tab in the existing window (per the user preference), it shouldn’t alter the container tree structure in any way.\r\n\r\n#### **Steps to Reproduce**\r\n1. Go to **System Settings > Desktop & Dock > Windows** and set \"Prefer tabs when opening documents\" to **Always**.\r\n2. Open a new workspace in AeroSpace.\r\n3. Launch VS Code or another app that supports tabs.\r\n4. Select **New Window** from the app menu.\r\n5. Observe how AeroSpace handles the new tab.\r\n\r\n#### **Additional Context**\r\n- This behavior seems tied to how macOS handles tabbed windows, which may not align with AeroSpace’s expectations for new windows.\r\n- Attached is a screenshot of the relevant macOS preference for reference.",
      "created_at": "2025-01-12T15:28:38Z",
      "updated_at": "2025-01-22T18:30:12Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Seanathon",
        "avatar_url": "https://avatars.githubusercontent.com/u/5971166?u=73c4de044d97a54beddb4a63cd1034e1141d7c99&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad-FD",
      "number": 1031,
      "title": "New feature or a bug? Startup hook not running after config reload",
      "body": "When I reload the config the after-startup-command is not running again. I don't know if this is intended or not.\r\n\r\nIf not all windows are present before starting aerospace, the layout on a specific workspace (in my example set to v_accordion) is not applied until I restart aerospace.\r\n\r\nFor example I have Mail and Calendar switch to workspace 2 on window detect. Workspace 2 is set to layout v_accordion on startup. I open those applications one after the other and tile layout is applied (default). Reloading the config is not applying the chosen layout in startup command. So either it's a bug or would be a suggestion for a new feature to run this hook after reload again or add another one.\r\n\r\nSo I am unsure which type of issue I should create :)\r\n\r\n\r\n\r\n\r\n",
      "created_at": "2025-01-22T10:11:25Z",
      "updated_at": "2025-01-22T10:12:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "munkiwarra",
        "avatar_url": "https://avatars.githubusercontent.com/u/35305597?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad9xk",
      "number": 1030,
      "title": "iterm2 full-width and full-height windows should be floating",
      "body": "iterm2 has the option for full-height or width windows, with `Style` set to `Full-Height $Side of screen` or `Full-Width $Side of screen`.\r\n\r\nThese windows should be floated to respect the iterm configuration.\r\n\r\nThese windows do not include an `AXZoomButton` (as per the attachments included), which would need to be considered as part of the logic for `should_float` [here](https://github.com/nikitabobko/AeroSpace/blob/dbd39fdea179ac26b4466cfc9d252e21cfef7592/Sources/AppBundle/tree/MacWindow.swift#L237-L281)\r\n\r\n[full-height.txt](https://github.com/user-attachments/files/18498637/full-height.tx\r\n[full-width.txt](https://github.com/user-attachments/files/18498644/full-width.txt)\r\nt)\r\n[normal.txt](https://github.com/user-attachments/files/18498638/normal.txt)\r\n\r\n",
      "created_at": "2025-01-22T01:53:36Z",
      "updated_at": "2025-01-22T01:53:38Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "EdJoJob",
        "avatar_url": "https://avatars.githubusercontent.com/u/1487851?u=4d5e858ce3b460ef75d2538227af536a75fc8a7b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad8dn",
      "number": 1029,
      "title": "Combine `on-window-detected` rules",
      "body": "Hi there and thanks for the awesome app!\r\n\r\nI currently have 17 different `if.app-id` rules in my config with the exactly the same `run` command, it's getting kinda messy. After searching the discussions I couldn't find anything that would help with this problem (only thing closest was the discussion about embedded script language).\r\n\r\nWould it be possible to have something like `if.app-id-in` rule that would take an array (or is it table in toml parlance?) of app-id's and run the same command to the matched app. I imagine (without looking at the code, so excuse me if I'm getting this wrong) the internals would be looping the `if.app-id-in` array and basically doing the same matcher registration as `if.app-id` does.\r\n\r\nFor example from this:\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder' # Finder\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.Preview' # Preview\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.mail' # Mail\r\nrun = ['layout floating']\r\n```\r\n\r\nto this:\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id-in = ['com.apple.finder', 'com.apple.Preview', 'com.apple.mail']\r\nrun = ['layout floating']\r\n```\r\n\r\nThat would help remove extra configuration lines and improve maintainability.\r\n\r\nThanks for considering this!",
      "created_at": "2025-01-20T15:45:38Z",
      "updated_at": "2025-01-20T15:45:39Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ivuorinen",
        "avatar_url": "https://avatars.githubusercontent.com/u/11024?u=738b93b787eb0149e478f35ffde7589633aff7e3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad6ih",
      "number": 1028,
      "title": "Is there a way to move a container to a new workspace?",
      "body": "Let's say I have 2 workspaces, 1 and 2. On 1 I have 3 Terminal windows. I want to move all 3 to workspace 2. I know I can move each one at a time, but is there a way to move the parent node of the focused window, instead of just the focused window?\r\n\r\nThanks.",
      "created_at": "2025-01-19T16:14:00Z",
      "updated_at": "2025-01-19T16:14:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "JakeCarter",
        "avatar_url": "https://avatars.githubusercontent.com/u/22508?u=d68f8d7a31b38fa2b806de3d07d45c0b3b78bca5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5dl",
      "number": 990,
      "title": "Limit root node to have N children maximum when opening new windows",
      "body": "The only tiling window manager I used before was DWM, and that was about 10 years ago. So I might be not remembering things right. And I never used I3. \r\n\r\nMy goal is to have 2 columns, with primary app on the left, and supplementary apps on the right. If it's more than 1 supplementary apps, I want them to split horizontally (one above another), both on the right from my main app in that workspace. (would also be nice to be able to bring supplementary apps across workspaces, but I know that's not possible at the moment)\r\n\r\nQuestion: is there a way to at least partially achieve this? To force never having more than 2 windows in the root node? That every window after 2nd would be added into the last root node, which will become vertical tiles? and if it's possible to change the default split ratio?\r\n\r\nIt's not that much work to manually do this, but if you consider that layout resets every time that my browser goes to fullscreen, it quickly becomes annoying",
      "created_at": "2025-01-18T05:14:34Z",
      "updated_at": "2025-01-18T23:12:20Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AtT7t",
        "body": "#260 "
      },
      "user": {
        "login": "dderg",
        "avatar_url": "https://avatars.githubusercontent.com/u/6894885?u=85afe9ca34973317d97042c74e354fe48fb1bfe4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50Q",
      "number": 1002,
      "title": "Aerospace not detecting Zathura PDF viewer (NULL-APP-BUNDLE-ID)",
      "body": "I have the following in my config:\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'NULL-APP-BUNDLE-ID'\r\nif.app-name-regex-substring = 'zathura'\r\nif.window-title-regex-substring = 'zathura'\r\nrun = 'move-node-to-workspace P'\r\n```\r\nZathura does not move to space P. It does appear in the dock, application switcher, and is hidden when I run `aerospace list-apps macos-native-hidden`\r\n\r\n",
      "created_at": "2024-09-02T15:36:04Z",
      "updated_at": "2025-01-18T20:28:04Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "SylvanFranklin",
        "avatar_url": "https://avatars.githubusercontent.com/u/103258778?u=d91539e5dd98960544625298eba8decdaf862bfe&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5z4",
      "number": 1000,
      "title": "Workspace can span multiple monitors",
      "body": "I have an admittedly fringe-case scenario whereby my main screen (Samsung Odyssey G9 59\") displays 2x 4k video feeds (HDMI/DVI) side by side from the same Macbook using the monitors PBP mode. I've configured MacOS to treat them as one by disabling spaces, which allows me to centre position windows. The reason being this makes it possible for an M1 Pro Macbook to display a 120Hz desktop at full 7680x2160 resolution - something that isn't possible with a single cable with the M1's.\r\n\r\nMy question is this - before I found Aerospace, I used Apple Scripts and a Stream Deck to provide me with some rudimentary 'tiling' features, like displaying a window 1/3 width in the centre of the virtual screen (so basically 1/6 on one screen and the other 1/6 on the other).\r\n\r\nIs it possible with AeroSpace to display a workspace than spans multiple screens? I don't necessarily need multiple workspaces - but that would be nice.\r\n\r\nApologies in advance if this isn't the right place to make queries - I didn't see an alternative channel.",
      "created_at": "2024-10-01T16:47:26Z",
      "updated_at": "2025-01-18T19:58:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AtTux",
        "body": "> Is it possible with AeroSpace to display a workspace than spans multiple screens? I don't necessarily need multiple workspaces - but that would be nice.\r\n\r\nNo, it's not possible, and it's unlikely will be possible, the priority of this feature is very minor"
      },
      "user": {
        "login": "drewzh",
        "avatar_url": "https://avatars.githubusercontent.com/u/344724?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdbR3",
      "number": 875,
      "title": "How/when are workspaces made?",
      "body": "I've got shortcut keys set up for workspaces 1 to 9, like so:\r\n\r\n    ctrl-1 = 'workspace 1'\r\n    ctrl-2 = 'workspace 2'\r\n    ...\r\n\r\nDoes this make workspaces? Or are they rather created when you switch to them? I'm struggling with the mental model.",
      "created_at": "2024-12-19T10:23:51Z",
      "updated_at": "2025-01-18T19:53:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsUih",
        "body": "Yes, the mental model is not described in the docs unfortunately. It's somewhere in my todo to write it down at some point.\r\n\r\nThe general idea is that you don't need to create workspaces explicitly, which should reduce the hussle. You just say `workspace XXX` and AeroSpace will auto-create `XXX` and jump to it.\r\n\r\nThe workspaces are automatically destroyed when they are not visible, empty, and they are not mentioned in the config.\r\n\r\nThe last part \"are not mentioned in the config\" is a bit wonky and wasn't well thought of. If I was doing it over again, I'd reconsider. If I remember it correctly `alt-1 = 'exec-and-forget aerospace workspace 1'` - this doesn't count as \"mentioned in the config\", but this does: `alt-1 = 'workspace 1'`. And given possibility of #278 and friends, the definition of \"mentioned in the config\" becomes even more wonkier.\r\n\r\nI was also thinking to introduce the following config option at some point:\r\n```toml\r\n# The current \"wonky\" default\r\nforce-keep-workspaces-alive = 'auto-infer-from-config'\r\n# or\r\nforce-keep-workspaces-alive = ['1', '2', '3', '4']\r\n```\r\n\r\nThe only significant difference known to me between alive and dead workspaces is that alive workspaces preserve their attachment to monitors, while dead don't.\r\n\r\nIn comparison, in i3, workspaces are alive only when they are either non-empty, or visible. And I didn't like that I couldn't reliably move an empty workspace to another monitor and be sure that it would stay there"
      },
      "user": {
        "login": "bvankuik",
        "avatar_url": "https://avatars.githubusercontent.com/u/2480864?u=de7257a6824bd7cdec98951087be5aefd20d0bdd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zR",
      "number": 996,
      "title": "make all workspaces phantom workspaces",
      "body": "hello,\r\n\r\nfor reference, on linux i use waybar and hyprland. reading in the issues here I found that there is a concept in aerospace called 'phantom workspace' which is what is used i think for secondary monitors making a workspace 11. what i want is to be able to make all workspaces phantom workpaces. when my pc boots, i'm in workspace 1 and the list in the toolbar only has workspace 1. when i change to workspace 2 it dynamically creates workspace 2. if workspace 1 had no windows, it would automatically remove workspace 1. if i open a window in workspace 2 and then go to workspace 5, then the menu at the top would list workspace 2 and 5. if i hit previous workspace, i would go to 2. if i move out of workspace 5 and no windows open in workspace 5, then workspace 5 would automatically delete. at that point next/prev would loop on the single workspace 2 until there is more than one workspace again.\r\n\r\nis there a way to turn on phantom workspace for all workspaces? (or even all workspaces except 1-4?) I don't want to uncomment alt+(1 through 10), i like all that. i just don't want aerospace looking into my config, finding out i _could_ open workspace 9 and then automatically making it for me.",
      "created_at": "2024-11-15T19:20:24Z",
      "updated_at": "2025-10-24T09:12:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AtTuN",
        "body": "https://github.com/nikitabobko/AeroSpace/issues/999"
      },
      "user": {
        "login": "dezren39",
        "avatar_url": "https://avatars.githubusercontent.com/u/11225574?u=797488820e2baf8f59c59e9b04226ff97119e64e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad0B3",
      "number": 978,
      "title": "Compounding memory usage",
      "body": "Hello! My aerospace suddenly stopped responding, either through keybinds or the CLI, during my config process. It will max out the cores it is utilizing, and memory usage will creep until crash or termination.\r\n![output](https://github.com/user-attachments/assets/cadf15b2-c019-486b-b650-b2a284051805)\r\nIs there a way to access logs? \r\n\r\naerospace CLI client version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nAeroSpace.app server version: Unknown. The server is not running.\r\n\r\nMacBook Pro (14-inch, Nov 2023)\r\nSequoia 15.2",
      "created_at": "2025-01-13T00:56:29Z",
      "updated_at": "2025-01-18T15:29:17Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "philocalyst",
        "avatar_url": "https://avatars.githubusercontent.com/u/114884788?u=c09225005c53d2a98d9244a9b3615825518d16bb&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdpmC",
      "number": 917,
      "title": "Is there anyway to save a \"session\" ?",
      "body": "Is there any way to save/recover the position, sizes and layouts so when I restart my mac I don't have to setup everything manually again?",
      "created_at": "2025-01-02T20:32:30Z",
      "updated_at": "2025-01-17T13:36:27Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "falconmasters",
        "avatar_url": "https://avatars.githubusercontent.com/u/1250789?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyiq",
      "number": 963,
      "title": "PowerPoint Presentation Window (Fullscreen) not recognized",
      "body": "**Describe the bug**\r\n\r\nIf I start presenting a Microsoft PowerPoint presentation, the presentation window is not recognized by aerospace.\r\n\r\nThis is the output of `aerospace debug-window`\r\n\r\n```\r\ncom.microsoft.Powerpoint.window.18996 windowId: 18996\r\ncom.microsoft.Powerpoint.window.18996 workspace: √∂\r\ncom.microsoft.Powerpoint.window.18996 treeNodeParent: AppBundle.TilingContainer\r\ncom.microsoft.Powerpoint.window.18996 recognizedAsDialog: false\r\ncom.microsoft.Powerpoint.window.18996 AXTitle: Optional(Pr√§sentation1)\r\ncom.microsoft.Powerpoint.window.18996 AXRole: Optional(AXWindow)\r\ncom.microsoft.Powerpoint.window.18996 AXSubrole: Optional(AXStandardWindow)\r\ncom.microsoft.Powerpoint.window.18996 AXIdentifier: Optional(_NS:8)\r\ncom.microsoft.Powerpoint.window.18996 AXFocused: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996 AXFullScreen: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996 AXFrame: Optional(<AXValue 0x600000363980> {value = x:3.000000 y:38.000000 w:1506.000000 h:940.000000 type = kAXValueCGRectType})\r\ncom.microsoft.Powerpoint.window.18996 AXPosition: Optional(<AXValue 0x6000018d25b0> {value = x:3.000000 y:38.000000 type = kAXValueCGPointType})\r\ncom.microsoft.Powerpoint.window.18996 AXGrowArea: nil\r\ncom.microsoft.Powerpoint.window.18996 AXMinimizeButton: AXUIElement {\r\ncom.microsoft.Powerpoint.window.18996      AXRole: Optional(AXButton)\r\ncom.microsoft.Powerpoint.window.18996      AXTitle: nil\r\ncom.microsoft.Powerpoint.window.18996      AXSubrole: Optional(AXMinimizeButton)\r\ncom.microsoft.Powerpoint.window.18996      AXEnabled: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996      AXParent: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXTopLevelUIElement: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXWindow: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.microsoft.Powerpoint.window.18996 }\r\ncom.microsoft.Powerpoint.window.18996 AXDocument: nil\r\ncom.microsoft.Powerpoint.window.18996 AXSections: [\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionDescription = Inhalt;\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x60000180de30> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContent;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionDescription = \"Navigator der obersten Ebene\";\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x60000180c450> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXTopLevelNavigator;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionDescription = Symbolleiste;\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x60000180e520> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXToolbar;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x60000180e040> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001832580> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x6000018306c0> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001832610> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001830600> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001833b70> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001830ea0> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001832e50> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001831d40> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001831dd0> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001832fa0> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContainer;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionDescription = Suchen;\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001830840> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXSearch;\r\ncom.microsoft.Powerpoint.window.18996         }),\r\ncom.microsoft.Powerpoint.window.18996         Optional({\r\ncom.microsoft.Powerpoint.window.18996             SectionDescription = Inhaltsnavigator;\r\ncom.microsoft.Powerpoint.window.18996             SectionObject = \"<AXUIElement 0x600001833330> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.18996             SectionUniqueID = AXContentNavigator;\r\ncom.microsoft.Powerpoint.window.18996         })\r\ncom.microsoft.Powerpoint.window.18996 ]\r\ncom.microsoft.Powerpoint.window.18996 AXCloseButton: AXUIElement {\r\ncom.microsoft.Powerpoint.window.18996      AXRole: Optional(AXButton)\r\ncom.microsoft.Powerpoint.window.18996      AXTitle: nil\r\ncom.microsoft.Powerpoint.window.18996      AXSubrole: Optional(AXCloseButton)\r\ncom.microsoft.Powerpoint.window.18996      AXEnabled: Optional(1)\r\ncom.microsoft.Powerpoint.window.18996      AXParent: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXTopLevelUIElement: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXWindow: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.microsoft.Powerpoint.window.18996 }\r\ncom.microsoft.Powerpoint.window.18996 AXMain: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996 AXActivationPoint: Optional(<AXValue 0x6000018432a0> {value = x:13.000000 y:52.000000 type = kAXValueCGPointType})\r\ncom.microsoft.Powerpoint.window.18996 AXFullScreenButton: AXUIElement {\r\ncom.microsoft.Powerpoint.window.18996      AXRole: Optional(AXButton)\r\ncom.microsoft.Powerpoint.window.18996      AXTitle: nil\r\ncom.microsoft.Powerpoint.window.18996      AXSubrole: Optional(AXFullScreenButton)\r\ncom.microsoft.Powerpoint.window.18996      AXEnabled: Optional(1)\r\ncom.microsoft.Powerpoint.window.18996      AXParent: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXTopLevelUIElement: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXWindow: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.microsoft.Powerpoint.window.18996 }\r\ncom.microsoft.Powerpoint.window.18996 AXProxy: nil\r\ncom.microsoft.Powerpoint.window.18996 AXDefaultButton: nil\r\ncom.microsoft.Powerpoint.window.18996 AXMinimized: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996 AXParent: Optional(<AXUIElement Application 0x6000018432a0> {pid=88277})\r\ncom.microsoft.Powerpoint.window.18996 AXTitleUIElement: nil\r\ncom.microsoft.Powerpoint.window.18996 AXCancelButton: nil\r\ncom.microsoft.Powerpoint.window.18996 AXModal: Optional(0)\r\ncom.microsoft.Powerpoint.window.18996 AXZoomButton: AXUIElement {\r\ncom.microsoft.Powerpoint.window.18996      AXRole: Optional(AXButton)\r\ncom.microsoft.Powerpoint.window.18996      AXTitle: nil\r\ncom.microsoft.Powerpoint.window.18996      AXSubrole: Optional(AXFullScreenButton)\r\ncom.microsoft.Powerpoint.window.18996      AXEnabled: Optional(1)\r\ncom.microsoft.Powerpoint.window.18996      AXParent: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXTopLevelUIElement: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      AXWindow: AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint.window.18996      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.microsoft.Powerpoint.window.18996 }\r\ncom.microsoft.Powerpoint.window.18996 AXSize: Optional(<AXValue 0x60000187c8d0> {value = w:1506.000000 h:940.000000 type = kAXValueCGSizeType})\r\ncom.microsoft.Powerpoint.window.18996 AXToolbarButton: nil\r\ncom.microsoft.Powerpoint.window.18996 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.microsoft.Powerpoint              AXRole: Optional(AXApplication)\r\ncom.microsoft.Powerpoint              AXTitle: Optional(PowerPoint)\r\ncom.microsoft.Powerpoint              AXFunctionRowTopLevelElements: [\r\ncom.microsoft.Powerpoint              ]\r\ncom.microsoft.Powerpoint              AXFrame: nil\r\ncom.microsoft.Powerpoint              AXFocusedUIElement: AXUIElement(windowId=19009, title=\"Folie 1\", role=\"AXLayoutArea\", subrole=nil)\r\ncom.microsoft.Powerpoint              AXFrontmost: Optional(1)\r\ncom.microsoft.Powerpoint              AXExtrasMenuBar: nil\r\ncom.microsoft.Powerpoint              AXMainWindow: AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.microsoft.Powerpoint              AXFocusedWindow: AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.microsoft.Powerpoint              AXMenuBar: Optional(<AXUIElement 0x6000018d1950> {pid=88277})\r\ncom.microsoft.Powerpoint              AXWindows: [\r\ncom.microsoft.Powerpoint                  AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\"),\r\ncom.microsoft.Powerpoint                  AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint              ]\r\ncom.microsoft.Powerpoint              AXSize: nil\r\ncom.microsoft.Powerpoint              AXPosition: nil\r\ncom.microsoft.Powerpoint              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.microsoft.Powerpoint.window.19009 windowId: 19009\r\ncom.microsoft.Powerpoint.window.19009 workspace: nil\r\ncom.microsoft.Powerpoint.window.19009 treeNodeParent: AppBundle.MacosPopupWindowsContainer\r\ncom.microsoft.Powerpoint.window.19009 recognizedAsDialog: true\r\ncom.microsoft.Powerpoint.window.19009 AXTitle: Optional(PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1])\r\ncom.microsoft.Powerpoint.window.19009 AXRole: Optional(AXWindow)\r\ncom.microsoft.Powerpoint.window.19009 AXSubrole: Optional(AXUnknown)\r\ncom.microsoft.Powerpoint.window.19009 AXFocused: Optional(0)\r\ncom.microsoft.Powerpoint.window.19009 AXFullScreen: Optional(0)\r\ncom.microsoft.Powerpoint.window.19009 AXFrame: Optional(<AXValue 0x6000003e1140> {value = x:0.000000 y:0.000000 w:1512.000000 h:982.000000 type = kAXValueCGRectType})\r\ncom.microsoft.Powerpoint.window.19009 AXPosition: Optional(<AXValue 0x60000180f1b0> {value = x:0.000000 y:0.000000 type = kAXValueCGPointType})\r\ncom.microsoft.Powerpoint.window.19009 AXGrowArea: nil\r\ncom.microsoft.Powerpoint.window.19009 AXMinimizeButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXDocument: nil\r\ncom.microsoft.Powerpoint.window.19009 AXSections: [\r\ncom.microsoft.Powerpoint.window.19009         Optional({\r\ncom.microsoft.Powerpoint.window.19009             SectionDescription = Inhalt;\r\ncom.microsoft.Powerpoint.window.19009             SectionObject = \"<AXUIElement 0x60000180c2d0> {pid=88277}\";\r\ncom.microsoft.Powerpoint.window.19009             SectionUniqueID = AXContent;\r\ncom.microsoft.Powerpoint.window.19009         })\r\ncom.microsoft.Powerpoint.window.19009 ]\r\ncom.microsoft.Powerpoint.window.19009 AXCloseButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXMain: Optional(1)\r\ncom.microsoft.Powerpoint.window.19009 AXActivationPoint: Optional(<AXValue 0x6000018d2280> {value = x:-1.000000 y:983.000000 type = kAXValueCGPointType})\r\ncom.microsoft.Powerpoint.window.19009 AXFullScreenButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXProxy: nil\r\ncom.microsoft.Powerpoint.window.19009 AXDefaultButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXMinimized: Optional(0)\r\ncom.microsoft.Powerpoint.window.19009 AXParent: Optional(<AXUIElement Application 0x6000018d2280> {pid=88277})\r\ncom.microsoft.Powerpoint.window.19009 AXTitleUIElement: nil\r\ncom.microsoft.Powerpoint.window.19009 AXCancelButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXModal: Optional(0)\r\ncom.microsoft.Powerpoint.window.19009 AXZoomButton: nil\r\ncom.microsoft.Powerpoint.window.19009 AXSize: Optional(<AXValue 0x6000018fed90> {value = w:1512.000000 h:982.000000 type = kAXValueCGSizeType})\r\ncom.microsoft.Powerpoint.window.19009 AXToolbarButton: nil\r\ncom.microsoft.Powerpoint.window.19009 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.microsoft.Powerpoint              AXRole: Optional(AXApplication)\r\ncom.microsoft.Powerpoint              AXTitle: Optional(PowerPoint)\r\ncom.microsoft.Powerpoint              AXFunctionRowTopLevelElements: [\r\ncom.microsoft.Powerpoint              ]\r\ncom.microsoft.Powerpoint              AXFrame: nil\r\ncom.microsoft.Powerpoint              AXFocusedUIElement: AXUIElement(windowId=19009, title=\"Folie 1\", role=\"AXLayoutArea\", subrole=nil)\r\ncom.microsoft.Powerpoint              AXFrontmost: Optional(1)\r\ncom.microsoft.Powerpoint              AXExtrasMenuBar: nil\r\ncom.microsoft.Powerpoint              AXMainWindow: AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.microsoft.Powerpoint              AXFocusedWindow: AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\")\r\ncom.microsoft.Powerpoint              AXMenuBar: Optional(<AXUIElement 0x60000180dfe0> {pid=88277})\r\ncom.microsoft.Powerpoint              AXWindows: [\r\ncom.microsoft.Powerpoint                  AXUIElement(windowId=19009, title=\"PowerPoint-Bildschirmpr√§sentation - [Pr√§sentation1]\", role=\"AXWindow\", subrole=\"AXUnknown\"),\r\ncom.microsoft.Powerpoint                  AXUIElement(windowId=18996, title=\"Pr√§sentation1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.microsoft.Powerpoint              ]\r\ncom.microsoft.Powerpoint              AXSize: nil\r\ncom.microsoft.Powerpoint              AXPosition: nil\r\ncom.microsoft.Powerpoint              Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\n!!! DISCLAIMER !!!\r\n!!! 'debug-windows' command is not stable API. Please don't rely on the command existence and output format !!!\r\n!!! The only intended use case is to report bugs about incorrect windows handling !!!\r\n\r\nDebug session finished\r\n\r\n```\r\n\r\nNote that there are two Powerpoint windows:\r\n\r\n1. 18996 which is on my workspace \"ö\" (shown as `workspace: √∂` due to the umlaut)\r\n2. 19009 which is the actual fullscreen presentation window.\r\n\r\nWindow 19009 is automatically placed on workspace `nil`, which I did not define anywhere. \r\nInterestingly, I can switch to that workspace using `aerospace workspace nil` and I can see the presentation window.\r\n\r\nHowever, switching to the window using `aerospace focus --window-id` does not work:\r\n```\r\naerospace focus --window-id 19009\r\nWindow 19009 doesn't belong to any monitor. And thus can't even define a focused workspace\r\n```\r\n\r\nAs indicated, the window does exist but it is not possible to focus that window.\r\n\r\nFYI: this is a test on a single monitor setup. If I would start a presentation using two monitors, there will be _two_ undetected _fullscreen_ windows.",
      "created_at": "2024-11-13T21:42:59Z",
      "updated_at": "2025-01-17T09:53:37Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "CheariX",
        "avatar_url": "https://avatars.githubusercontent.com/u/1998723?u=c639a8dde7b54c613c2e24fe8b54d2a272c6d6d1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad3VZ",
      "number": 985,
      "title": "Finder tabs are regarded as different windows",
      "body": "Just open finder.\r\nOpen a 2nd tab. Finder will be shrinked to half of the screen, just as there is another app occupying the other half.\r\nOpen a 3rd tab, Finder will be shrinked to 1/3 of the screen.\r\n\r\nPress shortcut to move finder to different workspace.\r\nOnly one tab is moved there.",
      "created_at": "2025-01-15T22:22:33Z",
      "updated_at": "2025-01-16T10:48:50Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "quarkquartet",
        "avatar_url": "https://avatars.githubusercontent.com/u/26316540?u=6804450dfa8380195d4d1a5076c000fc32aa9eca&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad3l4",
      "number": 986,
      "title": "Some of the keyboardshortcuts is not working as excepted in the i3 config.",
      "body": "### Summary\r\nSome of the keyboard shortcuts aren't working as expected\r\nExample.\r\n`alt-shift-8` and `alt-shift-9` works,  but not not any other `move-to-node` \r\n`alt-shift-semicolon` works, not any other `moves`\r\n`alt-semicolon` works, but not any other focus modes.\r\n\r\nHow do I debug what is going wrong?\r\n\r\n### Details ( Config I use ) \r\n```\r\n# Reference: https://github.com/i3/i3/blob/next/etc/config\r\n\r\n# i3 doesn't have \"normalizations\" feature that why we disable them here.\r\n# But the feature is very helpful.\r\n# Normalizations eliminate all sorts of weird tree configurations that don't make sense.\r\n# Give normalizations a chance and enable them back.\r\nenable-normalization-flatten-containers = false\r\nenable-normalization-opposite-orientation-for-nested-containers = false\r\n\r\n\r\nafter-startup-command = []\r\n\r\nexec-on-workspace-change = []\r\n\r\n# Mouse follows focus when focused monitor changes\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n[mode.main.binding]\r\n# See: https://nikitabobko.github.io/AeroSpace/goodies#open-a-new-window-with-applescript\r\nalt-enter = '''exec-and-forget osascript -e '\r\ntell application \"Terminal\"l\r\n    activate\r\nend tell'\r\n'''\r\n\r\n# i3 wraps focus by default\r\nalt-j = 'focus --boundaries-action wrap-around-the-workspace left'\r\nalt-k = 'focus --boundaries-action wrap-around-the-workspace down'\r\nalt-l = 'focus --boundaries-action wrap-around-the-workspace up'\r\nalt-semicolon = 'focus --boundaries-action wrap-around-the-workspace right'\r\n\r\nalt-shift-j = 'move left'\r\nalt-shift-k = 'move down'\r\nalt-shift-l = 'move up'\r\nalt-shift-semicolon = 'move right'\r\n\r\n# Consider using 'join-with' command as a 'split' replacement if you want to enable normalizations\r\nalt-h = 'split horizontal'\r\nalt-v = 'split vertical'\r\n\r\nalt-f = 'fullscreen'\r\n\r\nalt-s = 'layout v_accordion'               # 'layout stacking' in i3\r\nalt-w = 'layout h_accordion'               # 'layout tabbed' in i3\r\nalt-e = 'layout tiles horizontal vertical' # 'layout toggle split' in i3\r\n\r\nalt-shift-space = 'layout floating tiling' # 'floating toggle' in i3\r\n\r\n# Not supported, because this command is redundant in AeroSpace mental model.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows\r\n#alt-space = 'focus toggle_tiling_floating'\r\n\r\n# `focus parent`/`focus child` are not yet supported, and it's not clear whether they\r\n# should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5\r\n# alt-a = 'focus parent'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-0 = 'workspace 10'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-0 = 'move-node-to-workspace 10'\r\n\r\nalt-shift-c = 'reload-config'\r\n\r\nalt-r = 'mode resize'\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n```\r\n\r\n\r\n",
      "created_at": "2025-01-16T06:45:02Z",
      "updated_at": "2025-01-16T06:45:02Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "asnimansari",
        "avatar_url": "https://avatars.githubusercontent.com/u/10102690?u=b2083b299b7b4fece3733d5bba53ad0868e27dbc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad2bd",
      "number": 983,
      "title": "Share my AltTab fork for AeroSpace",
      "body": "[AltTab](https://github.com/lwouis/alt-tab-macos) is a fascinating app on switching tasks among difference spaces with previews. However, it only support vanilla macOS spaces and make it less useful when combining with AeroSpace. I want to share [my fork](https://github.com/XOR-op/alt-tab-macos) here which supports spaces from AeroSpace. You can preview your opened windows with their current space numbers displayed at a glance. You just need to build it yourself with detailed instructions.",
      "created_at": "2025-01-15T00:00:51Z",
      "updated_at": "2025-01-15T00:00:51Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "XOR-op",
        "avatar_url": "https://avatars.githubusercontent.com/u/17672363?u=dccd104ebcbefd9fd799e90b96d38ca4730b8942&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad2aw",
      "number": 982,
      "title": "How to handle menubar applications that can \"detach\"?",
      "body": "I use Fantastical to manage my calendar. 99.9% of the time, I just use the menubar application instead of the full application. The menubar application has a way to \"detach\" itself from the menubar and become a \"normal\" application, with window controls and everything, but if you don't detach it in normal circumstances, when the app loses focus the menubar app just goes away and there is no \"window\" associated with it. This seems to cause some weird interactions with AeroSpace when I try to invoke the menubar app.\r\n\r\nTo explain a little more what I'm looking for - I have three monitors to manage with AeroSpace: from left to right, it's my MBP screen and two monitors to the right of it in horizontal orientation. I have separate spaces disabled in my macOS settings, so I only have a single menubar in my \"main\" monitor in the middle of my view. If I'm in a workspace that's on the third monitor, for example, and invoke Fantastical by a keyboard shortcut, what seems to happen is that the application gets opened, and then the app is \"detached\" from the menubar and moved to that third monitor. What I _want_ is for the application to be invoked in my main monitor (the one that has the menubar) and for the app to remain there in its non-detached state. Dismissing the app should return me to the previous app/workspace that had focus before I invoked Fantastical.\r\n\r\nIs this possible? I kind of just want to have this application completely opt itself out of being \"managed\" by AeroSpace at all - not even in a \"floating\" sense, but I looked over the available documentation/issues/discussions and couldn't find any way to make an app completely \"unmanaged\" by AeroSpace.",
      "created_at": "2025-01-14T23:31:14Z",
      "updated_at": "2025-01-14T23:31:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "macintacos",
        "avatar_url": "https://avatars.githubusercontent.com/u/8128941?u=dc4dd8f869a40ac9d175c3fe81352278e2127e2f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad1w8",
      "number": 981,
      "title": "Performing cyclic switching in space(在空间中进行循环切换)",
      "body": "我的需求是如何在手风琴或者平铺模式下，在同一空间中使用alt + r 进行焦点切换\r\nMy requirement is how to use alt + r for focus switching in accordion or flat mode within the same space.",
      "created_at": "2025-01-14T08:46:03Z",
      "updated_at": "2025-01-14T09:06:08Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "z895771424",
        "avatar_url": "https://avatars.githubusercontent.com/u/82040070?u=d1bae467155604e43e27009cdea74391de2671b0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyh1",
      "number": 950,
      "title": "`workspace` command should focus the monitor containing the specified workspace",
      "body": "Hi, I'd like to be able to focus a workspace on a separate monitor, and for the focus to move to that monitor. Additionally, if a workspace is focused that is not assigned to a monitor, it should stay on the current monitor and move to that workspace. The current behavior will switch focus to the main monitor and then switch the workspace, which is a bit unintuitive in a multi-monitor setup.",
      "created_at": "2025-01-02T00:32:00Z",
      "updated_at": "2025-01-14T05:26:11Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ok-nick",
        "avatar_url": "https://avatars.githubusercontent.com/u/25470747?u=df9c2008307d1dc982edd3d65875c6d1fa5cd534&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyqs",
      "number": 965,
      "title": "Aerosapce will leak some other windows in the right  bottom corner of the screen",
      "body": "<img width=\"1512\" alt=\"Snipaste_2025-01-12_10-56-47\" src=\"https://github.com/user-attachments/assets/1a4c77c9-1d41-49d9-b2ba-06782b6ec0c2\" />\r\n",
      "created_at": "2025-01-12T03:01:19Z",
      "updated_at": "2025-01-13T09:46:33Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "smoosex",
        "avatar_url": "https://avatars.githubusercontent.com/u/67037833?u=014873b3bdfdf53b4b657519da5f909f9d657476&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adz3p",
      "number": 977,
      "title": "differentiating between crome incognito and normal chrome",
      "body": "I Want to set only incognito chrome windows to a workspace. Any Ideas on how to  tell them apart from normal chrome windows?",
      "created_at": "2025-01-12T23:16:08Z",
      "updated_at": "2025-01-12T23:16:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "amitgoldblatt",
        "avatar_url": "https://avatars.githubusercontent.com/u/145353179?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdysV",
      "number": 967,
      "title": "Absent of Plus key",
      "body": "Maybe I missed something but I cannot find normal \"+\" key (only keypad variant).\r\nIs it done by purpose?",
      "created_at": "2025-01-12T04:34:31Z",
      "updated_at": "2025-01-14T23:13:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Biktop",
        "avatar_url": "https://avatars.githubusercontent.com/u/742501?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyrz",
      "number": 966,
      "title": "Automatically return to main mode",
      "body": "Hello,\r\n\r\nI moved almost all shortcuts to dedicated mode (to freely assign one key shortcuts).\r\nAnd I want to leave this mode to main after pressing any shortcut in the current mode (some kind of one tap binding).\r\n\r\nIs there easier way to do it without include 'mode main' for all binding?\r\nAnd is it possible to hide letter of the mode in the menu bar (like main)?\r\n\r\nThanks!",
      "created_at": "2025-01-12T04:06:48Z",
      "updated_at": "2025-01-12T04:06:50Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Biktop",
        "avatar_url": "https://avatars.githubusercontent.com/u/742501?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiI",
      "number": 956,
      "title": "Duplicate fantom windows created by using macOS native fullscreen",
      "body": "**Describe the bug**\r\n\r\nWhenever I use the shortcut `macos-native-fullscreen`, I get a duplicate window in the background. I'm on the latest stable version and macOS Sonoma 14.3.1. I first noticed this thanks to my transparent terminal, but it also effects firefox and other desktop apps. These \"Fantom\" instances can not be clicked on or otherwise interacted with, but they can be quit with command+q\r\n\r\nhttps://github.com/user-attachments/assets/75895d6c-9fbb-45fb-ab40-4b3d5894e9ce\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n**I could not find duplicate**",
      "created_at": "2024-12-14T14:45:47Z",
      "updated_at": "2025-01-11T21:07:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "SylvanFranklin",
        "avatar_url": "https://avatars.githubusercontent.com/u/103258778?u=d91539e5dd98960544625298eba8decdaf862bfe&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIsu",
      "number": 618,
      "title": "README: Welcome to AeroSpace Discussions!",
      "body": "We’re using GitHub Discussions as a place to connect with other members of our community.\r\n\r\nThere are 7 channels:\r\n- [#all](https://github.com/nikitabobko/AeroSpace/discussions). [RSS](https://github.com/nikitabobko/AeroSpace/discussions.atom?discussions_q=sort%3Adate_created). Feed with all discussions.\r\n-   [#announcements](https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements.atom?discussions_q=category%3Aannouncements+sort%3Adate_created). Only maintainers can post here. Highly moderated traffic.\r\n-   [#announcements-releases](https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements-releases). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/announcements-releases.atom?discussions_q=category%3Aannouncements-releases+sort%3Adate_created). Announcements about non-patch releases. Only maintainers can post here.\r\n-   [#feature-ideas](https://github.com/nikitabobko/AeroSpace/discussions/categories/feature-ideas). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/feature-ideas.atom?discussions_q=category%3Afeature-ideas+sort%3Adate_created).\r\n-   [#general](https://github.com/nikitabobko/AeroSpace/discussions/categories/general). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/general.atom?discussions_q=sort%3Adate_created+category%3Ageneral).\r\n- [#potential-bugs](https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/potential-bugs.atom?discussions_q=category%3Apotential-bugs+sort%3Adate_created). If you think that you encourage a bug, you can report it here.\r\n-   [#questions-and-answers](https://github.com/nikitabobko/AeroSpace/discussions/categories/questions-and-answers). [RSS](https://github.com/nikitabobko/AeroSpace/discussions/categories/questions-and-answers.atom?discussions_q=category%3Aquestions-and-answers+sort%3Adate_created).",
      "created_at": "2024-10-27T13:29:49Z",
      "updated_at": "2025-01-11T18:45:41Z",
      "category": {
        "name": "announcements",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdxMY",
      "number": 942,
      "title": "Feature request: move node to last workspace",
      "body": "Oftentimes while working I need to pull a program that is not in the current workspace.\r\n\r\nWhat I do currently is: \r\n\r\n- cmd-tab to focus the program\r\n- option-tab to go back to the previous workspace, only to see its name\r\n- option-tab again to go back to the program's workspace\r\n- move it to the target workspace\r\n\r\nI propose creating a command like `move-node-to-previous-workspace` that, when executed, moves the current focused program to the previously active workspace. Optionally, this could take a flag for wether to return the user to last workspace automatically or not.\r\n\r\nThe flow would look like this:\r\n- cmd-tab to focus to the target program\r\n- `move-node-to-previous-workspace --auto-move-back` to bring it back to my previous workspace\r\n",
      "created_at": "2025-01-09T14:07:37Z",
      "updated_at": "2025-01-10T17:03:11Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nkaradzhov",
        "avatar_url": "https://avatars.githubusercontent.com/u/1475500?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdwMH",
      "number": 939,
      "title": "Extend the layout command to be able to manage the layout of the root node",
      "body": "I'm using a setup where I have two vertical accordions side by side so that I can manage my windows into two groups, left and right. I have a laptop monitor (A) together with an extrawide external monitor (B).\r\n\r\nOn A, I want the two accordions in a horizontal accordion because it is not wide enough to have the windows side by side. On B I want them tiled because it has enough room. \r\n\r\nNow when I move a workspace from one monitor to the other, I also want to switch the layout of the root node.\r\nI haven't figured out a way to do this so I'm forced to reset the layout and set it up again which is quite a hassle.\r\n\r\nThe ability to toggle the layout of the root node would solve this for me.\r\nSomething like this would do the trick: `aerospace layout --root tiles accordion`\r\n\r\nAlternatively aerospace could automatically collapse tiles to accordions when becoming too narrow. Optionally, of course.",
      "created_at": "2025-01-08T21:49:47Z",
      "updated_at": "2025-01-08T21:57:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "yngvedh",
        "avatar_url": "https://avatars.githubusercontent.com/u/1963918?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac0c4",
      "number": 759,
      "title": "Better operations to manipulate layout",
      "body": "The issue discussed here is related to #5 and possibly other issues.  I admit I\r\ndidn't search too carefully.\r\n\r\n# The Issue\r\n\r\ni3 and Aerospace both define the layout of a workspace as a tree of windows.  i3\r\nhas fairly low-level operations to traverse and manipulate this tree.  Aerospace\r\naims to be more \"visual\".  For example, normalization (when turned on) means\r\nthat windows that appear to be simply side by side _are_ simply side by side, as\r\nchildren of a common parent.  With i3 (or Aerospace without normalization), the\r\ntree isn't always as easy to see in the actual layout.  I like Aerospace's focus on\r\nintuitive manipulation of the layout, a lot, but I also think that its current\r\nlist of operations to manipulate the layout tree is too limited.\r\n\r\n## Scenario 1\r\n\r\nHere's a scenario I encountered recently where this becomes an issue:  Consider\r\nthe following layout:\r\n\r\n```\r\n+---+-------+\r\n| A |   |   |\r\n+---+   |   |\r\n| B | M | R |\r\n+---+   |   |\r\n| C |   |   |\r\n+---+-------+\r\n```\r\n\r\nIn my specific use case, the A/B/C stack is an accordion, but I show it as a\r\ntiled stack to better illustrate what's going on.  I want to turn this into the\r\nfollowing layout:\r\n\r\n```\r\n+---+---+---+---+\r\n| A | B | C |   |\r\n+---+---+---+ R |\r\n|     M     |   |\r\n+---+---+---+---+\r\n```\r\n\r\nIntuitively, this simply means that the A/B/C accordion and the R window remain\r\nwhere they are, and I want to move M below the A/B/C accordion.  I use\r\nnormalization, so moving M below the A/B/C accordion means that its orientation\r\nswitches from vertical to horizontal.\r\n\r\nSince intuitively, M is the only window that moves, this transformation should\r\nbe achievable by only moving M around, without touching the other windows.  As\r\nfar as I can tell, this is not possible using the current operations.  The best\r\nI was able to come up with was:\r\n\r\n1. Move M left to become part of the A/B/C accordion:\r\n\r\n   ```\r\n   +---+---+\r\n   | A |   |\r\n   +---+   |\r\n   | B |   |\r\n   +---+ R |\r\n   | C |   |\r\n   +---+   |\r\n   | M |   |\r\n   +---+---+\r\n   ```\r\n\r\n1. Move M down:\r\n\r\n   ```\r\n   +---+---+\r\n   | A |   |\r\n   +---+   |\r\n   | B | R |\r\n   +---+   |\r\n   | C |   |\r\n   +---+---|\r\n   |   M   |\r\n   +-------+\r\n   ```\r\n\r\n   (Actually, the same layout can be achieved by doing this immediately, without\r\n   doing Step 1 first.)\r\n\r\n1. Now focus R and move it right:\r\n\r\n   ```\r\n   +---+---+---+---+\r\n   | A | B | C |   |\r\n   +---+---+---+ R |\r\n   |     M     |   |\r\n   +---+---+---+---+\r\n   ```\r\n\r\nNote that this involves moving R, not just M, which has at least two issues:\r\n\r\n1. Intuitively, it's only M that moves when comparing the initial layout to the\r\nfinal layout, so the transformation should be achievable by moving only M.\r\n\r\n2. More importantly, this example generalizes to scenarios where we have\r\nmultiple columns R1, R2, ... instead of a single column R.  The above solution\r\nwould require moving each of these columns individually (repeating Step 3\r\nabove). This is awkward and is actually the situation I ran into.\r\n\r\n## Scenario 2\r\n\r\nThe second example of unintuitive behaviour of the current operations is the\r\nfollowing.  It can be explained using a variation of the above layout.  This\r\ntime, all I want to do is to move M into the leftmost column (Step 1 in the above\r\ntransformation).  If I start with at least two windows in the leftmost column, as in\r\nthe above example, then moving M into the left column is achieved using `move\r\nleft` and, important in this case, `join-with left` does nothing.  If the\r\nleftmost column contains only a single window, then `move left` would move `M`\r\nto the left of the leftmost column, resulting in this layout:\r\n\r\n```\r\n+---+---+---+\r\n| M | A | R |\r\n+---+---+---+\r\n```\r\n\r\nand only `join-with left` produces the desired layout\r\n\r\n```\r\n+---+---+\r\n| A |   |\r\n+---+ R |\r\n| M |   |\r\n+---+---+\r\n```\r\n\r\nThe behaviour of `move left` kind of makes sense to me, but `join-with left`\r\nshould not do nothing when there is more than one window in the left column.\r\nThe goal is still to join the moving window with the windows in the leftmost\r\ncolumn, so at the very least, `move left` and `join-with left` should behave the\r\nsame in this case.\r\n\r\nI said that the behaviour of `move left` _kind of_ makes sense to me.  I think a\r\nmore consistent behaviour would be:\r\n\r\n1. `move left` always swaps the current column with the column to its left, no\r\nmatter whether that column to the left contains one or more windows.  (I know\r\nthis does not address what should happen if we're moving a window that itself\r\nbelongs to a column with multiple windows in it.  I'm intentionally ignoring\r\nthis for now.)\r\n\r\n2. `join-with left` always moves the window in the current column _into_ the\r\nnext column.  (Maybe the command should be renamed to `move-into-next-column`\r\ninstead of `join-with` in this case.)\r\n\r\n## Conclusion\r\n\r\nSo the current focus on intuitive operations on the layout tree seems to lead to\r\nunintuitive manipulations of the layout tree in some situations, thereby going\r\nagainst what appears to be a primary design goal of Aerospace.\r\n\r\n# Towards a Solution\r\n\r\nWe need richer operations to manipulate the layout tree.  There may be a place\r\nfor `focus parent|child`, as discussed in #5, as part of this set of operations.\r\nTo me, this is a separate issue, so I will ignore this question and will focus\r\nonly on making it easy to place a single window into the right spot in the\r\nlayout tree with ease. I am sure that the following proposal has flaws, but I\r\npropose it as a starting point.\r\n\r\nI propose to have three operations:\r\n\r\n1. `swap (left|right|up|down)` (This replaces and mostly behaves like the\r\ncurrent `move`).\r\n2. `move (left|right|up|down)` (This implements what I called\r\n`move-into-next-column` above).\r\n3. `raise (before|after)` (`promote` may be a better name?)\r\n\r\n## Swap\r\n\r\nThe behaviour of `swap left` depends on the layout of the parent `u` of the\r\nfocused window:\r\n\r\n- If `u` uses a horizontal layout and the focused window is not its first child,\r\nthen `swap left` swaps the focused window with its left sibling (even if this\r\nleft sibling is not a window but an internal node of the tree).\r\n- If `u` uses a vertical layout or the focused window is its first child, the\r\nbehaviour depends on an option passed to `swap left`:\r\n\r\n  - `swap --raise left` locates the closest ancestor `w` of `u` that uses a\r\n  horizontal layout.  If there is no such ancestor, then we add a new parent `w`\r\n  of the current root and assign a horizontal layout to it.  Then let `v` be the\r\n  ancestor of `u` that is a child of `w`.  We make the focused window the left\r\n  sibling of `v`.\r\n  - `swap --wrap-around left` makes the focused window the last child of `u` if\r\n  `u` uses a horizontal layout.  If `u` uses a vertical layout, then `swap\r\n  --wrap-around left` behaves like `swap --raise left`.\r\n  - `swap --stop` does nothing.\r\n\r\n`swap right` behaves analogously, only it moves the focused window right in the\r\nlist of `u`'s children and makes the focused window the right sibling of `v` if\r\nit is `u`'s last child or `u` uses a vertical layout, and we use `swap` with\r\noption `--raise` or `--wrap-around`.\r\n\r\n`swap up` and `swap down` behave like `swap left` and `swap right` but with the\r\nroles of horizontal and vertical layouts exchanged.\r\n\r\nAmong the options accepted by `swap`, I would choose `--raise` as the default.\r\nIt allows certain window movements to be achieved using only `swap` that would\r\nrequire a combination of `swap` and `move` when using the other two options.\r\nThe reason why I think the other two options make sense is that they ensure that\r\nthe \"shape\" of the tree never changes and `swap` only ever permutes the children\r\nof a node.  Thus, any change achieved using `swap` is easy to undo.  In\r\ncontrast, `swap --raise` may make more significant changes to the structure of\r\nthe tree, which then take more effort to undo.  So the last two options ensure\r\nfewer surprises, for example when using `swap` once or twice too often.\r\n\r\n## Move\r\n\r\nI describe `move left`.  `move right/move up/move down` behave analogously.\r\n\r\n`move left` finds the closest ancestor node `u` of the focused window that matches\r\nthe following two conditions:\r\n\r\n  - `u` uses a horizontal layout.\r\n  - The subtree containing the focused window is not the first child of `u`.\r\n\r\nIf no such ancestor exists, then `move left` does nothing.  Otherwise, let `v` be the child of `u` that is an ancestor of the focused window, and let `w` be the left sibling of `v`.  Then the focused window becomes the last child of `w`.\r\n\r\n## Raise\r\n\r\n- `raise before` creates a new tree node `u` with two children.  The first child is the currently focused window.  The second child is the current parent `v` of this window.  `u` replaces `v` as the child of `v`'s parent.  (In other word, `u` gets inserted as a node between `v` and its parent, and the focused window gets moved up to be the first child of `u`.)\r\n- `raise after` behaves the same as `raise before` but the order of the children of `u` is reversed.\r\n\r\n## No Lower\r\n\r\nThere is no `lower` operation, which would be the inverse of `raise`.  The\r\nreason is that an inverse of `raise` should make the focused window a child of\r\none of its sibling nodes.  This works great if we do this immediately after a\r\n`raise` operation.  In general though, the parent node of the focused window may\r\nhave multiple children.  Into which of these children should `lower` move the\r\nfocused window?  It's not well defined.  More importantly, `move` achieves the\r\nsame effect and specifies exactly into which sibling the focused window should\r\nmove.\r\n\r\n# Intuition Behind These Operations\r\n\r\nThe layout tree can be viewed as a hierarchy of nested boxes. Both `swap` and\r\n`move` are operations that do not modify this tree.  `swap` (without `--raise`)\r\nonly permutes the children of the parent of the current window.  `move` moves\r\nthe focused window from one of these boxes to one of its sibling boxes in the\r\nlayout.\r\n\r\nThere is one exception to this rule: `move` may actually destroy an internal\r\nnode of the tree if the moved window had only one sibling before being moved. In\r\nthis case, their common parent disappears from the tree.  Still, it is helpful\r\nto think about `swap` and `move` as operations that don't change the \"shape\" of the\r\nlayout and simply move windows within layout boxes and between layout boxes,\r\nrespectively.\r\n\r\n`raise` is the operation needed to locally modify the tree \"shape\".  The `move`\r\noperation currently implemented by Aerospace also allows such modifications, but\r\nthey are not guaranteed to be as local as they should be.  `raise` allows to\r\nsplit the parent of the current window into two nodes, something that is not\r\neasily achievable even when using the current `split` operation.\r\n\r\n# Revisiting the Introductory Scenario\r\n\r\nThe transformation given as the motivating example can now be achieved without\r\never focusing a window other than M, and using a single `move` and a single\r\n`raise` operation.\r\n\r\nHere's the starting configuration again:\r\n\r\n```\r\n+---+-------+\r\n| A |   |   |\r\n+---+   |   |\r\n| B | M | R |\r\n+---+   |   |\r\n| C |   |   |\r\n+---+-------+\r\n```\r\n\r\nUsing a single `move left` operation produces\r\n\r\n```\r\n+---+---+\r\n| A |   |\r\n+---+   |\r\n| B |   |\r\n+---+ R |\r\n| C |   |\r\n+---+   |\r\n| M |   |\r\n+---+---+\r\n```\r\n\r\n`raise after` now splits the `A/B/C/M` stack into a node with two children, one\r\nbeing the `A/B/C` stack, the other being `M`.  Assuming we use normalization,\r\nthis becomes\r\n\r\n```\r\n+---+---+---+---+\r\n| A | B | C |   |\r\n+---+---+---+ R |\r\n|     M     |   |\r\n+---+---+---+---+\r\n```\r\n\r\nI'm happy to add a list of other uses cases to demonstrate that these operations\r\nbehave \"correctly\" (i.e., as one would expect intuitively).  I'd like to know\r\nthe types of transformations people are concerned about though, before adding\r\nexamples to this list.",
      "created_at": "2024-11-25T19:09:57Z",
      "updated_at": "2025-01-08T18:42:51Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nzeh",
        "avatar_url": "https://avatars.githubusercontent.com/u/621801?u=168762da342d0515133cf49c345912affa622977&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adv9M",
      "number": 938,
      "title": "Is a way to have a keyboard shortcut toggle between two particular workspaces?",
      "body": "I'd like to have a keyboard shortcut that:\r\n- If currently in workspace 2, goes to workspace 3\r\n- If currently in workspace 3, goes to workspace 2\r\n- If currently in neither workspace, goes to the most recently visited one of workspace 2 and 3\r\n\r\nIs there a way to set this up? I'd happy with a complex solution that involves calling into other scripts or whatnot.\r\n\r\nAny guidance deeply appreciated!",
      "created_at": "2025-01-08T17:01:54Z",
      "updated_at": "2025-01-08T18:34:40Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4As7F-",
        "body": "The closest I can come up with is:\r\n```toml\r\nalt-tab = 'exec-and-forget echo -e \"2\\n3\" | aerospace workspace --wrap-around next'\r\n```\r\n\r\nIf we implement #278 then it could be even simplified to (no external process is used):\r\n```toml\r\nalt-tab = 'echo 2 3 | workspace --wrap-around next'\r\n```\r\n\r\nbut my solution doesn't satisfy this: \"goes to the most recently visited one of workspace 2 and 3\". It's not currently possible.\r\n\r\nAeroSpace doesn't keep the history of focused workspaces, but it makes sense to implement it at least for the sake of improving `focus-back-and-forth` command. Once it's implemented and AeroSpace provides a command to query workspaces history, what you want will become possible."
      },
      "user": {
        "login": "sryza",
        "avatar_url": "https://avatars.githubusercontent.com/u/654855?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdvfP",
      "number": 936,
      "title": "Safari always opens two windows when using osascript",
      "body": "I created a mode called `execute` where I can quickly launch applications and for some reason, Safari always opens two windows. Does anyone know why? How do you do this kind of stuff? Chrome, iTerm2, Kitty etc. are working fine (only open a single window). I don't have any other stuff related to Safari in my configuration.\r\n\r\nHere is the relevant part:\r\n\r\n```toml\r\n[mode.execute.binding]\r\nesc = 'mode main'\r\n\r\nc = ['''exec-and-forget osascript -e '\r\ntell application \"/Applications/Google Chrome.app\"\r\n    make new window\r\n    activate\r\nend tell'\r\n''', 'mode main']\r\n\r\ns = ['''exec-and-forget osascript -e '\r\ntell application \"/Applications/Safari.app\"\r\n    make new document\r\n    activate\r\nend tell'\r\n''', 'mode main']\r\n\r\n```",
      "created_at": "2025-01-08T08:54:10Z",
      "updated_at": "2025-01-08T08:54:12Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "tamasgal",
        "avatar_url": "https://avatars.githubusercontent.com/u/1730350?u=64d6a343e8b7c3bba6c593362663afd27a9ddc6b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyhx",
      "number": 948,
      "title": "AutoCAD 2023 isn't listening to Aerospace at all",
      "body": "Whenever I launch autocad it just loads up wherever I'm at and not on the workspace I've dedicated it to (other app dedications in the config work fine)\r\nA clear and concise description of what the bug is.\r\n\r\n**Related issues you could find**\r\nI've noticed things like when I go to exit and cad pops the save or discard dialog, that dialog just shows up on the last workspace cad was on when it originally opened.  Not a showstopper but annoying.",
      "created_at": "2025-01-07T20:27:09Z",
      "updated_at": "2025-01-11T19:30:42Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zodasync",
        "avatar_url": "https://avatars.githubusercontent.com/u/94942451?u=5a473e913f502bdcf578411d424246628bbfbb9e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adu7-",
      "number": 934,
      "title": "v_accordion with nested h_tiles has surprising behavior",
      "body": "I cant tell if this is a bug or intended behavior but the layout I have looks like this:\r\n```xml\r\n<v_accordion>\r\n  <arc>\r\n  <h_tiles>\r\n     <v_accordion>\r\n        <ghostty1>\r\n        <ghostty2>\r\n      </v_accordion>\r\n      <ghostty3>\r\n  </h_tiles>\r\n</v_accordion>\r\n```\r\nand Im focused on arc and I press alt j to go down to the h_tiles I expected to see both panes pop in but only ghostty3 pops in and I have to go alt h to make the left side pop in then alt k to make the second tile pop in.\r\n\r\nAm I doing something wrong here? Video attached where you can see what is happening. In the first couple seconds I switch the top level v_accordion from v_accordion to v_tiles so you can see the layout better.\r\nhttps://github.com/user-attachments/assets/8cb623b2-9855-4b61-8a9f-f1fc66ec9882\r\n",
      "created_at": "2025-01-07T18:55:03Z",
      "updated_at": "2025-01-07T18:56:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "trashhalo",
        "avatar_url": "https://avatars.githubusercontent.com/u/177491?u=e55a7ccaac26e05ee5c6935e0fe7689fb8847652&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcjAO",
      "number": 700,
      "title": "Floating Google Meet popup (picture in picture)",
      "body": "Hello everyone, \r\nI was wondering if there's a way to float the Google Meet pop up (picture in picture).\r\n\r\nThanks!",
      "created_at": "2024-11-14T15:33:05Z",
      "updated_at": "2025-01-07T17:21:07Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "robertocinetto",
        "avatar_url": "https://avatars.githubusercontent.com/u/481888?u=4e22a7955269504cc2fd3dd90dc94c7165c05c51&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdlJu",
      "number": 897,
      "title": "default workspace for specific programs",
      "body": "I'd really like to try aerospace! One thing I'm wondering is if its possible to open programs and send them directly to a default workspace they are assigned to?",
      "created_at": "2024-12-29T09:49:49Z",
      "updated_at": "2025-01-07T12:29:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "RobinKohrs",
        "avatar_url": "https://avatars.githubusercontent.com/u/48288925?u=1a77684257fa6adeb0edf51da1783cfd1c4c3770&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdAht",
      "number": 800,
      "title": "Set apps to a specific window size/position?",
      "body": "I know that you can automatically move specified apps to a workspace but is there a way to have it automatically set apps to a specific window size?  It would be awesome to have the ability to have this be automated instead of using `option+shift+ -/+`.  Thanks in advance!",
      "created_at": "2024-12-03T14:33:43Z",
      "updated_at": "2025-01-07T03:18:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "cdog2020",
        "avatar_url": "https://avatars.githubusercontent.com/u/63603269?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdL_x",
      "number": 842,
      "title": "Creating a new Workspace next to the current Workspace, send the current node / App to and focus it?",
      "body": "Hi, im using Yabai usually, since macos spaces are used it is possible to have empty Spaced i can send windows to, also sending it to the \"next | prev\" space. \r\n\r\nSince there are no empty Containers is Aerospace, it is not possible to say \"Creating a new Workspace next to the current Workspace, send the current node / App to and focus it\", right? \r\n\r\nThe only way to use Aerospace is to create a specific Workspace (alt + 2) and send the App to it? \r\n\r\nBecause i would like to not use dedicated keybinds for the Containers, i would like to have it more dynamicly. When i have focus on a window in worlspace 1, I want to send it to the next Workspace, basicly create one next to the current Workspace, and send the window to it. that way my setup would be created on the go, like a natural way. But \"next | prev\" only works when there already exists a Workspace (2). \r\n\r\nAny ideas? ",
      "created_at": "2024-12-10T16:06:35Z",
      "updated_at": "2025-01-06T13:35:05Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "danscheer",
        "avatar_url": "https://avatars.githubusercontent.com/u/56642865?u=2c5a6cb331ae70e3a6143b1e7f58aab2aa56e483&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdlNP",
      "number": 898,
      "title": "Ability to disable automatically switching workspace when focusing new application",
      "body": "I'm a relatively new user of aerospace, and I'm consistently surprised when I go to create a new terminal window, and as soon as I focus my terminal application (typically using spotlight), it switches to a workspace which has an open terminal window. Due to the fact that I use terminal windows in many different workspaces, this is purely an inconvenience, similar to the Spaces feature (which I disable) of switching to a space with open windows when focusing an application. \r\n\r\nI would propose: \r\n\r\n- being able to disable this switching entirely\r\n- being able to disable this switching for specific applications\r\n\r\nRight now, it makes it feel like a lot of extra key presses are required for doing something very simple, and it feels rather inefficient to have to manually go back to the workspace I was using when this automatic switching occurs. It typically unfolds like this:\r\n\r\n- focus terminal application\r\n- workspace gets automatically switched\r\n- create new terminal window\r\n- move new terminal window to the workspace I was in\r\n- navigate back to that workspace \r\n\r\nIt feels really bad to use the application this way. \r\n\r\nIf there is already some kind of workaround for this behavior, please let me know. \r\n",
      "created_at": "2024-12-29T11:59:29Z",
      "updated_at": "2025-01-06T13:18:45Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pmooser",
        "avatar_url": "https://avatars.githubusercontent.com/u/1220857?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdtV0",
      "number": 928,
      "title": "Use same keyboard combination on a different monitor",
      "body": "Is it possible to set up workspace switching in a way that CTRL+1 will switch to workspace 1 on whichever monitor my mouse cursor is currently on?\r\n\r\nFor example:\r\n\t•\tWhen my mouse is on Monitor A and I press CTRL+1, it should switch Monitor A to workspace 1\r\n\t•\tWhen my mouse is on Monitor B and I press CTRL+1, it should switch Monitor B to workspace L\r\n\r\nThis way, the same keyboard shortcut would work contextually based on which monitor has mouse focus, rather than affecting a specific monitor regardless of mouse position.",
      "created_at": "2025-01-06T09:21:53Z",
      "updated_at": "2025-01-06T10:26:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "patrick91",
        "avatar_url": "https://avatars.githubusercontent.com/u/667029?u=e35958a75ac1f99c81b4bc99e22db8cd665ae7f0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdqRA",
      "number": 923,
      "title": "Is there anyway to exclude a browser picture in picture window? I want it to float",
      "body": "Hey all, \r\n\r\nbasically the title.\r\n\r\nThanks",
      "created_at": "2025-01-03T18:15:20Z",
      "updated_at": "2025-01-05T19:53:21Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "devhe4d",
        "avatar_url": "https://avatars.githubusercontent.com/u/58355247?u=d405b1d4edc7c88a6f8c89d210d94ae7d8938781&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac8Az",
      "number": 784,
      "title": "Prevent auto switching the workspace",
      "body": "When i switch to an app that currently has no windows in my current workspace yet it has windows in another workspace, it takes me to this workspace. So for example if i have Safari open in workspace 1 and Terminal open in workspace 2 and in workspace 2 i switch to the safari app so that i can open a safari window in workspace 2 it shifts me to workspace 1 and i have to open my new window there and then move it to worskpace 2. Any way to prevent autoswitch to a workspace with a window for the app i switched to? ",
      "created_at": "2024-11-30T22:46:54Z",
      "updated_at": "2025-01-04T14:22:15Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gaytomycode",
        "avatar_url": "https://avatars.githubusercontent.com/u/60857661?u=b5dfed7a843af9efab255c92dff9421c17fde902&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdoO7",
      "number": 910,
      "title": "simple-bar now supports AeroSpace WM",
      "body": "Hi!\r\n\r\nI don't know if this is okay, but I just wanted to let people know that the project I work on, [simple-bar](https://github.com/Jean-Tinland/simple-bar), is now supporting AeroSpace.\r\n\r\nThat said, thank you, @nikitabobko, for this great tool; it is very convenient to use!\r\n\r\nFeel free to delete this discussion if it is out of topic or considered self-promotion!",
      "created_at": "2024-12-31T20:48:53Z",
      "updated_at": "2025-01-04T09:39:37Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Jean-Tinland",
        "avatar_url": "https://avatars.githubusercontent.com/u/43068795?u=ef40e2aa81c0743ca3ca07ace4875cb9eee9daa7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adp6e",
      "number": 920,
      "title": "Notify Sketchybar about workspace change doesn't work",
      "body": "**Describe the bug**\r\nI installed sketchybar, and put this inside my aerospace.toml file:\r\n\r\n```\r\n# Notify Sketchybar about workspace change\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n]\r\n```\r\n\r\nbut when i log out and log back in, I get this error message from aerospace\r\nmode.service.binding.exec-on-workspace-change: Can't parse modifiers in 'exec-on-workspace-change' binding\r\n\r\nalthough if i run that command on my command line, it works just fine\r\n",
      "created_at": "2025-01-03T05:08:36Z",
      "updated_at": "2025-01-03T10:48:16Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Asufc",
        "body": "You need to move `exec-on-workspace-change` above `[mode.main.binding]`. It's a TOML problem. Read the TOML spec.\r\n\r\nTOML is a bad idea, everyone who reads my message, I implore you to never use TOML for personal projects, don't do my mistake."
      },
      "user": {
        "login": "abbood",
        "avatar_url": "https://avatars.githubusercontent.com/u/774379?u=857b20e794489577e11274bc4dc4944cbba0af53&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adpg6",
      "number": 916,
      "title": "Web Browser PiP stop from being affected",
      "body": "Is there a way to stop the Firefox/Zen browsers PiP feature from being managed by Aerospace? I want the pip player to be able to hover without having to do the alt+shift+; ... f command on it every time.",
      "created_at": "2025-01-02T18:28:00Z",
      "updated_at": "2025-01-02T21:58:06Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Astga",
        "body": "Add this to your config\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id                       = 'org.mozilla.firefox'\r\nif.window-title-regex-substring = 'Picture-in-Picture'\r\nrun                             = 'layout floating'\r\n```"
      },
      "user": {
        "login": "TaylorJonesTRT",
        "avatar_url": "https://avatars.githubusercontent.com/u/9523996?u=9c62ba9ec15a5277e242820846dc8efe46da7aab&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdpnR",
      "number": 918,
      "title": "Confirming need to manually set up top-of-display \"space buffer\" to account for sketchybar",
      "body": "Hi, recent adoptee and longtime debian/i3 user here with a quick confirmation question.  \r\n\r\nIt seems necessary to manually configure the space for a menubar, say sketchybar, at the top of the screen through the `outer.top` configuration entry (and to differ these for notched v not-notched displays, which seems like it'd get annoying if only using one display but switching that one display between notched laptop and pluggable).\r\n\r\nIs this correct or am I missing something?   (In my experience with i3, the existence of a menubar, such as bumblebee, is automatically handled by i3.). Thanks.",
      "created_at": "2025-01-02T21:02:58Z",
      "updated_at": "2025-01-02T21:02:59Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jasoncorso",
        "avatar_url": "https://avatars.githubusercontent.com/u/16967974?u=a5c2c8ec6c70d94824004ec05608e75580abe960&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50q",
      "number": 1008,
      "title": "Truly hide windows—impossible or not?",
      "body": "As noted in the [docs](https://nikitabobko.github.io/AeroSpace/guide.html#emulation-of-virtual-workspaces):\r\n\r\n> For better or worse, macOS doesn’t allow to place windows outside the visible area entirely. You will still be able to see a few pixels of \"hidden\" windows in the bottom right corner of your screen. That means, that if AeroSpace crashes badly you will still be able to manually \"unhide\" the windows by dragging these few pixels to the center of the screen.\r\n\r\nFor me that is not a big deal but this gets _especially noticeable_—probably an exaggeration 😆—when enabling gaps.\r\n\r\nIt was indeed only after I did so that I realized the _hidden_ windows showing up in the **bottom right corner** of my screen. This is mostly _cosmetics_ I know (and from the above statement I get that _it might be actually impossible to avoid_), but raising the issue anyway just in case there is some hope / unexplored alternative that can do the trick in a better way. E.g.,\r\n\r\n- Allow users to minimize the number of pixels shown for the hidden windows. With just one pixel they would really go unnoticed while still probably enough for _unhiding_ them in case of a crash. 😎  Otherwise, do it _at your own risk_ as they say. If some people (not we) are fine with disabling SIP for using a window manager I'm pretty sure many (if not all) will be willing to take the risk... 😉  \r\n\r\nAnd, to show something, here you are how my desktop looks like for empty/non-empty workspaces, respectively:\r\n\r\n<img width=\"2560\" alt=\"Screenshot 2023-12-19 at 07 13 42\" src=\"https://github.com/nikitabobko/AeroSpace/assets/6698989/e134573a-b928-4948-930d-b3aa03247c93\">\r\n<img width=\"2560\" alt=\"Screenshot 2023-12-19 at 07 23 13\" src=\"https://github.com/nikitabobko/AeroSpace/assets/6698989/4c043e00-4486-4951-91c5-e212b6e6bbb5\">\r\n\r\n\r\n",
      "created_at": "2023-12-19T06:08:28Z",
      "updated_at": "2025-01-18T20:26:42Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "salvalcantara",
        "avatar_url": "https://avatars.githubusercontent.com/u/6698989?u=462626e83f811844d16e53f46c7aa82503827eda&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdbA4",
      "number": 874,
      "title": "Command to get apps in a workspace?",
      "body": "What is the command to get apps in a specific workspace. list-apps subcommand provides apps from all workspaces. ",
      "created_at": "2024-12-19T06:28:40Z",
      "updated_at": "2025-01-02T13:20:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sanjeethboddi",
        "avatar_url": "https://avatars.githubusercontent.com/u/22007564?u=4741c998e2f12f06585ee589df83e2c7642bc9e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdoXj",
      "number": 911,
      "title": "Sketchybar configs",
      "body": "I Have loved using aerospace so far and want to do a proper sketchybar setup for it. It would appear lots of people using yabai have taken inspiration from [Felix Kratz's](https://github.com/FelixKratz/dotfiles/tree/7cef83fc577bb8853c01d6aae66fdc6625feb761) configuration likely due to its good visualization and interaction with yabai spaces. \r\n\r\nUnfortunately this also means it is tightly coupled to yabai's cli and works better with 'displays have separate spaces' is turned on, going against what aerospace recommends.\r\n\r\nI have had a quick look and reproduced **most** of the functionality of this config for aerospace but really I am looking for examples of what other people have done.\r\n\r\nIf there is sufficient interest I can push it up as its own repo but as a sample here is the adaptation of `space-windows.sh`.\r\n\r\nThe following assumes you have included the following snippet from [aerospace goodies](https://nikitabobko.github.io/AeroSpace/goodness#show-aerospace-workspaces-in-sketchybar)\r\n```toml\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n]\r\n```\r\n\r\n```bash\r\n#!/bin/bash\r\n\r\n# Destroy space on right click, focus space on left click.\r\n\r\nspaces=()\r\nfor i in $(aerospace list-workspaces --all);\r\ndo\r\n  WORKSPACE=$(aerospace list-workspaces --all --json --format %{workspace}%{monitor-appkit-nsscreen-screens-id} | jq --arg workspace_id $i '.[] | select(.workspace == $workspace_id)')\r\n  DISPLAY=$(echo \"$WORKSPACE\" | jq '.[\"monitor-appkit-nsscreen-screens-id\"]')\r\n\r\n  space=(\r\n    icon=$i\r\n    icon.padding_left=10\r\n    icon.padding_right=10\r\n    padding_left=2\r\n    padding_right=2\r\n    label.padding_right=20\r\n    icon.highlight_color=$RED\r\n    label.color=$GREY\r\n    label.highlight_color=$WHITE\r\n    label.font=\"sketchybar-app-font:Regular:16.0\"\r\n    label.y_offset=-1\r\n    background.color=$BACKGROUND_1\r\n    background.border_color=$BACKGROUND_2\r\n    display=$DISPLAY\r\n    script=\"$PLUGIN_DIR/space.sh $i\"\r\n  )\r\n\r\n  sketchybar --add item space.$i left    \\\r\n             --set space.$i \"${space[@]}\" \\\r\n             --subscribe space.$i aerospace_workspace_change \\\r\n             --subscribe space.$i mouse.clicked\r\ndone\r\n\r\nspace_creator=(\r\n  icon=􀆊\r\n  icon.font=\"$FONT:Heavy:16.0\"\r\n  padding_left=10\r\n  padding_right=8\r\n  label.drawing=off\r\n  display=active\r\n  click_script=''\r\n  script=\"$PLUGIN_DIR/space_windows.sh\"\r\n  icon.color=$WHITE\r\n)\r\n\r\nsketchybar --add item space_creator left               \\\r\n           --set space_creator \"${space_creator[@]}\"   \\\r\n           --subscribe space_creator aerospace_workspace_change\r\n```\r\n\r\nand the corresponding plugin script:\r\n```bash\r\n#!/bin/bash\r\n\r\nif [ \"$SENDER\" = \"aerospace_workspace_change\" ]; then\r\n  apps=\"$(aerospace list-windows --workspace \"$FOCUSED_WORKSPACE\" --json --format %{app-name} | jq -r '.[].\"app-name\"')\"\r\n\r\n  icon_strip=\" \"\r\n  if [ \"${apps}\" != \"\" ]; then\r\n    while read -r app\r\n    do\r\n      icon_strip+=\" $($CONFIG_DIR/plugins/icon_map.sh \"$app\")\"\r\n    done <<< \"${apps}\"\r\n  else\r\n    icon_strip=\" —\"\r\n  fi\r\n\r\n  sketchybar --animate sin 10 --set space.$FOCUSED_WORKSPACE label=\"$icon_strip\"\r\nfi\r\n```\r\n\r\n* When I say most of the functionality I haven't quite got the icon highlighting working for stacking/tabbed/fullscreen as the original config does for yabai. \r\n* I am aware of the lua api for sketchybar and will get it working with aerospace soon but figured I would start with bash to get things rolling\r\n",
      "created_at": "2025-01-01T04:11:33Z",
      "updated_at": "2025-01-01T04:11:35Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Dadams2",
        "avatar_url": "https://avatars.githubusercontent.com/u/37862994?u=767b5134647326490ee6b4ffc7e798e3e2abaf6c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyh3",
      "number": 951,
      "title": "App moves not focused window",
      "body": "When i'm trying to move it to other screen/space currently focused floating window it moves window of other app not what i'm currently focused\r\n\r\n",
      "created_at": "2024-12-31T19:04:24Z",
      "updated_at": "2025-01-11T19:34:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hevzy86",
        "avatar_url": "https://avatars.githubusercontent.com/u/23268336?u=a60008c1be105fe0156ab1cfa805d4d70684335d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdnWw",
      "number": 907,
      "title": "Problems joining a window to an existing container",
      "body": "Hi,\r\n\r\nIm trying to achieve the following layout:\r\n\r\nh_tiles\r\n- v_accordion\r\n---- window 1\r\n---- window 2\r\n---- window 3\r\n- window 4\r\n\r\nI start with:\r\nh_tiles\r\n- window 1\r\n- window 2\r\n- window 3\r\n- window 4\r\n\r\nAnd from the right window (window 3), I join it with left so I get:\r\n\r\nh_tiles\r\n- window 1\r\n- v_tiles\r\n---- window 2\r\n---- window 3\r\n- window 4\r\n\r\nI move to window 1 and join it with the right trying to get:\r\n\r\n\r\nh_tiles\r\n- v_tiles\r\n---- window 1\r\n---- window 2\r\n---- window 3\r\n- window 4\r\n\r\nBut instead I get \r\n\r\nh_tiles\r\n- h_tiles\r\n---- window 1\r\n---- h_tiles\r\n------ window 2\r\n------ window 3\r\n- window 4\r\n\r\nHow can I join window 1 to the container of window 2 and 3?\r\n\r\nThanks",
      "created_at": "2024-12-30T14:01:51Z",
      "updated_at": "2025-01-07T10:33:31Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pwntester",
        "avatar_url": "https://avatars.githubusercontent.com/u/125701?u=3a01e6929aa1ae0c1dc796928df3c91e22e1ca0f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyh7",
      "number": 953,
      "title": "Aerosspace closes unexpectedly when I activate fullscreen in ghostty.",
      "body": "**Describe the bug**\r\nIt is known that the MacOS api handles tabs as windows, wanted to try to mitigate a little the problem with ghostty, according to the ghostty page, suggest this config:  ( https://ghostty.org/docs/help/macos-tiling-wms#workarounds)\r\n\r\n[[on-window-detected]]\r\nif.app-id = \"com.mitchellh.ghostty\"\r\nrun = ['layout tiling', 'move-node-to-workspace 4']\r\n\r\nwhen I open a new tab happens the problem that moves me the terminal window to the right and I have the blank space on the left side (something already expected), to restore it again I run alt-ctrl-f = 'fullscreen' and restores the window, but unexpectedly\r\naerospace closes without showing any error.\r\nI wanted to use aerospace debug-windows which does nothing unless I save the report file somewhere, but I don't know it.\r\n\r\nI searched and did not see this problem reported.\r\n\r\nGhostty 1.0.0\r\n\r\nVersion\r\n  - version: 1.0.0\r\n  - channel: stable\r\nBuild Config\r\n  - Zig version: 0.13.0\r\n  - build mode : builtin.OptimizeMode.ReleaseFast\r\n  - app runtime: apprt.Runtime.none\r\n  - font engine: font.main.Backend.coretext\r\n  - renderer   : renderer.Metal\r\n  - libxev     : main.Backend.kqueue\r\n\r\naerospace --version\r\naerospace CLI client version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nAeroSpace.app server version: 0.16.2-Beta 21336ad382539b35fdc94b4fbd55408e10b101f8\r\n",
      "created_at": "2024-12-30T13:30:33Z",
      "updated_at": "2025-01-11T19:36:35Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dagrlx",
        "avatar_url": "https://avatars.githubusercontent.com/u/55724881?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdmVT",
      "number": 904,
      "title": "Convert Docs to vitepress",
      "body": "@nikitabobko would you consider a conversion of [Aerospace docs](https://nikitabobko.github.io/AeroSpace/guide) to [Vitepress](https://vitepress.dev/guide/what-is-vitepress)? I started converting it, but before I go all out I wanted to check if it's something you would consider it.\r\n\r\n**Benefits**:\r\n\r\n- Beautiful light/dark mode\r\n- Easy to write(Markdown)\r\n- Searchable docs\r\n\r\nIf it's something that interest you I can finish the entire conversion for you.\r\n\r\nThanks!",
      "created_at": "2024-12-30T00:12:36Z",
      "updated_at": "2024-12-30T01:04:13Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gldtn",
        "avatar_url": "https://avatars.githubusercontent.com/u/981383?u=f2e031fd92fe687c235adc07914cb66dc163f9c0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdmDY",
      "number": 903,
      "title": "BSP Tiling Mode",
      "body": "I know that Aerospace is an i3-inspired window manager, but as someone who (happily!) switched over from Yabai + SKHD, BSP is the only feature I really miss. It makes efficient use of screen real estate for those of us that may have multiple windows open on a single workspace.",
      "created_at": "2024-12-29T20:57:37Z",
      "updated_at": "2024-12-29T23:01:19Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "codebedouin",
        "avatar_url": "https://avatars.githubusercontent.com/u/90999549?u=2f7786d1f9be900b6732f4548854afca6de16b2e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adl8F",
      "number": 901,
      "title": "How would you arrange your displays when you have 4 monitors?",
      "body": "**Describe the bug**\r\nI have 4 monitors arranged like so:\r\n![image](https://github.com/user-attachments/assets/f0083117-b554-42d7-856d-0fdd371017d8)\r\n\r\nThere's no way to configure these monitors to have an \"open\" bottom-right/left corner.\r\n\r\nIs there a way to use top-right/left corners when appropriate?  \r\n\r\n**Related issues you could find**\r\nCouldn't find any.  I suspect that my setup is rather rare, but this is a deal breaker for me as I'm a heavy user of spaces (or workspaces).\r\n\r\nThanks!\r\n\r\n",
      "created_at": "2024-12-29T18:35:47Z",
      "updated_at": "2024-12-29T23:00:26Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wheee",
        "avatar_url": "https://avatars.githubusercontent.com/u/516324?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdlG_",
      "number": 896,
      "title": "Zoom or chain some commands together",
      "body": "hi, what if I open the full-screen application and automatically increase its zoom(text size)? Is it possible to do right now? For example: I have terminal windows (1/3 of the screen) and if I use \"alt+shit+f\" it will do a full screen AND increase the text size.",
      "created_at": "2024-12-29T07:19:00Z",
      "updated_at": "2024-12-29T07:19:01Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "GlibMartynenko",
        "avatar_url": "https://avatars.githubusercontent.com/u/13920054?u=a7cb849c66435ade128b0d12724554f8dcd1f4a7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdlDZ",
      "number": 895,
      "title": "OBS and AeroSpace",
      "body": "Hi, I have tried to record the screen using OBS but it doesn't work. I have workspace \"R\", where I have my terminal, browser, and VS Code. Once I run OBS and record the full screen I see  OBS has started to record but once I have pressed \"option + shit + R\" OBS is recording the black screen :( Any idea why? ",
      "created_at": "2024-12-29T03:50:43Z",
      "updated_at": "2024-12-29T03:58:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aslnf",
        "body": "my bad... I have an automatic scene switcher which is causing the issue. everything is working fine. false alert :)"
      },
      "user": {
        "login": "GlibMartynenko",
        "avatar_url": "https://avatars.githubusercontent.com/u/13920054?u=a7cb849c66435ade128b0d12724554f8dcd1f4a7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdlBO",
      "number": 893,
      "title": "Fullscreen when only one window in workspace?",
      "body": "just got aerospace and am loving it so far! I find my self hitting alt-shift-f to 'fullscreen --no-outer-gaps' all the time when i am just using a single window on the workspace. and i have 10px gaps all around except in fullscreen (0px gaps).\r\n\r\ni like the look and feel of no gaps when i only have a single app open like chrome. i was curious if its possible dynamically set gaps depending on if there are > 1 window in the current workspace?\r\n\r\nfor example\r\n\r\nif len(windows) > 1:\r\n    [gaps]\r\n        outer.left = 10\r\n\r\nelse:\r\n    [gaps]\r\n        outer.left = 0\r\n        \r\nanyone know if anything like this is possible?\r\nthanks!",
      "created_at": "2024-12-29T02:00:27Z",
      "updated_at": "2024-12-29T02:00:28Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "YourAverageMo",
        "avatar_url": "https://avatars.githubusercontent.com/u/121197230?u=2d1d0cdaa1d9cef53de2812e2b30798fba279663&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AgKse",
      "number": 1465,
      "title": "Get workspaces which are empty for sketchybar?",
      "body": "Currently I have this:\r\n```bash\r\n# ./sketchybar/items/spaces.sh\r\n#!/usr/bin/env bash\r\n\r\nsketchybar --add event aerospace_workspace_change\r\n\r\n# Get all workspaces\r\nWORKSPACES=$(aerospace list-workspaces --all)\r\n\r\n# Get empty workspaces\r\nEMPTY_WORKSPACES=$(aerospace list-workspaces --monitor all --empty)\r\n\r\nfor i in $WORKSPACES; do\r\n\tsid=$i\r\n\r\n\tif echo \"$EMPTY_WORKSPACES\" | grep -q \"$sid\"; then\r\n\t\tempty_sid=$sid\r\n\tfi\r\n\r\n\tsketchybar --add space space.$sid left \\\r\n\t\t--subscribe space.$sid aerospace_workspace_change system_woke \\\r\n\t\t--set space.$sid associated_space=$sid \\\r\n\t\tlabel.drawing=off \\\r\n\t\ticon.padding_left=9 \\\r\n\t\ticon.padding_right=9 \\\r\n\t\tbackground.padding_left=2 \\\r\n\t\tbackground.padding_right=2 \\\r\n\t\tbackground.color=0x22ffffff \\\r\n\t\tbackground.corner_radius=4 \\\r\n\t\tbackground.height=22 \\\r\n\t\tbackground.drawing=off \\\r\n\t\tscript=\"$PLUGIN_DIR/space.sh $empty_sid\"\r\ndone\r\n```\r\n\r\n```bash\r\n# ./sketchybar/plugins/space.sh\r\n#!/usr/bin/env bash\r\n\r\nsource \"$HOME/.config/sketchybar/variables.sh\" # Loads all defined colors\r\n\r\nSPACE_CLICK_SCRIPT=\"aerospace workspace $SID\"\r\n\r\nEMPTY_SID=$1\r\n\r\nif [ $SID = \"$EMPTY_SID\" ]; then\r\n\tINACTIVE_COLOR=\"$COMMENT\"\r\nelse\r\n\tINACTIVE_COLOR=\"$WHITE\"\r\nfi\r\n\r\nif [ $SID = \"$FOCUSED_WORKSPACE\" ]; then\r\n\tsketchybar --animate tanh 5 --set \"$NAME\" \\\r\n\t\ticon.color=\"$INACTIVE_COLOR\" \\\r\n\t\ticon=\"$SID\" \\\r\n\t\tbackground.drawing=on \\\r\n\t\tclick_script=\"$SPACE_CLICK_SCRIPT\"\r\nelse\r\n\tsketchybar --animate tanh 5 --set \"$NAME\" \\\r\n\t\ticon.color=\"$INACTIVE_COLOR\" \\\r\n\t\ticon=\"$SID\" \\\r\n\t\tbackground.drawing=off \\\r\n\t\tclick_script=\"$SPACE_CLICK_SCRIPT\"\r\nfi\r\n```\r\n\r\n```toml\r\n# aerospace.toml\r\n...\r\nexec-on-workspace-change = ['/bin/bash', '-c',\r\n    'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE'\r\n]\r\n...\r\n```\r\n\r\nWhich results to this:\r\n<img width=\"192\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2f889b04-5bab-4825-b49e-6a6d6065580c\">\r\n\r\nThis is great and exactly what I am looking for, but I can't find a way to have this updated when a workspace actually becomes empty or not. I've searched for something relevant in the documentation of aerospace but was not able to find anything sufficient. Am I missing something, or this is just not possible currently?\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - --empty\r\n  - list-workspaces \r\n  - \"hide workspaces\"\r\n  - sketchybar\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation. My search queries were:\r\n  - list-workspaces\r\n  - events\r\n  - on-change\r\n  - sketchybar",
      "created_at": "2024-08-16T09:42:44Z",
      "updated_at": "2025-06-09T09:47:57Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "karamanliev",
        "avatar_url": "https://avatars.githubusercontent.com/u/22788016?u=e7a0b5310403f5a9df86e93959c86551a2a88675&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adh_e",
      "number": 886,
      "title": "Rearrane Workspaces",
      "body": "Would it be possible to have as a feature to rearrange workspaces? I have my terminal open in workspace T but I want it to be before workspace 1 which is where I have my browser. As of right now, workspace T is the last one. \r\n![Screenshot 2024-12-24 at 11 32 22 AM](https://github.com/user-attachments/assets/308d1149-920a-4fd0-986d-e75eb22aa3e2)\r\n",
      "created_at": "2024-12-24T17:35:01Z",
      "updated_at": "2024-12-24T19:12:05Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "funnie-monkey",
        "avatar_url": "https://avatars.githubusercontent.com/u/41880357?u=7dfde0999b4ca5eb74b4f5a1d0da4cc2f9b348fe&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiH",
      "number": 955,
      "title": "Feature Request: Escape Sequence for Reusing Shortcuts",
      "body": "It would be great to have an escape sequence shortcut in AeroSpace that allows users to reuse a shortcut bound in AeroSpace for another application. This feature would enable users to temporarily disable AeroSpace's capture of the next shortcut, making it available for use in other apps.",
      "created_at": "2024-12-14T13:33:10Z",
      "updated_at": "2025-01-11T19:41:49Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlexBurdu",
        "avatar_url": "https://avatars.githubusercontent.com/u/1262636?u=70563781a93f2588216402e716f013546490ab42&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adg3p",
      "number": 881,
      "title": "How to make the \"move\" command move across the monitor",
      "body": "Is it possible to add parameters similar to \"focus\" to \"move\"?\r\nJust like this.\r\nhttps://github.com/nikitabobko/AeroSpace/discussions/654#discussioncomment-11550329",
      "created_at": "2024-12-23T13:30:51Z",
      "updated_at": "2024-12-24T01:24:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mortyhuang",
        "avatar_url": "https://avatars.githubusercontent.com/u/47255125?u=3051356ab9563df1b4675dcbc9472c5458304897&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdhKQ",
      "number": 883,
      "title": "Support for dropdown of iterm2",
      "body": "Hi there,\r\n\r\nI started to use iterm2's feature of drop down terminal quite extensively (using profiles). I wanted to know if there's a way to make it work with Aerospace ? Has anyone done that before ?\r\nI come from Linux world so not super familiar with iterm2 as well, not even sure on how to call that dropdown window specifically yet but assuming i figure this out, how should i exclude that process from the tiling ? Can i do that ?\r\n\r\nThank you",
      "created_at": "2024-12-23T22:38:23Z",
      "updated_at": "2024-12-23T22:38:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikkolasg",
        "avatar_url": "https://avatars.githubusercontent.com/u/2564747?u=520b5d5431a81208c58e29cb2ba376935f819506&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdhBY",
      "number": 882,
      "title": "How to disable auto switch to workspace when a new window opens.",
      "body": "I am working on program which automates some task for me by opening chrome windows. When ever a new tab get's opened automatically new workspace is selected. \r\n\r\ni am not sure how to disable it. this feature of auto switching is good but not so great when i am running automation job. Can we disable the auto switching specifically to one app.",
      "created_at": "2024-12-23T17:27:09Z",
      "updated_at": "2024-12-23T17:27:22Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sanjeethboddi",
        "avatar_url": "https://avatars.githubusercontent.com/u/22007564?u=4741c998e2f12f06585ee589df83e2c7642bc9e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adfjg",
      "number": 880,
      "title": "AeroSpace command line",
      "body": "Hi I am trying to run some of the commands like \"aerospace list-windows\" on my Terminal but I am getting unrecognized flag \"list workspaces\" I have tried looking through the manual but not finding anything. Am I missing something?",
      "created_at": "2024-12-22T22:58:21Z",
      "updated_at": "2024-12-22T22:59:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mkirl",
        "avatar_url": "https://avatars.githubusercontent.com/u/91095398?u=45df8b956351162ddbd68b954fdaf1328135815e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adb_w",
      "number": 876,
      "title": "3 finger swipe",
      "body": "Hi all of you, do anybody knows if it is possible to do a 3 finger swipe to switch between workspaces in Aerospace?",
      "created_at": "2024-12-19T20:45:09Z",
      "updated_at": "2024-12-21T18:19:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Notaduck",
        "avatar_url": "https://avatars.githubusercontent.com/u/9454064?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac0KD",
      "number": 757,
      "title": "aerospace does not show up in search on brew.sh",
      "body": "Not sure if intended or where to put this.  Didn't seem issue worthy.\r\n\r\n![Screenshot 2024-11-25 at 9 50 25 AM](https://github.com/user-attachments/assets/ea94eaad-26ec-4054-91e4-bb8101924638)\r\n",
      "created_at": "2024-11-25T14:53:41Z",
      "updated_at": "2024-12-20T16:39:17Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nyc-de",
        "avatar_url": "https://avatars.githubusercontent.com/u/123569502?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Adyh8",
      "number": 954,
      "title": "Apple Vision Pro identified as 'side car (airplay)' and assignments ignored",
      "body": "**Describe the bug**\r\nmore info at: https://github.com/nikitabobko/AeroSpace/discussions/871_\r\n\r\nCreated forced assignments of workspaces to 'Apple Vision Pro' as identified under displays and workspace assignments ignored. Vision Pro is seen by AeroSpace as 'side car (airplay)' and it ignores any assignments to Vision Pro but translates the main and secondary display assignments to workspace assignments for 'side car (airplay)'\r\n\r\n**Related issues you could find**\r\n(https://github.com/nikitabobko/AeroSpace/discussions/871_)\r\n",
      "created_at": "2024-12-20T02:01:20Z",
      "updated_at": "2025-01-11T19:36:52Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "leaderlessllc",
        "avatar_url": "https://avatars.githubusercontent.com/u/110690954?u=2f1acacd10f01fcbad641762413e512375285ed4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdahP",
      "number": 871,
      "title": "Vision Pro - Mac Virtual Display",
      "body": "Anyone using a Mac with Aerospace and Vision Pro? if so how is Vision Pro identified to Aerospace for config purposes? as its not 'built in', is it 'Main or primary'? anything else? any way to assign specific workspaces to be used only when using Mac Virtual Display on Vision Pro vs rest forced to specific displays? Answer appreciated!",
      "created_at": "2024-12-18T20:17:38Z",
      "updated_at": "2024-12-20T01:55:41Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsVy4",
        "body": "So answering for those with the same question... While under displays Vision Pro appears as Apple Vision Pro, aerospace identifies it as Side car (airplay) oddly it will translate the same workspaces and assignments of the main and secondary to it and both main and secondary appear as the same 'side car (airplay)' and ignores any assignment to 'Apple Vision Pro' in the config."
      },
      "user": {
        "login": "leaderlessllc",
        "avatar_url": "https://avatars.githubusercontent.com/u/110690954?u=2f1acacd10f01fcbad641762413e512375285ed4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdL8O",
      "number": 841,
      "title": "Window Dropshadow Questions",
      "body": "Hi, I was going to switch from Yabai to Aerospace but have a Problem with the Window Dropshadows. \r\n\r\nI understand the reasoning of the Author to not use Private APIs for disabling the window dropshadows, like Yabai is shipped with. \r\n\r\nBut i googled a long time to find any Solution for this, most were outdated. But since Yabai is doing it, it must be possible. \r\n\r\nDoes anyone have any Idea to solve this Problem, I would not use Aerospace with these terrible dropshadow, which also even bleed in on the second monitor. ",
      "created_at": "2024-12-10T15:40:14Z",
      "updated_at": "2024-12-19T11:07:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsT-K",
        "body": "Only Solution that worked for me now is to start Yabai (with the option ativated to disable the window shadow) and then stop it. The shadow keeps being hidden until restart. unbelievable that there is no other solution to it. These are the moments I miss the Linux world. "
      },
      "user": {
        "login": "danscheer",
        "avatar_url": "https://avatars.githubusercontent.com/u/56642865?u=2c5a6cb331ae70e3a6143b1e7f58aab2aa56e483&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdYG-",
      "number": 870,
      "title": "Highlighting group of nodes",
      "body": "Hey there 👋 \r\nI usually have more than one group of nodes that are joined. But after switching to other workspaces, it is hard to keep up with which apps are in that group or not. \r\n\r\nI am wondering if there is any way to highlight (could be something else) or have coloured window borders on windows/apps that are in the specific group.\r\n\r\nThanks in advance.",
      "created_at": "2024-12-17T12:54:01Z",
      "updated_at": "2024-12-17T12:54:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mustafaergul",
        "avatar_url": "https://avatars.githubusercontent.com/u/5095547?u=f5872d499222b71fbf76e67c4c40ba7685b83d1d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdYCh",
      "number": 869,
      "title": "Separate Left/Right Command Key Behavior for Mod and macOS Shortcuts",
      "body": "Hello!\r\n\r\nI'm transitioning from Yabai to Aerospace and have encountered a setup issue. In Yabai, I use the left Command key as my TWM mod key, while the right Command key is reserved for macOS system shortcuts. This setup works well because macOS differentiates between the left and right Command keys, allowing me to avoid conflicts between TWM shortcuts and macOS functionality.\r\n\r\nAfter reviewing the Aerospace documentation, I couldn't find an equivalent feature to distinguish between the left and right Command keys for mod key assignments. If this feature isn't already implemented, it would be a great addition to enhance customization and workflow compatibility.\r\n\r\nThank you for considering this request! 😊",
      "created_at": "2024-12-17T12:09:08Z",
      "updated_at": "2024-12-17T12:09:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AMulabeg",
        "avatar_url": "https://avatars.githubusercontent.com/u/114394694?u=fea3fce6eb8733f818775d26af137efeed91a179&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcYpt",
      "number": 674,
      "title": "More elegant way to move to next workspace?",
      "body": "Hello there!\r\n\r\nI am trying to make shortcuts to go to next and previous workspace. I only want to cycle over nonempty workspaces\r\n\r\n`workspace --wrap-around next` takes stdin, so in theory supplying `list-workspaces --monitor focused --empty no` should give it only nonempty workspaces to cycle through\r\n\r\nbut the following config doesnt compile:\r\n`alt-n = 'list-workspaces --monitor focused --empty no | workspace --wrap-around next'`\r\n\r\nI have to `use exec-and-forget`, so this works:\r\n`alt-n = 'exec-and-forget aerospace list-workspaces --monitor focused --empty no | aerospace workspace --wrap-around next'`\r\n\r\n\r\nMy question is - is there a more elegant way to achieve this without using `exec-and-forget` ?\r\n\r\n\r\n\r\n\r\n\r\n",
      "created_at": "2024-11-07T15:51:21Z",
      "updated_at": "2024-12-17T00:17:51Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aqpl9",
        "body": "Not possible yet. Planned to be supported in the following way:\r\n\r\n```\r\nalt-n = 'list-workspaces --monitor focused --empty no | workspace --wrap-around next'\r\n```\r\n\r\nPlease follow #278 "
      },
      "user": {
        "login": "nkaradzhov",
        "avatar_url": "https://avatars.githubusercontent.com/u/1475500?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdTiT",
      "number": 860,
      "title": "Move entire workspace",
      "body": "Similar to move-node-to-workspace prev/next, I would request a swap-workspace-1, swap-workspace-2 ... swap-workspace-prev (or left/up), swap-workspace-next (or right/down). Swaps would involve the focused workspace and the command specified workspace.\r\n\r\nMy ordering of workspaces can change. Presently I do a ton of move-node-to-workspace commands to ripple windows through which could be a single command. ",
      "created_at": "2024-12-14T21:45:19Z",
      "updated_at": "2024-12-16T13:35:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenbanks-peng",
        "avatar_url": "https://avatars.githubusercontent.com/u/26904200?u=a6f1165e21ce6d7c2d4574f1ae4573cef4c7a00e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdWNp",
      "number": 865,
      "title": "Something wrong when using \"list-windows\" command",
      "body": "Hi, I was querying my available windows using `list-windows` command and using the `--format` flag. However, whenever I query it, my aerospace crashes stating that my format is incorrect. \r\n\r\nPlease see below for the full error.\r\n\r\n```\r\n❯ aerospace list-windows --all --format \"%{window-title}\"\r\nCommon/commonUtil.swift:47: Fatal error:\r\nPlease report to:\r\n    https://github.com/nikitabobko/AeroSpace/issues/new\r\n    Please describe what you did to trigger this error\r\n\r\nMessage: The data couldn’t be read because it isn’t in the correct format.\r\nVersion: 0.16.2-Beta\r\nGit hash: 21336ad382539b35fdc94b4fbd55408e10b101f8\r\nCoordinate: /Users/bobko/a/AeroSpace/Sources/Cli/main.swift:59:91 run(_:stdin:)\r\nrecursionDetectorDuringFailure: false\r\ncli: true\r\nDisplays have separate spaces: false\r\n\r\nStacktrace:\r\n0   aerospace                           0x00000001045666b4 $s6Common6errorT_4file4line6column8functionxSS_SSS2iSStlFs5NeverO_Tg5 + 1100\r\n1   aerospace                           0x000000010458f4f0 $ss6ResultO6CommonE10getOrThrow_4file4line6column8functionxSS_SSS2iSStF + 360\r\n2   aerospace                           0x0000000104436a70 $s3Cli3run_5stdin6Common12ServerAnswerVSaySSG_SStF + 1268\r\n3   aerospace                           0x0000000104435ff8 main + 1552\r\n4   dyld                                0x000000018e8b3154 start + 2476\r\n[1]    94213 trace trap  aerospace list-windows --all --format \"%{window-title}\"\r\n```\r\n\r\nThank you!",
      "created_at": "2024-12-16T11:25:48Z",
      "updated_at": "2024-12-16T11:25:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "xavierchen0",
        "avatar_url": "https://avatars.githubusercontent.com/u/134773734?u=cde0c7bb780701b7df93dbd71586041057f16f28&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac8B0",
      "number": 785,
      "title": "Focus next / prev instead of focus left or right?",
      "body": "Hi people, \r\n\r\nI often have my windows stacked behind each other fullscreen and I forget whether I want to move left or right.\r\n\r\nGiven\r\n`\r\nh_tiles\r\n├── window 1 (focused)\r\n└── window 2\r\n`\r\nMove focus right\r\n`\r\nh_tiles\r\n├── window 1\r\n└── window 2 (focused)\r\n`\r\nMove focus right or left doesn't matter with 2 windows\r\n`\r\nh_tiles\r\n├── window 1 (focused)\r\n└── window 2\r\n`\r\n\r\nIs there a way to achieve this? I'd like to focus next or prev without it being strict on direction. Sort of rotating the windows like a carousel.",
      "created_at": "2024-11-30T23:56:06Z",
      "updated_at": "2024-12-15T23:53:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "b11e",
        "avatar_url": "https://avatars.githubusercontent.com/u/9710084?u=e91ef93c964774bd247b91672f113e8a37039a35&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdTb_",
      "number": 858,
      "title": "Dont auto tile on app lauch",
      "body": "Is there a way to disable auto tiling?\r\n\r\nE.g When I have chrome open in a workspace it will take up the whole workspace, if I then open a new app, Aerospace will automatically put it in a new window and create a tile layout 1|2\r\n\r\nI really just use Aerospace for the workspaces and would like any app launched in a workspace to just be fullscreen or just no tiling.",
      "created_at": "2024-12-14T18:48:10Z",
      "updated_at": "2024-12-14T19:41:14Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsIU5",
        "body": "I found you can mostly achieve this by setting\r\n`default-root-container-layout = 'accordion'`"
      },
      "user": {
        "login": "whoop-t",
        "avatar_url": "https://avatars.githubusercontent.com/u/52976607?u=2675e950697c11d681ef70eb09b095c46e110538&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac6rf",
      "number": 781,
      "title": "Disable Default Letter Workspaces",
      "body": "Tried my best to search for similar issues, maybe this is a simple config option with different wording but...\r\n\r\nI copy/pasted the \"like i3\" config and all seems mostly good except there's a ton of extra workspaces auto bound to certain letters.\r\n\r\n\r\n<img width=\"300\" alt=\"Screenshot 2024-11-29 at 12 53 14 PM\" src=\"https://github.com/user-attachments/assets/6cd71ace-61ac-43cb-a7c6-a7730709f1cc\">\r\n\r\nI am not specifying these in the config (that I can tell), I only have the default i3 config which only defines 1-10. I can't tell where they are coming from or how to disable them, but the biggest issue is that because of this, `alt` + any of these letters is stuck highjacked as a keybind. So I can't use `alt-v` or `alt-r` and other common binds since using those instead goes to the letter space even if I define them as something else in the config. \r\n\r\n```ts\r\n# Reference: https://github.com/i3/i3/blob/next/etc/config\r\n\r\n# i3 doesn't have \"normalizations\" feature that why we disable them here.\r\n# But the feature is very helpful.\r\n# Normalizations eliminate all sorts of weird tree configurations that don't make sense.\r\n# Give normalizations a chance and enable them back.\r\nenable-normalization-flatten-containers = false\r\nenable-normalization-opposite-orientation-for-nested-containers = false\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Mouse follows focus when focused monitor changes\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\n[mode.main.binding]\r\n# See: https://nikitabobko.github.io/AeroSpace/goodies#open-a-new-window-with-applescript\r\nalt-enter = '''exec-and-forget osascript -e '\r\ntell application \"Terminal\"\r\n    do script\r\n    activate\r\nend tell'\r\n'''\r\n\r\n# i3 wraps focus by default\r\nalt-h =         'focus --boundaries-action wrap-around-the-workspace left'\r\nalt-j =         'focus --boundaries-action wrap-around-the-workspace down'\r\nalt-k =         'focus --boundaries-action wrap-around-the-workspace up'\r\nalt-l = 'focus --boundaries-action wrap-around-the-workspace right'\r\n\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\n# Consider using 'join-with' command as a 'split' replacement if you want to enable normalizations\r\nalt-c = 'split horizontal'\r\nalt-v = 'split vertical'\r\n\r\nalt-f = 'fullscreen'\r\n\r\nalt-s = 'layout v_accordion' # 'layout stacking' in i3\r\nalt-w = 'layout h_accordion' # 'layout tabbed' in i3\r\nalt-e = 'layout tiles horizontal vertical' # 'layout toggle split' in i3\r\n\r\nalt-shift-space = 'layout floating tiling' # 'floating toggle' in i3\r\n\r\n# Not supported, because this command is redundant in AeroSpace mental model.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide#floating-windows\r\n#alt-space = 'focus toggle_tiling_floating'\r\n\r\n# `focus parent`/`focus child` are not yet supported, and it's not clear whether they\r\n# should be supported at all https://github.com/nikitabobko/AeroSpace/issues/5\r\n# alt-a = 'focus parent'\r\n\r\nalt-1 = 'workspace 1'\r\nalt-2 = 'workspace 2'\r\nalt-3 = 'workspace 3'\r\nalt-4 = 'workspace 4'\r\nalt-5 = 'workspace 5'\r\nalt-6 = 'workspace 6'\r\nalt-7 = 'workspace 7'\r\nalt-8 = 'workspace 8'\r\nalt-9 = 'workspace 9'\r\nalt-0 = 'workspace 10'\r\n\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-0 = 'move-node-to-workspace 10'\r\n\r\nalt-shift-c = 'reload-config'\r\n\r\n\r\nalt-r = 'mode resize'\r\n\r\n[mode.resize.binding]\r\nh = 'resize width -50'\r\nj = 'resize height +50'\r\nk = 'resize height -50'\r\nl = 'resize width +50'\r\nenter = 'mode main'\r\nesc = 'mode main'\r\n```\r\n",
      "created_at": "2024-11-29T20:57:32Z",
      "updated_at": "2024-12-14T18:23:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "qudo-code",
        "avatar_url": "https://avatars.githubusercontent.com/u/59782726?u=1fda90e3d3aa24631f7996a02787a6b8b7802423&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcPbu",
      "number": 654,
      "title": "How about making \"focus right\" can go over monitor? (focus-monitor right)",
      "body": "When I use `i3`, it was really convenient that  \"focus right\" can go beyond monitor.\r\nFor example, with `<alt> + arrow keys`, I was able to traverse any window in several monitors. \r\nIn `aerospace`, `focus` only works in a monitor, and you'll need `focus-monitor` to go beyond. I think it's quite cumbersome. \r\n\r\nCan we make it happen?",
      "created_at": "2024-10-31T23:44:34Z",
      "updated_at": "2025-01-09T23:05:15Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AsD55",
        "body": "I believe you are looking for this?:\r\n\r\n```toml\r\n# focus\r\nalt-h = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors left'\r\nalt-j = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors down'\r\nalt-k = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors up'\r\nalt-l = 'focus --boundaries all-monitors-outer-frame --boundaries-action wrap-around-all-monitors right'\r\n```"
      },
      "user": {
        "login": "snova-paulk",
        "avatar_url": "https://avatars.githubusercontent.com/u/169955889?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac7Tu",
      "number": 783,
      "title": "yabai comparable eventing - additional app/window/display events with corresponding IDs",
      "body": "I am using sketchybar to not only track spaces, but to track windows with icons. I can highlight the active space using the aerospace_workspace_changed event, but I can highlight the focused app with yabai events. \r\n\r\npresently using yabai in float layout (uncontrolled, to avoid conflict with aerospace), just so I can get access to the more granular eventing. \r\n\r\nwould request aerospace eventing be granualar as well\r\n\r\nsome yabai events:\r\n- application_launched\r\n- application_terminated\r\n- application_front_switched\r\n- application_activated\r\n- application_deactivated\r\n- application_visible\r\n- application_hidden\r\n- window_created\r\n- window_destroyed\r\n- window_focused\r\n- window_moved\r\n- window_resized\r\n- window_minimized\r\n- window_deminimized\r\n- window_title_changed\r\n- display_added\r\n- display_removed\r\n- display_moved\r\n- display_resized\r\n- display_changed",
      "created_at": "2024-11-30T11:03:30Z",
      "updated_at": "2024-12-12T13:47:15Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "kenbanks-peng",
        "avatar_url": "https://avatars.githubusercontent.com/u/26904200?u=a6f1165e21ce6d7c2d4574f1ae4573cef4c7a00e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdPE7",
      "number": 852,
      "title": "How do you guys handle keys you need option for?",
      "body": "Hi,\r\n\r\nI use a german keyboard layout. The @ sign, for example, is on the L, so option + L, which is used in the default config.\r\nThere are many others, square brackets for example are option + 5,6.\r\nIs there anyone using this Layout aswell, do you just use other keyboard shortcuts? Or is there another way, like maybe temporarily disabling AeroSpace to type?",
      "created_at": "2024-12-12T11:12:22Z",
      "updated_at": "2024-12-12T11:12:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "dustin-we",
        "avatar_url": "https://avatars.githubusercontent.com/u/44120716?u=2c883b1cfff289858613b916c6c0eec8d6aab862&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdKIk",
      "number": 833,
      "title": "Mark a floating window as \"Pinned\" that follows me between workspaces",
      "body": "As a user .... At times (try not to) I have to multi task and switch workspaces. It would be great if I can mark a floating window as pinned (IE: terminal windows with process running) this would mean the pinned floating window will follow me as I navigate between workspaces. \r\n\r\nReason: \r\nThis would allow me to keep the window open and floating regardless of the workspace I change so I can monitor my window progress. ",
      "created_at": "2024-12-09T16:36:51Z",
      "updated_at": "2024-12-11T17:47:30Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "webdz9r",
        "avatar_url": "https://avatars.githubusercontent.com/u/1608882?u=ade3916adfdcd6180116aa9ade90162e982aee2b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdN6M",
      "number": 850,
      "title": "Notion app not being managed by aerospace",
      "body": "The title says it.\r\n\r\n* The app refuses to tile (and in fact using service mode's \"layout floating tiling\" toggle keybinding just toggles the status of the window I had last selected before notion)\r\n* It's present on every aerospace workspace as I switch between them\r\n* It doesn't show up in the list given by `aerospace list-windows --all`\r\n\r\nHow do I get aerospace to see this app and manage it?",
      "created_at": "2024-12-11T16:25:17Z",
      "updated_at": "2024-12-11T16:25:17Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "teepark",
        "avatar_url": "https://avatars.githubusercontent.com/u/37182?u=0f3971fa71a0880b81967b55d13333d6723dc477&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdNCO",
      "number": 848,
      "title": "Focus and move to workspace stopped working",
      "body": "I'm not sure what caused this to happen, but I was suddenly unable to use some essential AeroSpace features like focus left or move to workspace. I was trying to build AeroSpace locally and ran a few scripts like setup.sh, probably generate.sh (don't remember), and one or two others (I'm not familiar with Swift, so I was just messing around with things). Not sure if this could have caused it to happen, since I don't remember exactly at what point it broke.\r\n\r\nSome things I've tried to resolve this are using the default config from the docs, reinstalling aerospace via brew, restarting my machine, and deleting some aerospace files I found on my machine as a last resort. I'm sure there's something on my machine that I can revert to resolve this, so hopefully somebody might be able to help out. Thank you!",
      "created_at": "2024-12-11T06:57:50Z",
      "updated_at": "2024-12-11T07:07:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Ar-zk",
        "body": "Scratch that, it just started working again... I think I might have been running skhd which could have been interfering, it started working again after stopping it."
      },
      "user": {
        "login": "jcelaya775",
        "avatar_url": "https://avatars.githubusercontent.com/u/24758353?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdLt7",
      "number": 840,
      "title": "Conditionally disable when no external monitors are being used",
      "body": "I only want to enable aerospace when using external monitors - otherwise, I want it toggled off.\r\n\r\nIs this possible?",
      "created_at": "2024-12-10T13:32:59Z",
      "updated_at": "2024-12-10T13:33:00Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "idelice",
        "avatar_url": "https://avatars.githubusercontent.com/u/59118341?u=974664b47efff07e496b5e902cdec2306a525a09&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdLIr",
      "number": 837,
      "title": "Balance along one axis",
      "body": "Hi,\r\n\r\nit would be nice if it would be possible to balance the sizes just along one axis (horizontally or vertically) or just for the current subtree.\r\n\r\nBest regards,\r\nJohannes",
      "created_at": "2024-12-10T06:56:42Z",
      "updated_at": "2024-12-10T06:56:43Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hpfmn",
        "avatar_url": "https://avatars.githubusercontent.com/u/3973466?u=e0b394e39d7accc29a798c05b929d1592c943b87&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdLIb",
      "number": 836,
      "title": "The list commands should give more information",
      "body": "Hello,\r\n\r\nI feel like currently all the list commands (list-apps/list-monitors/list-windows/list-workspaces) are pretty limited to their help with scripting. I would like them be able to report things like window size, window position etc.\r\n\r\nI really don't like how I can do resizing of windows. In `yabai` I would hack myself something like this:\r\n\r\n```\r\ncmd + ctrl + alt - h : START=$(yabai -m query --displays | jq \".[] | select(.index == $(yabai -m query --windows --window | jq '.display')).frame.x\"); if ((`yabai -m query --windows --window | jq \".frame.x\"` > $START)); then; yabai -m window --resize left:-40:0; else; yabai -m window --resize right:-40:0; fi \r\ncmd + ctrl + alt - l : START=$(yabai -m query --displays | jq \".[] | select(.index == $(yabai -m query --windows --window | jq '.display')).frame.x\"); if ((`yabai -m query --windows --window | jq \".frame.x\"` > $START)); then; yabai -m window --resize left:+40:0; else; yabai -m window --resize right:+40:0; fi \r\ncmd + ctrl + alt - j : if ((`yabai -m query --windows --window | jq \".frame.y\"` > 26)); then; yabai -m window --resize top:0:+40; else; yabai -m window --resize bottom:0:+40; fi \r\ncmd + ctrl + alt - k : if ((`yabai -m query --windows --window | jq \".frame.y\"` > 26)); then; yabai -m window --resize top:0:-40; else; yabai -m window --resize bottom:0:-40; fi \r\n```\r\n\r\nTo have resizing behaving like it feels natural to me. It would be nice if I could replicate something like that. But without the ability to tell the position of the window on the screen it is not possible. Maybe for some applications if also makes sense to get information about how the tree is currently structured?\r\n\r\nBest regads,\r\nJohannes",
      "created_at": "2024-12-10T06:54:30Z",
      "updated_at": "2024-12-10T06:54:31Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hpfmn",
        "avatar_url": "https://avatars.githubusercontent.com/u/3973466?u=e0b394e39d7accc29a798c05b929d1592c943b87&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acu9i",
      "number": 740,
      "title": "LibreOffice window is floating",
      "body": "Title says it all. LibreOffice documents float. I would like them to tile.\r\n\r\nHappy to send any info that is useful.\r\n",
      "created_at": "2024-11-18T17:57:09Z",
      "updated_at": "2024-12-09T23:20:59Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mattharrison",
        "avatar_url": "https://avatars.githubusercontent.com/u/119405?u=e40af3d64161456d316c1b8f72335f3eecf7b709&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcjLS",
      "number": 702,
      "title": "LibreOffice is floating",
      "body": "When I open a LibreOffice document the window floats. I would like to tile it. How do I fix this?",
      "created_at": "2024-11-14T16:35:29Z",
      "updated_at": "2024-12-09T23:20:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mattharrison",
        "avatar_url": "https://avatars.githubusercontent.com/u/119405?u=e40af3d64161456d316c1b8f72335f3eecf7b709&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIs3",
      "number": 619,
      "title": "How to set custom workspace as a default one",
      "body": "In my config I'm using Meh (alt-shift-ctrl) + qwerty as a way to move to the named workspace, I think the 6 workspaces are enough for me and it's ergonomic for me.\r\nThe problem I encountered is that by default the '1' workspace is launched, who to set it to \"worksplace q\"?\r\nand also remove rest of the workspaces from tray",
      "created_at": "2024-10-26T11:16:43Z",
      "updated_at": "2024-12-09T17:20:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AqUJV",
        "body": "Use an after-startup hook to run `workspace q`\r\n\r\nEdit: Correction made to hook name"
      },
      "user": {
        "login": "NeverL4nd2",
        "avatar_url": "https://avatars.githubusercontent.com/u/177520087?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acl_z",
      "number": 717,
      "title": "Monitors have distinct workspaces",
      "body": "I am a big fan of `AeroSpace` in Mac. I have previously used i3wm, hyperland and a big fan of DWM. \r\n\r\nIn DWM, you get separate workspaces (1 - 9) for different monitors. For example, if you have two monitor then for monitor 1 you will have (1 - 9) workspaces and the same for monitor 2.\r\n\r\nIn `AeroSpace` I am trying to achieve the similar thing but don't know how to achieve this. Please let me know how to approach this problem if it is actually doable.",
      "created_at": "2024-11-17T05:20:02Z",
      "updated_at": "2024-12-09T10:37:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "aba-wtag",
        "avatar_url": "https://avatars.githubusercontent.com/u/185671869?u=a2eccfa8355dda3a98f652497663d3b133536f50&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac1xg",
      "number": 765,
      "title": "Different Monitor layout presets",
      "body": "I have 3 primary monitor layouts I use on my macbook:\r\n* Built-in display only (when Traveling)\r\n* Built-in display + 1 external monitor (Home Office)\r\n* Built-in display + 2 external monitors (Work office)\r\n\r\nIs there a way with Aerospace to have 3 defined configurations for these layouts, with application preset positions? (e.g. Which monitor and space contains Outlook, Kitty, Teams, Chrome, etc)",
      "created_at": "2024-11-26T17:29:12Z",
      "updated_at": "2024-12-09T08:34:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Yeraze",
        "avatar_url": "https://avatars.githubusercontent.com/u/5789309?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac_a-",
      "number": 798,
      "title": "How do you move a window to a new container?",
      "body": "I see the recommendation is to use join-width, and collapsing containers is not possible with `split`.\r\n\r\nI like collapsing containers, but I don't see a way to move windows out of an existing container.\r\n\r\nFor example, If I have:\r\n```\r\n|---------------------|\r\n|    2     |     1    |\r\n|          |          |\r\n|---------------------|\r\n|    3     |     4    |\r\n|---------------------|\r\n```\r\nand I want to move window `1` to the right of everything, it doesn't seem possible\r\n\r\nThis is what I'm trying to do:\r\n```\r\n|----------------------|\r\n|    2     |  4  | 1   |\r\n|          |     |     |\r\n|----------|     |     |\r\n|    3     |     |     |\r\n|----------------------|\r\n```\r\n\r\nbut I can't figure it out with join-with. \r\nWhy is join-with and split mutually exclusive with container collapsing?\r\n\r\nin whatever situation I'm in doing join-with up/down on 1/4 seems to not do anything either",
      "created_at": "2024-12-02T18:42:40Z",
      "updated_at": "2024-12-08T05:53:32Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "NullVoxPopuli",
        "avatar_url": "https://avatars.githubusercontent.com/u/199018?u=1f1ee4907e02d1b52a86cec09c70d3423f1f236e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdGEN",
      "number": 828,
      "title": "How to remove empty nodes",
      "body": "I am not sure if my terminology in header is right,\r\nbut say If I have 2 safari open next to each other, if I click cross to close 1 safari, the other safari doesnt automatically become full screen, I have to press `alt-shift-f`(my set full screen keybinding).\r\nIs there any keybinding/work around for this to happen.\r\nHere is an example:(of my terminal, not safari)\r\n\r\n\r\nhttps://github.com/user-attachments/assets/17c77675-0428-41c8-b97d-51766a0df112\r\n\r\n",
      "created_at": "2024-12-07T05:35:54Z",
      "updated_at": "2024-12-07T05:36:14Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AnirudhG07",
        "avatar_url": "https://avatars.githubusercontent.com/u/146579014?u=a91182ba6d1798e5c40b83b542463271628cc39b&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdFuZ",
      "number": 826,
      "title": "Aerospace does not leave enough space on the external monitor for sketchybar",
      "body": "Hi, I am having an issue where I see the windows overlapping my sketchybar on an external monitor. The bar is displayed correctly on the MacBook Pro (with notch) screen but it's not on the external monitor that I use as my main monitor. \n\nIs there a way to force this behavior to give enough space to allow showing sketchybar?\n\nThank you in advance",
      "created_at": "2024-12-06T21:19:57Z",
      "updated_at": "2024-12-06T21:33:41Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sollymay",
        "avatar_url": "https://avatars.githubusercontent.com/u/6496698?u=5c4aec9d9376aef04945095b18365e18ef0923a2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac-b0",
      "number": 793,
      "title": "aerospace + stage manager?",
      "body": "Hi together, \r\nThe docs describe that the intention of aerospace is to be used with 1 space per monitor and the built-in spaces feature to be ignored. \r\nWhat about the stage manager? Is it possible / does it make sense to use aerospace together with the macos stage manager, or does this contradict the intended function of aerospace?",
      "created_at": "2024-12-02T06:23:59Z",
      "updated_at": "2024-12-05T16:31:13Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "onexbash",
        "avatar_url": "https://avatars.githubusercontent.com/u/118682177?u=6166bbb6c669fbe0e03f4052e64ac0c031be549c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdDQg",
      "number": 816,
      "title": "Not working - Alt+shift+number and Alt+h/Alt+h/j/k/l",
      "body": "Hi I tried to change some configuration in the toml file. so i completely uninstalled the aerospace , deleted the config. reinstalled and recreated the config.\r\n\r\nnow to my surprise some keys are not working\r\n\r\nAlt+shift+number  -> window should move to the numbered space. But it is not moving.\r\nBut\r\nAlt+shift+alphabet -> window is moving to the alphabet space.\r\n\r\nAlt+h/Alt+h/j/k/l - suppose to move the cursor . But is is not moving. I am pasting the config here. Can any one help please \r\n\r\ni am attaching my toml file as a text here. Please help\r\n[aerospace.txt](https://github.com/user-attachments/files/18020587/aerospace.txt)\r\n",
      "created_at": "2024-12-05T09:20:12Z",
      "updated_at": "2024-12-05T09:20:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "meherjammula",
        "avatar_url": "https://avatars.githubusercontent.com/u/30104025?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdBlH",
      "number": 807,
      "title": "Startup application (default workspaces)",
      "body": "Is it possible to save workspaces and use them as default? E.g. in i3 I had a set-up where certain applications went into certain workspaces (1-9) by default when booting my machine.",
      "created_at": "2024-12-04T07:33:42Z",
      "updated_at": "2024-12-05T08:04:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArwMX",
        "body": "Maybe you can combine `after-login-command = []` with on-window-detect.\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\nrun = ['move-node-to-workspace T']\r\n```\r\nI use a shortcut to start the apps to not have this open everytime I boot."
      },
      "user": {
        "login": "ramonvermeulen",
        "avatar_url": "https://avatars.githubusercontent.com/u/18006244?u=6784440222b21850bdd5ceb90098e3733d7b95f7&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdCjH",
      "number": 812,
      "title": "Any way to prevent cmd-tab from switching workspaces?",
      "body": "AeroSpace is awesome, the one thing that annoys me when using it though is that doing cmd+tab to switch between running applications switches to a space with one of the app's windows. I would like to never switch spaces unless explicitly requested, e.g. with ctrl+4 to go to workspace 4, while still using cmd+tab to switch the active app to be able to spawn new windows with cmd+n on the current space. Is that possible? It was in yabai, but obviously this tool does not actually use real spaces, so I'm not sure...",
      "created_at": "2024-12-04T21:17:16Z",
      "updated_at": "2024-12-04T23:12:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArvjF",
        "body": "It's technically not possible, since AeroSpace is not focus owner https://github.com/nikitabobko/AeroSpace/issues/571#issuecomment-2400968083"
      },
      "user": {
        "login": "ferdinandrau",
        "avatar_url": "https://avatars.githubusercontent.com/u/173009167?u=09dc9486b21993d2803d60451480b0f1d641fee4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdAsy",
      "number": 801,
      "title": "Can we pause key listening?",
      "body": "Do we have an option to pause key listening? Sometimes I have conflicts, so It would be nice to have something like:\r\nstop listening shortcut => stop listening for all shortcuts in aerospace except the \"start listening\"\r\nAerospace shortcuts will not work anymore\r\nstart listening shortcut => all back to normal\r\n\r\nThanks for your time!",
      "created_at": "2024-12-03T16:14:59Z",
      "updated_at": "2024-12-04T08:39:43Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "luisggc",
        "avatar_url": "https://avatars.githubusercontent.com/u/31017690?u=385ff48259c1c2ddd054f0ac36a28f2f78d55db4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac_Tl",
      "number": 797,
      "title": "iOS simulator isn't respecting tiling.",
      "body": "**Describe the bug**\r\niOS simulator isn't respecting tiling. Whenever the iOS simulator opens, it just always sticks to the left and overlaps other windows. The window underneath that makes a weird sort of space at the right. I am attaching video of that behavior.\r\n\r\n\r\nhttps://github.com/user-attachments/assets/4944a5ae-c04d-4be0-9410-ac399143ba7f\r\n\r\n\r\n\r\n**Related issues you could find**\r\nPlease make sure to search for duplicates.\r\nIf you couldn't find the duplicates, linking related issues is helpful anyway.\r\n",
      "created_at": "2024-12-02T16:16:19Z",
      "updated_at": "2024-12-02T16:47:55Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "sadiksaifi",
        "avatar_url": "https://avatars.githubusercontent.com/u/86684667?u=4c55635e62b1b1fcfd52da966895302c75f7bf05&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac-CO",
      "number": 792,
      "title": "How about adding `%{focused}` to `--list-workspace` formats?",
      "body": "That would spare me an extra command to find out which workspace is currently focused, when listing all workspaces.\r\n\r\nSimilarly, for windows I'd like to have `%{active}`. `%{floating}` might also be practical.",
      "created_at": "2024-12-02T03:10:23Z",
      "updated_at": "2024-12-02T03:10:24Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "twio142",
        "avatar_url": "https://avatars.githubusercontent.com/u/64556708?u=839e47d1fcb306874b48e9a03d14039c778f5714&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcqPm",
      "number": 727,
      "title": "Bugs in AeroSpace on macOS Sequoia Update",
      "body": "Hey,\r\nAfter updating to macOS Sequoia (Version 15.1 (24B83)) from macOS Sonoma (version 14.7), I’ve encountered some issues with the AeroSpace window manager (version 0.15.2-Beta b6cf8277). Here’s one specific problem I’ve identified so far:\r\n\r\n- The display type information (e.g., Built-in Retina Display) is now only visible for the first workspace. Previously, this information was shown for all active workspaces, making it easier to identify and manage them. This functionality appears to have regressed after the Sequoia update.\r\n\r\n<img width=\"302\" alt=\"image\" src=\"https://github.com/user-attachments/assets/c02c1c18-9ce4-457b-ba18-f863a62ceb26\">\r\n\r\nI’m planning to dig deeper into potential bugs and gather more information about compatibility issues with macOS Sequoia(Version 15.1 (24B83)). Before diving further, I wanted to open this discussion to:\r\n\r\n1. Share the current problem for awareness.\r\n3. Check if anyone else is facing similar issues with AeroSpace after the Sequoia(Version 15.1 (24B83)) update.\r\n4. Collaborate on identifying a fix or workarounds.\r\n\r\nIt’s worth noting that AeroSpace has been a fantastic tool in my workflow, and I’m eager to see it fully compatible with macOS Sequoia.\r\n\r\nAny input, additional issues, or suggestions would be greatly appreciated! Let’s work together to improve the experience for all users.\r\n\r\n",
      "created_at": "2024-11-19T13:45:59Z",
      "updated_at": "2024-11-29T17:41:34Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Arjmo",
        "body": "This has been fixed with the `AeroSpace v0.16.0-Beta d172dfd8a92f2d339f3d46a12a297e43e80768ca` update.."
      },
      "user": {
        "login": "kavindujayarathne",
        "avatar_url": "https://avatars.githubusercontent.com/u/105977719?u=41cab06aa6e12114e119f27ea89ae56027644e3c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac6Ke",
      "number": 780,
      "title": "How to Open Spotlight on macOS Using a Keyboard Shortcut",
      "body": "Could someone help with opening Spotlight on macOS using a keyboard shortcut in Aerospace? I tried using `osascript`, but it doesn't work as it simulates keypresses, which isn't what I need. Is there a way to directly invoke the Spotlight input window?",
      "created_at": "2024-11-29T14:25:40Z",
      "updated_at": "2024-11-29T14:25:42Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {}
    },
    {
      "id": "D_kwDOJl1IZM4Ac51I",
      "number": 777,
      "title": "How can I invoke environment variables in calling `move-node-to-workspace`?",
      "body": "```toml\r\n# Send node to prev workspace\r\n    alt-shift-tab = ['move-node-to-workspace $(AEROSPACE_PREV_WORKSPACE)', 'workspace $(AEROSPACE_PREV_WORKSPACE)']\r\n```\r\n\r\nI was trying to move node to previous focused workspace, but unfortunately, it doesn't work",
      "created_at": "2024-11-29T10:52:54Z",
      "updated_at": "2024-11-29T10:52:54Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "FAL0258",
        "avatar_url": "https://avatars.githubusercontent.com/u/71702628?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac5K4",
      "number": 774,
      "title": "Way to set maximum number of workspaces",
      "body": "Hi there, is there a way to limit the amount of workspaces that aerospace creates? I would like to cap it to having 9 workspaces at most as sometimes when I plug in my MacBook into some monitors it creates new workspaces past 9.\r\n\r\nThanks",
      "created_at": "2024-11-28T22:24:34Z",
      "updated_at": "2024-11-28T22:24:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zenoix",
        "avatar_url": "https://avatars.githubusercontent.com/u/41812358?u=29ae8fd28935dafe925370a2682ea7067a0339b4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac4p9",
      "number": 773,
      "title": "Can I return the current mode name?",
      "body": "Is it possible to find the active mode name? I'd like to add this to my Sketchybar\r\n\r\nI tried looking in `aerospace list-exec-env-vars` and `aerospace mode` and searched issues & discussions.",
      "created_at": "2024-11-28T15:09:28Z",
      "updated_at": "2024-11-28T15:09:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "cynicaljoy",
        "avatar_url": "https://avatars.githubusercontent.com/u/348464?u=070dedb49cbb7bb03ff6c60e4eaf50836b4695a9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac4QX",
      "number": 772,
      "title": "Managing NULL-ID apps",
      "body": "I'm using aerospace with some app-dependent configuration such as which apps should have a floating leyout. I'm having some issues because some programs i use don't have a native apple-assigned ID, for example a visualization software named \"pymol\" is represented as:\r\n\r\n12951 | NULL-APP-BUNDLE-ID     | python\r\n\r\nor another program named VMD as:\r\n\r\n12983 | NULL-APP-BUNDLE-ID     | VMD\r\n\r\nI'd like aerospace to never manage those programs but I'm not sure how, because for other program apple is able to automatically assign an ID so I can just:\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.spotify.client'\r\nrun = 'layout floating'\r\n\r\nAnyone has any clue on what I could do?",
      "created_at": "2024-11-28T09:58:28Z",
      "updated_at": "2024-11-28T09:58:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "AlessandroSerra",
        "avatar_url": "https://avatars.githubusercontent.com/u/81354707?u=0eb913f3957f7910ca3b44502ac9bc94a5f0cbfe&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac3tn",
      "number": 770,
      "title": "v0.16.0-Beta",
      "body": "**Improvements**\r\n- https://github.com/nikitabobko/AeroSpace/issues/445 Don't rely on macOS unreliable `kAXUIElementDestroyedNotification` callback to tell if window is closed which might lead to ghost windows in some conditions\r\n\r\n**New features**\r\n- https://github.com/nikitabobko/AeroSpace/issues/336 Add `monitor-appkit-nsscreen-screens-id` in `list-windows`/`list-workspaces` `--format` interpolation variables for better compatibility with sketchybar\r\n- Implement `volume` command\r\n- https://github.com/nikitabobko/AeroSpace/issues/592 Add `app-exec-path`/`app-bundle-path` interpolation variables to `--format` by @dzanotto\r\n- https://github.com/nikitabobko/AeroSpace/issues/741 Add `smart-opposite` in `resize` command by @wesbos\r\n\r\n**Bug fixes**\r\n- https://github.com/nikitabobko/AeroSpace/issues/586 https://github.com/nikitabobko/AeroSpace/issues/678 Fix menubar dropdown showing incorrect workspace in macOS 15\r\n\n\n<hr /><em>This discussion was created from the release <a href='https://github.com/nikitabobko/AeroSpace/releases/tag/v0.16.0-Beta'>v0.16.0-Beta</a>.</em>",
      "created_at": "2024-11-27T23:47:57Z",
      "updated_at": "2024-11-27T23:47:58Z",
      "category": {
        "name": "announcements-releases",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nikitabobko",
        "avatar_url": "https://avatars.githubusercontent.com/u/20517828?u=ee118c65f634378e3d69e0dac1c37cca9851e34d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac2jf",
      "number": 769,
      "title": "How to disable aerospace key binds when a given application is in focus?",
      "body": "Hello\r\nMy situation is as follows: when working on my Mac, I use Aerospace, like you all, to organize my screen. However, there are times when I work from home that I use Citrix to connect to my office's virtual Windows machine, which has its own keymaps, and they interfere with Aerospace (on purpose, I must say, so that I can use the same with Aerospace).\r\n\r\nMy problem is that for the Citrix connection to work as intended, I must quit Aerospace while I am connected to work and return to Aerospace when I am done. This causes all sorts of problems (my Aerospace config is not finalized, and I am only starting to get familiar with it).\r\n\r\nSo, in short, is there an out-of-the-box solution to mask Aerospace users' configured key bindings by application?",
      "created_at": "2024-11-27T09:43:23Z",
      "updated_at": "2024-11-27T11:21:09Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ChrisGVE",
        "avatar_url": "https://avatars.githubusercontent.com/u/214433?u=bc7dc0b11ca22ecce27b2d31cd7eab9106f0b463&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac2Ji",
      "number": 767,
      "title": "Override keys when focusing a certain app",
      "body": "I tried to search previous discussions before asking, hopefully I didn't miss one.\r\n\r\nBut I would like to disable the `alt-{h,j,k,l}` keys when in Alacritty because I typically am using zellij for multiplexing terminals. Those keybinds are used in zellij for navigation. So I would like to just have AeroSpace pass them through and do nothing since I will more than likely have the alacritty window in its own space and can navigate to and from with `alt-#`\r\n\r\nThank you in advance!",
      "created_at": "2024-11-27T02:27:11Z",
      "updated_at": "2024-11-27T07:20:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "pitoniak32",
        "avatar_url": "https://avatars.githubusercontent.com/u/84917393?u=755b2f840a70d6e5781aada47fd2df62c334794d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiR",
      "number": 960,
      "title": "Persistent UI that operates like a window messes up all layouts",
      "body": "**Describe the bug**\r\n\r\nI recently downloaded https://www.flowvoice.ai/ to try out. It adds this persistent pill UI to the bottom of the main display that toggles on/off to display when Flow is capturing audio (see image below of pill in the \"off\" state).\r\n\r\n![CleanShot 2024-11-26 at 20 45 06@2x](https://github.com/user-attachments/assets/d9150e10-6f61-40c0-8fb6-5f170cca635d)\r\n\r\nWhen launching Aerospace, the layouts did not work as expected. I tracked it down to the fact that it treats Flow as an open window, but there is no actual window to move. I tried moving Flow to its own workspace but that caused the floating pill to blink and move wildly. Quitting the Flow app entirely and restarting Aerospace fixed the issue and I was able to operate it normally.\r\n\r\n**Related issues you could find**\r\n\r\n- https://github.com/nikitabobko/AeroSpace/issues/471\r\n- https://github.com/nikitabobko/AeroSpace/issues/552 - This was the first thing I tried to look for to just have AeroSpace ignore this app\r\n\r\n**Notes**\r\n- using the default config\r\n- AeroSpace v0.15.2-Beta\r\n- macOS Sequoia 15.1.1\r\n- the `debug-windows` command does not print any output from the Flow \"window\"\r\n\r\n\r\n![CleanShot 2024-11-26 at 21 10 57](https://github.com/user-attachments/assets/1c6faaa6-0361-4a51-9281-6f28f248595b)\r\n",
      "created_at": "2024-11-27T03:12:42Z",
      "updated_at": "2025-01-11T19:45:51Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "camdub",
        "avatar_url": "https://avatars.githubusercontent.com/u/503674?u=a6bb2b4a9ce7765b037127af4905ef4531ee6b68&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcvzG",
      "number": 746,
      "title": "Feature bounties?",
      "body": "I suppose this is mostly a question for @nikitabobko... I was wondering if you had considered having a system for feature bounties to help you fund the development of new features.\r\n\r\nFor instance, I've been using (and loving) AeroSpace for a while now, but one of the challenges I keep hitting is that the experience when using a very wide screen (such as 32:9) is weird when few windows are open. I've seen a few of proposals in this area and, while I don't have enough free time to help with the project, I would value seeing improvements in this area enough to help fund its development.",
      "created_at": "2024-11-22T21:56:27Z",
      "updated_at": "2024-11-26T21:29:25Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "bmfurtado",
        "avatar_url": "https://avatars.githubusercontent.com/u/185576?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac1h9",
      "number": 764,
      "title": "Cannot assign Workspace 10 to monitor",
      "body": "**Describe the bug**\r\nI have 3 monitors, two are external and one is the display of the mac book. I have configured 10 workspaces where, as it is customary, the 10th is mapped to `cmd+0`. I have mapped 1 & 2 to the macbook display while 7 - 10 to one of the two external monitors.\r\n\r\nIssue: when issuing `cmd+0` the workspace is bound to the mac display (the \"main\" display) instead of the external monitor.\r\n\r\nExpected: the workspace 10 (hence 0) should be mapped to the display like 7 - 9.\r\n\r\nThe configuration extract can be seen below.\r\n\r\n```\r\n[workspace-to-monitor-force-assignment]\r\n1 = 3\r\n2 = 3\r\n3 = 2\r\n4 = 2\r\n5 = 2\r\n6 = 2\r\n7 = 1\r\n8 = 1\r\n9 = 1\r\n0 = 1\r\n\r\n...\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#workspace\r\ncmd-1 = 'workspace 1'\r\ncmd-2 = 'workspace 2'\r\ncmd-3 = 'workspace 3'\r\ncmd-4 = 'workspace 4'\r\ncmd-5 = 'workspace 5'\r\ncmd-6 = 'workspace 6'\r\ncmd-7 = 'workspace 7'\r\ncmd-8 = 'workspace 8'\r\ncmd-9 = 'workspace 9'\r\ncmd-0 = 'workspace 10'\r\n```\r\n\r\nMaybe I am assuming something incorrectly?\r\n\r\nCheers!",
      "created_at": "2024-11-26T13:26:26Z",
      "updated_at": "2024-11-26T14:47:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "armax00",
        "avatar_url": "https://avatars.githubusercontent.com/u/1035717?u=c6249060443333d0859fc6e40f5873664851dae3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ac0yw",
      "number": 761,
      "title": "2 new feature ideas",
      "body": "Hello, everyone i have 2 new ideas:\r\n1. if i have custom layout and minimize one on apps and return it back - it should memorize it's position on layout and bring it back to it instead of resetting entire layout how it works now\r\n2. somу  keybindings on custom presets as shown below: \r\n\r\n![image](https://github.com/user-attachments/assets/ddce0e38-c395-4ce8-8a72-a59a4d4af7de)\r\n",
      "created_at": "2024-11-26T03:59:42Z",
      "updated_at": "2024-11-26T03:59:42Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hevzy86",
        "avatar_url": "https://avatars.githubusercontent.com/u/23268336?u=a60008c1be105fe0156ab1cfa805d4d70684335d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acz4Q",
      "number": 755,
      "title": "Drag and drop using the mouse",
      "body": "Is there a way to \"enable\" a drag-and-drop mode using the mouse that ignores the current layout and appends the selected window into the dropped workspace?\r\n\r\nFor example, if I have a 2 monitor setup, I want to drag and drop using the mouse one window into the other monitor, and that window is appended into the destination workspace (the other monitor) once it's done. \r\n\r\nThe current result for this operation is that the window is \"attached\" to the origin workspace, and once you drop the window into the destination workspace, it goes back to the origin immediatelly.\r\n\r\nIs there a workaround or configuration for this?\r\n\r\nI was imagining something like `ctrl-alt-d` enables the \"drag and drop mode\" and you can freely move windows around.\r\n\r\nSorry if there is already a documentation for this, I couldn't find it.",
      "created_at": "2024-11-25T11:28:57Z",
      "updated_at": "2024-11-25T11:28:58Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "0xAdriaTorralba",
        "avatar_url": "https://avatars.githubusercontent.com/u/11000364?u=893d7c679cedc8c86eeec78f89104b881e29e698&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51m",
      "number": 1022,
      "title": "Question: better integration with sketchybar",
      "body": "Hey there. I've been trying to build a proper dock-like menu bar for aerospace using sketchybar, and have run into some issues. I'm posting this in the hopes that someone else has tried this with more success, or has some suggestions.  This is where I got:\r\n\r\n<img width=\"464\" alt=\"Screenshot 2024-03-03 at 1 26 56 AM\" src=\"https://github.com/nikitabobko/AeroSpace/assets/8430991/6661567b-c812-49e2-8067-5838bee3f60e\">\r\n\r\nIt should support the following:\r\n- highlight active app.\r\n- highlight active workspace.\r\n- order apps in a somewhat sensible way (l-r, top-bottom)\r\n- update when creating/closing a window\r\n- update when moving windows left/right within a workspace.\r\n- update when moving windows between workspaces.\r\n\r\nMy impression is that there should be a better integration between aerospace and sketchybar, or else aerospace should just implement it's own menu bar. The communication between aerospace and sketchybar here is really messy (although I think this is mostly on sketchybar's side... it's very hard to manage state in sketchybar)\r\n\r\nI think this would be a really useful tool to have, especially for users with many workspaces who want a quick way to keep track of what is where.\r\n\r\nHere are my config files I hacked together. This is as far as I got before giving up.\r\n\r\n\r\n\r\n\r\n-------------------\r\n\r\naerospace.toml:\r\n```# You can use it to add commands that run after login to macOS user session.\r\n# 'start-at-login' needs to be 'true' for 'after-login-command' to work\r\n# Available commands: https://nikitabobko.github.io/AeroSpace/commands.html\r\nafter-login-command = []\r\n\r\n# You can use it to add commands that run after AeroSpace startup.\r\n# 'after-startup-command' is run after 'after-login-command'\r\n# Available commands : https://nikitabobko.github.io/AeroSpace/commands.html\r\nafter-startup-command = [\r\n    # JankyBorders has a built-in detection of already running process,\r\n    # so it won't be run twice on AeroSpace restart\r\n    'exec-and-forget borders',\r\n    # 'exec-and-forget /opt/homebrew/opt/sketchybar/bin/sketchybar'\r\n]\r\n\r\n\r\n[[on-window-detected]]\r\nrun = ['/bin/bash -c /opt/homebrew/opt/sketchybar/bin/sketchybar --trigger new-window']\r\n\r\n# Notify Sketchybar about workspace change\r\n# exec-on-workspace-change = [\r\n#     '/bin/bash',\r\n#     '-c',\r\n#     '/opt/homebrew/opt/sketchybar/bin/sketchybar --trigger change-focused-workspace FOCUSED=$AEROSPACE_FOCUSED_WORKSPACE PREV_FOCUSED=$AEROSPACE_PREV_WORKSPACE',\r\n# ]\r\n\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = false\r\n\r\n# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide.html#normalization\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/guide.html#layouts\r\n# The 'accordion-padding' specifies the size of accordion padding\r\n# You can set 0 to disable the padding feature\r\naccordion-padding = 30\r\n\r\n# Possible values: tiles|accordion\r\ndefault-root-container-layout = 'tiles'\r\n\r\n# Possible values: horizontal|vertical|auto\r\n# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,\r\n#               tall monitor (anything higher than wide) gets vertical orientation\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Gaps between windows (inner-*) and between monitor edges (outer-*).\r\n# Possible values:\r\n# - Constant:     gaps.outer.top = 8\r\n# - Per monitor:  gaps.outer.top = [{ monitor.main = 16 }, { monitor.\"some-pattern\" = 32 }, 24]\r\n#                 In this example, 24 is a default value when there is no match.\r\n#                 Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.\r\n#                 See: https://nikitabobko.github.io/AeroSpace/guide.html#assign-workspaces-to-monitors\r\n\r\n\r\ngaps.inner.horizontal = [\r\n    { monitor.\"built-in\" = 10 },\r\n    { monitor.\"LG Ultra HD\" = 12 },\r\n    10,\r\n]\r\ngaps.inner.vertical = [\r\n    { monitor.\"built-in\" = 10 },\r\n    { monitor.\"LG Ultra HD\" = 12 },\r\n    10,\r\n]\r\ngaps.outer.left = [\r\n    { monitor.\"built-in\" = 30 },\r\n    { monitor.\"LG Ultra HD\" = 30 },\r\n    10,\r\n]\r\ngaps.outer.bottom = [\r\n    { monitor.\"built-in\" = 10 },\r\n    { monitor.\"LG Ultra HD\" = 30 },\r\n    10,\r\n]\r\ngaps.outer.top = [\r\n    { monitor.\"built-in\" = 10 },\r\n    { monitor.\"LG Ultra HD\" = 60 },\r\n    30,\r\n]\r\ngaps.outer.right = [\r\n    { monitor.\"built-in\" = 10 },\r\n    { monitor.\"LG Ultra HD\" = 30 },\r\n    10,\r\n]\r\n\r\n# Visual indent makes it easier to understand that containers of the same orientation are nested.\r\n# If you have 'enable-normalization-opposite-orientation-for-nested-containers' enabled then\r\n# there is no way to observe the indent\r\nindent-for-nested-containers-with-the-same-orientation = 30\r\n\r\n# 'main' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide.html#binding-modes\r\n# 'main' binding mode must be always presented\r\n[mode.main.binding]\r\n\r\n# All possible keys:\r\n# - Letters.        a, b, c, ..., z\r\n# - Numbers.        0, 1, 2, ..., 9\r\n# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9\r\n# - F-keys.         f1, f2, ..., f20\r\n# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,\r\n#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab\r\n# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,\r\n#                   keypadMinus, keypadMultiply, keypadPlus\r\n# - Arrows.         left, down, up, right\r\n\r\n# All possible modifiers: cmd, alt, ctrl, shift\r\n\r\n# All possible commands: https://nikitabobko.github.io/AeroSpace/commands.html\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#layout\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#focus\r\nalt-h = ['focus left', 'exec-and-forget sketchybar --trigger change-focused-window']\r\nalt-j = ['focus down', 'exec-and-forget sketchybar --trigger change-focused-window']\r\nalt-k = ['focus up', 'exec-and-forget sketchybar --trigger change-focused-window']\r\nalt-l = ['focus right', 'exec-and-forget sketchybar --trigger change-focused-window']\r\n\r\nalt-ctrl-f = 'fullscreen'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#move\r\nalt-shift-h = ['move left', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-j = ['move down', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-k = ['move up', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-l = ['move right', 'exec-and-forget sketchybar --trigger move-window']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#resize\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#workspace\r\nalt-y = ['workspace 0', 'exec-and-forget sketchybar --trigger change-focused-workspace']\r\nalt-u = ['workspace 1', 'exec-and-forget sketchybar --trigger change-focused-workspace']\r\nalt-i = ['workspace 2', 'exec-and-forget sketchybar --trigger change-focused-workspace']\r\nalt-o = ['workspace 3', 'exec-and-forget sketchybar --trigger change-focused-workspace']\r\nalt-p = ['workspace 4', 'exec-and-forget sketchybar --trigger change-focused-workspace']\r\n\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#move-node-to-workspace\r\nalt-shift-y = ['move-node-to-workspace 0', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-u = ['move-node-to-workspace 1', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-i = ['move-node-to-workspace 2', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-o = ['move-node-to-workspace 3', 'exec-and-forget sketchybar --trigger move-window']\r\nalt-shift-p = ['move-node-to-workspace 4', 'exec-and-forget sketchybar --trigger move-window']\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#workspace-back-and-forth\r\nalt-tab = 'workspace-back-and-forth'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#move-workspace-to-monitor\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# See: https://nikitabobko.github.io/AeroSpace/commands.html#mode\r\nalt-shift-semicolon = 'mode service'\r\nalt-shift-slash = 'mode join'\r\n\r\n# 'service' binding mode declaration.\r\n# See: https://nikitabobko.github.io/AeroSpace/guide.html#binding-modes\r\n[mode.service.binding]\r\nr = ['flatten-workspace-tree', 'mode main'] # reset layout\r\n#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2\r\nf = [\r\n    'layout floating tiling',\r\n    'mode main',\r\n] # Toggle between floating and tiling layout\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\nesc = ['reload-config', 'mode main']\r\n\r\n# 'join' binding mode declaration\r\n# See: https://nikitabobko.github.io/AeroSpace/guide.html#binding-modes\r\n[mode.join.binding]\r\nalt-shift-h = ['join-with left', 'mode main']\r\nalt-shift-j = ['join-with down', 'mode main']\r\nalt-shift-k = ['join-with up', 'mode main']\r\nalt-shift-l = ['join-with right', 'mode main']\r\nesc = 'mode main'\r\n```\r\n\r\n\r\n\r\nsketchybarrc:\r\n```\r\n#! /bin/bash\r\n\r\nsource ~/.config/sketchybar/sketchybar-app-font/dist/icon_map.sh\r\n\r\nPLUGIN_DIR=\"$CONFIG_DIR/plugins\"\r\n\r\nBAR_COLOR=0xff22202b\r\nMAIN_COLOR=0xffa17fa7\r\nACCENT_COLOR=0xffe19286\r\n\r\nbar=(\r\n  height=32\r\n  # color=$BAR_COLOR\r\n  color=0x000000\r\n  # border_color=$MAIN_COLOR\r\n  # border_width=1\r\n  # corner_radius=10\r\n  shadow=off\r\n  position=top\r\n  sticky=on\r\n  padding_right=10\r\n  padding_left=10\r\n  y_offset=5\r\n  margin=15\r\n  notch_width=0\r\n)\r\n\r\nsketchybar --bar \"${bar[@]}\"\r\n\r\ndefault=(\r\n  padding_left=5\r\n  padding_right=5\r\n  label.font=\"Hack Nerd Font:Bold:14.0\"\r\n  icon.color=$MAIN_COLOR\r\n  label.color=$MAIN_COLOR\r\n  icon.padding_left=4\r\n  icon.padding_right=4\r\n  label.padding_left=4\r\n  label.padding_right=4\r\n)\r\n\r\nsketchybar --default \"${default[@]}\"\r\n\r\nsketchybar --add event aerospace-workspace-change\r\nsketchybar --add event change-focused-workspace\r\nsketchybar --add event change-focused-window\r\nsketchybar --add event move-window-within-workspace\r\nsketchybar --add event change-workspace\r\n\r\n\r\nfor sid in $(aerospace list-workspaces --all); do\r\n  label=(\r\n    label=\"$sid\"\r\n    label.color=$MAIN_COLOR\r\n    label.padding_right=13\r\n    script=\"$CONFIG_DIR/plugins/aerospace.sh change-focused-workspace $sid\"\r\n  )\r\n  sketchybar --add item label.$sid left \\\r\n    --subscribe label.$sid change-focused-workspace \\\r\n    --set label.$sid \"${label[@]}\"\r\n\r\n  icons=()\r\n  while IFS= read -r line; do\r\n\r\n    window_id=$(echo $line | awk -F ' \\\\| ' '{print $1}')\r\n    icons+=(\"icon.$window_id\")\r\n\r\n    #this is to set the focused window a highlighted color\r\n    # focused_window_info=$(aerospace list-windows --focused)\r\n    focused_window_id=$(echo $focused_window_info | awk -F ' \\\\| ' '{print $1}')\r\n    # echo $focused_window_id\r\n    if [ \"$window_id\" = \"$focused_window_id\" ]; then\r\n        icon_color=$ACCENT_COLOR\r\n    else\r\n        icon_color=$MAIN_COLOR\r\n    fi\r\n    # echo $icon_color\r\n    \r\n\r\n    app_name=$(echo $line | awk -F ' \\\\| ' '{print $2}')\r\n    __icon_map \"${app_name}\"\r\n\r\n    icon=(\r\n      icon=\"${icon_result}\"\r\n      icon.font=\"sketchybar-app-font:Regular:20.0\"\r\n      icon.color=\"$icon_color\"\r\n      label.align=center\r\n      click_script=\"aerospace workspace $sid\"\r\n      script=\"$CONFIG_DIR/plugins/aerospace.sh change-focused-window $window_id\"\r\n    )\r\n\r\n    sketchybar --add item icon.$window_id left \\\r\n      --subscribe icon.$window_id change-focused-workspace change-focused-window \\\r\n      --set icon.$window_id \"${icon[@]}\"\r\n  done < <(aerospace list-windows --workspace \"$sid\")\r\n\r\n  echo ${icons[@]}\r\n  space=(\r\n    background.height=26\r\n    background.corner_radius=4\r\n    background.border_color=$MAIN_COLOR\r\n    background.border_width=1\r\n    background.color=0x00000000\r\n    script=\"$CONFIG_DIR/plugins/aerospace.sh create-delete-window\"\r\n  )\r\n  sketchybar --add bracket space.$sid label.$sid ${icons[@]} \\\r\n    --subscribe space.$sid space_windows_change \\\r\n    --set space.$sid \"${space[@]}\"\r\n\r\ndone\r\n\r\nsketchybar --add item clock right \\\r\n           --set clock update_freq=10 icon=  script=\"$PLUGIN_DIR/clock.sh\" \\\r\n           --add item volume right \\\r\n           --set volume script=\"$PLUGIN_DIR/volume.sh\" \\\r\n           --subscribe volume volume_change \\\r\n           --add item battery right \\\r\n           --set battery update_freq=120 script=\"$PLUGIN_DIR/battery.sh\" \\\r\n           --subscribe battery system_woke power_source_change\r\n\r\n##### Force all scripts to run the first time (never do this in a script) #####\r\n# sketchybar --update\r\n```\r\n\r\n\r\naerospace.sh:\r\n```\r\n#!/usr/bin/env bash\r\n\r\nMAIN_COLOR=0xffa17fa7\r\nACCENT_COLOR=0xffe19286\r\n\r\nif [ \"$1\" = \"change-focused-window\" ]; then\r\n    echo \"change-focused-window\"\r\n    focused_window_info=$(aerospace list-windows --focused)\r\n    focused_window_id=$(echo $focused_window_info | awk -F ' \\\\| ' '{print $1}')\r\n    if [ \"$2\" = \"$focused_window_id\" ]; then\r\n        sketchybar --set $NAME icon.color=$ACCENT_COLOR\r\n    else\r\n        sketchybar --set $NAME icon.color=$MAIN_COLOR\r\n    fi\r\nfi\r\n\r\nif [ \"$1\" = \"change-focused-workspace\" ]; then\r\n    echo \"change-focused-workspace\"\r\n    focused_workspace=$(aerospace list-workspaces --focused)\r\n    if [ \"$2\" = \"$focused_workspace\" ]; then\r\n        sketchybar --set $NAME label.color=$ACCENT_COLOR\r\n    else\r\n        sketchybar --set $NAME label.color=$MAIN_COLOR\r\n    fi\r\nfi\r\n\r\nif [ \"$1\" = \"move-window-within-workspace\" ]; then\r\n    echo \"move-window-within-workspace\"\r\n    focused_workspace=$(aerospace list-workspaces --focused)\r\n    if [ \"$2\" = \"$focused_workspace\" ]; then\r\n        sketchybar --set $NAME label.color=$ACCENT_COLOR\r\n    else\r\n        sketchybar --set $NAME label.color=$MAIN_COLOR\r\n    fi\r\nfi\r\n\r\n\r\nif [ \"$1\" = \"create-delete-window\" ]; then\r\n    echo \"create-delete\"\r\n    apps_in_window=$(aerospace list-windows --workspace $(aerospace list-workspaces --focused))\r\n    # echo $apps_in_window\r\n    # echo $INFO\r\n\r\n    #USE A REGEX IN SKETCHYBAR. Prefix all your icons with their window id.\r\n    sketchybar --remove /icon./\r\n    sketchybar --remove /label./\r\n    sketchybar --remove /space./\r\n\r\n    # #Re-render all app icons in all workspaces\r\n    source ~/.config/sketchybar/sketchybar-app-font/dist/icon_map.sh\r\n\r\n    PLUGIN_DIR=\"$CONFIG_DIR/plugins\"\r\n\r\n    BAR_COLOR=0xff22202b\r\n    MAIN_COLOR=0xffa17fa7\r\n    ACCENT_COLOR=0xffe19286\r\n    default=(\r\n    padding_left=5\r\n    padding_right=5\r\n    label.font=\"Hack Nerd Font:Bold:14.0\"\r\n    icon.color=$MAIN_COLOR\r\n    label.color=$MAIN_COLOR\r\n    icon.padding_left=4\r\n    icon.padding_right=4\r\n    label.padding_left=4\r\n    label.padding_right=4\r\n    )\r\n\r\n    sketchybar --default \"${default[@]}\"\r\n\r\n    for sid in $(aerospace list-workspaces --all); do\r\n        label=(\r\n            label=\"$sid\"\r\n            label.color=$MAIN_COLOR\r\n            label.padding_right=13\r\n            script=\"$CONFIG_DIR/plugins/aerospace.sh change-focused-workspace $sid\"\r\n        )\r\n        sketchybar --add item label.$sid left \\\r\n            --subscribe label.$sid change-focused-workspace \\\r\n            --set label.$sid \"${label[@]}\"\r\n\r\n        icons=()\r\n        while IFS= read -r line; do\r\n            window_id=$(echo $line | awk -F ' \\\\| ' '{print $1}')\r\n            icons+=(\"icon.$window_id\")\r\n\r\n            app_name=$(echo $line | awk -F ' \\\\| ' '{print $2}')\r\n            __icon_map \"${app_name}\"\r\n\r\n            icon=(\r\n            icon=\"${icon_result}\"\r\n            icon.font=\"sketchybar-app-font:Regular:20.0\"\r\n            label.align=center\r\n            click_script=\"aerospace workspace $sid\"\r\n            script=\"$CONFIG_DIR/plugins/aerospace.sh change-focused-window $window_id\"\r\n            )\r\n\r\n            sketchybar --add item icon.$window_id left \\\r\n            --subscribe icon.$window_id change-focused-workspace change-focused-window \\\r\n            --set icon.$window_id \"${icon[@]}\"\r\n        done < <(aerospace list-windows --workspace \"$sid\")\r\n\r\n        # echo ${icons[@]}\r\n        space=(\r\n            background.height=26\r\n            background.corner_radius=4\r\n            background.border_color=$MAIN_COLOR\r\n            background.border_width=1\r\n            background.color=0x00000000\r\n            script=\"$CONFIG_DIR/plugins/aerospace.sh create-delete-window\"\r\n        )\r\n        sketchybar --add bracket space.$sid label.$sid ${icons[@]} \\\r\n            --subscribe space.$sid space_windows_change \\\r\n            --set space.$sid \"${space[@]}\"\r\n\r\n    done\r\n\r\nfi\r\n\r\n#also need MOVE window. get the order from aerospace list-windows --workspace. bind the \"move\" aerospace commands in aerospace.toml to exec 'sketchybar --trigger ...'.\r\n```\r\n",
      "created_at": "2024-03-03T09:38:52Z",
      "updated_at": "2025-01-18T20:59:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "regisverdin",
        "avatar_url": "https://avatars.githubusercontent.com/u/8430991?u=47487d836d3f0d889eed159f5fb282e896fb3335&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acye1",
      "number": 753,
      "title": "When is new version/release available?",
      "body": "Hi, everyone, i like this tile manager and would like to know when to expect next version with \"ghost windows\" issue fixed?\r\nThank you",
      "created_at": "2024-11-24T22:39:04Z",
      "updated_at": "2024-11-24T22:39:04Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hevzy86",
        "avatar_url": "https://avatars.githubusercontent.com/u/23268336?u=a60008c1be105fe0156ab1cfa805d4d70684335d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acuff",
      "number": 737,
      "title": "`summon-workspace` different behavior with main/secondary monitors",
      "body": "Using `summon-workspace`, when I focus on the main monitor and the workspace I'm moving to is on an external monitor, it replaces the workspace on the main monitor. On the other hand, if I focus on an external monitor and select a workspace that's already on another monitor, it will move to that monitor, which is the behavior I'd expect everywhere. Is this behavior intentional?",
      "created_at": "2024-11-22T03:01:12Z",
      "updated_at": "2025-01-02T00:04:02Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ok-nick",
        "avatar_url": "https://avatars.githubusercontent.com/u/25470747?u=df9c2008307d1dc982edd3d65875c6d1fa5cd534&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acvfm",
      "number": 743,
      "title": "Tall Layout and rotAllDown a la XMonad",
      "body": "In XMonad, I typically use the Tall Layout, which has a single window taking up the left half of the screen, and a vertical stack on the right. I have a few questions:\r\n1. Is there a canonical way to replicate this layout in AeroSpace? Such that new windows get moved into the vertical stack when opened?\r\n2. Is there a way of changing the default width? I usually have the main window on the left take up 2/3rds of the width of the screen.\r\n3. Is there a canonical way to implement the `rotAllDown` command? For reference, this moves the main window to the top of the vertical stack, and moves the bottom window of the stack to be the new main window.",
      "created_at": "2024-11-22T16:08:44Z",
      "updated_at": "2024-11-24T02:18:10Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "d4hines",
        "avatar_url": "https://avatars.githubusercontent.com/u/25231383?u=a48565cfce580f3dd733842fc5ad9c46d007fea9&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51U",
      "number": 1017,
      "title": "UI indication that a window is currently in fullscreen mode",
      "body": "Having the ability to temporarily break the layout and make a single window fullscreen is useful. However, looking at a fullscreen window, there is no indication AFAICT that I am looking at a window in fullscreen mode as opposed to a workspace with only a single window.\r\n\r\nIs there a way to give the user some indication that they are in fullscreen mode? Perhaps something like service mode where the menu bar goes from `1` to `[s] 1`?",
      "created_at": "2024-11-17T19:41:18Z",
      "updated_at": "2025-01-18T20:51:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "samuela",
        "avatar_url": "https://avatars.githubusercontent.com/u/226872?u=77a7e7d5d716a64aa859dd02f3d5564848f4c0dc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acw6K",
      "number": 750,
      "title": "How is memory usage compared to yabai?",
      "body": "Approximately how much memory does AeroSpace use compared to yabai? \r\n\r\nI am currently using yabai and have been monitoring its memory usage. It uses about 1gb of ram, and almost another if I run JankyBorders (with glow) effects. Without glow, the border effect's memory usage is unnoticeable.\r\n\r\nJust wanted to post a quick question before I start migrating. Which I probably will soon.\r\n",
      "created_at": "2024-11-23T22:24:48Z",
      "updated_at": "2024-11-25T06:51:36Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nach00",
        "avatar_url": "https://avatars.githubusercontent.com/u/5945533?u=de69c00217a9e145f99334bc3223693b0028701c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acu6c",
      "number": 739,
      "title": "Exec and forget doesn't seem to work",
      "body": "**Describe the bug**\r\nI have a script where I reset all the windows to their dedicated workspaces and then on a keybind use exec and forget to run that script. That script runs fine in the shell. However, in Aerospace it doesn't work.\r\n\r\nHere's my config\r\n```toml\r\n# Commands to run after login\r\nafter-login-command = [\r\n\r\n]\r\n\r\n# Commands to run after AeroSpace startup\r\nafter-startup-command = [\r\n    # 'osascript -e \"tell application \\\\\"Visual Studio Code\\\\\" to activate\"',\r\n]\r\n\r\n# Start AeroSpace at login\r\nstart-at-login = true\r\n\r\n# Enable normalization rules\r\nenable-normalization-flatten-containers = true\r\nenable-normalization-opposite-orientation-for-nested-containers = true\r\n\r\n# Layout and orientation settings\r\naccordion-padding = 30\r\ndefault-root-container-layout = 'tiles'\r\ndefault-root-container-orientation = 'auto'\r\n\r\n# Mouse follows focus on monitor change\r\non-focused-monitor-changed = ['move-mouse monitor-lazy-center']\r\n\r\non-focus-changed = ['move-mouse monitor-lazy-center']\r\n\r\n# Disable macOS \"Hide Application\" (Cmd + H)\r\n# automatically-unhide-macos-hidden-apps = false\r\n[exec.env-vars]\r\nSHELL = '/bin/bash'\r\n\r\n# Key mapping preset\r\n[key-mapping]\r\npreset = 'qwerty'\r\n\r\n# Gaps settings\r\n[gaps]\r\nouter.bottom =        [{monitor.'^built-in retina display$' = 10 }, 10]\r\nouter.top =        [{monitor.'^built-in retina display$' = 20 }, 52]\r\nouter.left =       13\r\nouter.right =      13\r\ninner.horizontal = 10\r\ninner.vertical =   10\r\n\r\n# Binding Modes - Main mode\r\n[mode.main.binding]\r\ncmd-h = [] # Disable \"hide application\"\r\ncmd-alt-h = [] # Disable \"hide others\"\r\n\r\n# Application shortcuts\r\nalt-enter = '''exec-and-forget osascript -e '\r\ntell application \"Wezterm\"\r\n    do script\r\n    activate\r\nend tell'\r\n'''\r\n\r\n# Layout shortcuts\r\nalt-slash = 'layout tiles horizontal vertical'\r\nalt-comma = 'layout accordion horizontal vertical'\r\n\r\n# Focus navigation shortcuts\r\nalt-h = 'focus left'\r\nalt-j = 'focus down'\r\nalt-k = 'focus up'\r\nalt-l = 'focus right'\r\n\r\n# Move window shortcuts\r\nalt-shift-h = 'move left'\r\nalt-shift-j = 'move down'\r\nalt-shift-k = 'move up'\r\nalt-shift-l = 'move right'\r\n\r\nalt-shift-i = 'exec-and-forget /Users/aryan.rahman/aerospace.sh'\r\n\r\n\r\n# Resize window shortcuts\r\nalt-shift-minus = 'resize smart -50'\r\nalt-shift-equal = 'resize smart +50'\r\n\r\nalt-1 = 'workspace --auto-back-and-forth 1'\r\nalt-2 = 'workspace --auto-back-and-forth 2'\r\nalt-3 = 'workspace --auto-back-and-forth 3'\r\nalt-4 = 'workspace --auto-back-and-forth 4'\r\nalt-5 = 'workspace --auto-back-and-forth 5'\r\nalt-6 = 'workspace --auto-back-and-forth 6'\r\nalt-7 = 'workspace --auto-back-and-forth 7'\r\nalt-8 = 'workspace --auto-back-and-forth 8'\r\nalt-9 = 'workspace --auto-back-and-forth 9'\r\nalt-a = 'workspace --auto-back-and-forth Browser:Personal' # In your config, you can drop workspace bindings that you don't need\r\nalt-e = 'workspace --auto-back-and-forth Email'\r\nalt-w = 'workspace --auto-back-and-forth Browser:Work'\r\nalt-t = 'workspace --auto-back-and-forth Terminal'\r\nalt-c = 'workspace --auto-back-and-forth code_editor'\r\nalt-f = 'fullscreen'\r\nalt-n = 'workspace --auto-back-and-forth Notes'\r\n\r\nalt-m = 'workspace --auto-back-and-forth Messaging'\r\n# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace\r\nalt-shift-1 = 'move-node-to-workspace 1'\r\nalt-shift-2 = 'move-node-to-workspace 2'\r\nalt-shift-3 = 'move-node-to-workspace 3'\r\nalt-shift-4 = 'move-node-to-workspace 4'\r\nalt-shift-5 = 'move-node-to-workspace 5'\r\nalt-shift-6 = 'move-node-to-workspace 6'\r\nalt-shift-7 = 'move-node-to-workspace 7'\r\nalt-shift-8 = 'move-node-to-workspace 8'\r\nalt-shift-9 = 'move-node-to-workspace 9'\r\nalt-shift-a = 'move-node-to-workspace Browser:Personal' # In your config, you can drop workspace bindings that you don't need\r\nalt-shift-e = 'move-node-to-workspace Email'\r\nalt-shift-w = 'move-node-to-workspace Browser:Work'\r\nalt-shift-t = 'move-node-to-workspace Terminal'\r\nalt-shift-c = 'move-node-to-workspace code_editor'\r\nalt-shift-n = 'move-node-to-workspace Notes'\r\nalt-shift-m = 'move-node-to-workspace Messaging'\r\n\r\n# Workspace back and forth\r\nalt-tab = 'workspace-back-and-forth'\r\nalt-shift-tab = 'move-workspace-to-monitor --wrap-around next'\r\n\r\n# Special mode: Service\r\nalt-shift-semicolon = 'mode service'\r\n\r\n# Service mode bindings\r\n[mode.service.binding]\r\nesc = ['reload-config', 'mode main']\r\nr = ['flatten-workspace-tree', 'mode main']\r\nf = ['layout floating tiling', 'mode main']\r\nbackspace = ['close-all-windows-but-current', 'mode main']\r\n\r\n# Application assignments to workspaces\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.VSCode'\r\nrun = ['move-node-to-workspace code_editor']\r\n\r\n[[on-window-detected]]\r\nif.workspace = '6'\r\ncheck-further-callbacks = true\r\nrun = ['layout floating']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'company.thebrowser.Browser'\r\nrun = ['layout tiling', 'move-node-to-workspace Browser:Personal']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.github.wez.wezterm'\r\nrun = ['layout tiling', 'move-node-to-workspace Terminal']\r\n[[on-window-detected]]\r\nif.app-id = 'md.obsidian'\r\nrun = ['layout tiling', 'move-node-to-workspace Notes']\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.finder'\r\nrun = [\r\n'layout floating'\r\n]\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nrun = [\r\n'layout floating'\r\n]\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.teams2'              \r\nrun = ['move-node-to-workspace Messaging']  \r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.Outlook'              \r\nrun = ['move-node-to-workspace Email']  \r\n\r\n\r\n[[on-window-detected]]\r\nif.app-id = 'com.microsoft.edgemac'              \r\nrun = ['move-node-to-workspace Browser:Work']  \r\n\r\n[[on-window-detected]]\r\ncheck-further-callbacks = true\r\nrun = ['layout floating', 'move-node-to-workspace 6']  \r\n# Notify SketchyBar about workspace changes (Optional)\r\n# exec-on-workspace-change = [\r\n#     '/bin/bash', '-c',\r\n#     'sketchybar --trigger aerospace_workspace_change FOCUSED=$AEROSPACE_FOCUSED_WORKSPACE'\r\n# ]\r\n\r\n```\r\n\r\nI've tried setting execution environment still doesn't work. The command is alt-shift-i\r\n\r\n**Related issues you could find**\r\nPlease make sure to search for duplicates.\r\nIf you couldn't find the duplicates, linking related issues is helpful anyway.\r\n",
      "created_at": "2024-11-22T05:57:30Z",
      "updated_at": "2024-11-23T08:02:04Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Aryan3212",
        "avatar_url": "https://avatars.githubusercontent.com/u/57558971?u=3902a6a84e42450f6b6559c45833a3f31e8be372&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcuWy",
      "number": 736,
      "title": "How to rotate focused container?",
      "body": "Hi, I was wondering how to rotate the focused container, e.g. horizontal->vertical, vertical->horizontal. Initially, I expected \"layout tiles horizontal vertical\" to do this, but it seems it rotates the root container instead? In i3, I believe it was \"layout toggle split\" for this behavior.\r\n\r\nHere's an example of what I'm looking for:\r\n```\r\nh_tiles\r\n├── window 1\r\n└── v_tiles\r\n    ├── window 2 (focused)\r\n    └── window 3\r\n```\r\nWhen \"rotate focused container\" is applied:\r\n```\r\nh_tiles\r\n├── window 1\r\n└── h_tiles <--- notice how this changes\r\n    ├── window 2 (focused)\r\n    └── window 3\r\n```",
      "created_at": "2024-11-22T00:07:47Z",
      "updated_at": "2024-11-22T20:17:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArTCt",
        "body": "Please look for normalizations in the docs. You need to disable one of them. Though I recommend doing that only if you are a hardcore i3 user, disabling normalizations leads to weird layouts"
      },
      "user": {
        "login": "ok-nick",
        "avatar_url": "https://avatars.githubusercontent.com/u/25470747?u=df9c2008307d1dc982edd3d65875c6d1fa5cd534&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acvii",
      "number": 744,
      "title": "How to allow an intercepted binding to \"passthrough\" to other applications?",
      "body": "So I have this binding in my config:\r\n```\r\nalt-1 = 'workspace-1'\r\n```\r\n\r\nI would like aerospace to invoke the `workspace-1` command, but also let the `alt + 1` input be sent to the system so that other applications can listen to it. Is it possible to do this?\r\nSomething like\r\n\r\n```\r\nalt-1 = ['workspace 1', 'passthrough']\r\n```\r\n\r\nI tried some hacks like below, but to no avail\r\n```\r\n# mode foo does not actually exist in my config\r\nalt-1 = ['workspace 1', 'trigger-binding --mode foo alt-1']\r\n```\r\n\r\nJust to make sure I'm not asking for something dumb, my only goal with this would be to allow [klack](https://tryklack.com/) to play keyboard sounds when I press `alt-1` 😆 Right now invoking any aerospace commands results in a silent keypress",
      "created_at": "2024-11-22T16:46:33Z",
      "updated_at": "2024-11-22T16:49:27Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "adarah",
        "avatar_url": "https://avatars.githubusercontent.com/u/36046024?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acl_J",
      "number": 716,
      "title": "Cycle through clients",
      "body": "I am new to `AeroSpace` previously I have used i3WM, DWM, HyperLand and a big fan of DWM. \r\n\r\nIn DWM there is a way of cycle through the opened clients by pressing only `J` or `K` key. I am wondering is there something similar here also or how can I achieve this functionality?",
      "created_at": "2024-11-17T05:03:45Z",
      "updated_at": "2024-11-21T23:46:54Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "aba-wtag",
        "avatar_url": "https://avatars.githubusercontent.com/u/185671869?u=a2eccfa8355dda3a98f652497663d3b133536f50&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcuNt",
      "number": 735,
      "title": "Unable to start AeroSpace",
      "body": "Hi, I tried to open Aerospace by clicking the icon, go to the application folder and right click open, and also using Spotlight search Aerospace then enter, but no respond after performing those actions. Aerospace icon is not shown in the menu bar. It might have something to do with macos 15.1.1 which I updated yesterday, but I'm not sure.\r\n\r\nBelow are some info by running `aerospace -v`:\r\n```\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: Unknown. The server is not running\r\n```\r\n\r\nSystem info:\r\n```\r\nOS: macOS Sequoia 15.1.1 arm64\r\nHost: MacBook Pro (14-inch, 2021)\r\nKernel: Darwin 24.1.0\r\nUptime: 2 hours, 5 mins\r\nPackages: 626 (nix-system), 45 (nix-default), 2 (brew), 16 (brew-cask)\r\nShell: zsh 5.9\r\nDisplay (Color LCD): 3024x1964 @ 120 Hz (as 1512x982) in 14\" [Built-in]\r\nDE: Aqua\r\nWM: Quartz Compositor\r\nWM Theme: Multicolor (Light)\r\nFont: .AppleSystemUIFont [System], Helvetica [User]\r\nCursor: Fill - Black, Outline - White (32px)\r\nTerminal: WezTerm 20240203-110809-5046fc22\r\nTerminal Font: JetBrains Mono\r\nCPU: Apple M1 Pro (8) @ 3.23 GHz\r\nGPU: Apple M1 Pro (14) @ 1.30 GHz [Integrated]\r\nMemory: 10.01 GiB / 16.00 GiB (63%)\r\nSwap: Disabled\r\nDisk (/): 136.86 GiB / 460.43 GiB (30%) - apfs [Read-only]\r\nLocal IP (en0): 10.194.206.54/14\r\nBattery (bq40z651): 82% (9 hours, 50 mins remaining) [Discharging]\r\nLocale: en_US.UTF-8\r\n```",
      "created_at": "2024-11-21T20:10:15Z",
      "updated_at": "2024-11-21T23:21:54Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArRAl",
        "body": "Okay I found the issue. There's something wrong with my aerospace config, so AeroSpace aborts on start. But there's no error message whatsoever. After I switched to the default config then it's able to start."
      },
      "user": {
        "login": "Slijeff",
        "avatar_url": "https://avatars.githubusercontent.com/u/31459252?u=083776331690bbcf427766071e33ac28bb8d271d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acozg",
      "number": 723,
      "title": "Aerospace not recognizing when I close a window",
      "body": "When I have two windows in one space and close one of these windows the other window does not tile to fit fullscreen, only when I quit the other app does it tile to the rest of the space like it should. I am on MacOS 15.1. I've tried uninstalling aerospace, going to the default config, not sure what to try next, wondering if anyone else has experienced this and if you know how I could fix it, Thanks!",
      "created_at": "2024-11-18T15:58:35Z",
      "updated_at": "2024-11-21T20:30:53Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "noahdurbin",
        "avatar_url": "https://avatars.githubusercontent.com/u/13364668?u=78fe4bae724be467d63e2bd5071c23fbf7e9fba2&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcsgH",
      "number": 731,
      "title": "aligning 4 tiles as quadrangle",
      "body": "Please redirect me if this is discussed before.\r\nWhen I open 4 windows of terminal, I would like to align them like quadrangle. I tried but I couldn't succeed, is it possible to align like this or not?",
      "created_at": "2024-11-20T18:38:16Z",
      "updated_at": "2024-11-20T19:27:39Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "vkumbhar94",
        "avatar_url": "https://avatars.githubusercontent.com/u/8520756?u=0f06a846e1a1fe88aee384b2ed6c945262f8a3fd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcVeH",
      "number": 663,
      "title": "Ability to have multiple workspaces on monitors",
      "body": "Coming from Amethyst and switched to AeroSpace mainly for stability and performance improvements. Love the solution so far, the only thing that I'm missing here (or I'm unable to find it) is ability to have multiple workspaces for each monitor and toggle between them in a focused monitor using keyboard shortcuts. Is there a way to achieve this via settings, or is it by design to only support one workspace for each external monitor and support multiple workspaces only on main monitor?\r\nI'd usually fallback to MacOS native multiple desktops (spaces) solution, but it doesn't appear to work fine with AeroSpace.",
      "created_at": "2024-11-05T09:05:03Z",
      "updated_at": "2024-11-20T16:47:47Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rpensek",
        "avatar_url": "https://avatars.githubusercontent.com/u/12932390?u=eccbbc7c399aacd90b84f79cb2eaa3e36bda230d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acjb2",
      "number": 704,
      "title": "Joining a window with another in accordion layout",
      "body": "Hi,\r\n\r\nThanks @nikitabobko for enabling discussions. I hope they have reduced some of the noise in issues that should be questions (and vice versa).\r\n\r\nI am running accordion layout in one of my workspaces where I have several VS Code windows. I sometimes want to have two windows side-by-side in this accordion layout. I can't switch to tiles as there's many windows so each window will be barely visible.\r\n\r\nMy workaround currently is to move the windows that I want to put side-by-side to another workspace that has tiles layout.\r\n\r\nI might be the only one that wants to do this but thought I'd ask 😄 \r\n\r\nThanks!!",
      "created_at": "2024-11-14T23:28:40Z",
      "updated_at": "2024-11-20T16:37:12Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "gservat",
        "avatar_url": "https://avatars.githubusercontent.com/u/1061151?u=a738f550365ce2d556a4e9fddd9a6b1802359528&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acrp-",
      "number": 729,
      "title": "KeyMapping",
      "body": "Hello everyone,\r\n\r\nmy keymapping is set to qwerty, but I use a qwertz keyboard. Now I am trying to find the exact name of the key for a certain function, so far without success....  \r\n \r\nalt-shift-slash = 'resize smart -50'\r\nalt-shift-rightbracket = 'resize smart +50'\r\n\r\nSlash is minus for me, which also works. But not with the square bracket on the right, which would be plus for me, I can't get any further.\r\n\r\nI have already tested the following spellings:\r\n\r\nrightbracket\r\nbracketright\r\nright-bracket\r\nbracket-right\r\nright_bracket\r\nbracket_right\r\n\r\nI am grateful for any help....",
      "created_at": "2024-11-20T08:05:20Z",
      "updated_at": "2024-11-20T08:43:56Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArLhk",
        "body": "Based on the file Sources/AppBundle/config/keysMap.swift, you should try 'rightSquareBracket'"
      },
      "user": {
        "login": "Neo3477",
        "avatar_url": "https://avatars.githubusercontent.com/u/82307262?u=85822e3a82160ac1ba9652f23a3334558ce4cf36&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcPU1",
      "number": 650,
      "title": "Question: Query the current mode/workspace",
      "body": "Hello, new Aerospace user here, love it so far!\r\n\r\nIs there a way to query (ideally from the CLI) the current mode/workspace? A bit like the tray display, I'd like to show this in my Sketchybar toolbar (not the native MacOS one).\r\n\r\nThanks!",
      "created_at": "2024-10-31T19:47:36Z",
      "updated_at": "2024-11-20T03:15:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4ArKmb",
        "body": "Take a look here: https://nikitabobko.github.io/AeroSpace/goodness#show-aerospace-workspaces-in-sketchybar\r\n\r\nI haven't updated my dotfiles yet but this is what I have so far:\r\n\r\nmake sure to edit your aerospace config file with:\r\n```toml\r\n# Notify Sketchybar about workspace change\r\nexec-on-workspace-change = [\r\n  '/bin/bash',\r\n  '-c',\r\n  'sketchybar --trigger aerospace_workspace_change FOCUSED=$AEROSPACE_FOCUSED_WORKSPACE',\r\n]\r\n```\r\n\r\nitems/aerospace_workspace.sh\r\n```sh\r\n#!/usr/bin/env bash\r\n\r\n# Workspace names\r\nget_workspace_name() {\r\n    case \"$1\" in\r\n    \"1\") echo \"Web\" ;;\r\n    \"2\") echo \"Misc\" ;;\r\n    \"3\") echo \"Code\" ;;\r\n    \"4\") echo \"Media\" ;;\r\n    *) echo \"$1\" ;; # Default to SID\r\n    esac\r\n}\r\n\r\n# Workspace icons\r\nget_workspace_icon() {\r\n    case \"$1\" in\r\n    \"1\") echo \"󰖟 \" ;;\r\n    \"2\") echo \"󰯉 \" ;;\r\n    \"3\") echo \" \" ;;\r\n    \"4\") echo \"󰝚\" ;;\r\n    *) echo \" \" ;; # Default icon\r\n    esac\r\n}\r\n\r\nsketchybar --add event aerospace_workspace_change\r\n\r\n# Styling\r\nspaces=(\r\n    label.padding_left=0\r\n    label.padding_right=6\r\n)\r\n\r\n# Retrieve the current focused workspace\r\nFOCUSED_WORKSPACE=$(aerospace list-workspaces --focused)\r\n\r\nfor SID in $(aerospace list-workspaces --all); do\r\n    # Get the name and icon for the workspace\r\n    WORKSPACE_NAME=$(get_workspace_name \"$SID\")\r\n    WORKSPACE_ICON=$(get_workspace_icon \"$SID\")\r\n\r\n    sketchybar --add item space.\"$SID\" left \\\r\n        --subscribe space.\"$SID\" aerospace_workspace_change \\\r\n        --set space.\"$SID\" \"${spaces[@]}\" \\\r\n        label=\"$WORKSPACE_NAME\" \\\r\n        icon=\"$WORKSPACE_ICON\" \\\r\n        click_script=\"aerospace workspace $SID; sketchybar --trigger aerospace_workspace_change\" \\\r\n        script=\"FOCUSED_WORKSPACE=$FOCUSED_WORKSPACE $CONFIG_DIR/plugins/aerospace_workspace.sh $SID\"\r\ndone\r\n```\r\n\r\nplugins/aerospace_workspace.sh\r\n```sh\r\n#!/usr/bin/env bash\r\n\r\n# Define colors\r\nACT_ICON_COLOR=\"$(getcolor orange)\"\r\nACT_NAME_COLOR=\"$(getcolor white)\"\r\nINA_ICON_COLOR=\"$(getcolor fg 50)\"\r\nINA_NAME_COLOR=\"$(getcolor grey)\"\r\n\r\n# Get the currently focused workspace dynamically\r\nCURRENT_FOCUSED_WORKSPACE=$(aerospace list-workspaces --focused)\r\n\r\n# Determine state and update settings\r\nif [ \"$1\" = \"$CURRENT_FOCUSED_WORKSPACE\" ]; then\r\n    sketchybar --set \"$NAME\" \\\r\n        background.drawing=on \\\r\n        icon.color=\"$ACT_ICON_COLOR\" \\\r\n        label.color=\"$ACT_NAME_COLOR\"\r\nelse\r\n    sketchybar --set \"$NAME\" \\\r\n        background.drawing=off \\\r\n        icon.color=\"$INA_ICON_COLOR\" \\\r\n        label.color=\"$INA_NAME_COLOR\"\r\nfi\r\n```\r\n\r\nFor the modes..\r\n\r\nitems/aerospace_mode.sh\r\n```sh\r\n#!/usr/bin/env zsh\r\n\r\n# Aerospace mode  settings\r\nsketchybar --add item aerospace_mode center \\\r\n    --set aerospace_mode \\\r\n    label.drawing=on \\\r\n    icon.drawing=on \\\r\n    icon.padding_left=8 \\\r\n    icon.padding_right=6 \\\r\n    label.padding_left=6 \\\r\n    label.padding_right=8 \\\r\n    icon.color=\"$(getcolor red)\" \\\r\n    label.color=\"$(getcolor grey 50)\" \\\r\n    script=\"$CONFIG_DIR/plugins/aerospace_mode.sh\"\r\n\r\n# Add and subscribe to the aerospace_mode_change event\r\nsketchybar --add event aerospace_mode_change \\\r\n    --subscribe aerospace_mode aerospace_mode_change\r\n```\r\n\r\nplugins/aerospace_mode.sh\r\n```sh\r\n#!/usr/bin/env zsh\r\n\r\n# Mode icon\r\nget_mode_icon() {\r\n    case \"$1\" in\r\n    main) echo \" \" ;;\r\n    manage) echo \"\" ;;\r\n    *) echo \" \" ;; # Fallback icon for unknown modes\r\n    esac\r\n}\r\n\r\n# Mode label\r\nget_mode_label() {\r\n    case \"$1\" in\r\n    main) echo \"Main Mode\" ;;\r\n    manage) echo \"Manage Mode\" ;;\r\n    *) echo \"Unknown mode\" ;; # Fallback label for unknown modes\r\n    esac\r\n}\r\n\r\n# Get current mode; default to main\r\nMODE=\"${MODE:-main}\"\r\n\r\n# Debugging: Log the mode for troubleshooting\r\n#echo \"$(date) - Mode: $MODE\" >>/tmp/aerospace_mode_debug.log\r\n\r\n# Set icon and label\r\nICON=$(get_mode_icon \"$MODE\")\r\nLABEL=$(get_mode_label \"$MODE\")\r\n\r\n# Update sketchybar item\r\nsketchybar --set aerospace_mode \\\r\n    icon=\"$ICON\" \\\r\n    label=\"$LABEL\"\r\n```\r\n\r\nThan you can simply call the modes inside: aerospace.toml:\r\n```sh\r\n'exec-and-forget sketchybar --trigger aerospace_mode_change MODE=main'\r\n```\r\n\r\nAlso don't forget to remove my custom functions/helpers such as `(getcolor orange)` \r\n\r\nHope this helps! 😁 "
      },
      "user": {
        "login": "lpturmel",
        "avatar_url": "https://avatars.githubusercontent.com/u/71670411?u=1813b5899c2c1121e64daa96feab43089384c2e0&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdyiY",
      "number": 961,
      "title": "Emacs child frames don't trigger re-layout",
      "body": "[Emacs child frames](https://www.gnu.org/software/emacs/manual/html_node/elisp/Child-Frames.html) add a window but it's \"part\" of the parent window (i.e., it's in the same blue frame when using app expose).  However, these windows don't trigger aerospace to re-layout.\r\n\r\n<img width=\"1707\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e7c4e122-57c9-4b97-b540-a14d0599b12b\">\r\n\r\n```\r\n> aerospace list-windows --workspace 2\r\n25152 | Emacs | *scratch*  —  (97 × 52)\r\n25293 | Emacs | *scratch*  —  (97 × 52)\r\n25295 | Emacs | NΛNO sidebar\r\n```\r\n\r\nWhen in accordion layout, the child frame extends offscreen.  Further, changing the layout (e.g., accordion & back) narrows the child frame from the right.\r\n\r\n<img width=\"1707\" alt=\"image\" src=\"https://github.com/user-attachments/assets/02cb0dbd-9962-4b80-a356-48881d1db82f\">\r\n",
      "created_at": "2024-11-17T20:44:28Z",
      "updated_at": "2025-01-11T19:50:56Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Cerebus",
        "avatar_url": "https://avatars.githubusercontent.com/u/49740?u=abcb1a42191e4c813c75564e73c2812cc8ba5082&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acl-f",
      "number": 715,
      "title": "Unexpected window position change that occurs when switching workspace using hotkey",
      "body": "Aerospace is one of the really good window managers.\r\n\r\nHowever, it seems that there has been a different action than expected, perhaps due to the recent change.\r\n\r\n- When I call a terminal in workspace 1 from workspace 2 to hotkey,\r\n- If the terminal was in floating tilting state, the window is forced to move to the lower right rather than the original position.\r\n\r\nI always place the terminal in floating tiling at the center of the monitor, so this position change that occurs when switching workspaces is very inconvenient.\r\n\r\nIs there a solution?",
      "created_at": "2024-11-17T04:44:21Z",
      "updated_at": "2024-11-17T04:44:21Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "songkg7",
        "avatar_url": "https://avatars.githubusercontent.com/u/56438906?u=10a0e1564576ef2086b3862c596b88cae0f0031d&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcItd",
      "number": 623,
      "title": "Feature idea: BYO virtual display for hiding windows",
      "body": "Aerospace currently uses the bottom corners of each display to hide windows. As the documentation [points out](https://nikitabobko.github.io/AeroSpace/guide#proper-monitor-arrangement), this method imposes limitations on monitor configurations. Many popular setups, such as [triple-screen](https://www.google.com/search?tbm=isch&q=triple+monitor+setup) and [tie-fighter](https://www.google.com/search?tbm=isch&q=tie+fighter+monitor+setup) arrangements, are incompatible with Aerospace.\r\n\r\nIt's possible to create virtual displays that exist only in memory. In fact, the popular application [BetterDisplay](https://github.com/waydabber/BetterDisplay) recently added a feature to manage virtual displays.\r\n\r\nI propose an Aerospace feature that would allow users to specify a virtual display to use as a \"free space\" for hiding windows. This would accommodate any monitor configuration the user desires. To keep Aerospace as lightweight as possible, this could be implemented as bring-your-own-virtual-display—users could then use whichever virtual display management app they prefer and simply tell Aerospace which display to use for hiding.\r\n\r\n## Checklist\r\n\r\n- [X] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - virtual display\r\n  - virtual\r\n  - betterdisplay\r\n- [X] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [X] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - virtual display\r\n  - virtual",
      "created_at": "2024-10-09T17:24:20Z",
      "updated_at": "2024-11-16T02:42:47Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "jaybonthius",
        "avatar_url": "https://avatars.githubusercontent.com/u/46472915?u=e988259dca6b79246ae98efa0159ee3541227388&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ackew",
      "number": 708,
      "title": "how to user § in the shortcuts",
      "body": "Hello,\r\ni've an eng-iso keyboard and next to the left uppercase i've the `§` char.\r\ni wanted to use it for the shortcut `focus-back-and-forth` but if i do it complains.\r\n\r\n`Error while parsing key-value pair: expected '=', saw '§' (at line 162, column 5)`\r\n\r\nis there a way to do that? or should i use another tool for this case? if so which one? thank you",
      "created_at": "2024-11-15T15:40:32Z",
      "updated_at": "2024-11-15T15:40:33Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "esseti",
        "avatar_url": "https://avatars.githubusercontent.com/u/1928354?u=9f2fd74b88916702827d2a379ca12a20a9743688&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Aci5P",
      "number": 699,
      "title": "Default accordion position and loop between windows",
      "body": "Hello all , i'm rather new to this way of managing windows and workspace but i love it.\r\nas a first time user i use a lot the `accordion` mode, the thing that i find difficult is that i've to check all the 4 side to get to know if there are other windows.\r\nso, first: \r\n- is there a way to set the accordition to aways stack the windows on the left or top or something? so that they are always there?\r\n\r\nsecond, i've used vim but not too much, but that's not the problem. the thing is: if i've a window on the left, still in `accordion` mode once i reached that i've to go all right.\r\n- is it possible to enable a loop? so that if i'm in the last one on the left of the stack, and i click left again it moves to the first on the right? implementing basically a loop.",
      "created_at": "2024-11-14T14:33:05Z",
      "updated_at": "2024-11-15T10:24:05Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "esseti",
        "avatar_url": "https://avatars.githubusercontent.com/u/1928354?u=9f2fd74b88916702827d2a379ca12a20a9743688&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcjXq",
      "number": 703,
      "title": "Repeating Keys",
      "body": "I'm wondering if we continue to hold down a specific key if the command could run again. \r\n\r\nfor example if I hold down the resize keys, I'd like it to re-run. \r\n\r\nIn better touch tool I use this to add it with a repeat rate and a delay:\r\n\r\n<img width=\"352\" alt=\"Screenshot 2024-11-14 at 4 24 10 PM\" src=\"https://github.com/user-attachments/assets/e3a62255-affc-49fb-8a75-d35a201f5785\">\r\n\r\n",
      "created_at": "2024-11-14T21:25:21Z",
      "updated_at": "2024-11-14T21:25:22Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "wesbos",
        "avatar_url": "https://avatars.githubusercontent.com/u/176013?u=1d436e62dc32dbbf1bfefb4d658cd67553154c42&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcerE",
      "number": 689,
      "title": "Anyway to disable automatically resizing a specific app window on start?",
      "body": "Hello,\r\n  I'm developing an ios app on my mac with Aerospace as my window manager on my mac.  the problem I have with Aerospace is that when I launch my app, it gets resized to a huge size to fit the rest of the desktop due to tiling.  I would like to disable the tiling for this specific app/window only.\r\n\r\nI have tried to force the layout to floating for that window only, but unfortunately it changes the layout for the entire desktop and the apps.\r\n\r\n```\r\n[[on-window-detected]]\r\nif.app-id = 'NULL-APP-BUNDLE-ID'\r\nrun = 'layout floating'\r\n```\r\n\r\nIs there a command I can place in that run to disable tiling for that specific app-id?  I need to keep the same size of that window when I launch/quit/edit code/relaunch development cycle.\r\n\r\nThanks!",
      "created_at": "2024-11-11T17:52:15Z",
      "updated_at": "2024-11-14T13:26:49Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "hemna",
        "avatar_url": "https://avatars.githubusercontent.com/u/672207?u=44525b929c28d9e12d469f6fca5207fd36e7f8e3&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcgO5",
      "number": 695,
      "title": "Is there a way to check the current apps on a given workspace?",
      "body": "e.g. `aerospace list-apps --workspace 1` list all the apps that are \"living\" on workspace 1.",
      "created_at": "2024-11-12T19:23:48Z",
      "updated_at": "2024-11-12T20:07:56Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aq2I5",
        "body": "Nvm, I found this\r\n\r\n`aerospace list-windows --workspace <workspace>`"
      },
      "user": {
        "login": "0xAdriaTorralba",
        "avatar_url": "https://avatars.githubusercontent.com/u/11000364?u=893d7c679cedc8c86eeec78f89104b881e29e698&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acfnh",
      "number": 693,
      "title": "Subsequet/additional app windows location/overriding config",
      "body": "Hi,\r\n\r\nLet me provide some context on my situation. At work we use Slack, multiple times a day I need to be on Slack video calls and sharing my screen. My colleagues will often use Slack's \"drawing\" feature, this enables them to \"draw\" on your screen whilst you're sharing. \r\n\r\nThe issue is I have the following in my config:\r\n\r\n`[[on-window-detected]]\r\nif.app-id = 'com.tinyspeck.slackmacgap'\r\nrun = ['move-node-to-workspace msg']\r\n`\r\n\r\nAnd because of this the invisible layer/window/overlay that Slack uses to enable this drawing feature get's moved to the msg workspace, not appearing when I'm working on code for example. Currently my solution is either disabling the above part of my config, which I really don't want to do, or live without the drawing feature, which angers my colleagues to no end, so not really a solution. \r\n\r\nIs there a way to specify that specific/child/other app windows should ignore the above config and only the main one follows this. Or another potential solution to this issue? \r\n\r\nRunning `aerospace list-apps` whilst screen sharing only lists the one Slack app sadly.\r\n\r\nAny suggestions welcome! Thank you! ",
      "created_at": "2024-11-12T11:46:39Z",
      "updated_at": "2024-11-12T11:46:52Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "caliguIa",
        "avatar_url": "https://avatars.githubusercontent.com/u/30220663?u=cc22686d24f30e50d6dec31f603d4e43ac953dcc&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Acb66",
      "number": 683,
      "title": "Have Aerospace working only in one Space",
      "body": "Hey 👋 \r\nForgive me if this has been discussed in the past, I did a quick search and haven't seen anything mentioned.\r\n\r\nThe idea is to have Aerospace only do its thing in one macOS space and that's it. This in theory should allow us to \"escape\" to non-window-tiling spaces and back on demand and sort of have the best of both world.\r\n\r\nI have no idea if this is techincally feasible or not - but if it is, it might strike a nice middle ground!\r\n\r\nAppreciate your hard work on Aerospace!\r\n\r\n",
      "created_at": "2024-11-10T11:17:16Z",
      "updated_at": "2024-11-10T11:17:17Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "m1keil",
        "avatar_url": "https://avatars.githubusercontent.com/u/1589008?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcLin",
      "number": 640,
      "title": "Can't get Colemak keyboard layout to work in MacOS",
      "body": "I have two different Colemak keyboards: One is wired Beekeeb Piantor and has custom mappings and requires the keyboard layout within MacOS to be set to the normal US layout, and it sends the correct keys to the OS. The other is a Nuphy Air 75 bluetooth keyboard and it requires the OS to be set to Colemak to work. In my .toml file, I have tried commenting out the default qwerty layout and leaving it in and in both cases tried adding the Colemak key mappings and commenting them out, each time reloading the config.\r\n\r\nThe behavior I'm seeing is that a lot of keys simply don't work. I wanted to map my mail app to Alt-Shift-m, but it acts like it doesn't even see it. I tried putting a window in the O workspace and it puts it in the Y workspace. For some reason the key mapping isn't working. I also can't place apps in many of the numbered workspaces while others seem to work fine. \r\n\r\nI REALLY like the idea of this app. If there is anything that can be done I am happy to do it. I've attached my aerospace.toml file (renamed to .txt, as you can see). \r\n[aerospace.txt](https://github.com/user-attachments/files/16603274/aerospace.txt)\r\n\r\nThanks.",
      "created_at": "2024-08-13T17:36:33Z",
      "updated_at": "2024-11-09T23:55:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "rwedmonds",
        "avatar_url": "https://avatars.githubusercontent.com/u/105442447?u=1521218135a998fa9abaa0dc0a92675f8ae724b8&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcaQO",
      "number": 677,
      "title": "Add shortcuts to `1/2-left`, `1/2-right` for floating windows inside a `v_accordian` workspace",
      "body": "I put all my vscode windows in the save workspace, say 5 windows, usually I put them all into a specific `workspace` with `v_accordian` layout, but sometimes I need to put 2 of them to float, left half for window-A, right half for window-B for quick comparison.\r\n\r\nBut currently Aerospace it alone can't do this, Rectangle can do this but it has conflict with Aerospace so I just not using Rectangle anymore. Is it possible to achieve this only in Aerospace? Any suggestions would be appreciated!\r\n\r\nRelated discussion: https://www.reddit.com/r/macapps/comments/1fehon1/combining_aerospace_and_rectangle_for_optimal/",
      "created_at": "2024-11-08T19:59:25Z",
      "updated_at": "2024-11-08T19:59:26Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zhuoqun-chen",
        "avatar_url": "https://avatars.githubusercontent.com/u/73287160?u=800f350211c5fc15528602ff4af02268a58047ce&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcXr5",
      "number": 673,
      "title": "Numpad bindings?",
      "body": "Is it possible to specify bindings for numpad keys that are separate from the number row keys?\r\n\r\nexample:\r\n\r\n```toml\r\nalt-2 = \"workspace 2\"\r\nalt-num2 = \"move down\" # or whatever notation would reference 2 on a keyboard's numpad\r\n```\r\n\r\n",
      "created_at": "2024-11-07T01:07:54Z",
      "updated_at": "2024-11-07T01:24:24Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AqnnC",
        "body": "Ah nevermind, figured it out. For reference, just prefix a number with \"keypad\" like this:\r\n\r\n```toml\r\nalt-keypad8 = \"move up\"\r\nalt-keypad2 = \"move down\"\r\nalt-keypad4 = \"move left\"\r\nalt-keypad6 = \"move right\"\r\n```"
      },
      "user": {
        "login": "nickawilliams",
        "avatar_url": "https://avatars.githubusercontent.com/u/325622?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcXir",
      "number": 672,
      "title": "Solutions to Save After Reboot?",
      "body": "Hi, all! I am loving AeroSpace.\r\nBut when I turn off Macbook or reboot It, the windows start in the workspace 1, instead of being where It was before.\r\nDo we have a solution for It (expect not turn off/reboot)?",
      "created_at": "2024-11-06T20:48:53Z",
      "updated_at": "2024-11-06T20:48:54Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "luisggc",
        "avatar_url": "https://avatars.githubusercontent.com/u/31017690?u=385ff48259c1c2ddd054f0ac36a28f2f78d55db4&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcXX4",
      "number": 670,
      "title": "wezterm overflows onto my other screen",
      "body": "Hi, I don't know if it's a bug or a config related issue, but, When I open Wezterm, It opens on the screen, but a border is not on the current space, it overflows on the 2nd screen. It's only Wezterm, all others apps are OK.\r\n\r\nI use a Macbook Air and an old screen (my default) 1920x1080.\r\nSo, wezterm use more than 1920px ..\r\n\r\n",
      "created_at": "2024-11-06T13:31:39Z",
      "updated_at": "2024-11-06T16:55:46Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Joffrey54",
        "avatar_url": "https://avatars.githubusercontent.com/u/3739340?u=eb2f84481edf313fe6bfcb250dc29e4141ea300c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcU6f",
      "number": 661,
      "title": "Aerospace How to implement?  alt-right = 'move-node-to-monitor --wrap-around --focus-follows-window next' in aerospace.toml",
      "body": "Aerospace :\r\n\r\nMy intention is to use alt-right to move a window to the next monitor and focus on it\r\n\r\nI'm using \r\nalt-right = 'move-node-to-monitor --wrap-around --focus-follows-window next\r\n\r\n\r\nbut I'm receiving an error unknown flag \"--focus-follows-window\"\r\n\r\n\r\nWhat am I doing wrong here?",
      "created_at": "2024-11-05T00:21:35Z",
      "updated_at": "2024-11-05T08:16:22Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4Aqihy",
        "body": "> I've just updated to AeroSpace v0.15.2-Beta b6cf8277 / Ventura 13.7.1 and tried again using exactly:\n> \n> \n> \n> alt-right = 'move-node-to-monitor --wrap-around --focus-folllows-window next'\n> \n> \n> \n> When I save and tried to reload the config, I'm getting this error\n> \n> \n> \n> Failed to parse /Users/<username>/.aerospace.toml\n> \n> \n> \n> mode.main.binding.alt-right: ERROR: Unknown flag '--focus-folllows-window'\n> \n> ERROR: Argument '(left|down|up|right|next|prev|<monitor-pattern>)' is mandatory\n> \n> \n\nYou have a triple L in \"follows\""
      },
      "user": {
        "login": "gaztec22",
        "avatar_url": "https://avatars.githubusercontent.com/u/6058634?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcT1d",
      "number": 659,
      "title": "Is there a way to resize a single accordion of windows to a custom size so that it doesn't fill the screen?",
      "body": "Sometimes I have just 2 windows open, one behind the other in accordion. I don't always want this to take up the whole screen, so how could I make it smaller? ",
      "created_at": "2024-11-04T06:50:44Z",
      "updated_at": "2024-11-04T06:50:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "EttVenter",
        "avatar_url": "https://avatars.githubusercontent.com/u/30209682?u=aebf026f1ad986fafea56669c9f5429d3f86fadd&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcPXx",
      "number": 652,
      "title": "battery usage compared to yabai or amethyst",
      "body": "since aerospace does not use seperate spaces, does having all the windows open on the same space use more battery since they still have to be rendered in the background? (as compared to the spaces in yabai for example) i hope this makes sense, thanks !",
      "created_at": "2024-10-31T21:10:18Z",
      "updated_at": "2024-11-04T05:52:03Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "5brian",
        "avatar_url": "https://avatars.githubusercontent.com/u/82864674?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcM5f",
      "number": 644,
      "title": "Add the colon key as a supported key.",
      "body": "Right know it's impossible to use the colon key inside a keybinding since this key is not defined in AeroSpace. I would like to be able to use this key inside some of my keybindings.",
      "created_at": "2024-10-29T21:10:53Z",
      "updated_at": "2024-10-31T23:38:58Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "JulienLecoq",
        "avatar_url": "https://avatars.githubusercontent.com/u/54070985?u=76c0531970d1dbfcddf7b16f3668d76152969c0c&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcPKh",
      "number": 649,
      "title": "Option to see if full screen mode is enabled",
      "body": "There seems to be currently no way to distinguish between full screen mode and single window.\r\n\r\nWorkaround is\r\n```\r\nalt-f = 'layout tiles h_accordion'\r\n```\r\n\r\nMaybe documenting this in the i3 section might be another option over implementing it?",
      "created_at": "2024-10-31T15:27:27Z",
      "updated_at": "2024-10-31T16:12:24Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "volker-fr",
        "avatar_url": "https://avatars.githubusercontent.com/u/4174391?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcORJ",
      "number": 647,
      "title": "battery lifetime",
      "body": "dear aerospace community,\r\n\r\nI am thinking in installing aerospace on my mac pro M3.\r\nI have a question, does aerospace affect the battery life compare to original window manger?\r\n\r\nthank you",
      "created_at": "2024-10-31T00:28:18Z",
      "updated_at": "2024-10-31T05:56:29Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Masber",
        "avatar_url": "https://avatars.githubusercontent.com/u/722064?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcK_r",
      "number": 637,
      "title": "move-workspace-to-monitor with --workspace: How to pull workspace from other Monitor?",
      "body": "**Describe the bug**\r\nScenario:\r\n\r\nMonitor 1 workspaces: a (focused) b\r\nMonitor 2 workspaces: c (focused) d\r\n\r\nOn Monitor 2, workspace `a`, I want execute:\r\n\r\n```\r\naerospace move-workspace-to-monitor --workspace c **focused**\r\n```\r\n\r\nHowever, the command only accepts `prev` and `next`.\r\n\r\nWhile I could use them, they do behave different if `a` would be already on Monitor 2. In that case, the workspace would be moved back to Monitor 1, which I don't want.\r\n\r\nWouldn't it be nice if `move-workspace-to-monitor` would accept monitor names/indexes or just something like `focused` ?\r\n",
      "created_at": "2024-10-28T12:25:07Z",
      "updated_at": "2024-10-28T20:11:26Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AqQ7H",
        "body": "OK, I just learned about [summon-workspace](https://nikitabobko.github.io/AeroSpace/commands#summon-workspace)."
      },
      "user": {
        "login": "CheariX",
        "avatar_url": "https://avatars.githubusercontent.com/u/1998723?u=c639a8dde7b54c613c2e24fe8b54d2a272c6d6d1&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcK2T",
      "number": 635,
      "title": "Disable accordion",
      "body": "Is there a way to disable the accordion mode?\r\nI prefer to have tiling by default, but it seems that it's not possible to set it",
      "created_at": "2024-10-28T09:46:41Z",
      "updated_at": "2024-10-28T09:46:42Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "redakassivf",
        "avatar_url": "https://avatars.githubusercontent.com/u/157006055?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcItf",
      "number": 624,
      "title": "How to programmatically create and manage nodes?",
      "body": "I'm trying to use my config file to drive actions that Aerospace should run on-startup. I have 3 monitors and I want to move a workspace to each monitor. Then I want Workspace 1 (on an ultrawide) to have 2 nodes, 1 horizontally tiled and 1 vertically tiled. \r\n\r\nWorkspaces 2 and 3 have 1 node.\r\n\r\nI want the config to use `exec-and-forget` to launch specific apps and place them in the workspaces. **This is where I'm having my problem.**\r\n\r\nI'm trying to use `after-startup-command`: \r\n\r\n```\r\nafter-startup-command = [\r\n    \"move-workspace-to-monitor --workspace 3 --wrap-around next\",\r\n    \"move-workspace-to-monitor --workspace 2 --wrap-around prev\",\r\n    \r\n\r\n    \"workspace 1\",\r\n    \"layout horizontal\",\r\n    \"exec-and-forget open -a '<browser app>'\",  \r\n    \"exec-and-forget open -a '<browser app>' --args --new-window\", \r\n    \"exec-and-forget open -a '<browser app>' --args --new-window\",  \r\n    \"exec-and-forget open -a '<some app>'\", \r\n    \"split vertical\",  \r\n    \"exec-and-forget open -a '<some app>'\",  \r\n    \"exec-and-forget open -a '<some app>'\",  \r\n\r\n\r\n    \"workspace 2\",\r\n    \"layout vertical\",\r\n    \"exec-and-forget open -a '<some app>'\",\r\n    \"exec-and-forget open -a '<some app>'\",\r\n\r\n\r\n    \"workspace 3\",\r\n    \"layout horizontal\",\r\n    \"exec-and-forget open -a '<some app>'\"\r\n]\r\n```\r\n\r\nBut this isn't working. I looked at using `exec-on-workspace-change` but that would require Aerospace exposing an api for node management so a foreign bash script could leverage it. I don't believe that exists.\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - [query 1](https://github.com/nikitabobko/AeroSpace/issues?q=programatically+manage+nodes)\r\n  - [query 2](https://github.com/nikitabobko/AeroSpace/issues?q=manage+nodes)\r\n  - [query 3](https://github.com/nikitabobko/AeroSpace/issues?q=node+api)\r\n  - [query 4](https://github.com/nikitabobko/AeroSpace/issues?q=create+nodes+in+config)\r\n\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - programmatically manage nodes\r\n  - assign window to node\r\n  - node api\r\n```\r\n$ aerospace --version\r\naerospace CLI client version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\nAeroSpace.app server version: 0.15.2-Beta b6cf82771f245ab7349a93baf8709e171537ff58\r\n```\r\n",
      "created_at": "2024-10-22T21:09:39Z",
      "updated_at": "2024-10-27T13:43:01Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AqNur",
        "body": "Opening windows/applications happens with the delay.\r\n\r\nThe use case that you describe is not about programmatically creating nodes, but about waiting till the windows appear and become accessible for manipulation\r\n\r\nDuplicate of #226 "
      },
      "user": {
        "login": "wbsmolen",
        "avatar_url": "https://avatars.githubusercontent.com/u/3998040?u=b02316cc75e6d8451fa0f1ac816064b244d01181&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcLiC",
      "number": 638,
      "title": "Question: Retain size of the window where it is moved to",
      "body": "Hey sorry for yet another question.\r\nMy brain works in some kind of working \"areas\" where I want the windows placed. Most of the time i want a window in the center for example, occasionally exchanging it with another one there.\r\nIs there any to kind of \"swap\" two windows instead of moving it? I didn't find any way yet to achieve this with aerospace.",
      "created_at": "2024-10-17T14:36:05Z",
      "updated_at": "2024-10-28T20:55:33Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "nliechti",
        "avatar_url": "https://avatars.githubusercontent.com/u/2284764?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50-",
      "number": 1013,
      "title": "Detect if current workspace is empty then automatically move to workspace Z",
      "body": "I would love to check when a window closes if the current workspace is empty and then switch to a workspace of my choosing \r\n\r\n**Steps**\r\n1. Doing something in workspace X \r\n2. Closes current window in workspace X, which is the only window left in this workspace\r\n3. Workspace is now empty \r\n4. Automatically move to workspace Z\r\n\r\n\r\n## Checklist\r\n\r\n- [x] I've searched for duplicates. My search queries were:\r\n  - detect empty workspace \r\n  - empty workspace \r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - empty\r\n- Also [Search for configs by other users on GitHub](https://github.com/search?q=path%3A*aerospace.toml&type=code) for inspiration \r\n  -  https://github.com/search?q=detect+empty+path%3A*aerospace.toml&type=code\r\n\r\nI have the feeling this should be possible with the knowledge in the docs, but with the info I've gathered I can't see how to combine everything in to a function that does this. I would love some sort of \"cookbook\" in the docs with examples and descriptions how to do certain things, that allows me personally to easier adept things to my own needs. Happily volunteer to write some things out!\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "created_at": "2024-10-04T09:51:16Z",
      "updated_at": "2025-01-18T20:37:35Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mvaneijgen",
        "avatar_url": "https://avatars.githubusercontent.com/u/3217544?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51j",
      "number": 1020,
      "title": "Support \"AXIdentifier\" filter windows in `on-window-detected` callback",
      "body": "The Arc Browser has a feature called \"Little Arc\", essentially a temporary \"popup\" window that is not meant to be tiled\r\n\r\nFiltering by app/window name to check whether the window should tile or float is not enough since the popup window's title doesn't have anything to differentiate from normal windows, aside from the `AXIdentifier` property being `Optional(littleBrowserWindow-UUID)` instead of the normal window's `Optional(bigBrowserWindow-UUID)`\r\n\r\nThe only workarounds I've found is to check whether the title starts with \"Space\" but that would fail if the space name is not renamed to anything other than \"Space [number]\", and checking if the title starts with \"Little\" seemingly only works for popups that are opened with the \"Contact the Team\" option in the browser (which is quite weird).\r\n\r\nI've suggested them to mark little arc windows as dialogs but it'd be great to get more filters implemented in the `on-window-detected` callback too (if it's viable ofc)\r\n\r\nEdit: `aerospace debug-windows` output\r\n\r\n<details>\r\n  <summary>Normal window</summary>\r\n<pre>company.thebrowser.Browser.window.1721 windowId: 1721\r\ncompany.thebrowser.Browser.window.1721 workspace: 0\r\ncompany.thebrowser.Browser.window.1721 treeNodeParent: AppBundle.TilingContainer\r\ncompany.thebrowser.Browser.window.1721 recognizedAsDialog: false\r\ncompany.thebrowser.Browser.window.1721 AXTitle: Optional(Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace)\r\ncompany.thebrowser.Browser.window.1721 AXRole: Optional(AXWindow)\r\ncompany.thebrowser.Browser.window.1721 AXSubrole: Optional(AXStandardWindow)\r\ncompany.thebrowser.Browser.window.1721 AXIdentifier: Optional(bigBrowserWindow-A8539292-8A2E-4DE6-8758-12A6A9603F77)\r\ncompany.thebrowser.Browser.window.1721 AXFocused: Optional(0)\r\ncompany.thebrowser.Browser.window.1721 AXFullScreen: Optional(0)\r\ncompany.thebrowser.Browser.window.1721 AXFrame: Optional(<AXValue 0x600000d1e0c0> {value = x:55.000000 y:5.000000 w:1810.000000 h:1069.000000 type = kAXValueCGRectType})\r\ncompany.thebrowser.Browser.window.1721 AXPosition: Optional(<AXValue 0x6000016778d0> {value = x:55.000000 y:5.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.1721 AXGrowArea: nil\r\ncompany.thebrowser.Browser.window.1721 AXMinimizeButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1721      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1721      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1721      AXSubrole: Optional(AXMinimizeButton)\r\ncompany.thebrowser.Browser.window.1721      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1721      AXParent: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXTopLevelUIElement: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1721 }\r\ncompany.thebrowser.Browser.window.1721 AXDocument: nil\r\ncompany.thebrowser.Browser.window.1721 AXSections: [\r\ncompany.thebrowser.Browser.window.1721         Optional({\r\ncompany.thebrowser.Browser.window.1721             SectionDescription = Content;\r\ncompany.thebrowser.Browser.window.1721             SectionObject = \"<AXUIElement 0x600001676160> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1721             SectionUniqueID = AXContent;\r\ncompany.thebrowser.Browser.window.1721         }),\r\ncompany.thebrowser.Browser.window.1721         Optional({\r\ncompany.thebrowser.Browser.window.1721             SectionDescription = \"Top Level Navigator\";\r\ncompany.thebrowser.Browser.window.1721             SectionObject = \"<AXUIElement 0x600001676ee0> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1721             SectionUniqueID = AXTopLevelNavigator;\r\ncompany.thebrowser.Browser.window.1721         }),\r\ncompany.thebrowser.Browser.window.1721         Optional({\r\ncompany.thebrowser.Browser.window.1721             SectionObject = \"<AXUIElement 0x600001674210> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1721             SectionUniqueID = AXContainer;\r\ncompany.thebrowser.Browser.window.1721         }),\r\ncompany.thebrowser.Browser.window.1721         Optional({\r\ncompany.thebrowser.Browser.window.1721             SectionDescription = \"Content Navigator\";\r\ncompany.thebrowser.Browser.window.1721             SectionObject = \"<AXUIElement 0x600001648210> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1721             SectionUniqueID = AXContentNavigator;\r\ncompany.thebrowser.Browser.window.1721         })\r\ncompany.thebrowser.Browser.window.1721 ]\r\ncompany.thebrowser.Browser.window.1721 AXCloseButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1721      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1721      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1721      AXSubrole: Optional(AXCloseButton)\r\ncompany.thebrowser.Browser.window.1721      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1721      AXParent: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXTopLevelUIElement: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncompany.thebrowser.Browser.window.1721 }\r\ncompany.thebrowser.Browser.window.1721 AXMain: Optional(1)\r\ncompany.thebrowser.Browser.window.1721 AXActivationPoint: Optional(<AXValue 0x60000167f030> {value = x:65.000000 y:19.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.1721 AXFullScreenButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1721      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1721      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1721      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.1721      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1721      AXParent: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXTopLevelUIElement: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1721 }\r\ncompany.thebrowser.Browser.window.1721 AXProxy: nil\r\ncompany.thebrowser.Browser.window.1721 AXDefaultButton: nil\r\ncompany.thebrowser.Browser.window.1721 AXMinimized: Optional(0)\r\ncompany.thebrowser.Browser.window.1721 AXParent: Optional(<AXUIElement Application 0x60000167f030> {pid=39552})\r\ncompany.thebrowser.Browser.window.1721 AXTitleUIElement: nil\r\ncompany.thebrowser.Browser.window.1721 AXCancelButton: nil\r\ncompany.thebrowser.Browser.window.1721 AXModal: Optional(0)\r\ncompany.thebrowser.Browser.window.1721 AXZoomButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1721      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1721      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1721      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.1721      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1721      AXParent: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXTopLevelUIElement: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      AXWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1721      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1721 }\r\ncompany.thebrowser.Browser.window.1721 AXSize: Optional(<AXValue 0x600001662ca0> {value = w:1810.000000 h:1069.000000 type = kAXValueCGSizeType})\r\ncompany.thebrowser.Browser.window.1721 AXToolbarButton: nil\r\ncompany.thebrowser.Browser.window.1721 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncompany.thebrowser.Browser             AXRole: Optional(AXApplication)\r\ncompany.thebrowser.Browser             AXTitle: Optional(Arc)\r\ncompany.thebrowser.Browser             AXFunctionRowTopLevelElements: [\r\ncompany.thebrowser.Browser             ]\r\ncompany.thebrowser.Browser             AXFrame: nil\r\ncompany.thebrowser.Browser             AXFocusedUIElement: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWebArea\", subrole=nil)\r\ncompany.thebrowser.Browser             AXFrontmost: Optional(1)\r\ncompany.thebrowser.Browser             AXExtrasMenuBar: nil\r\ncompany.thebrowser.Browser             AXMainWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             AXFocusedWindow: AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             AXMenuBar: Optional(<AXUIElement 0x600001648210> {pid=39552})\r\ncompany.thebrowser.Browser             AXWindows: [\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=1853, title=\"awd - Brave Search\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=290, title=\"AeroSpace Commands\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             ]\r\ncompany.thebrowser.Browser             AXSize: nil\r\ncompany.thebrowser.Browser             AXPosition: nil\r\ncompany.thebrowser.Browser             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden</pre>\r\n</details>\r\n\r\n<details>\r\n  <summary>Little Arc</summary>\r\n  <pre>\r\ncompany.thebrowser.Browser.window.1989 windowId: 1989\r\ncompany.thebrowser.Browser.window.1989 workspace: 0\r\ncompany.thebrowser.Browser.window.1989 treeNodeParent: AppBundle.TilingContainer\r\ncompany.thebrowser.Browser.window.1989 recognizedAsDialog: false\r\ncompany.thebrowser.Browser.window.1989 AXTitle: Optional(Space 1)\r\ncompany.thebrowser.Browser.window.1989 AXRole: Optional(AXWindow)\r\ncompany.thebrowser.Browser.window.1989 AXSubrole: Optional(AXStandardWindow)\r\ncompany.thebrowser.Browser.window.1989 AXIdentifier: Optional(littleBrowserWindow-9779869B-69A1-4FF6-8765-34B748C226B6)\r\ncompany.thebrowser.Browser.window.1989 AXFocused: Optional(0)\r\ncompany.thebrowser.Browser.window.1989 AXFullScreen: Optional(0)\r\ncompany.thebrowser.Browser.window.1989 AXFrame: Optional(<AXValue 0x600000d12b00> {value = x:1410.000000 y:20.000000 w:490.000000 h:329.000000 type = kAXValueCGRectType})\r\ncompany.thebrowser.Browser.window.1989 AXPosition: Optional(<AXValue 0x6000016406c0> {value = x:1410.000000 y:20.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.1989 AXGrowArea: nil\r\ncompany.thebrowser.Browser.window.1989 AXMinimizeButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1989      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1989      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1989      AXSubrole: Optional(AXMinimizeButton)\r\ncompany.thebrowser.Browser.window.1989      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1989      AXParent: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXTopLevelUIElement: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1989 }\r\ncompany.thebrowser.Browser.window.1989 AXDocument: nil\r\ncompany.thebrowser.Browser.window.1989 AXSections: [\r\ncompany.thebrowser.Browser.window.1989         Optional({\r\ncompany.thebrowser.Browser.window.1989             SectionDescription = Content;\r\ncompany.thebrowser.Browser.window.1989             SectionObject = \"<AXUIElement 0x60000167af10> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1989             SectionUniqueID = AXContent;\r\ncompany.thebrowser.Browser.window.1989         }),\r\ncompany.thebrowser.Browser.window.1989         Optional({\r\ncompany.thebrowser.Browser.window.1989             SectionObject = \"<AXUIElement 0x60000167bde0> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1989             SectionUniqueID = AXContainer;\r\ncompany.thebrowser.Browser.window.1989         }),\r\ncompany.thebrowser.Browser.window.1989         Optional({\r\ncompany.thebrowser.Browser.window.1989             SectionDescription = \"Content Navigator\";\r\ncompany.thebrowser.Browser.window.1989             SectionObject = \"<AXUIElement 0x60000167a5b0> {pid=39552}\";\r\ncompany.thebrowser.Browser.window.1989             SectionUniqueID = AXContentNavigator;\r\ncompany.thebrowser.Browser.window.1989         })\r\ncompany.thebrowser.Browser.window.1989 ]\r\ncompany.thebrowser.Browser.window.1989 AXCloseButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1989      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1989      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1989      AXSubrole: Optional(AXCloseButton)\r\ncompany.thebrowser.Browser.window.1989      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1989      AXParent: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXTopLevelUIElement: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncompany.thebrowser.Browser.window.1989 }\r\ncompany.thebrowser.Browser.window.1989 AXMain: Optional(1)\r\ncompany.thebrowser.Browser.window.1989 AXActivationPoint: Optional(<AXValue 0x6000016660a0> {value = x:1420.000000 y:34.000000 type = kAXValueCGPointType})\r\ncompany.thebrowser.Browser.window.1989 AXFullScreenButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1989      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1989      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1989      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.1989      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1989      AXParent: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXTopLevelUIElement: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1989 }\r\ncompany.thebrowser.Browser.window.1989 AXProxy: nil\r\ncompany.thebrowser.Browser.window.1989 AXDefaultButton: nil\r\ncompany.thebrowser.Browser.window.1989 AXMinimized: Optional(0)\r\ncompany.thebrowser.Browser.window.1989 AXParent: Optional(<AXUIElement Application 0x600001663060> {pid=39552})\r\ncompany.thebrowser.Browser.window.1989 AXTitleUIElement: nil\r\ncompany.thebrowser.Browser.window.1989 AXCancelButton: nil\r\ncompany.thebrowser.Browser.window.1989 AXModal: Optional(0)\r\ncompany.thebrowser.Browser.window.1989 AXZoomButton: AXUIElement {\r\ncompany.thebrowser.Browser.window.1989      AXRole: Optional(AXButton)\r\ncompany.thebrowser.Browser.window.1989      AXTitle: nil\r\ncompany.thebrowser.Browser.window.1989      AXSubrole: Optional(AXFullScreenButton)\r\ncompany.thebrowser.Browser.window.1989      AXEnabled: Optional(1)\r\ncompany.thebrowser.Browser.window.1989      AXParent: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXTopLevelUIElement: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      AXWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser.window.1989      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncompany.thebrowser.Browser.window.1989 }\r\ncompany.thebrowser.Browser.window.1989 AXSize: Optional(<AXValue 0x600001678600> {value = w:490.000000 h:329.000000 type = kAXValueCGSizeType})\r\ncompany.thebrowser.Browser.window.1989 AXToolbarButton: nil\r\ncompany.thebrowser.Browser.window.1989 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncompany.thebrowser.Browser             AXRole: Optional(AXApplication)\r\ncompany.thebrowser.Browser             AXTitle: Optional(Arc)\r\ncompany.thebrowser.Browser             AXFunctionRowTopLevelElements: [\r\ncompany.thebrowser.Browser             ]\r\ncompany.thebrowser.Browser             AXFrame: nil\r\ncompany.thebrowser.Browser             AXFocusedUIElement: AXUIElement(windowId=1989, title=nil, role=\"AXTextField\", subrole=nil)\r\ncompany.thebrowser.Browser             AXFrontmost: Optional(1)\r\ncompany.thebrowser.Browser             AXExtrasMenuBar: nil\r\ncompany.thebrowser.Browser             AXMainWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             AXFocusedWindow: AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             AXMenuBar: Optional(<AXUIElement 0x600001663060> {pid=39552})\r\ncompany.thebrowser.Browser             AXWindows: [\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=1989, title=\"Space 1\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=1721, title=\"Support for other ways to filter windows in `on-window-detected` callback · Issue #250 · nikitabobko/AeroSpace\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=1853, title=\"awd - Brave Search\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncompany.thebrowser.Browser                 AXUIElement(windowId=290, title=\"AeroSpace Commands\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncompany.thebrowser.Browser             ]\r\ncompany.thebrowser.Browser             AXSize: nil\r\ncompany.thebrowser.Browser             AXPosition: nil\r\ncompany.thebrowser.Browser             Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n</pre>\r\n</summary>",
      "created_at": "2024-06-01T07:34:44Z",
      "updated_at": "2025-01-18T20:59:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Endy3032",
        "avatar_url": "https://avatars.githubusercontent.com/u/61771609?u=e0ed04d69e37e9d0a1aede6963710a4ab6135f99&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zb",
      "number": 998,
      "title": "Aerospace catch some window that dose not exist",
      "body": "I'm using Emacs with a plugin [welcome-dashboard](https://github.com/konrad1977/welcome-dashboard). After I launch Emacs, the window only have half screen. `aerospace list-windows --workspace visible` shows there are two windows with name 'Emacs', but only one has title. \r\n\r\nI tried to focus the window which doesn't have title, but it says can't find that window, while focusing the one which has title works fine. And that window doesn't exit even I closed Emacs.\r\n\r\n<img width=\"381\" alt=\"图片\" src=\"https://github.com/nikitabobko/AeroSpace/assets/41909950/85159a7c-a2cb-4b49-a11c-b3fd82f15fe2\">\r\n\r\n<img width=\"392\" alt=\"图片\" src=\"https://github.com/nikitabobko/AeroSpace/assets/41909950/9e1d4cc4-2549-45a4-ad76-b20fd02949ae\">\r\n\r\nand because I can't focus the window, I can't use `aerospace close` to close it. So it will stay on my screen untill I reboot. Is there any way to solve this?\r\n",
      "created_at": "2024-07-08T09:07:54Z",
      "updated_at": "2025-01-18T19:37:22Z",
      "category": {
        "name": "potential-bugs",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "QuarterHeaven",
        "avatar_url": "https://avatars.githubusercontent.com/u/41909950?u=d422f144d3fcff44e9bcea350fc9e859f3856f98&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcItz",
      "number": 625,
      "title": "Question: can't bind cmd-hjkl and cmd-e ?",
      "body": "Hello,\r\nmaybe I am missing something, but I'd like to set the focus/move commands to **cmd**-[shift-]hjkl and it doesn't work. Those key-combinations seem to just not do anything.\r\nI also have the same problem with cmd-e.\r\nAre those combinations not supported because of macos things or can I somehow make them work?\r\n\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - cmd\r\n  - cmd-h\r\n- [x] I've read the guide https://nikitabobko.github.io/AeroSpace/guide\r\n- [x] I've searched in the documentation (https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands). My search queries were:\r\n  - cmd\r\n\r\n```\r\naerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\nAeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201\r\n```\r\n",
      "created_at": "2024-10-08T07:39:40Z",
      "updated_at": "2024-10-27T13:50:17Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Timoyoungster",
        "avatar_url": "https://avatars.githubusercontent.com/u/53046195?u=c9c02845ac0a81fa680a9e1d937d76f3a506675e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIt2",
      "number": 627,
      "title": "Question: Grouping of Windows",
      "body": "I am new to using Aerospace and really like it.\r\n\r\nI have one question regarding \"force grouping\" of windows. I have a lot of Intellij Project open at the same time and used the \"Always open windows in Tabs\" which seems to be a very broken feature for WM's.\r\nIs there some way or workaround to group all IntelliJ windows in a vertical stack as if it is one window?\r\nI don't seem to be able to move the hole stack around as I would like.\r\n\r\nThanks for the great work 👍\r\n",
      "created_at": "2024-10-08T14:05:33Z",
      "updated_at": "2024-10-27T13:51:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": {
        "id": "DC_kwDOJl1IZM4AqNvZ",
        "body": "> I don't seem to be able to move the hole stack around as I would like.\r\n\r\nIt's not possible, but I understand your use case. A concrete proposals on how it could work are welcome (e.g. what flags, what commands or maybe a boolean flag inside a layout need to be added). Description of more use cases are welcome too\r\n\r\nIn i3, it's done via `focus child|parent` #5 But I am not sure that I like the i3 approach because users always need to firstly run `focus parent` before moving a stack of windows around."
      },
      "user": {
        "login": "nliechti",
        "avatar_url": "https://avatars.githubusercontent.com/u/2284764?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIwL",
      "number": 632,
      "title": "[Discussion] Merging Chrome tabs",
      "body": "I wanted to discuss with users of Aerospace how they merge Chrome tabs together. The usual way to do it is to drag the tab and drop it in the window where you want the tab to go. However, with Aerospace as soon you deattach the tab from the window Chrome makes a separate window and Aersopace tries to align it.  I wanted to know what can be done to make merging Chrome tabs easier with Aerospace. Possibly ignore the window that being dragged? \r\n\r\nP.S. There are no problems with Firefox because it doesn't create a window when trying to move the tab.",
      "created_at": "2024-07-16T22:41:24Z",
      "updated_at": "2024-10-27T14:10:25Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mike1808",
        "avatar_url": "https://avatars.githubusercontent.com/u/3942554?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51I",
      "number": 1014,
      "title": "Feature request : integration with spaceID or something similar",
      "body": "i would love if aerospace somehow integrated with spaceid or whichspace. since aerospace uses its own workspaces they don't show up on any of these apps.",
      "created_at": "2024-09-06T22:55:10Z",
      "updated_at": "2025-01-18T20:40:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Adyaanismyname",
        "avatar_url": "https://avatars.githubusercontent.com/u/144937034?u=fcfabf32d39475013b088c6bc5a60848ae646fb5&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIve",
      "number": 631,
      "title": "Is there a way to bring the window of a specific app from another workspace to current workspace and send it back using a single keybind?",
      "body": "I usually have Safari open on workspace E, vscode on R and my terminal on T. \r\n\r\nFor example: Let's say I'm using safari on workspace E and I need to do something on my terminal. I want to bring terminal from workspace T to my current workspace E using a specific keybind, and when im done using the terminal i can use the same keybind to send the terminal back to workspace T.\r\n\r\nI've already been able to get something along the lines of that to work. Since I dont know if specific app windows can be grabbed through its id or not, ive basically gone around the issue and botched a few things up.\r\n\r\nThe way I have it set up right now, I have to use a keybinds to move the node from terminal to safari, and another keybind to move it back to T. And since I want to be able to do this with my vs code workspace as well, i have another two keybinds setup for that as well. (As well as another two for when i want to use VSCode+Safari)\r\n\r\n[aerospace_config.txt](https://github.com/user-attachments/files/15934019/aerospace_config.txt)\r\n\r\n\r\nThis achieves what I need, but its very demanding to remember all the combinations of different keybinds, for 3 different workspaces. I imagine it would be possible to use only a single keybind to achieve this if somehow the window can be grabbed through the app ID and not have to specify the workspace or the node everytime. So that the window gets grabbed regardless of which workspace its in.\r\n\r\nIs this currently possible? and if not, are there any plans of implementing a feature like this in the future? Thank you so much <3",
      "created_at": "2024-06-21T21:54:32Z",
      "updated_at": "2024-10-27T14:06:33Z",
      "category": {
        "name": "general",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "farhantamzid",
        "avatar_url": "https://avatars.githubusercontent.com/u/130372935?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51N",
      "number": 1015,
      "title": "Focus next window of the current application",
      "body": "Hi, I'm wondering what's the easiest way to create a keybind to switch between windows of the same application ie. if I'm in finder, a keybind to focus the next finder window? I realize this is probably scriptable with the existing commands, but I'd rather not reinvent the wheel if this is an existing recipe.\r\n\r\nIf needed, I can work on scripting this myself, but I figure it's still worth creating an issue for this for the purpose of future searchability so others can copy the result.\r\n\r\nCheers\r\n\r\n- [x] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - \"same application\"\r\n- [x] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [x] I've searched in the documentation.\r\n",
      "created_at": "2024-08-23T20:10:58Z",
      "updated_at": "2025-01-18T20:45:04Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "Oasixer",
        "avatar_url": "https://avatars.githubusercontent.com/u/24990515?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51g",
      "number": 1018,
      "title": "Detect when AeroSpace.app needs to be restarted (after update) and show a red bubble in the tray icon",
      "body": "I'm not sure what changed here. I think Zed is definitely fiddling around with their rendering, but no idea why Mail.app would suddenly not be caught anymore.",
      "created_at": "2024-08-02T09:53:45Z",
      "updated_at": "2025-01-18T20:57:35Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alper",
        "avatar_url": "https://avatars.githubusercontent.com/u/72429?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad5zM",
      "number": 994,
      "title": "How make accordion the default layout for new container",
      "body": "I have `default-root-container-layout = 'accordion'` which works initially, but it seems after a window is \"moved out\", new windows are tiled, and when moving one window toward another and they are both separate containers, it uses tiled layout.\r\n\r\nStacking then requires `join-with` instead of move and it would be nice for each container to remember `accordion` and just use `move` like in i3 ($mod+direction) when the workspace is set to \"stacked\" or \"tabbed\" layout. I also have this in my config per one of the suggestions:\r\n```\r\nafter-startup-command = [\r\n    'workspace 2', 'layout v_accordion',\r\n    'workspace 3', 'layout v_accordion',\r\n    'workspace 4', 'layout v_accordion',\r\n    'workspace 5', 'layout v_accordion',\r\n    'workspace 6', 'layout v_accordion',\r\n    'workspace 7', 'layout v_accordion',\r\n    'workspace 8', 'layout v_accordion',\r\n    'workspace 9', 'layout v_accordion',\r\n    'workspace 1', 'layout v_accordion'\r\n]\r\n```\r\n\r\nIn case I'm not doing this correctly or explaining it well, basically I want a window that is moved in the direction of another to always stack into the destination window's container.",
      "created_at": "2024-08-05T13:54:28Z",
      "updated_at": "2025-01-18T19:31:45Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "diocletiann",
        "avatar_url": "https://avatars.githubusercontent.com/u/14058796?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50W",
      "number": 1004,
      "title": "on-window-detected - if.app-name-regex-substring - value settings",
      "body": "[[on-window-detected]]\r\nif.app-id = 'com.apple.systempreferences'\r\nif.app-name-regex-substring = 'settings'\r\nif.window-title-regex-substring = 'substring'\r\nif.workspace = 'workspace-name'\r\nif.during-aerospace-startup = true\r\ncheck-further-callbacks = true\r\nrun = ['layout floating', 'move-node-to-workspace S']  # The callback itself\r\n\r\nHi, the above is an excerpt from AeroSpace Guide. My question are:-\r\n\r\n1) are you expecting a regex expression or just a the substring value e.g. 'settings' (looking for settings from the appname: System Settings.\r\n2) in the example for if.window-title-regex-substring = 'substring'  -> the value should be '\\<substring\\>' to denote any text, instead of 'substring' right?\r\n\r\nMany thanks,\r\n\r\nRegards,\r\nEzad\r\n<!--\r\nConsider including in bug reports:\r\n- `aerospace debug-windows` output if applicable\r\n- Screenshots of problematic windows if applicable\r\n- Videos of problematic windows if applicable\r\n- Your config\r\n-->\r\n\r\n## Checklist\r\n\r\n<!-- Please fill in the checklist. You must have strong reasons not to do so -->\r\n\r\n- [ ] I've searched for duplicates. My search queries were (please don't forget to search in closed issues too):\r\n  - query 1\r\n  - query 2\r\n  - ...\r\n- [ ] I've read the documentation https://nikitabobko.github.io/AeroSpace/guide & https://nikitabobko.github.io/AeroSpace/commands\r\n- [ ] I've searched in the documentation. My search queries were:\r\n  - dvorak\r\n  - monitor\r\n  - ...\r\n\r\n```\r\n<!-- Replace with `aerospace --version` output -->\r\n```\r\n",
      "created_at": "2024-08-20T19:30:29Z",
      "updated_at": "2025-01-18T20:16:19Z",
      "category": {
        "name": "questions-and-answers",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "ezadEzanee",
        "avatar_url": "https://avatars.githubusercontent.com/u/18095325?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50h",
      "number": 1006,
      "title": "In-place restart/upgrade support?",
      "body": "Hello!\r\n\r\nI've been using aerospace for a couple of months now and I like it!\r\n\r\nThe only inconvenience I sometimes face is when upgrading to new versions.\r\nI miss the inplace restart i3 feature: [docs](https://i3wm.org/docs/userguide.html#_restarting_i3_inplace), [more docs](https://i3wm.org/docs/userguide.html#_reloading_restarting_exiting)\r\n\r\nThis would be quite useful, instead of quitting aerospace, starting it again, and having to rearrange the windows back to their place again...\r\n\r\nThanks!",
      "created_at": "2024-07-29T09:58:58Z",
      "updated_at": "2025-01-18T20:20:14Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "zheltikov",
        "avatar_url": "https://avatars.githubusercontent.com/u/50992252?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51l",
      "number": 1021,
      "title": "Feature request: Command to close all workspaces except for the current",
      "body": "### Ask\r\nTo implement a command to close all workspaces except for the current. \r\nWhen invoked, all workspaces except for the focused workspace should be closed and all windows on other workspaces should be moved to the current workspace. ",
      "created_at": "2024-03-21T12:56:21Z",
      "updated_at": "2025-01-18T20:59:17Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "mameen-omar",
        "avatar_url": "https://avatars.githubusercontent.com/u/22115544?u=be1b06acf50e8d3bcca7e2e5035479e78166218f&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AcIvd",
      "number": 630,
      "title": "Idea: Restore workspace-to-monitor assignment when workspace command is toggled (repeated on the same workspace)",
      "body": "The use case is having _utility/overlay_ workspaces which I'd like to switch to temporarily from any monitor, but currently I would need to remember which workspace I switched _from_ to go back. Would it be possible to have it work like a toggle? 🤔 ",
      "created_at": "2024-08-08T10:30:05Z",
      "updated_at": "2024-10-27T14:05:26Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "XA21X",
        "avatar_url": "https://avatars.githubusercontent.com/u/784551?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51Q",
      "number": 1016,
      "title": "Error hide  window of crossover application",
      "body": "When I use crossover to play Windows games, sometimes Aerospace hide the game window to the bottom right corner of the screen. \r\n\r\nI have to change the screen resolution to locate the hidden window, but I cannot consistently trigger this bug; most of the time it behaves normally.\r\n\r\n\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.codeweavers.CrossOver'\r\nrun = ['layout floating','move-node-to-workspace 5']\r\n\r\n\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = 'exe$'\r\nrun = 'layout floating'\r\n```\r\n\r\n\r\n```\r\n72456 | com.codeweavers.CrossOver    | CrossOver\r\n72492 | NULL-APP-ID                  | Sakura.exe\r\n```",
      "created_at": "2024-06-16T04:34:24Z",
      "updated_at": "2025-01-18T20:45:46Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "shinonomeow",
        "avatar_url": "https://avatars.githubusercontent.com/u/67734180?u=cc2682de8bb2df77630ff4e6ca181c79ac1a2753&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad51i",
      "number": 1019,
      "title": "Dialog detection issue for F1 Multiviewer Live Timing windows",
      "body": "Hi, I use [Mutliviewer](https://multiviewer.app/) to watch F1 races. There's a certain window that it opens that is for some reason being treated as a dialog (the app developer made it impossible to minimize, if that matters).\r\n\r\nHere's a screenshot, its just a normal window that I usually put full screen on my secondary monitor:\r\n![image](https://github.com/nikitabobko/AeroSpace/assets/4987637/3ac1aa09-1624-476a-b067-19d29770efe8)\r\n\r\n```\r\ncom.electron.multiviewer-for-f1.window.264542 windowId: 264542\r\ncom.electron.multiviewer-for-f1.window.264542 workspace: f1Main\r\ncom.electron.multiviewer-for-f1.window.264542 treeNodeParent: Workspace(name: 'f1Main', isVisible: 'true', isEffectivelyEmpty: 'false')\r\ncom.electron.multiviewer-for-f1.window.264542 recognizedAsDialog: true\r\ncom.electron.multiviewer-for-f1.window.264542 AXTitle: Optional(Replay Live Timing — MultiViewer)\r\ncom.electron.multiviewer-for-f1.window.264542 AXRole: Optional(AXWindow)\r\ncom.electron.multiviewer-for-f1.window.264542 AXSubrole: Optional(AXStandardWindow)\r\ncom.electron.multiviewer-for-f1.window.264542 AXFocused: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.264542 AXFullScreen: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.264542 AXFrame: Optional(<AXValue 0x600001a2bb80> {value = x:1150.000000 y:644.000000 w:1440.000000 h:1200.000000 type = kAXValueCGRectType})\r\ncom.electron.multiviewer-for-f1.window.264542 AXPosition: Optional(<AXValue 0x600000115170> {value = x:1150.000000 y:644.000000 type = kAXValueCGPointType})\r\ncom.electron.multiviewer-for-f1.window.264542 AXGrowArea: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXMinimizeButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXMinimizeButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.electron.multiviewer-for-f1.window.264542 }\r\ncom.electron.multiviewer-for-f1.window.264542 AXDocument: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXSections: [\r\ncom.electron.multiviewer-for-f1.window.264542         Optional({\r\ncom.electron.multiviewer-for-f1.window.264542             SectionDescription = Content;\r\ncom.electron.multiviewer-for-f1.window.264542             SectionObject = \"<AXUIElement 0x600000115bc0> {pid=35029}\";\r\ncom.electron.multiviewer-for-f1.window.264542             SectionUniqueID = AXContent;\r\ncom.electron.multiviewer-for-f1.window.264542         })\r\ncom.electron.multiviewer-for-f1.window.264542 ]\r\ncom.electron.multiviewer-for-f1.window.264542 AXCloseButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXCloseButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.electron.multiviewer-for-f1.window.264542 }\r\ncom.electron.multiviewer-for-f1.window.264542 AXMain: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.264542 AXActivationPoint: Optional(<AXValue 0x600000113840> {value = x:1220.000000 y:658.000000 type = kAXValueCGPointType})\r\ncom.electron.multiviewer-for-f1.window.264542 AXFullScreenButton: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXProxy: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXDefaultButton: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXMinimized: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.264542 AXParent: Optional(<AXUIElement Application 0x600000115170> {pid=35029})\r\ncom.electron.multiviewer-for-f1.window.264542 AXTitleUIElement: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXCancelButton: nil\r\ncom.electron.multiviewer-for-f1.window.264542 AXModal: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.264542 AXZoomButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.264542      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.264542      AXSubrole: Optional(AXZoomButton)\r\ncom.electron.multiviewer-for-f1.window.264542      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.264542      AXParent: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXTopLevelUIElement: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      AXWindow: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.264542      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.electron.multiviewer-for-f1.window.264542 }\r\ncom.electron.multiviewer-for-f1.window.264542 AXSize: Optional(<AXValue 0x600000115170> {value = w:1440.000000 h:1200.000000 type = kAXValueCGSizeType})\r\ncom.electron.multiviewer-for-f1.window.264542 AXToolbarButton: nil\r\ncom.electron.multiviewer-for-f1.window.264542 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.electron.multiviewer-for-f1               AXRole: Optional(AXApplication)\r\ncom.electron.multiviewer-for-f1               AXTitle: Optional(MultiViewer for F1)\r\ncom.electron.multiviewer-for-f1               AXFunctionRowTopLevelElements: [\r\ncom.electron.multiviewer-for-f1                   Optional(<AXUIElement 0x600000115170> {pid=35029})\r\ncom.electron.multiviewer-for-f1               ]\r\ncom.electron.multiviewer-for-f1               AXFrame: nil\r\ncom.electron.multiviewer-for-f1               AXFocusedUIElement: nil\r\ncom.electron.multiviewer-for-f1               AXFrontmost: Optional(1)\r\ncom.electron.multiviewer-for-f1               AXExtrasMenuBar: nil\r\ncom.electron.multiviewer-for-f1               AXMainWindow: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               AXFocusedWindow: AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               AXMenuBar: Optional(<AXUIElement 0x600000115440> {pid=35029})\r\ncom.electron.multiviewer-for-f1               AXWindows: [\r\ncom.electron.multiviewer-for-f1                   AXUIElement(windowId=264542, title=\"Replay Live Timing — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.electron.multiviewer-for-f1                   AXUIElement(windowId=264500, title=\"2024 Canadian Grand Prix — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               ]\r\ncom.electron.multiviewer-for-f1               AXSize: nil\r\ncom.electron.multiviewer-for-f1               AXPosition: nil\r\ncom.electron.multiviewer-for-f1               Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n\r\ncom.electron.multiviewer-for-f1.window.265308 windowId: 265308\r\ncom.electron.multiviewer-for-f1.window.265308 workspace: f1Main\r\ncom.electron.multiviewer-for-f1.window.265308 treeNodeParent: AppBundle.TilingContainer\r\ncom.electron.multiviewer-for-f1.window.265308 recognizedAsDialog: false\r\ncom.electron.multiviewer-for-f1.window.265308 AXTitle: Optional(Driver Tracker — MultiViewer)\r\ncom.electron.multiviewer-for-f1.window.265308 AXRole: Optional(AXWindow)\r\ncom.electron.multiviewer-for-f1.window.265308 AXSubrole: Optional(AXStandardWindow)\r\ncom.electron.multiviewer-for-f1.window.265308 AXFocused: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.265308 AXFullScreen: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.265308 AXFrame: Optional(<AXValue 0x600001af9100> {value = x:1925.000000 y:525.000000 w:1515.000000 h:852.000000 type = kAXValueCGRectType})\r\ncom.electron.multiviewer-for-f1.window.265308 AXPosition: Optional(<AXValue 0x6000001a7450> {value = x:1925.000000 y:525.000000 type = kAXValueCGPointType})\r\ncom.electron.multiviewer-for-f1.window.265308 AXGrowArea: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXMinimizeButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXMinimizeButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription\r\ncom.electron.multiviewer-for-f1.window.265308 }\r\ncom.electron.multiviewer-for-f1.window.265308 AXDocument: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXSections: [\r\ncom.electron.multiviewer-for-f1.window.265308 ]\r\ncom.electron.multiviewer-for-f1.window.265308 AXCloseButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXCloseButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXHelp, AXPosition, AXRoleDescription, AXEdited\r\ncom.electron.multiviewer-for-f1.window.265308 }\r\ncom.electron.multiviewer-for-f1.window.265308 AXMain: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.265308 AXActivationPoint: Optional(<AXValue 0x6000001ba070> {value = x:1935.000000 y:539.000000 type = kAXValueCGPointType})\r\ncom.electron.multiviewer-for-f1.window.265308 AXFullScreenButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXFullScreenButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.electron.multiviewer-for-f1.window.265308 }\r\ncom.electron.multiviewer-for-f1.window.265308 AXProxy: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXDefaultButton: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXMinimized: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.265308 AXParent: Optional(<AXUIElement Application 0x6000001a2790> {pid=35029})\r\ncom.electron.multiviewer-for-f1.window.265308 AXTitleUIElement: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXCancelButton: nil\r\ncom.electron.multiviewer-for-f1.window.265308 AXModal: Optional(0)\r\ncom.electron.multiviewer-for-f1.window.265308 AXZoomButton: AXUIElement {\r\ncom.electron.multiviewer-for-f1.window.265308      AXRole: Optional(AXButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXTitle: nil\r\ncom.electron.multiviewer-for-f1.window.265308      AXSubrole: Optional(AXFullScreenButton)\r\ncom.electron.multiviewer-for-f1.window.265308      AXEnabled: Optional(1)\r\ncom.electron.multiviewer-for-f1.window.265308      AXParent: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXTopLevelUIElement: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      AXWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1.window.265308      Ignored: AXFrame, AXSize, AXFocused, AXChildren, AXHelp, AXPosition, AXRoleDescription\r\ncom.electron.multiviewer-for-f1.window.265308 }\r\ncom.electron.multiviewer-for-f1.window.265308 AXSize: Optional(<AXValue 0x6000001ba070> {value = w:1515.000000 h:852.000000 type = kAXValueCGSizeType})\r\ncom.electron.multiviewer-for-f1.window.265308 AXToolbarButton: nil\r\ncom.electron.multiviewer-for-f1.window.265308 Ignored: AXChildrenInNavigationOrder, AXChildren, AXRoleDescription\r\ncom.electron.multiviewer-for-f1               AXRole: Optional(AXApplication)\r\ncom.electron.multiviewer-for-f1               AXTitle: Optional(MultiViewer for F1)\r\ncom.electron.multiviewer-for-f1               AXFunctionRowTopLevelElements: [\r\ncom.electron.multiviewer-for-f1                   Optional(<AXUIElement 0x6000001b9140> {pid=35029})\r\ncom.electron.multiviewer-for-f1               ]\r\ncom.electron.multiviewer-for-f1               AXFrame: nil\r\ncom.electron.multiviewer-for-f1               AXFocusedUIElement: nil\r\ncom.electron.multiviewer-for-f1               AXFrontmost: Optional(1)\r\ncom.electron.multiviewer-for-f1               AXExtrasMenuBar: nil\r\ncom.electron.multiviewer-for-f1               AXMainWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               AXFocusedWindow: AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               AXMenuBar: Optional(<AXUIElement 0x6000001dd800> {pid=35029})\r\ncom.electron.multiviewer-for-f1               AXWindows: [\r\ncom.electron.multiviewer-for-f1                   AXUIElement(windowId=265308, title=\"Driver Tracker — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\"),\r\ncom.electron.multiviewer-for-f1                   AXUIElement(windowId=264680, title=\"2024 Canadian Grand Prix — MultiViewer\", role=\"AXWindow\", subrole=\"AXStandardWindow\")\r\ncom.electron.multiviewer-for-f1               ]\r\ncom.electron.multiviewer-for-f1               AXSize: nil\r\ncom.electron.multiviewer-for-f1               AXPosition: nil\r\ncom.electron.multiviewer-for-f1               Ignored: AXChildren, AXChildrenInNavigationOrder, AXEnhancedUserInterface, AXPreferredLanguage, AXRoleDescription, AXHidden\r\n```\r\n\r\n~~If I'm reading the docs right, there's no way to override this on my end?~~\r\n\r\njust using app-id filtering with [[on-window-detected]] makes it tile every window including the Live Timing window:\r\n```toml\r\n[[on-window-detected]]\r\nif.app-id = 'com.electron.multiviewer-for-f1'\r\nrun = 'layout tiling'\r\n```\r\n\r\nbut this app makes a lot of windows and theres only a few i actually want to be tiled, so I need to do window-title-regex matching but I can't get any of the window name matching to work for Multiviewer (I can for Mail and other apps)\r\n\r\naerospace list-windows --workspace f1Main\r\n```\r\n264680 | MultiViewer for F1 | 2024 Canadian Grand Prix — MultiViewer\r\n265161 | MultiViewer for F1 | Driver Tracker — MultiViewer\r\n265159 | MultiViewer for F1 | Replay Live Timing — MultiViewer\r\n```\r\n\r\nWhen I try things like this with the specific windows title filter it doesn't work:\r\n```toml\r\n[[on-window-detected]]\r\nif.window-title-regex-substring = \"Replay Live Timing — MultiViewer\"\r\nrun = 'layout tiling'\r\n```\r\n\r\nSimilar attempts to match the \"Driver Tracker\" and other windows don't work either\r\n",
      "created_at": "2024-06-10T03:33:07Z",
      "updated_at": "2025-01-18T20:58:30Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "cbackas",
        "avatar_url": "https://avatars.githubusercontent.com/u/4987637?u=7e938d4abd1be007eb3460b9e5438b8281f60826&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50t",
      "number": 1009,
      "title": "Disable outer gap for space with just a single window",
      "body": "There exists a feature called smart gaps in [i3](https://i3wm.org/docs/userguide.html#gaps)/sway that does just that.\r\n\r\n```\r\n# Enabling “Smart Gaps” means no gaps will be shown when there is\r\n# precisely one window or split container on the workspace.\r\n#\r\n# inverse_outer only enables outer gaps when there is exactly one\r\n# window or split container on the workspace.\r\nsmart_gaps on|off|inverse_outer\r\n```\r\n\r\nI prefer having gaps when I have multiple tiled windows visible as it allows me to better distinguish between them (especially for windows of the same type such as multiple terminals next to each other).\r\n\r\nBut when I only have one window open, I would like it to use all screen estate available.\r\n",
      "created_at": "2023-12-14T10:27:37Z",
      "updated_at": "2025-01-18T20:27:41Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "fmasa",
        "avatar_url": "https://avatars.githubusercontent.com/u/5658260?u=781e114cf8328553ed6934ea3ed3274b77a43f0e&v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzBp",
      "number": 970,
      "title": "Mode change feedback flash",
      "body": "It would be nice if the major mode changes would flash a quick feedback toast so that you know what you're doing and that it's doing something.\r\n\r\nThese should be a setting so that users who are more advanced can then turn it off if they so like.\r\n\r\nYou could use that for config load errors as well (which right now pops up a terminal window).",
      "created_at": "2024-01-11T14:50:35Z",
      "updated_at": "2025-01-12T14:03:38Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alper",
        "avatar_url": "https://avatars.githubusercontent.com/u/72429?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4Ad50u",
      "number": 1010,
      "title": "Rectangle like commands accessable through the menu bar",
      "body": "I think it could help learnability of the tool to have some common (or configurable!) actions that you can trigger directly from the menubar.\r\n\r\nRectangle does this and it's very helpful in the beginning even if you don't use it that much later anymore.\r\n\r\n(Also I'm in and I can at some point look into contributing some of these things.)",
      "created_at": "2024-01-15T12:52:40Z",
      "updated_at": "2025-01-18T20:27:54Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "alper",
        "avatar_url": "https://avatars.githubusercontent.com/u/72429?v=4"
      }
    },
    {
      "id": "D_kwDOJl1IZM4AdzBM",
      "number": 969,
      "title": "Log keystrokes",
      "body": "This is kind of a random suggestion, but I sometimes struggle to adopt software like AeroSpace because when a keybinding doesn't work, I don't know if it's because:\r\n\r\n1. The software is broken,\r\n2. I have the wrong expectation for how it should work (I am new to tiling WMs), or\r\n3. the key combo I used is getting routed to some other software (e.g. I was running Yabai+skhd as well as Rectangle when I first launched Aerospace).\r\n\r\nWould it be possible for Aerospace to log the key combos it receives? This would at least help me rule out #3.",
      "created_at": "2023-12-05T20:10:42Z",
      "updated_at": "2025-01-12T14:00:37Z",
      "category": {
        "name": "feature-ideas",
        "emoji": ":hash:"
      },
      "answer": null,
      "user": {
        "login": "eugeneotto",
        "avatar_url": "https://avatars.githubusercontent.com/u/4927?v=4"
      }
    }
  ],
  "details": {
    "id": 643647588,
    "node_id": "R_kgDOJl1IZA",
    "name": "AeroSpace",
    "full_name": "nikitabobko/AeroSpace",
    "private": false,
    "owner": {
      "login": "nikitabobko",
      "id": 20517828,
      "node_id": "MDQ6VXNlcjIwNTE3ODI4",
      "avatar_url": "https://avatars.githubusercontent.com/u/20517828?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/nikitabobko",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "AeroSpace is an i3-like tiling window manager for macOS",
    "fork": false,
    "url": "https://api.github.com/repos/nikitabobko/AeroSpace",
    "created_at": "2023-05-21T20:20:17Z",
    "updated_at": "2026-02-05T02:55:17Z",
    "pushed_at": "2026-02-03T13:04:09Z",
    "homepage": "https://nikitabobko.github.io/AeroSpace/guide",
    "size": 12632,
    "stargazers_count": 18646,
    "watchers_count": 18646,
    "language": "Swift",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": true,
    "has_discussions": true,
    "forks_count": 406,
    "archived": false,
    "disabled": false,
    "open_issues_count": 185,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "topics": {
      "0": "apple",
      "1": "i3",
      "2": "i3wm",
      "3": "mac",
      "4": "macos",
      "5": "swift",
      "6": "tiling",
      "7": "tiling-window-manager",
      "8": "window-manager"
    },
    "visibility": "public",
    "forks": 406,
    "open_issues": 185,
    "watchers": 18646,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "network_count": 406,
    "subscribers_count": 62
  },
  "lastFetched": 1770261566605
}