3 ms·
The part of macOS I miss when using a Linux desktop isn't how macOS looks, it's how you interact with it. • I miss the keyboard shortcuts. Not only what they a
by derefr 2y ago
The part of macOS I miss when using a Linux desktop isn't how macOS looks, it's how you interact with it.
• I miss the keyboard shortcuts. Not only what they are, but also the strict conformity macOS apps have to using the same set of keyboard shortcuts for everything. (Did you know that Cmd+[ and Cmd+] work as "Back" and "Forward" in the Finder; in both Safari and Chrome and Firefox; and even in the iTunes Music Store views in Music.app? Did you know that Cmd+Shift+[ and Cmd+Shift+] work to move between tabs in literally every app that has tabs — including things you wouldn't normally think of as "tabs", e.g. the sheets of a spreadsheet in Numbers?)
• I miss the Menu Bar. Specifically, I miss app menus in the Menu Bar. I know there are some themes with UI hacks that can trick Linux applications into disgorging their toplevel menu bars into some global faux Menu Bar — but that assumes that apps even have toplevel menu bars. Many Linux apps don't; they have top-level right-click menus, or top-level hierarchical modal navigation sidebars. And because of this, Linux apps also mostly just "have" keyboard shortcuts — toplevel window keyboard listeners. Whereas in macOS apps, all keyboard shortcuts are really keyboard accelerators for app-menu entries. Which means that everything you can do with the keyboard, you can also find in app's menu; the app's menu is an exhaustive access-point for all of the app's behaviors. And everything you can do in the menu, can be bound to a custom accelerator, or wired up with shell automation/scripting, or exposed to an accessibility device, or full-text-searched using the now-universal search box that appears under the Help app-menu. (Also, for those with not-so-tall screens, having the app's top-level menus pulled out into the Menu Bar means that if you 1. make an app full-screen and 2. set the shell to hide the Menu Bar when an app is full-screen, then you can reclaim the vertical screen real-estate of the app's top-level menu, with them just appearing — along with the rest of the Menu Bar — only when you hover the top of the screen. There'd be no sensible way to reclaim this same chunk of screen real-estate in fullscreened apps with internal top-level menu bars.)
• I miss the carefully-thought-out filesystem organized around bundle directories. Apps are bundles; plugins are bundles; libraries/frameworks are bundles. There are no installers, no package managers; bundles just sit where they sit, and then their Info.plist metadata can be auto-discovered by the OS (through Spotlight indexing, gated by Gatekeeper allow-listing), and registered with weak-reference semantics. (That is: drop an app that opens filetype X onto your computer — suddenly that filetype knows it can open in that app. First time you actually try it, Gatekeeper notices you haven't actually said you trust the app yet, and warns you. Remove the app, and the filetype associations automatically get purged — they were technically just a cache/index of the app-bundle's Info.plist, after all, so if the canonical association entries go away, the cache entries go away too.) This also means that macOS "libraries" and "plugins" don't have to spew themselves across half the filesystem; they both just bundle everything up and present themselves as a single file — one that has no default interaction verb, and so "tucks its protected members away", without actually being inconvenient to dig into, the way a shared object with embedded resources would be.
• A specific point of the above: I miss disk images. Not so much the ones apps come in — Apple themselves invented a better alternative to those with integrity-verified .xip files (with support, through Safari, for auto-self-extraction, and for auto-Gatekeeper-vouching when the archive is Apple-signed. Sadly these never spread to third-party support, and Apple themselves stopped using them in favor of just distributing things like Xcode through the Mac App Store.) Rather, I miss the deep UI integration with sparsebundle disk images. When I use macOS, I use sparsebundles for everything — they're technically disk images, but in practice, they just act like archive files, growing in size along with your usage rather than having a preallocated size. Unlike your average Linux loopback image, they're actually directories (bundles!) consisting of a bunch of 4MB "band" files. The "sparse" part is "sparse" like sparse-file support, but it works in a completely filesystem-oblivious way: the sparsebundle block-device layer notices whenever a given band would be updated to contain entirely zeroes — and just deletes the underlying band file instead. Mounting a sparsebundle that lives on a remote SMB share is the most low-latency, IO-efficient way I've ever seen of interacting with many small files (such as a remote git worktree.) It's no wonder macOS internally uses sparsebundle-mounts-over-SMB for Time Machine backups. (And they can be encrypted easily, too — not just with a custom passphrase, but also with a key held in a macOS Keychain — which doesn't have to be your default one!)
- jcgl 2y agoI'm not at all a Mac person, but this whole comment was a really interesting read. Regarding the shortcut-listeners-not-accelerators things in Linux, is it really not equivalent when an app uses a fully featured toolkit like Qt that (presumably) has support for specifying the semantics of various controls? Aside: I still miss the Unity desktop environment that Ubuntu used to have. It had its flaws for sure (e.g. poor performance and relying on a patched version of Mutter), but its implementation of a global menu was just superb. The ergonomics of having it at the top of the screen were great, and having each entry be searchable was a breath of fresh air. I've been happy enough with KDE Plasma for a while now, but would jump at the chance to have that global menu with search again.
- cosmic_cheese 2y agoAs much as I appreciate desktop Linux (particularly with Windows getting worse by the minute) it really kills me that these points can’t be fully replicated under it. All the DEs are geared for Windows-like or tablet-OS-like experience first and foremost, with a few niche oddballs mimicking unices of old. WMs are predominantly hyperminimalist tiling things. There’s nothing that reproduces a Mac desktop experience beyond the most superficial level.
- necovek 2y agoGtk menus used to have a feature where you could hover over a menu item, press a key combination, and a shortcut for that menu item was updated to it (and shown in the menu too). It did lead to some confusion (if you accidentally do that while the menu is open), but this is only to show that technically, this was all possible. However, "Linux apps" have really always been either Gtk apps, or Qt apps, or KDE or GNOME apps (yes, different from bare Gtk/Qt), or Fltk, or... Thus providing consistency has been an uphill battle, and distributors mostly tries for a couple core pieces: Gtk + Qt + LibreOffice + Firefox.
- ggm 2y agocame here to say this, you said it betterer. looking like OSX isn't "enough" or "sufficient" or even really the point. Being self consistent about the meta-key mapping and operational interactions is. Being able to write something equivalent to applescript to emulate any mouse/pointer action. being able to RELY on keyboard mappings. tools which expose how the underlying system works, window/desktop switching, panning, relocating. I do want to say that some things, TM for instance, are work mostly. There are quirks in TM such as eating all your SSD's free space to store TM history and the pruning approach which means things like df report what they want you to know about disk occupancy, and things like wear levelling/trim are necessarily hidden a bit, because what you see is not actually the total of what is being done.