I've used Macs for 20 years starting on the day 32-bit Intel Macs were released, and agree with the GP. Linux and Plasma spoiled me, going back to macOS and its windowing system feels like a step backward, especially for development, where using multiple windows is a must. Task switching is.. not good? I don't get window previews I can switch through when I hover over the dock, but I do on Linux.
Yes, I know about Yabai and the other things that modify the existing window manager. The problem is the window manager itself.
Outside of the windowing system, running native Linux if you're deploying to Linux beats using an amalgamation of old BSD utils + stuff from Homebrew and hoping it works between platforms, or using VMs. The dev tools that are native to Linux are also nice.
When it comes to multiple monitors, I want a dock on each monitor. I can do that in Plasma, but I can't in macOS, unless I use some weird 3rd party software apparently.
When you use linux as desktop, sometimes you get into a customization-hole and make everything "just right" because on linux everything is customizable.
Then you switch to macOS or Windows or even (not your) linux setup and hate it. When I manage to contain myself entirely to the terminal it's okay, but the moment I have to interact with GUI I start to miss those "just right" things.
I can relate. macOS hilariously sucks on certain GUI and terminal aspects. Not much you can do about GUI, just have to adapt to the way macOS wants to be used. For terminal, I use home-manager to manage my $HOME. It not space efficient and public caches are sub-par, but it's better than searching "sed in-place repace macos and linux cross-platform" for the 9000th time.
The irony is that I set up my Plasma desktop to mimic macOS' layout in terms of positioning buttons, menus, widgets and docks, and just leave the default settings and themes. Just what you get for free by default with Plasma is great vs macOS even with customizations.
I do nerd out when customizing the shell, though.
> It not space efficient and public caches are sub-par, but it's better than searching "sed in-place repace macos and linux cross-platform" for the 9000th time.
When onboarding new devs, it's like Groundhog Day, where I will inevitably have the "did you use GNU sed or BSD sed" conversation at some point if they have Macs.
It's amazing, I have the same terminal environment in WLS2, macOS and linux. NeoVim with all of its native dependencies, all k8s tools, etc. Sometimes I run it issues something not working on macos, but usually easy to resolve, if not, I use homebrew via home-manager.
Honestly, I get the GP completely. It’s not much the customisation hole. It’s just that MacOS is pretty meh as an OS and hilariously Snow Leopard, the first version I ever used, is my favourite amongst all the ones that followed.
I like the hardware however. I really wish there was a good laptop using a competitive ARM SoC with great Linux support. I refuse to buy anything from Apple since they started the whole EU shenanigans and I don’t really now which laptop I will buy. I’m seriously considering only using a phone as my personal computing device now that Android takes convergence semi seriously.
> Not really. Google, in fact, very opposes that convergence because it will hurt ChromeBook and chomecast sales.
They oppose convergence so much that they have just added a desktop environment when Android is plugged to a screen and a way to run Linux app with GPU acceleration.
Also Pixels natively support HDMI through usb-c and have done so for years. They do have terrible SoC however so I'm leaning more towards a Chinese phone personally.
> Task switching is.. not good? I don't get window previews I can switch through when I hover over the dock, but I do on Linux.
That just sounds like being accustomed to one way of switching tasks, honestly. If I want previews, I use Expose (three-finger swipe up/down or ctrl-up/down). But mostly I just use cmd-tab and haven't really needed to see previews there. Because macOS switches between applications, not windows, often there isn't single window to preview, and I'm not sure showing all the windows would work well either. For Expose it works well because the it can use the entire screen to show previews.
If I wanted to use gestures, three/four finger swipe up and down shows all of the windows and all of the desktops with windows respectively. If I'm switching using the keyboard, I get window previews. If I'm switching using the dock, I get window previews.
Going back to macOS where I don't get window previews forces me to think in terms of app icons, instead of the UI I've been staring at and will instantly recognize. And if I use the dock, I have to remember the window title's name to switch windows using the context menu.
Funny, I've been using Macs for 10+ years and I've never really used Expose. Often I'd be trying to select between windows that look very similar (eg, code windows), so it doesn't work. Instead, I just use Cmd+Tab, and then Cmd+` to cycle windows.
Exactly. I find the macOS approach (Cmd-Tab to pick the right app, Cmd-` to pick the right window) much faster/better than just one shortcut to go through all windows.
Imagine having N apps with M windows each, with the macOS model your number of presses to find a given window goes from O(NM) to O(N+M).
This is how it works in Plasma, you can use the app switcher key combo to switch between apps and then the app window switcher combo to switch between that app's windows. You can also go through every single window, if you want.
The app switching behaviour is really infuriating. Selecting a window and having all the app’s windows come to the fore, obscuring the window from another app is still annoying, 20 years on.
And then when you full-screen a window, switch to another app for a moment, and then you can’t find it without delving into the ‘window‘ menu.
You're right, I'm thinking of using the keyboard cmd-tab.
So if I have two Zed windows and Firefox in front of one of them, I can't switch from Zed to Firefox and back to Zed without losing view of Firefox. Means I have to move windows around so they don't overlap, which seems so counterintuitive.
I'll echo the sentiment about being very familiar with macOS but being spoiled by Linux and KDE Plasma. I put up with my work MacBook. My personal Linux setup just works and gets out of the way as a machine.
The newest Macbooks have insanely powerful hardware (I have an M4 Macbook Max). Yet they do not feel as speedy or instant on my machines with i3. There's always a perceivable milliseconds of latency, with response time from the keyboard to the screen. As someone who has tons of key bindings, I find this tolerable, but it can get a bit grating compared to just how instantaneous everything is on my Linux.
The way sidebars feel is really "sticky". This has got worse with SwiftUI. The List component used for this has notoriously poor performance and a really inflexible API.
Agreed, as a software engineer of ~8 years now Mac is actually my _preferred_ environment -- I find it an extremely productive OS for development whether I'm working on full stack or Unity game dev in my free time.
I don't agree with OP's sentiment that macOS is a bad dev environment, but surely I prefer Linux+KDE as an overall dev environment. I find that all the tools I need are there but that I'm fighting the UI/UX enough to make it a hassle relative to KDE.
> I don't agree with OP's sentiment that macOS is a bad dev environment, but surely I prefer Linux+KDE as an overall dev environment. I find that all the tools I need are there but that I'm fighting the UI/UX enough to make it a hassle relative to KDE.
This sounds like you think macOS is a good dev environment, but that you personally don't like the UI/UX (always safer to make UI/UX judgements subjective ["I don't like"] rather than objective ["it's bad"], since it's so difficult to evaluate objectively, e.g., compared to saying something like Docker doesn't run natively on macOS, which is just an objective fact).
For example, if I open a new Firefox window, the Mac seems to force the two Firefox windows onto different desktops. This already is a struggle, because sometimes I don't want the windows to be on two desktops. I find that if I try to move one window to the same desktop as the other, then Mac will move the other desktop to the original desktop so they are both still on different desktops.
OK, got sidetracked there on a different annoyance, but on top of the above, CMD-backtick doesn't usually work for me, and I attribute it to the windows typically being forced onto different desktops. Some of the constraints for using a Mac are truly a mystery to me, although I'm determined to master it eventually. It shouldn't be this difficult though. For sure, Mac is nowhere near as intuitive as it's made out to be.
My favorite is how it'll force move your workspace if you get a popup.
To reproduce, get a second monitor, throw your web browser onto that second monitor (not in full screen), and then open a application into full screen on your laptop's screen (I frequently have a terminal there). Then go to a site that gives you a popup for OAuth or a Security Key (e.g. GitHub, Amazon, Claude, you got a million options here). Watch as you get a jarring motion on the screen you aren't looking at, have to finish your login, and then move back to where you were.
> Mac are truly a mystery to me
Everyone tells me how pretty and intuitive they are yet despite being on one for years I have not become used to them. It is amazing how many dumb and simple little problems there are that arise out of normal behavior like connecting a monitor. Like what brilliant engineer decided that it was a good idea to not allow certain resolutions despite the monitor... being that resolution? Or all the flipping back and forth. It's like they looked at the KDE workspaces and were like "Let's do that, but make it jarring and not actually have programs stay in their windows". I thought Apple cared about design and aesthetics but even as a Linux user I find these quite ugly and unintuitive.
Stop using "full screen mode", with recent macOS you can just drag the window to the top of the screen and let it "snap" to fit the entire screen. This is different from "full screen mode" which is largely useless. What you want is that the app window fills the screen space, not that it takes over the entire screen
I'm truly annoyed at it reordering the desktops even when i have just a single screen (the built in one). I expect my programs to be in certain order, so switching between them is predictable.
Or sometimes it just decided to open a link in a new chrome window instead of just opening a tab.... and not even consistently.
That gets extra weird with a second monitor. I really cannot predict where a workspace on that monitor will land when disconnecting. It could be prepending or appending. I think it orders based on last active but my lack of confidence should even say something. I mean just because you interact with a program doesn't mean that was the last active program... crazy that I can scroll or type into a window and it not be considered the active window
Even worse is the lag in switching windows. If you use keyboard shortcuts to switch, your screen will have switched over but focus is still on the previous window so anything you type goes there. I have to pause for a second to wait for it to catch up.
and disabling animations doesn't help, it's still slow.
It still surprises me how slow so much of Windows and OSX are. It is absolutely bonkers how slow so many things are[0]. Even more given how many people don't realize how fast everything can or should be. People will fight hard to justify why they don't have basic optimizations. Much harder than it would be to actually implement them...
Stop using multiple desktops. Use a single extended desktop. Move the apps where you want them and snap them to one side or the other to any given screen. Done.
Or just put a program onto a second monitor then open a second window for that program. Usually it will not open in the same monitor. This is especially fun when you get pop-ups in browsers...
Only sometimes it doesn't work. (For me on a Norwegian keyboard it is CMD+<)
Specifically, sometimes it works with my Safari windows ans sometimes it doesn't.
And sometimes when it doesn't work, Option+< will work for some reason.
But sometimes that doesn't work either and then I just have to swipe and slide or use alt-tab (yes, you can now install a program that gives you proper alt-tab, so I do not have to deal with this IMO nonsense, it just feels like the right thing to do when I know I'm just looking for the other Safari window.)
I'm not complaining, I knew what I went to when I asked $WORK for a Mac, I have had one before and for me the tradeoff of having a laptop supported by IT and with good battery time is worth it even if the UX is (again IMO) somewhat crazy for a guy who comes from a C64->Win 3.1->Windows 95/98->Linux (all of them and a number of weird desktops) background.
> Have you tried any that actually delivered on what was promised?
It absolutely does.
Maybe I should just switch to using it 100% of the time like on Windows. (I was trying to have it the KDE way: Yes, window based switching instead of App based, also an option to switch between windows from the same application.)
> Or otherwise you can enable the app exposé feature to swipe down with three fingers and it will show you only windows of the same app.
If you have an Apple keyboard, CTRL-F3 (without the Fn modifier) will do the same. Not sure if there are third-party keyboards that support Mac media keys, but I'm guessing there are some at least...
That has terrible ergonomics for anyone using a non-US keyboard, though - the backtick is immediately above the option key so to hit together with CMD requires clawing together your thumb and little finger.
GNOME does this much better, as it instead uses Super+<whatever the key above Tab is>. In the US, that remains ` but elsewhere it's so much better than on MacOS.
> That has terrible ergonomics for anyone using a non-US keyboard, though - the backtick is immediately above the option key so to hit together with CMD requires clawing together your thumb and little finger.
That's true, hence why I remap it to a "proper" key, above Tab with:
Firstly, I have not complained about Linux, did I? Even more, I'm about to switch to Linux on my desktop, thanks to Microsoft and their EOS for "the last Windows version ever". Secondly, I suspect power users hardly ever find any OS perfect for their needs, there are always some customizations.
So many comments about how Linux isn't ready because of some admin task requiring to run a CLI command.
Then Windows apologists tell you that actually all your problems are because you didn't edit your install ISO or pirate a IOT enterprise edition. Because that's normal behaviour.
And it's becoming more common with Macs.
I remember Snow Leopard was genuinely amazing, and a massive improvement over everything else. I had high hopes after Mountain Lion that we would get a feature release and then a performance release, because the performance releases just made everything so much better. Alas I just seem to get more whitespace.
Apple really doesn't tell power-users about a lot of these features. You can really gain a lot by searching for Mac shortcuts and tricks. I still learn new things that have been around for over a decade.
Another tip: lots of useful characters are only an option press away. You can find them by viewing your keyboard [1], which is easy if you have you input source on your dock. Some of my favorites:
⌥k = ˚ (degree) ⌥e a = á
⌥p = π (pi) ⌥e e = é
⌥5 = ∞ (infinity) ⌥e i = í
⌥d = ∂ (delta) ⌥e o = ó
⌥8 = • (bullet) ⌥e u = ú
⇧⌥9 = · (middot) ⌥n n = ñ
This is one of my favorite features of macs and it astounds me there's nothing close in equivalence for the other platforms. The recommendations are always 'Install a keybinding app and add all of them as key bindings', as if that wouldn't take hours of tedious labor to do.
I'd argue if you need to be told about keyboard shortcuts, then you're not a power user. (I.e., knowing how to find keyboard shortcuts I'd consider a core trait of power users).
My perception is that on Windows it is standard to display keyboard shortcuts next to application menu items, whereas on the Mac, that doesn’t seem to be the case. Perhaps that’s just a culture thing. It’s expected on Windows, and not as expected on Mac.
macOS does this too (if I'm following correctly), you can see it in the "The Apple Menu in macOS Ventura" screenshot on this Wikipedia page https://en.wikipedia.org/wiki/Apple_menu#/media/File:Apple_m... it's done for both application keyboard shortcuts, as well as system shortcuts (as in this example).
For completion, system shortcuts are also available in `System Settings > Keyboard > Keyboard Shortcuts...` (where they can also be changed). (Although I don't think that's 100% comprehensive, e.g., I don't think `⌘⇥` for the application switcher is listed there.)
As a hybrid macOS / Windows user (with 20+ years of Windows keyboard muscle memory), I found Karabiner Elements a godsend. You can import complex key modifications from community built scripts which will automatically remap things like Cmd+Tab to switch windows, as well as a number of other Windows hotkeys to MacOS equivalents (link below):
I’ve not used windows since XP, but the one thing I missed was the keyboard menu navigation with alt and the underlined single letters. Still in my muscle memory, and I always felt like it was at least as good as keyboard shortcuts.
Poking around System Settings > Keyboard > Keyboard Shortcuts… > Keyboard is a pretty good place to browse if you haven't. There are default keybindings that can changed and switched on/off. For macOS Sequoia 15.6:
[ ] Change the way Tab moves focus ⌃F7
[ ] Turn keyboard access on or off ⌃F1
[ ] Move focus on the menu bar ⌃F2
[ ] Move focus on the Dock ⌃F3
[ ] Move focus to the active or next window ⌃F4
[ ] Move focus to the window toolbar ⌃F5
[ ] Move focus to the floating window ⌃F6
[*] Move focus to next window ⌘`
[ ] Move focus to status menus ⌃F8
[ ] Show contextual menu ⌃↩
I only have one checked currently; I'm not feeling adventurous.
Stuff like the containerisation story on Macs is so miserable. The fact that so many devs use Docker and on Mac and pay the orders of magnitude file costs (or do a bunch of other shenanigans) really makes for an unfun experience.
Really wish someone could have figured out something a bit better in that space in particular. Docker compose is a "least worst" option for setting up a project with devs when many are uncomfortable with other solutions, but it really takes the oxygen out of anything that might "work"
I don't. I'm constantly shifting between my Linux desktop and a Mac for work. I also picked up a personal MBP with as much RAM as Apple allowed (still far overpriced and limited options) about a year and a half ago. While I don't regret it, it's still not my first choice.
If there's "endless options for local dev on a Mac" then I don't know how to describe the flexibility that a decent laptop running Linux gives you, comparatively. Honestly I think the Mac only excels in one area still today and that is: the breath of their paid for software library. The polish of Mac used to be the draw, but OS X has degraded over the years as Apple shifts to unify IOS and OS X. And don't get me started on the garbage that iCloud is that Apple continues to force feed harder and harder having, clearly, taken cues from the Windows team in Redmond.
I'm really hopeful we start to see more ARM options in non-Mac laptop formats soon. Because, while trivial, it is nice to be able to run small models for a variety of reasons.
It is interesting though that I see a "huge share of devs" using a Mac to write code targeting Linux environments when they could actually simplify their development environment by ditching Mac. To each their own.
Wow, this account's recent comment history is just full-on blasting with pro-apple opinions and attacking anyone who posts even a tinge of negativity about Apple or its recent product(s). I find it amusing we'd become so defensive about for-profit companies and their products..
I'm sorry, I just really hate this Apple Fanboy rhetoric. It's frequent and infuriating. Don't get me wrong, I hate it when the linux people do it too, but they tend to tell you how to get shit done while being mean.
The biggest problem with Linux is poor interfaces[0] but the biggest problem with Apple is handcuffs. And honestly, I do not find Apple interfaces intuitive. Linux interfaces and structure, I get, even if the barrier to entry is a big higher, there's lots of documentation. Apple less so. But also with Apple there's just things that are needlessly complex, buried under multiple different locations, and inconsistent.
But I said the biggest problem is handcuffs. So let me give a very dumb example. How do you merge identical contacts? Here's the official answer[1]
Either:
1) Card > Look for Duplicates
2) Select the duplicate cards, then Card > Merge Selected Cards.
Well guess what? #2 isn't an option! I believe this option only appears if you have two contacts that are in the same address book. Otherwise you have the option "Link Selected Cards". Something that isn't clear since the card doesn't tell you what account it is coming from and clicking "Find duplicates" won't offer this suggestion to you. There's dozens of issues like this where you can be right that I'm "holding it wrong", but that just means the interface isn't intuitive. You can try this one out. You can try this out. Go to your contacts, select "All Contacts" and then by clicking any random one try to figure out which address book that contact is from. It will not tell you unless you have linked contacts. And that's the idiocracy of Apple. Everything works smoothly[2] when you've always been on Apple and only use Apple but is painful to even figure out what the problem even is if you have one. The docs are horrendous. The options in the menu bar change and inconsistently disappear or gray out, leading to "where the fuck is that button?".
So yeah, maybe a lot of this is due to unfamiliarity, but it's not like they are making it easy. With Apple, it is "Do things the Apple way, or not at all". But with Linux it is "sure whatever you say ¯\_(ツ)_/¯". If my Android phone is not displaying/silencing calls people go "weird, have you tried adjusting X settings?" But if my iPhone is not displaying/silencing calls an Apple person goes "well my watch tells me when someone is calling" and they do not understand how infuriating such an answer is. Yet, it is the norm.
I really do want to love Apple. They make beautiful machines. But it is really hard to love something that is constantly punching you in the face. Linux will laugh when you fall on your face, but it doesn't actively try to take a swing or put up roadblocks. There's a big difference.
[0] But there's been a big push the last few years to fix this and things have come a long way. It definitely helps that Microsoft and Apple are deteriorating, so thanks for lowering the bar :)
It’s rare that I get feedback like this about a feature I owned for a decade.
1) The vast majority of users have only one contact-sync account, so it’s not an issue for them, merge works fine
2) For users that have multiple contact-sync accounts, they almost never want a feature to silently choose one account’s contact and delete the other account’s contact. So linking is really what these users want if the contacts live in different accounts.
It’s interesting feedback that a combined “link or merge” command would be what you’d expect. That’s a reasonable request; in my day we generally steered clear of combining destructive operations (merging) with non-destructive (linking).
I was more focused on the fact that the macOS implementation of “look for duplicates” is pretty broken; there’s a decent iOS implementation we never got around to migrating to macOS.
Don't get me wrong, I don't have an issue with linking. I think that's the correct solution.
In fact, it's kinda the only solution unless you can push info upstream, and you shouldn't assume you have those privileges or even know their data structure. But that doesn't matter because what the user cares about is how the information is displayed.
It is primarily a display issue. No deletions needed
The critical issue is I, the user, can't identify if these two contacts are in the same address book or not. The only way I can find this out is to guess and check. I have to guess the address book and then search that name, then repeat. That's not a reasonable solution nor does it scale. It's trivially solvable too. Just tell the user what address book a contact belongs to!
That's what leads to the confusion. All the program is telling me is that there are two contacts with the same name, nickname, phone number, and birthday. But the contacts differed on email and notes. The UI feedback tells me "Apple doesn't know how to do a trivial database query" not "Apple doesn't want to destructively merge these contacts because they are in different address books." That is actually not an obvious thing and I chased multiple other issues first. This is especially bad because in my calendar I had 3 entries for this person's birthday and 3 contacts. 2 were linked to my iCloud address book and 1 to Google (by ctrl clicking on the date, but maybe (in hindsight) that's not actually accurate). I somehow got it down to two, which resulted in 4 birthdays on my calendar! That actually created a false flag because now the icons showed as of 1 was from google and now 3 from iCloud, with all 3 no longer linking to a contact. The feedback the programs are giving me is "Apple can't merge tables", right? Or at least that's a reasonable interpretation.
I think theres a relatively simple solution to this. 1) indicate on the contact card which address book the contact belongs to. 2) "Find duplicates" queries across address books. Present the option "link contacts" instead of "merge". It's obviously reasonable that a user would want this as you have that capability for a reason. I honestly think "merge" could be "link" in most cases, because depending on the data structure those will be equivalent (you reference a node. That node has children pointing to the different tables). I agree, you shouldn't delete data, but there's also likely no reason to (yes delete if you have duplicate pointers pointing to the same object unless these pointers are aliases)
The same idea applies to calendar events. I missed a ton of events when I first switched to an iPhone because I'll look at my calendar and see 3 copies of "Columbus Day" and 1 "Indigenous People's Day" (Apple does both!) and not what I had scheduled for 10am. The only solution I have is to disable the holiday tables from my Google calendar and outlook. Effectively that's "deleting" data. This looks like a fine solution but those calendars aren't identical. As a user I want the union. I want deduplication. Because who wants redundant information? It's clearly not something the user is intending (at least in this case). That's going to be true for things like birthdays too (which I'd be happy to import). Apple doesn't even distinguish that as a separate table for my Google calendar so I'm stuck with dupes.
Effectively it is a display issue. As a user that's what's critical to me because that's what makes the program useful. As a programmer, yeah, I care about details but my tech illiterate parents don't.
> With Apple, it is "Do things the Apple way, or not at all".
Well kinda, you don't have to use all that much Apple software on macs though. If you can live with the window manager / desktop environment then you can use whichever apps you choose for pretty anything else.
I'm not sure this is true, especially if you're a "power user"[0]. Here's an example: I want to modify `~/.ssh/config` to define a machine's alias depending on the SSID I'm on. So I want this logic
If on MyHomeSSID:
Host FooComputer
Hostname 192.168.1.123
Else If tailscale-is-running
Host FooComputer
Hostname 100.64.0.123
The reason you might want to do this is so that you can have your ssh connection adapt to the network you're using. You can just always write `ssh FooComputer` and get the connection you want. This can get much more complicated[1], but is incredibly useful.
How would you accomplish this? Well actually, I don't know ANYMORE[2]. The linked thread had a solution that worked, but `ipconfig getsummary en0` now redacts the SSID (even when running sudo!). Though `system_profiler SPAirPortDataType` still works and I can get the result in 4 seconds... So not actually a solution. Yet it shows the idiocracy and inconsistency of Apple's tooling. There was a solution, then Apple changed it. wtallis helped me find a different solution, and well... then Apple changed it. YET `system_profiler` still doesn't redact the SSID so what is going on? Why is it even redacted in the first place? I can just throw my cursor up to the top right of the screen and see the SSID information. If it was a security issue then I should not be able to view that information in GUI OR CLI and it would be a big concern if I could see it in some unprivileged programs but not in others.
And that's the problem with Apple. If I write some script to do some job, I don't know if that script is going to work in 6mo because some person decided they didn't want that feature. So I can find some other command to do the exact same thing and end up playing a game of Wack-a-mole. *It is absolutely infuriating.* This is what I mean by "constantly punching you in the face". The machine fights you and that's not okay.
[0] I put in quotes because the example I'm about to give is to some "complex" but others "dead simple". I'd actually say the latter is true
[side note] I've used a similar SSID trick to write myself a "phone home" program in termux for Android and other machines. I can get my GPS coordinates and other information there so you can just write a <50 line program to ping a trusted machine if your device doesn't check in to trusted locations within certain timeframes. Sure, there's FindMy, but does that give me a history? I can't set an easing function to track if my device is on the move. Can I remote into the lost machine? Can I get it to take pictures or audio to help me locate it? Can I force on tailscale or some other means for me to get in without the other person also having technical knowledge? Why not just have a backup method in case one fails? I'm just trying to give this as an example of something that has clear utility and is normally simple to write.
Sounds more like a you problem, probably due to unfamiliarity. There are endless options for local dev on a Mac, and a huge share of devs using one.