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?
Just normal settings configured so they leave me alone, then Firefox and Doom Emacs. Nix for installing packages.
I really need to look into Nix more
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.
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.
Thanks for that guide. Nothing around Nix on macOS really stuck for me.
I have a bit of Nix and homebrew and for most usage, homebrew is faster and nicer.
“Nicer” in what way? Doesn’t seem like there’s a point using Nix if you’re manually installing packages with homebrew anyway.
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.
Here’s what I have installed:
.pkg
filesI also recently (guess it’s been a couple of months) replaced Docker Desktop with Colima.
Didn’t know that, looks very nice! Also very expensive :(. I had Airfoil back in the day and it was fairly affordable.
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.
How does Colima compare with OrbStack? I haven’t used either, but they look appealing. https://orbstack.dev/
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.
Whoa! I haven’t heard about OrbStack until now, and it indeed look appealing! Specially considering what they promise on their landing page.
However…
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
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:
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.
https://alt-tab-macos.netlify.app/
At first I was confused by that too, but I got used to the standard behavior now and I love it. I.e:
Also 3 fingers swipe up for expose is pretty good .
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.
I’m also a Rectangle user. I’d like to learn Amethyst at some point but for now I’m lazy.
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.
I keep promising myself to do this to the next Mac I get.
https://github.com/geerlingguy/mac-dev-playbook
Narrator voice: He still hasn’t.
But one day I will, then I’ll have a repeatable set up every couple of years.
That seems cool, but for now I find I get most of the way there with a two step process:
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.
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:
Maybe the nice parts are in the UI coating then. It does look nice. :)
macOS provides two virtualization APIs:
Hypervisor.framework
, which is a low-level API fairly similar to KVMVirtualization.framework
, which is an Apple-developed QEMU replacement - just give it a disk image and goIIRC, 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.
Thanks for the detailed answer. I will definitely check it out. 👍🏻
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
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 globalBrewfile
, which looks like this, by populating your Brewfile definitions in~/.Brewfile
and runningbrew bundle --global
.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.
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.
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 :)
It seems that your linked sourcehut repository is private (or maybe it’s not the right link?)
Oops, fixed. Thanks :)
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.
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.)
Unix-like: Terminal.app (lower latency than iTerm), Doom Emacs, zsh, fzf, and our regular development tools, Homebrew.
I’m a very longtime Mac user, so I’m sure my mindset is different, but my must-haves are:
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.
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.
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.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.
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/
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.
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).
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.
Using macOS for the past 2 years, after almost 20 years on Windows. Here is stuff I swear by:
And then the usual, cross-platform apps, like VS Code, Photoshop, Inkscape, etc.
Thanks for the FinderFix suggestion!
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.
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.
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.
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.
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 for MonoDraw and macos-defaults!
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.)
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):
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 independentvenvs
easily, just bycd
ing in and out of the project directories. I don’t bother with settingpyenv
’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 withtop
orhtop
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.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.
A handful of tools
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.
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.
Tools that I recommend from my own setup:
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.
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.
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):
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:
Keyboard > Keyboard Shortcuts > Modifier Keys: set Caps Lock to act as Ctrl and vice versa
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:
i keep my macOS setup version controlled: here a a snapshot of what’s on my personal laptop:
brew
& App Store applicationscoreutils
where all commands are prefixed withg
brew
probably has this too; i mainly just want access to Linux standard stuff when i might need it for scripting/compatibility without overriding macOS defaultsI 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):
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.
I use an M1 Max machine for work. I use:
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?
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.
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.)
caffeinate(8)
disables sleep and can be run from any Launchd events.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.
(Personal) M1 Air
defaults write -g KeyRepeat -int 1
(changed my life)Curious, what about
rust-analyzer
wins overCLion
for you?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.
What I use:
Plenty of cross-platform apps, too:
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.
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.
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.
A lot of the formulae would be installed as pre-reqs - particularly the libs.
From the app store:
brew leaves
would omit the transitive dependencies and focus on the things you installed.Thanks
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.
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.
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.
Figma, the design tool, has CLI help?
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.
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.
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
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.
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.
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).
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.
TIL there’s a Dtrace front end in Xcode: do want. Is there a link somewhere describing this?
It’s called Instruments. It’s not actually part of Xcode is that it’s installed as part of the Xcode bundle.
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.
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.
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
I use:
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.
Wezterm terminal
NvChad / Neovim editor
Capacities knowledgebase / task tracking
Fabric image storage
Raindrop saving links
Eagle saving website screenshots
Thats about it really ¯\(ツ)/¯
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.