1. 46

I recently got a macbook m2 pro intending on installing asahi once it released but I’m liking the integration with my apple watch and phone enough to consider making mac os my primary os. I’m an arch user and have no clue of the mac software ecosystem.What stuff do you recommend?

    1. 17

      Just normal settings configured so they leave me alone, then Firefox and Doom Emacs. Nix for installing packages.

      1. 2

        I really need to look into Nix more

        1. 6

          It can be a pain in the ass to grok but just installing home-manager and using it to manage your packages is a huge step up from uncontrolled homebrew usage. You can install packages from the nixpkgs repo if they support aarch64-darwin, and packages (casks, taps, whatever) via brew, from the same program.

          1. 6

            To your point, Tidying up your $HOME with Nix by Ju Liu was a really helpful introduction for me. I read Zero to Nix to get a quick idea of nix’s capabilities and then more or less emulated Ju Liu’s setup. I honestly haven’t progressed much farther than that, but it’s been enough to have a declarative way to manage my macOS packages.

            1. 1

              Thanks for that guide. Nothing around Nix on macOS really stuck for me.

        2. 1

          I have a bit of Nix and homebrew and for most usage, homebrew is faster and nicer.

          1. 2

            “Nicer” in what way? Doesn’t seem like there’s a point using Nix if you’re manually installing packages with homebrew anyway.

            1. 1

              I’m in a bit of an inbetween state and I want to keep a foot in the Nix ecosystem. Just for basic installation of packages when I need to develop something fast, I find homebrew to be much much faster.

    2. 13

      Here’s what I have installed:

      • Arc (browser), before that I’ve used Firefox Nightly since ever, I guess(?)
      • iTerm as my terminal emulator
      • NotePlan for notes and organising my day (along with the stock Calendar.app)
      • 1Password as my password manager
      • Transmit (from Panic) whenever I need to interface with S3/SFTP,
      • Transmission (BitTorrent) to download Linux ISOs
      • Suspicious Package to take a look on suspicious .pkg files
      • SoundSource (from Rogue Amoeba) to route audio and configure output levels on a per-app basis
      • Postico 2 whenever I need something fancy to connect to Postgres
      • Serial (from Decisive Tactics) to… well, connect to Serial ports
      • A few JetBrains IDEs (Goland/Clion/IDEA)
      • Little Snitch as my firewall
      • RapidAPI (previously called Paw) to make HTTP requests to APIs and such
      • Hex Fiend (from ridiculous_fish) to view/edit binary files and finally, brew.sh to install packages.

      I also recently (guess it’s been a couple of months) replaced Docker Desktop with Colima.

      1. 3

        SoundSource (from Rogue Amoeba) to route audio and configure output levels on a per-app basis

        Didn’t know that, looks very nice! Also very expensive :(. I had Airfoil back in the day and it was fairly affordable.

        1. 1

          Yeah, pricing made me reconsider it every time I needed something that provided what it offers, but in the end it is worth it. Folks from Rogue Amoeba have a superb support, and their software is rock solid. You will also notice they push updates quite regularly, so I consider it a well spent money. To have audio from my browser/slack/skype routed to the headset I use for that and not my DAC is really great :D haha

          IIRC, I bought it mid-pandemy, had to attend classes virtually and my colleagues used to gather on Discord at the same time. You can imagine the mess it was without being able to control which app was louder.

      2. 2

        How does Colima compare with OrbStack? I haven’t used either, but they look appealing. https://orbstack.dev/

        1. 3

          We are going to switch to colima at work because it runs a lot better than docker for Mac and no licensing issues. That said, orbstack has better x86 support on M1/M2 machines, in that it just runs x86 containers faster.

        2. 2

          Whoa! I haven’t heard about OrbStack until now, and it indeed look appealing! Specially considering what they promise on their landing page.


          OrbStack is completely free to use during beta, but it will become a paid product afterwards. We’re still working out the details, but this is the plan so far (subject to change): (…)

          They say personal use will be free, but I’m pretty sure that hold true until they change their minds. I haven’t had issues with Colima since I installed it, but some people from work had some tough time with it. Not sure why though; I couldn’t reproduce on my machines and on clean macOS installations in order to file an issue/try to find a solution. /shrug

    3. 11

      Recently switched to a m2 macbook for most work, after a bit over 2 decades on Linux desktops.

      Same a many people here, I mostly live in Firefox, Emacs and a Terminal emulator (kitty here). Using nix-darwin & home-manager instead of homebrew because that’s what I already knew. So this focuses on things I did not have on linux:

      1. 4

        https://rectangleapp.com/ brings some keyboard-driven window management to macos.

        I love this app for window management. I would also recommend AltTab. It allows you to switch between windows instead of applications. I used to see some instability, but it’s been pretty good in the last year.


        1. 4

          At first I was confused by that too, but I got used to the standard behavior now and I love it. I.e:

          • cmd + tab cycles through applications,
          • cmd + backtick cycles windows for the same application,
          • ctrl-+tab in most apps to cycle through tabs.

          Also 3 fingers swipe up for expose is pretty good .

          1. 1

            The weakness of the standard behavior is when you have multiple displays and many windows from a few applications open. If there are browsers on both displays and terminals on both displays, cmd+tab will fill both screens with all the windows for a single application, which is usually not what I want.

        2. 1

          I’m also a Rectangle user. I’d like to learn Amethyst at some point but for now I’m lazy.

    4. 8

      Some high level decisions I would recommend:

      Package management: If you want a normie package manager for the entire os, get homebrew. I prefer a development environment scoped per directory/project (eg different, specific versions of node.js for different projects), for which I would recommend using devbox + direnv. Don’t use Docker for your dev environment unless you need to.

      There are a ton of cute little useful menu bar utilities eg color pickers, window management, screenshotting, etc. Look for them.

      Go all in on 1Password: use it as your ssh agent, etc.

      I might have tons of recommendations if you get more specific about what kind of development you do.

    5. 8

      I keep promising myself to do this to the next Mac I get.


      Narrator voice: He still hasn’t.

      But one day I will, then I’ll have a repeatable set up every couple of years.

      1. 2

        That seems cool, but for now I find I get most of the way there with a two step process:

        1. brew bundle dump / brew bundle install
        2. copy over my config files
    6. 6

      For Unix sludge, I use MacPorts. It’s more tastefully designed than homebrew, though upgrading macOS releases is a pain in the ass with it, and there’s not as much manpower.

      I don’t actually use any window management or whatever tools beyond f.lux, because it’s more aggressive with tinting than night shift.

      I also don’t use any playbook or configuration stuff - the distance between when I upgrade a system is long and often involves switching platforms that I just re-evaluate what I use, from scratch.

      For Mac specific apps beyond the chat sludge everyone has, and their browser of choice: MacPass (though I wish it supported the new password manager APIs), UTM (QEMU is janky AF for x86 emulation, but it’s fine for ARM hypervising), Meta, DaisyDIsk, IINA (the best mpv frontend on any platform). I also maintain a Subsonic client for macOS, if anyone is interested in self-promotion.

      1. 1

        Your mention about UTM got me curious. I thought there could be some mac-specific magic… but it’s still qemu under the hood. Quoting their homepage:

        Under the hood of UTM is QEMU, a decades old, free and open source emulation software that is widely used and actively maintained.

        Maybe the nice parts are in the UI coating then. It does look nice. :)

        1. 1

          macOS provides two virtualization APIs:

          • Hypervisor.framework, which is a low-level API fairly similar to KVM
          • Virtualization.framework, which is an Apple-developed QEMU replacement - just give it a disk image and go

          IIRC, UTM supports both Virtualization.framework and QEMU-on-Hypervisor.framework.

          Notably, Virtualization.framework includes an option to provide a Linux build of Rosetta 2 to the VM - so you can run x86 Linux binaries on an ARM Linux kernel on an ARM Mac that way. Presumably you could also run that binary under QEMU but it’s probably against the EULA.

          1. 1

            Thanks for the detailed answer. I will definitely check it out. 👍🏻

      2. 1

        Meta is just gorgeous! Wish I had something like that when I used MP3/FLAC.

        Submariner also features a really good UI! Seems clean and objective. Best of luck with your fork! <3

    7. 6

      Regardless of what you do, definitely consider installing Homebrew. The killer feature for me is the brew bundle plugin to manage command-line dependencies and bog standard Mac apps (managed via “casks”). You can create a global Brewfile, which looks like this, by populating your Brewfile definitions in ~/.Brewfile and running brew bundle --global.

    8. 6

      As a meta-comment:

      In my experience, the people who end up hating macOS are the ones that try to make it like something else. It’s a linear evolution of NeXTSTEP, which made some decisions that are quite different from other UNIX variants and it has largely kept that spirit. It is not Linux or Windows, though it has some superficial similarities with both. In the OPENSTEP world, there is usually a ‘correct’ way of doing something. If you try to do it a different way, you will end up fighting the system and hate it.

    9. 5

      That’s funny - I’ve been given an M2 Pro by work and am counting the days I can get off macOS. In the meantime, I’m storing my (very hacky) setup at ~duncan-bayne/macos-setup/.

      Can recommend Rectangle as a psuedo-tiling-WM, too.

      1. 3

        I can add my 2c here as well. At the beginning of this year I switched jobs and got a MacBook. After decades of Linux, and 5 years of windows as well, at my previous job. I have tried for about a month, but it just fought me all the time. In the end my boss heard my complaints and got me a Lenovo laptop to install Linux on.

        I’m writing this not to deter the OP from switching, I simply wanted to let them know it’s fine if the experiment fails, you’re not the only one to give up :)

      2. 1

        It seems that your linked sourcehut repository is private (or maybe it’s not the right link?)

        1. 1

          Oops, fixed. Thanks :)

      3. 1

        I’m bailing off macos too, it became too hostile for developers imho.

        One thing about your install.sh script that I ought to say - you have a “Manually install by dragging into Font Book :/” message there, but it is totally possible to just copy the font into the ~/Library/Fonts/ directory.

        1. 1

          Oh neat, thanks! For some reason I didn’t think that worked. Will amend that on Monday.

          (Related: my work laptop goes on a shelf Friday evening, and doesn’t come out until Monday AM. Hard learned lesson, that.)

          1. 3
            brew tap cask/fonts
            brew install font-fira-code
            brew install font-fira-code-nerd-font
            brew install font-fira-mono
            brew install font-fira-mono-nerd-font
            brew install font-cascadia-code
            brew install font-cascadia-mono
    10. 5
      • Mimestream for Google Mail.
      • Dash for API doc search.
      • Raycast for search in place of regular spotlight search, also integrates with Dash and others.
      • 1Password SSH integration or Secretive
      • Wipr for Safari ad blocking (and Safari over any other browser, fast rendering, great battery life).
      • Shortcat for keyboard shortcuts for every UI element that can be interacted with.
      • Affinity Suite as a Photoshop/Illustrator/InDesign replacement.
      • OnmiGraffle for drawing some graphs.
      • PDFScanner for scanning + OCRing and outputting as PDF.
      • Hopper Disassembler. Not pro like IDA, but nice for quickly inspecting some code generation.
      • I used to use regular Little Snitch, but now Little Snitch Mini from the App Store, since it is simpler and does what I need.
      • TripMode for limiting which apps can use data when I’m abroad (and don’t have unlimited data).

      Unix-like: Terminal.app (lower latency than iTerm), Doom Emacs, zsh, fzf, and our regular development tools, Homebrew.

    11. 5

      I’m a very longtime Mac user, so I’m sure my mindset is different, but my must-haves are:

      • Fork, a superb Git GUI. I know how to use the command line, but for most things it’s so much easier being able to scroll around the commit tree and do things with a few clicks.
      • Dash, a universal documentation viewer. Super for searching man pages, C++ docs, JS, CSS, Go, HTTP error codes…
      • Typora is the best Markdown editor I’ve ever used. It’s found the right balance between WYSIWYG editing and Markdown syntax.
      • Karabiner Elements to set up hot keys and otherwise fine tune the keyboard. It’s a pain to configure but I haven’t found anything else I like better.
      • Alfred, a systemwide command palette that pops up with a hot key. It can do nearly anything — launch apps, search for files, search websites, copy files… — and it supports plugins to add more features.
      • iStatMenus adds menu bar items that can show status of the CPU, GPU, network and various other things; and clicking them pops up windows with more detail.

      Also, if you feel like kicking the tires of a few hundred apps of all types, there’s a subscription service called SetApp. For about $10 a month you get immediate access to every app. If you find a few apps you like but don’t want the rest, you can just cancel and then buy those apps individually. (Plus, it’s run by some nice devs from Ukraine 🇺🇦.)

      I stick with Safari, and Apple’s built-in mail, calendar, etc. apps. BTW the Reminders app has gotten quite good — it started out rudimentary but is now fully useable for Getting Things Done and other task management systems.

    12. 4
    13. 4

      It is worth spending some quality time playing around with system preferences, because there’s a lot of configurability even without third party addons. For instance, macOS comes with an ssh agent enabled by default, just run ssh-add.

      I use hammerspoon to set up keyboard shortcuts for moving windows to the layout I like. (I could probably do the same with Rectangle but I have been using hammerspoon for many years.)

      https://emacsformacosx.com/ is my main editor

      Homebrew for miscellaneous things, dev tools, libraries, etc.

      Firefox, multi account containers, ublock origin.

      I am thinking of moving from 1password to iCloud Keychain, because I find 1password’s cloud security model confusing and untrustworthy, and its firefox plugin spams me with popups so I removed it. Main issue I need to investigate is firefox keychain integration.

      1. 4

        For instance, macOS comes with an ssh agent enabled by default, just run ssh-add.

        And, especially, add --apple-use-keychain, which stores the passphrase in the keychain (which is encrypted using the secure element on modern Macs), so your keys are automatically decrypted when you log in, but remain encrypted at rest.

      2. 2

        It seems Firefox lost support for the MacOS keychain years ago in one of its extension api simplifications, and there’s no sign of it coming back.

        Looks like Safari profiles might be convenient enough as a substitute for multi account containers. https://www.macobserver.com/tips/how-to/setup-and-use-multiple-profiles-on-safari-browser/

        Now I need to take a look at ad blockers.

      3. 1

        Looks like Safari profiles might be convenient enough as a substitute for multi account containers. https://www.macobserver.com/tips/how-to/setup-and-use-multiple-profiles-on-safari-browser/

    14. 3

      karabiner-elements and Hammerspoon are high on my must-have list.

      My Karabiner config is pretty minimal but just to set up a Caps -> Shift+Ctrl+Alt and some basic media shortcuts is nice.

      Hammerspoon config is fun and easy to play with especially if you’ve used AutoHotkey in the past. I have simple window management, global mute, and a few hotkeys set up. The world is your oyster here.

    15. 3

      I try to keep it as simple as possible, using mostly built-in applications. The main applications I install are Firefox, Emacs and iTerm. I use Homebrew for managing packages and applications (casks).

      1. 3

        I try to keep it as simple as possible, using mostly built-in applications

        Same here. About the only customisation I do is move the dock to the top-left corner of the screen (having it in the corner is better for muscle memory because adding new icons doesn’t move all of them until the screen is full and then moves them only a little bit) and setting up corner activation for the Exposé actions (throw mouse to the top-right corner to see all windows, top left to see all windows in the same application).

        I use Apple’s terminal not iTerm. Apparently it’s better now but when I tried iTerm many years ago it crashed about once a day. Apple’s terminal has the main thing that I want: after force quitting it, you all of your windows come back with the same UUId in an environment variable, so my shell profile can reconnect ssh sessions and I can just reboot the machine without losing any state.

    16. 3

      Using macOS for the past 2 years, after almost 20 years on Windows. Here is stuff I swear by:

      • Rectangle for window management and tiling.
      • Arc browser, for so many useful features.
      • Warp as my terminal emulator.
      • Homebrew for package management.
      • CopyClip as a clipboard manager (menu bar).
      • SmoothScroll, since I use a Logitech mouse on my iMac and scrolling was janky without it.
      • FinderFix, for some useful Finder enhancements.
      • Gifski, for converting videos to GIFs.
      • Handbrake and IINA, for dealing with video formats.
      • NetNewsWire, the best RSS feed app there is.
      • Shortcut Keeper, for learning and storing keyboard shortcuts (disclosure, I built it :D)
      • Stats, for displaying some processor/network/memory stats in the menu bar.
      • MAMP, for spinning up a localhost server.

      And then the usual, cross-platform apps, like VS Code, Photoshop, Inkscape, etc.

      1. 2

        Thanks for the FinderFix suggestion!

    17. 3
      • NetNewsWire
      • Homebrew
      • GitUp to pair with CLI git
      • Learn Emacs editing shortcuts and use them in all of macOS’s native text fields
      • For brew you’ll be prompted to get the Xcode Command Line Tools (clang, macOS SDK, etc). You can also get Xcode proper, and if you really get into Apple dev I recommend Xcodes.app, which is an Xcode version manager/installer, as well as Interactful for a SwiftUI component gallery.
      • Learn all the Continuity features and try them with your Mac and phone together. In the same vein, give Safari a shot. I use the Vinegar and Hush extensions.
      • Mimestream if you’re a gmail user
      • Many like Alfred or Raycast for a launcher; Spotlight is fine for me
      • Karabiner-Elements is a low level key remapper and hotkey tool, but first see if you can get by with the stock System Settings modifier key swap and keyboard shortcuts customization.
      • 1Password is the best liked third party password manager, and these days it stores, syncs, and prefills not just passwords and OTP codes but also SSH keys, and I think passkeys may be arriving now or soon.
      • Find your text editor bliss somewhere. BBEdit and Nova are well known and platform-native, but of course there’s Sublime and VS Code and Emacs and Neovim.
      • Lingon X shows how launchctl is configured and what services are running.
      • Marked for markdown previewing
      • Bartender for progressive disclosure of menu bar extras
      • Writing/organizing favorites: MindNode, Tot, Obsidian
      • TextEdit defaulted to monospace + files and folders never let me down

      Try not maximizing windows all the time, if you have that habit. macOS is made for using many windows together, and many apps are designed to work fine when their windows are small. There is no native “maximize”, only “zoom” to fit a window to its contents and “full screen” which isn’t really the same. You can also use a helper app for window arrangement. People like Rectangle these days; I’m still on Divvy.

      When you get a new Mac app, if it’s a good platform citizen, the best way to understand it is to examine the Menu Bar. Menus list the program’s objects, the items list the actions, the Help menu has a search box that finds menu items, and everything the app can do should be in the menu. So you get a quick overview of what the app can do, the modes it has, etc. By the HIG, all actions should be in the menus, and by progressive disclosure, many will be only in the menus.

      Here’s a bunch of links with technical details about how macOS works. This is not an operating system for those who want ultimate control—in many ways you’re better off if you let go and let god, as it were. But there are ways to understand what’s going on.

      1. 1

        There is no native “maximize”, only “zoom” to fit a window to its contents and “full screen” which isn’t really the same.

        Option-click the zoom button (green dot top left of window) for maximise. They swapped it from maximise to full screen a few macOS releases back but kept the old behaviour behind option.

        1. 2

          You’re describing option-clicking the Full Screen button (green with two triangles) to get Zoom (green with a plus sign). It doesn’t necessarily fill the screen, rather it fits the content. Some apps implement this by filling the screen, but it is not a general purpose Maximize function. macOS doesn’t have one.

          1. 1

            Holding option and not clicking now pops up a little menu telling you what the options are: full screen and zoom controlled by whether you’re holding option, move to left / right side of the screen and move to my iPad.

            The move to iPad option would be really nice if the iPad worked as a touchscreen as well. It’s nice that I can move a PDF to my iPad but I wish I could scroll in it without putting it down and picking up the laptop.

    18. 3

      I like the normal stuff: Terminal.app, Homebrew, Docker.app, docker compose

      plus some Mac-only stuff like OmniOutline, OmniFocus, Marked 2.app, MonoDraw, Grand Perspective (disk usage)

      Of course, all of the cross-platform stuff works: IntelliJ, Sublime Text, Sublime Merge, Safari/Firefox, Steam, Transmission, SyncThing, DBeaver (PostgreSQL client) …

      just maybe be aware of all the defaults write stuff https://macos-defaults.com/, and the hotkeys for Dock/Finder/Terminal &c

      1. 2

        +1 for MonoDraw and macos-defaults!

    19. 3

      Terminal.app, Xcode, emacs-plug], Nova, Nix+nix-darwin (which can manage brew dependencies for you), and Alfred (because spotlight has latency when opening it. I could’ve sworn in 2010 that wasn’t there.)

    20. 2

      I don’t use Homebrew, only Nix (and wrote about it, although it’s a bit outdated at the moment). I’m overall very happy with it, sometimes there are gotchas but I’m still happy living a brewless life. The gotchas I can think of (and that I should document at some point):

      • Occasionally packages are old or not present in NixPkgs. I should really learn how to package stuff on my own to submit it.
      • Sometimes attempting a package update will fail, and it will take some digging to figure out why. Your system won’t break, the update will just be prevented from happening.
      • Using libraries in nix is weird, see the FAQ entry for details.

      Other than that I use Dash, Sublime Text, Sublime Merge, and Alacritty. I write Python for my day job, and if you’re doing anything other than writing a few scripts I highly recommend pyenv. Additionally, direnv is amazing and with its Python layout I can manage independent Python versions and independent venvs easily, just by cding in and out of the project directories. I don’t bother with setting pyenv’s global Pythons unless necessary.

      DaisyDisk and/or ncdu are also nice.

      I use Spaces and Stage Manager in lieu of a proper tiling window manager, but maybe I should change that.

      As people have said, dive into the settings to find some good stuff like reducing transparency, etc. For more advanced stuff you can use defaults or edit plists manually. For example, I turn off desktop icons entirely.

      iStatMenus gives some nice menubar meters, but be warned: if you see high WindowServer usage when looking at detailed CPU graphs, it’s iStatMenus causing high CPU usage by rendering the CPU chart itself 😅. Double-check with top or htop just to be sure.

      Location Services can cause high latency spikes on WiFi, because it disables the radio temporarily to look for other SSIDs. This can happen much more frequently than you think; for example the “dynamic wallpaper” feature will constantly check your location every minute to see what time zone you’re in. 100+ ms pings on WiFi every minute are horrible, so I’d recommend keeping an eye on what’s using Location Services. Luckily the latest versions of macOS make this much easier to detect and diagnose.

      One thing that’s not immediately obvious is that macOS has a lot of stuff built in “for free” that isn’t exactly advertised. A lot of this is in the Preview app, for example, which can mark up photos, make and edit PDFs, and even attach your signature to stuff (you sign a piece of paper, take a picture of it, and Preview will scan that signature and save it to be applied whenever you want). It also has universal OCR, just open a picture with Preview and start copying out the text. There’s built-in dictionaries (including multi-language ones), a very well equipped text-to-speech engine (say), and a toast-based notification system. The latter two are nice to append to long-running compile jobs; make; say done means you can walk away from your computer and hear when the compile finishes. It sometimes helps to check to see if the OS does what you want natively before buying an app, but be aware that the Apple ecosystem is littered with dead independent $5 app vendors because Apple noticed and added the feature for free in the OS. I try to base my support on whether the app actually adds value or is a trick to get people to pay for what should be free.

    21. 2

      Homebrew for easy installation of software packages. Acorn for image editing. Typora for editing Markdown. iTerm2 as terminal.

      Lima – for easily running a Linux VM where you can install Docker Engine.

    22. 2

      A handful of tools

      • Rectangle (for wrangling windows around)
      • iterm2 (though I’ve since found Terminal.app more than reasonable)
      • 1Password
      • Brew – yes, I’ll call it out. I’ve never found MacPorts very useful, but Brew keeps me sane. Maintaining multiple versions of Python is… Painfully better with brew.
      • Edge, though I’ve been fiddling with finding an alternative, but Arc doesn’t match it.
      • Previously, I used EasyRes as a way to control my monitors, but the last few major releases have made this far nicer without it.
      • While others have mentioned Hex Feind, which is a fine hex editor, I’ve recently taken to using ImHex. When I want something less heavy than ImHex, I’ll grab HextEdit, which has thus far been quite reasonable.

      I think the most powerful tool I’ve used is MacMouseFix. It patches over one of the singular most inane things I’ve encountered within MacOS: Not supporting the back/forward buttons on mice, but with some more useful hints like pull-drag. There is a SO answer that says you can do this without extra tools.

      1. 1

        Maintaining multiple versions of Python is… Painfully better with brew.

        I’m surprised by this statement because I’ve had the exact opposite experience. https://justinmayer.com/posts/homebrew-python-is-not-for-you/ explains the situation very well, but maybe homebrew has improved since that was written..

        I use pyenv for Python versions, it takes a little bit of setup but handles the problem for me in a much nicer way.

    23. 2

      Tools that I recommend from my own setup:

      • 1Password (password manager)
      • Amadeus Pro (audio editing)
      • Arq (backup)
      • Audio Hijack and Loopback (audio routing)
      • Bartender (menubard management)
      • BBEdit (editor, although maybe not the best choice looking forward)
      • BetterTouchTool and Karabiner (keyboard customization)
      • BlockBlock (persistent execution monitor)
      • Brew (command line tool installer)
      • Caffeine (menubar tool)
      • Dash (documentation manager)
      • GrandPerspective (disk space reporting)
      • HandBrake (DVD ripping)
      • iTerm2 (terminal program)
      • JollysFastVNC (guess)
      • Keyboard Maestro (automation)
      • Lingon X (LaunchAgent manager)
      • Little Snitch (firewall)
      • ManOpen (opens man pages in GUI)
      • NameChanger (bulk file renaming)
      • OmniOutliner and OmniGraffle (outliner, vector drawing)
      • Phone Amego (telephone dialing tool)
      • Platypus (wraps scripts into stand-alone apps)
      • Postbox (email)
      • SmartGit (source control GUI)
      • SuperDuper! (clone to external drive)
      • Suspicious Package (shows contents of install packages)
      • Sweet Home 3D (easy 3D room planning)
      • The Unarchiver (enhanced decompression tool)
      • URL Manager Pro (guess)
      • WireShark (network tool)
      • XMenu (menubar tool)
    24. 2

      I haven’t used it yet, but I just heard about Rocket, a replacement for macOS’s laggy emoji picker. Works just like slack emojis, just OS-wide.

      1. 1

        Seconded! (I forgot this in my list, and need to go back and add it.) I use the native picker for inserting other Unicode, but I use Rocket as my go-to for emoji picking, and it is so ingrained and 99% of the time seamless that I forgot about it.

    25. 2

      The prompt got me mulling on this and I have had a mind to do it for a while, so I just wrote up the whole thing here.

      The TL;DR (this is a long list! But I use my Mac for a lot of different kinds of things, and have been tweaking it to my own liking for a long time; and this does not include things like language runtimes or miscellaneous CLI tools I have installed—you can assume if there’s a good Rust or Go or whatever replacement for a long-standing Unix CLI tool, I likely use that instead, along with tools like xsv and jq):

      • 1Password
      • Audio Hijack
      • Backblaze
      • BBEdit
      • Cascadea
      • CleanShot X
      • Dash
      • Dato
      • Discord
      • Dorico
      • Finbar
      • Firefox
      • Fission
      • Flighty
      • Fork
      • Freedom
      • Git
      • Homebrew
      • Hush
      • iTerm2
      • iZotope RX 9
      • Jujutsu
      • Kaleidoscope
      • KeyCastr
      • Lightroom CC
      • Logic Pro
      • Loopback
      • Messages.app
      • Meta
      • Music.app
      • NetNewsWire
      • Noir
      • NotePerformer
      • Nova
      • Obsidian
      • Orion
      • Parcel
      • Photos
      • Raycast
      • Rocket
      • Safari
      • Save to Pocket
      • Save to Reader
      • Slack
      • Some variety of Chromium
      • SoundSource
      • Spitfire Audio BBC Symphony Orchestra Pro
      • Tadam
      • Telegram
      • Things
      • Transmit
      • Unite

      Bonus note: I find macOS way nicer to use by enabling the following settings/tweaks in the Settings app:

      • Appearance: set Show scroll bars to Always.

      • Accessibility > Pointer Control > Trackpad Options > Use for trackpad for dragging, with Dragging style set to Three Finger Drag

      • In Accessibility > Display, enable:

        • Reduce transparency (YMMV; I prefer it this way)
        • Show window title icons
        • Show toolbar button shapes
      • Keyboard > Keyboard Shortcuts > Modifier Keys: set Caps Lock to act as Ctrl and vice versa

    26. 2

      https://setapp.com/ is a like, monthly subscription service for full native apps, it’s a good way to see some options. I cancelled my sub and bought the few things that were worth it to me outright, specifically:

      • Dash for language n api documentation search
      • TablePlus for a general purpose sql client
      • Cleanshot for screen capture, recording, and annotation
      • RapidAPI, which is like Postman but imo better
    27. 1

      i keep my macOS setup version controlled: here a a snapshot of what’s on my personal laptop:

    28. 1

      I tend to try not to fight the OS X platform, so even as I use a tiling WM on Linux (I am of course a notion holdout), I have never been able to adjust to using any of the pseudo tiling systems on the Mac. More power to you who make it work, but for me, it’s too jarring when I hit the edge cases. YMM, of course V.

      My day-to-day includes (setting aside all the cross-platform stuff, like the shell tools, Adobe Photoshop/Lightroom and the JetBrains tools):

      • Safari, for the web
      • Mail, you know
      • iTerm, as a terminal emulator
      • Reeder ($), for RSS
      • Acorn ($), for image manipulation
      • Camo Studio ($), to use my iPhone as my webcam
      • Alfred ($), as my application launcher/palette &c.
      • 1Password ($), for all the reasons everybody else does, although I am getting less and less comfortable with it as it leans into the world of Enterprise Nonsense
      • Tower ($), the second-best Git client, better in some ways (and worse in others) than magit
      • Dash ($), API/manual browser

      I also use Fluid ($, abandonware, I think) to create single-site browsers, and Choosy ($) to route URL requests to them. I kind of aspirationally have Things ($) around to try and organize my life, but so far, no soup. People do love it, though.

      One thing I strongly recommend is to buy an external USB drive and set up Time Machine. It is Good to have three layers of backups, of course, but the beauty of Time Machine is that it is almost a versioned file system, in that you can recover prior versions of files, and when you fatfinger something from the command line (we’ve all done it), you can often just pop over to your Time Machine backup and get it back.

      I also always purchase apps directly from the developers, where possible, as the Mac App Store is a shitshow, and the 30% rake is totally unconscionable. I also will choose paid software over free software, as I think that the incentives line up better with my preferences, when there’s folding money on the table. The App Store has made this worse, actually, and it’s one of the reasons I hate it, but that’s another conversation for another post.

    29. 1

      I use an M1 Max machine for work. I use:

      • Wezterm as my terminal emulator
      • Nix for as much config as I can
      • Amphetamine to keep my display awake
      • Firefox * BetterSnapTool to resize windows like it’s 1997 (I miss my tiling wm…)
      • I got Dash, but it hasn’t really stuck unfortunately.
      1. 3

        I have screen corners configured to keep the screen awake or to lock it immediately, using system preferences. How does amphetamine improve on the built-in feature?

        1. 1

          I couldn’t really get stuff like that to ever work reliably. With Amphetamine I just click and the coffee cup is full and my Macbook won’t go to sleep 100% guaranteed.

        2. 1

          Oh, good question. I didn’t know you could keep the screen awake with screen corners. I’m going to uninstall it. Thanks.

          (Amphetamine does have some additional features. For example, it lets you say, “I want to keep the screen awake for $x amount of time. You can add triggers to e.g. sleep the screen when you connect a device. I never use that stuff, but just wanted to mention in case you or others might.)

          1. 4

            caffeinate(8) disables sleep and can be run from any Launchd events.

      2. 1

        I only started using Dash regularly once I gave it a dedicated Global Search Shortcut (I use Option+Space), combined with the option to hide Dash once I click away. This makes is as quick to access as Spotlight.

    30. 1

      (Personal) M1 Air

      • Kitty Terminal (used to use iTerm), with Jetbrains Mono Nerd font, custom colors, powerline-status, oh my zsh, fzf, brew etc
      • defaults write -g KeyRepeat -int 1 (changed my life)
      • Jetbrains (everything non-rust)
      • VSCode (rust)
      • LazyVim (one-off + when vim makes more sense)
      • Arc
      1. 1

        Curious, what about rust-analyzer wins over CLion for you?

        1. 2

          i have run into a number of bugs with rust plug-in for CLion (unclear to me why Jetbrains doesn’t officially support Rust), and performance isn’t great. I also had a number of issues debugging. And due to the high cpu usage, it drains my battery faster, which I’m not a fan of.

          I would love to use Jetbrains instead. VSCode is missing basic features, like clipboard history (do i really need a plug-in for everything?) a good command palette, searchable local history with reasonable time horizon, searchable recent locations, etc. etc.

    31. 1
      • Apps
        • iTerm
        • Chrome
        • Reeder
        • Logseq
        • Sublime Text
        • Sublime Merge
        • Intellij
        • Insomnia
        • vscode
      • Utilities
        • Amethyst (window tiling)
        • Raycast (not sure how to classify this, app launcher?)
      • Tweaks
        • Settings
          • Accessibility
            • Display
              • Increase contrast (default contrast settings give me a headache!)
              • Differentiate without color (to me this makes toggles more logical)
          • Displays
            • turn off true tone
            • turn off automatically adjust brightness
          • Tackpad
            • Tap to click
    32. 1

      What I use:

      • Alfred for an instant launcher (Raycast is a decent alternative, but uses a slower wizard-style interface)
        • Unfortunately, the built-in Apple Spotlight really doesn’t cut it
      • 1Password is excellent for passwords and your ssh-agent
      • OrbStack for containers
      • HexFiend for hex editing
      • Insomnia for HTTP testing
      • Transmission for torrents
      • GrandPerspective for visualizing disk space
      • exelban’s Stats monitor for your menu bar
      • JoyKeyMapper if you want to use a bluetooth game controller (good luck)
      • Magnet for window management
      • KeepingYouAwake for forcing your mac not to sleep

      Plenty of cross-platform apps, too:

      • Firefox Developer Edition for browsing
      • Emacs/VS Code/Jetbrains/Sublime, etc
      • TablePlus for db connectivity
      • VLC for video (but consider IINA for a simple native app)

      Oh! Be sure to look up how to alter your pam.d config files so you can use Touch ID from the terminal for sudo.

      Now some warnings:

      As you’ve discovered, Apple is great at multi-device integration, and iCloud’s not bad for storage. However, Apple Music is a terrible app, at least on desktop. Pages/Numbers/Keynote are just ok.

      Also, coming from Linux, you’ll find that Docker for Mac is also way worse. It’s much buggier and slower. Lots of people have switched to compatible alternatives like CoLiMa, and recently, OrbStack.

    33. 1
      • Tiles.app for basic Windows-like tiling (halves, quarters, thirds and moving windows between displays)
      • Vitals.app for quick “Activity Monitor” / “Task Manager” overview of CPU/mem/network usage
      • AltTab.app for more intuitive and functional alt-tab behaviour
    34. 1

      Like a lot of others, I use Firefox, 1Password, iTerm, and Rectangle. CleanShot is an excellent screenshotting tool that I have no problems paying for, too.

      One thing I haven’t seen that I absolutely couldn’t live without is Clipy for easy access to clipboard history.

    35. 1

      I have a Mac mini and my Mac OS setup is that it is my server of sorts. Trying to get as good as possible in understanding SSH and docker for that reason.

      I have a very specific setup in Windows which I wasn’t able to replicate in Mac. My windows setup is Ditto (clipboard manager), AutoHotkey, Razer Synapse 3 (for setting macros) and the driver software for my 15 key MMO mouse.

    36. 1
      ❯ brew list
      ==> Formulae
      aom                     fribidi                 lazygit                 libtiff                 mbedtls                 rav1e                   ttyd
      aribb24                 fzf                     leptonica               libunibreak             mpdecimal               readline                typos-cli
      bash                    gd                      libarchive              libunistring            mpg123                  ripgrep                 unbound
      bat                     gettext                 libass                  libusb                  msgpack                 rsync                   unibilium
      bat-extras              gh                      libavif                 libuv                   ncurses                 rtmpdump                utf8proc
      brew-cask-completion    giflib                  libb2                   libvidstab              neovim                  rubberband              vde
      brotli                  git                     libbluray               libvmaf                 nettle                  rustup-init             vhs
      c-ares                  git-extras              libcerf                 libvorbis               node                    sccache                 watch
      ca-certificates         glib                    libde265                libvpx                  oniguruma               sdl2                    webp
      cairo                   glow                    libevent                libvterm                opencore-amr            shared-mime-info        x264
      capstone                gmp                     libgit2                 libwebsockets           openexr                 shellcheck              x265
      cjson                   gnuplot                 libheif                 libx11                  openjpeg                six                     xorgproto
      colima                  gnutls                  libidn2                 libxau                  openldap                snappy                  xvid
      curl                    go                      libnghttp2              libxcb                  openssl@1.1             speex                   xxhash
      dav1d                   graphite2               libogg                  libxdmcp                openssl@3               sqlite                  xz
      direnv                  harfbuzz                libpng                  libxext                 opus                    srt                     zellij
      docker                  highway                 librist                 libxrender              p11-kit                 sslscan                 zeromq
      duf                     httpie                  libsamplerate           libzip                  pango                   svt-av1                 zimg
      exa                     icu4c                   libslirp                lima                    pcre                    task                    zlib
      fd                      imath                   libsndfile              little-cms2             pcre2                   tesseract               zoxide
      ffmpeg                  jpeg-turbo              libsodium               lua                     pixman                  the_silver_searcher     zsh
      flac                    jpeg-xl                 libsoxr                 luajit                  popt                    thefuck                 zsh-completions
      flyctl                  jq                      libssh                  luv                     pygments                theora                  zstd
      fontconfig              json-c                  libssh2                 lz4                     python@3.11             tldr
      freetype                just                    libtasn1                lzo                     qemu                    tmux
      frei0r                  lame                    libtermkey              mas                     qt@5                    tree-sitter
      ==> Casks
      1password                               font-dejavu                             github                                  quicklookase
      1password-cli                           font-dejavu-sans-mono-nerd-font         google-chrome                           rectangle
      alacritty                               font-fira-code-nerd-font                gpg-suite                               scroll-reverser
      alfred                                  font-fira-mono-nerd-font                intellij-idea-ce                        signal
      apparency                               font-hack-nerd-font                     iterm2                                  telegram
      caldigit-docking-utility                font-inconsolata                        keepingyouawake                         unofficial-wineskin
      discord                                 font-inconsolata-nerd-font              messenger                               visual-studio-code
      element                                 font-input                              micro-snitch                            wezterm
      firefox                                 font-iosevka-nerd-font                  qlcolorcode                             wine-devel
      font-anonymice-nerd-font                font-jetbrains-mono-nerd-font           qlimagesize                             wineskin
      font-bitstream-vera-sans-mono-nerd-font font-meslo-lg-nerd-font                 qlmarkdown                              zoom
      font-blex-mono-nerd-font                font-roboto-mono-nerd-font              qlstephen
      font-caskaydia-cove-nerd-font           font-source-code-pro                    qlvideo
      font-code-new-roman-nerd-font           font-victor-mono-nerd-font              quicklook-json

      A lot of the formulae would be installed as pre-reqs - particularly the libs.

      From the app store:

      1. 5

        brew leaves would omit the transitive dependencies and focus on the things you installed.

        1. 1


          ❯ brew leaves | column
          bash			glow			shellcheck
          bat			gnuplot			sslscan
          bat-extras		go			task
          brew-cask-completion	httpie			the_silver_searcher
          colima			jq			thefuck
          curl			just			tldr
          direnv			lazygit			tmux
          docker			libheif			typos-cli
          duf			mas			vhs
          exa			mtr			watch
          fd			neovim			zellij
          flyctl			node			zlib
          fzf			ripgrep			zoxide
          gh			rsync			zsh
          git			rustup-init		zsh-completions
          git-extras		sccache
          ❯ brew list --cask | column
          1password                            font-victor-mono-nerd-font
          1password-cli                           github
          alacritty                               google-chrome
          alfred                                  gpg-suite
          apparency                               intellij-idea-ce
          caldigit-docking-utility                iterm2
          discord                                 keepingyouawake
          element                                 messenger
          firefox                                 micro-snitch
          font-anonymice-nerd-font                qlcolorcode
          font-bitstream-vera-sans-mono-nerd-font qlimagesize
          font-blex-mono-nerd-font                qlmarkdown
          font-caskaydia-cove-nerd-font           qlstephen
          font-code-new-roman-nerd-font           qlvideo
          font-dejavu                             quicklook-json
          font-dejavu-sans-mono-nerd-font         quicklookase
          font-fira-code-nerd-font                rectangle
          font-fira-mono-nerd-font                scroll-reverser
          font-hack-nerd-font                     signal
          font-inconsolata                        telegram
          font-inconsolata-nerd-font              unofficial-wineskin
          font-input                              visual-studio-code
          font-iosevka-nerd-font                  wezterm
          font-jetbrains-mono-nerd-font           wine-devel
          font-meslo-lg-nerd-font                 wineskin
          font-roboto-mono-nerd-font              zoom
    37. 1

      I’ve been restoring Time Machine backups for so long it is hard to gauge but generally have been doing a one liner in homebrew for years now. Really want to try Nix at some point.

    38. 1

      Mine is outlined here.

      Recently I mostly switch between VSCode, Safari, Warp, Sublime Merge, Obsidian, ChatGPT desktop app as I develop. All powered by Karabiner and Keyboard Maestro.

    39. 1

      The only thing I use I don’t already see mentioned is Figma. I’m terrible at remembering what options & arguments I can pass to CLI commands and Figma has been amazing for me.

      1. 1

        Figma, the design tool, has CLI help?

        1. 1

          I think that was an autocomplete from my phone that I missed, thank you for pointing it out! I meant https://fig.io/. Though it just this week was acquired by Amazon which has me a little concerned about how useful it will be in the future since Amazon tooling tends to get quite complex and Fig has been relatively simple so far.

    40. 1

      I install Firefox, Chrome, Wireguard, Alacritty.

      I set almost every app to full-screen. I use a hot-corner to do virtual desktop switching, and in Accessibility I set reduced motion, which increases the speed of switching substantially.

      This Mac has a touchbar, so I set it to reduce the number of icons on it to a minimal set - screen brightness, keyboard brightness, volume.

      Now it’s a ‘smart terminal’ – a securely connected keyboard and screen for using a terminal and web browsing. All done.

    41. 1

      If you were an i3 user I suggest yabai and skhd. Together they’re a really heroic effort to do something unixy and i3-like in osx and while there are rough corners it is a pretty usable tiling WM experience on a platform that was designed with no intention of something like that working

    42. 1

      I try not to tweak the base OS too much. There are a few things over the years I’ve had to jam in via .kext or various sticky OS commands, but generally I only do this when forced to.

      • The only custom menu bar item I run is Menumeters.
      • BarNone if you have a touch bar
      • Homebrew, of course, but primarily for the stuff I’d grab on Linux using a package manager there
      • Parallels if you need Microsoft Windows, otherwise avoid it like the plague (although despite its milk-the-cow business model, the base software isn’t that bad)
      • Microsoft Office for the Mac isn’t bad, either, if you’re stuck interop-ing with Microsoft users
      • UTM for hosting VMs
      • Firefox for browsing, Chrome only for development/testing when necessary
      • Xcode is an unfortunate must-install, but generally not a must-use
      • Hexfiend and BBEdit, for rare use when nothing else will suffice
      • Audirvana for music
      1. 3

        Parallels if you need Microsoft Windows, otherwise avoid it like the plague (although despite its milk-the-cow business model, the base software isn’t that bad)

        I bought Parallels 2 when I got my first x86 Mac (Core 2 Duo MacBook Pro). It caused repeated kernel panics. It turned out that they had not correctly read the IPI documentation. There was a bug fix but it was only in Parallels 3, so you had to pay more for a newer version if you wanted the software that you paid for to not cause your computer to crash.

        I will never give that company money ever again.

        Microsoft Office for the Mac isn’t bad, either, if you’re stuck interop-ing with Microsoft users

        Though it is quite annoying that the keyboard shortcuts are the same as Office for Windows, not the same as every other Mac application (e.g. redo is command-Y, not command-shift-Z).

        Xcode is an unfortunate must-install, but generally not a must-use

        Not necessarily. You can install the Xcode command-line tools without installing the GUI. That said, the DTrace front end in Xcode is really nice, so I tend to have it installed anyway.

        1. 1

          TIL there’s a Dtrace front end in Xcode: do want. Is there a link somewhere describing this?

          1. 2

            It’s called Instruments. It’s not actually part of Xcode is that it’s installed as part of the Xcode bundle.

    43. 1

      1Password for password management.

      Hammerspoon for window management. I have keys bound in a similar way to Rectangle mentioned elsewhere. My config is at https://github.com/twpayne/dotfiles/blob/f25b14407ec63b79b8c84a3a3159431fc4c02c24/home/dot_hammerspoon/init.lua

      Karabiner Elements just to get Caps Lock+X shortcuts.

    44. 1

      I am fine with the included (fewer things to have to install) Terminal.app, Mail.app, and Safari.
      I also use Raycast, VSCode, macvim, Brave (mostly just for “works best in chrome” sites), The Archive (for Zettelkasten/knowledge archiving), syncthing, IINA (media player), Deckset (presentations), 1password, Affinity graphics suite, limechat, wireguard, monodraw, things.app, numbers, pages, toothfairy, and some misc tools from objective-see, and unixy stuff with homebrew.

    45. 1

      I like this little tool that adds drag-anywhere to move and resize windows, like Fluxbox and other XFree86 old school window managers: https://github.com/jmgao/metamove

    46. 1

      I use:

      • iterm/Warp
      • Obsidian for taking notes
      • Database GUI (TablePlus)
      • Brew as package manager https://brew.sh/
      • Rectangle (Windows resize, order, etc)
      • Alfred (Spotlight imrpoved)
    47. 1

      I go back and forth between Safari and Firefox as the browser, keeping a Chrome install around for things that block all other browsers. I use the default mail app.

      I mostly live in a terminal window (iTerm), running a GNU screen session with IRC (irssi), Emacs, and a variety of shells. Most CLI stuff installed via Homebrew, though be careful with it – it wants to be both an application installer/manager and a dev library/tool manager and those are often incompatible. So you’ll probably want to manage your main dev language independently (I manage Python installs via pyenv, for example, rather than using Homebrew’s Python interpreter since I never know when that might get “upgraded” out from under me).

      I don’t do any fancy window manager or other stuff to try to turn it into a “Linux” desktop. I did that for most of a decade (Enlightenment in the E16 days), and generally I prefer the Mac UI and conventions.

      I have a couple small portable hard drives that I use to back up.

      And mostly I just get on with work. The nice thing is I don’t have to spend enormous amounts of time twekaing configs and such to get things to work, which was my experience in my Linux desktop days.

    48. 1

      Wezterm terminal

      NvChad / Neovim editor

      Capacities knowledgebase / task tracking

      Fabric image storage

      Raindrop saving links

      Eagle saving website screenshots

      Thats about it really ¯\(ツ)

    49. 1

      A lot of these comments recommend Rectangle for window management. I’ve given it a spin and really enjoy it. However, I have been using Amethyst for years as a proper tiling wm and have been rather happy with it too.

      It requires a bit of tuning as not all apps like being tiled, and sometimes when minimizing apps or apps that start out as very small windows, these are not included in the tiling until I’ve restarted Amethyst.