Take a look at Hammerspoon[0] for this if you haven't already. It requires some work to get it working the way want (you'll be writing some basic Lua code) but it's by far the best, all-in-one solution I've found for this problem on macOS. It has a ton of built-in modules for automating things including being to setup hotkeys globally as well as modal/on per-app basis
* Expanding text macros (like TextExpander but not with a subscription)
* Automating web forms I have to fill out frequently (find the "Last Name" button; send "Smith"; hit "tab"; send "Joe"; find the "Submit this form" button and press it).
* Opening apps with hotkeys.
* Scripting stuff that isn't scriptable, like "find the Music app; right click on the ... menu; click Share; click Copy Link" to get the currently playing song's URL. (PS: If you know how to reliably get this another way, please let me know.)
* Doing really nifty things with OCR on the screen, like "send this set of keypresses, then look for the text that says 'I accept this', put the mouse over it, and click it" for apps that don't use native widgets.
Hammerspoon is super cool too, but I don't have the time to really tweak it as much as I can Keyboard Maestro.
Ironically, there isn't anything equivalent to it in linux land, and once I had gotten some really nice customizations, going back makes me a little sad.
What specifically would you prefer to be different for window resizing behaviors? If it’s something akin to Aero Snap on Windows there’s a multitude of options, including Moom[1], Rectangle[2], and Magnet[3] among others.
[0]: https://alt-tab-macos.netlify.app/ [1]: https://manytricks.com/moom/ [2]: https://rectangleapp.com/ [3]: https://magnet.crowdcafe.com/
Most Linux distros don't assume they know how users want their windows arranged. macOS says, "We, in fact, do know better than users how large windows should be and where they should be placed."
So I wanted a laptop instead of a desktop computer and Framework isn’t available where I’m from so I went for the MacBook. In terms of performance, all is fine. Some OS based decisions make me want to put everything back into the packaging and send the thing back.
1) I might be alone with this but how is there no forward delete (del) button? I’ve never noticed but apparently I use it quite a lot. cmd + Backspace solves that.
2) The entire OS feels more trackpad-centric than other OS‘s I’ve used which confuses me. The gestures and the trackpad are top notch though.
3) I don’t understand the Option key. Overall the Command, Option and CTRL keys do weird things in my opinion and growing up with Windows and Linux, I don’t understand what command does either. Which leads me to…
4) The keyboard shortcuts feel complicated for the sake of complicatedness.
5) Why can I not click an app on the dock to minimise it into the dock?
6) The delete key, man.
This sounds negative but there’s a lot of positive stuff with that thing (I’m good with the display and keyboard, the battery life is crazy compared to laptops I’ve had before, …). I’m not sure yet if I want to learn a whole new OS though so I’m undecided if I want to keep it yet. The main downside of using Linux for me is Adobe (effing) Photoshop and Lightroom not working.
Mac's shortcut paradigms developed independently of IBM's CUA so they're definitely not complicated for the sake of complexity. I actually think for use with a unix-based operating system, they're much more sensible. There's no overlap with terminal commands that are mostly based on control, thus you don't need to remap basic things like pasting in the terminal to ctrl+shift+v.
> The delete key, man.
It doesn't exist as a physical key but it does work with an external keyboard. Alternatively, you might find something like Karabiner Elements [1] useful. You can make all sorts of arbitrary changes to the keyboard's behavior, including the built in one. This is sort of similar to setxkbmap, xcape, and interception-tools in linux land.
I'll definitely take a look at karabiner elements - I've seen it being mentioned in some kind of Apple subreddit as well alongside software for window snapping or at least "dividing" the screen as in Linux and Windows. Thanks for the answer!
I’m pretty sure Option + Clicking on a dock icon will minimize it.
If you are confused with how the keyboard shortcuts work, here’s a quick guide.
The command key is the main operator for system wide shortcuts and major application shortcuts.
Command + shift is for secondary app shortcuts
Command + option is for rarely used app shortcuts
Option is for hidden options in applications and across the system. Try opening the application menu in the top bar and holding down option to see how many new shortcuts are available up there. Try option clicking or dragging things in the system to see how they react.
The control key is never used in applications and is rarely used in the system. It’s main function is in terminal applications.
Hope this helped!
I knew about the forward delete shortcut but it's just another shortcut I have to remember each time I want to use it. The only reason I don't get the design decision is because I've learned it in a different manner I guess.
Outside of that, thanks for the reply. I think I got the option key better. It just gives you alternative stuff you can do in the same menu/with the same shortcut. I don't even remember why I had to use control but the positioning is also very awkward in my opinion.
Thank you!
It's nice to have things work out of the box and never having to worry about things like hibernate, suspend, battery life etc. Trackpads, display resolution, fonts, random config failures - plus any macOS issue is usually easier to find a real solution for online imo.
Even in this article a ton of stuff seems like a pain in the ass:
- Hacking to connect bluetooth headphones
- Config required to reconnect to wifi
- Config required to get the monitor working
- No good native calendar
And of course at the end suspend/hibernate is still not working (naturally, probably never will work 100%). I'd also guess battery life is pretty bad and the UI of the tiling wm may be missing nice to have things (like accurate battery remaining).
TripMode, Tripsy, 1Password, Raindrop.io, iTerm, Tower, IINA, Soulver, Spark, Carbon Copy Cloner, Find Any File, Flux, Pacifist, are some my most used "non-common" apps (excluding things like Firefox and VS Code).
Sorry, just found it funny with the big list of applications you're recommending to install to do basic thing in OSX when the usual argument against Linux on HN is "Macs just work".
Apple is not designing OS for devs their vast majority of users are not devs or even professionals these days, while macs can be used for development with some wrangling to get a POSIX like environment without too much performance loss, it is not linux. Docker will run in a VM and be slower and some basic stuff like procfs would be completely missing , most of their gnu utils are from late 80s GPL being the reason.
I am also moving back to apple largely because of the m1x performance and battery. Hope Asahi becomes very stable soon on M1
yeah. So why are so many devs more or less forced to use MacBooks? someone tell their CTOs
I don't think it is all just CTOs either, there is lot of aspirational value partly driven by design of the system (light weight/looks) partly because expensive it becomes more exclusive.
Without M1 there was nothing else to go for technically they were not that much better, now atleast post m1 there is value to maybe justify the costs.
TCO for ThinkPads are way cheaper than macs upgrades are possible when it is not on macs or easier you don't need to send it apple service for ages, the in-house IT has no shortage of spare parts . No sensible CTO is going to choose apple over anything else if he had choice .
[1] ThinkPad X1 carbon before that both were much better devices just in terms of build quality than my last mac the 2016 pro .
Having linux just work is worth investing in frame.work or system76 or dell developer edition I rather do actual work than fiddle with drivers .
I think that's awesome, and I would feel great about starting at a place that gave devs a choice between System76 and Apple.
> Having linux just work is worth investing in frame.work or system76 or dell developer edition I rather do actual work than fiddle with drivers .
Agreed! There are fun and sometimes productive forms of tinkering with Linux. Fighting incompatible hardware is not among them
Having said that if a employee requested system76 or frame.work I would happily get it. Sadly like I said everyone wants Macs.
Brew is a given, but I also run karabiner elements for key remapping, Yabai+skhd+limelight for windows management, sketchybar as a panel, and Alfred as the run launcher since d-menu for Mac is still in early development.
This gives me some nice consistency between OSs since I use BSPWM+Polybar+Rofi on Linux.
There are several other neat little utilities that could come in handy like bettertouchtool and keyboard maestro for system wide automation with a gui and hammerspoon if you want a lua based automation program.
I personally use hammerspoon to bring up a list of Yabai shortcuts for windows management since I have too many keybindings.
As for dev tools, I use nvim, doom emacs, or VSC so it’s pretty easy to carry my config between OSs.
Well, I also use Camo so that I can use my iPhone as a webcam, but I'll probably buy a decent webcam soon because I don't want to keep paying the ongoing subscription. (Why is everything a freaking subscription these days ...)
In the past I used the tiling window manager Yabai, but I've gotten away from that recently. It didn't work properly 100% of the time, unfortunately.
Nix or pkgsrc for reliable management of CLI tools (both, if you want to try Nix but want an escape hatch)
don't forget to install GNU coreutils, grep, find, and bash. (BSD coreutils are weird and anemic if you're used to GNU. macOS bash is ancient, etc.)
disable cursor acceleration (barely works, but it's the only thing that works): https://plentycom.jp/en/cursorsense/index.html
the only mature terminal emulator on the platform that performs okay (provided you enable GPU acceleration): https://iterm2.com/
recover basic key remapping functionality: https://karabiner-elements.pqrs.org/
recover basic audio controls like per-app volume mixing: https://github.com/kyleneideck/BackgroundMusic
recover FUSE support: https://osxfuse.github.io/
recover configurability for a whole host of missing functionality, like global keyboard shortcuts, through automation (Lua scripting): https://www.hammerspoon.org/
recover clipboard management: https://hluk.github.io/CopyQ/
if you don't use some hack to get window tiling, you might also want to...
recover basic window management functionality: https://github.com/rxhanson/Rectangle
recover modifier key window drag: https://github.com/dmarcotte/easy-move-resize
good luck.
I‘m sure there are ways to get all of that running on linux but I‘d rather spend the time that it would take setting all that up working and let my company pay a bit more on my equipment.
But, not gonna discount your perspective. Everyone has different priorities, and it's why different products exist for different folks.
You can probably get close with Linux using a bunch of different apps, services and tinkering, but with Apple, it’s all quite effortless.
I think Arch Linux is by far the better OS for pretty much all power users, but when using multiple devices, the benefits of the "Apple Ecosystem" outweigh the benefits of an amazing desktop OS for me, which is why I ended up switching to Mac OS.
Some key points which I believe are much worse on Mac:
* No great package managers. Nothing is super-integrated with the core system like pacman is in Arch, and even when heavily using some package manager, there will always be a bunch of software that can only be updated using their own auto-update mechanism instead of a central package manager.
* Docker in general is just much slower compared to running directly on Linux.
* Setting up ergonomic custom keyboard shortcuts is painful and requires (multiple?) third-party applications to do well.