{"id":15632025,"url":"https://github.com/jaymzh/jaymzh-macos-helpers","last_synced_at":"2025-03-29T19:13:14.770Z","repository":{"id":212214012,"uuid":"725338562","full_name":"jaymzh/jaymzh-macos-helpers","owner":"jaymzh","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-27T19:33:39.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T01:43:55.447Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaymzh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-29T23:48:10.000Z","updated_at":"2023-12-14T00:40:49.000Z","dependencies_parsed_at":"2023-12-19T06:15:38.878Z","dependency_job_id":"63e6312a-ce0d-4402-8480-df0c0f5d11b0","html_url":"https://github.com/jaymzh/jaymzh-macos-helpers","commit_stats":null,"previous_names":["jaymzh/jaymzh-macos-helpers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymzh%2Fjaymzh-macos-helpers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymzh%2Fjaymzh-macos-helpers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymzh%2Fjaymzh-macos-helpers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaymzh%2Fjaymzh-macos-helpers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaymzh","download_url":"https://codeload.github.com/jaymzh/jaymzh-macos-helpers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246230541,"owners_count":20744349,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T10:42:24.112Z","updated_at":"2025-03-29T19:13:14.749Z","avatar_url":"https://github.com/jaymzh.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MacOS stuff\n\nI'm forced to use a Mac at work, here's where I document (and sometimes write) stuff to make it less painful.\n\n## Keybindings\n\nI use [Karabiner-Elements](https://karabiner-elements.pqrs.org/) to do complex keybindings and key modifications with a simple interface to map more common Linux-y keybindings to MacOSX. You can read about my setup and see my custom keybindings in [karabiner/README.md](karabiner/README.md).\n\n## Virtual Desktops with Multiple Monitors\n\nVirtual Desktop defaults in MacOS are pretty broken when you have multiple monitors. Each monitor becaomes a virtual desktop, and then when you make additional virtual desktops they can be assigned to either monitor rather. But you can change this. Here's the settings I recommend:\n\n- System Settings\n  - Desktop \u0026 Dock\n    - Mission Control\n      - `Automatically rearrange Spaces based on most recent use` - **DISABLE** - otherwise keyboard shortcuts and moving around becomes unpredictable\n      - `Displays have separate Spaces` - **DISABLE** - In Linux switching between virtual desktops does so on all monitors, not one at a time.\n        - **NOTE**: Disabling this often **enables** `Mirroring` in `Displays`, so you’ll want to go turn that off, again.\n  - Keyboard\n    - Keyboard Shortcuts\n      - Mission Control\n        - Expand the `Mission Control` section\n          - Set keyboard shortcuts for your desktops, I use Command-1, Command-2, etc.\n\n## Windows getting re-arranged\n\nObviously, when you connect or disconnect from monitors, windows will move around. In my experience, if you have two monitors connected to a laptop and come back and wake up the laptop, it can wake up one monitor before the others, doing this again.\n\nThe best solution I've found to this is [Moom](https://manytricks.com/moom/). Moom allows you to save window layouts and easily return to them which can making life much easier. You can trigger \"arranging\" via keyboard shortcut, do it from the toolbar, or trigger on certain other events. It currently can't seem to move Slack though, I have a bug open on it. Moom is $10, but it's well worth it.\n\n### Vertical and Horizontal Maximization\n\nOne thing that was unsolved for me for a long-time, actually is solvable with a somewhat hidden feature in Moom.\n\nIf you make a \"Resize\" action in Moom, and click the *middle* dot, you can set one dimention as \"=\" and another dimention as \"100%\" giving you either vertical or horizontal mximization of a window.\n\nYou can then make a \"revert to original dimentions\" action.\n\nYou can see examples of this in `Moom \u003e Moom Help \u003e Custom Controls \u003e 6) Resize \u003e Special Modes`.\n\n## Focus Follows Mouse\n\nThe UNIX/X11 standard is that focus follows the mouse pointer, not the click. OS X does not support this natively, but you can get it.\n\nVarious tiling window managers support some version of this, but I didn't want a tiling WM. I found [AutoRaise](https://github.com/sbmpost/AutoRaise).\n\n```bash\nbrew tap dimentium/autoraise\nbrew install autoraise --with-dexperimental_focus_first\nbrew services start autoraise\n```\n\nIf you want focus-without-raise, then do:\n\n```bash\nmkdir ~/.config/AutoRaise\necho 'delay=0' \u003e\u003e ~/.config/AutoRaise/config\nbrew services restart autoraise\n```\n\n## Notifications\n\nWhy doesn't google calendar notify you for your meetings even though that tab can notify? Because you have to go tell MacOS that Chrome can notify.\n\n* System Preferences\n  * Notifications\n    * select `Google Chrome` **and** `Google Chrome Helper`\n\n## Unsolved problems\n\n* highlight-to-copy/middle-click-to-paste - this works in Terminal only\n* send-window-to-back\n* send-window-to-another-desktop\n* alt-click to drag windows\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaymzh%2Fjaymzh-macos-helpers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaymzh%2Fjaymzh-macos-helpers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaymzh%2Fjaymzh-macos-helpers/lists"}