macOS
macOS is incredible as a personal OS. Would love to join Apple and contribute to the OS at some point. Karabiner is life changing. I did a course on macOS's many tools I love.
Quill is great for signing binaries for macOS.
Clean install
You can clean install by going to Recovery mode (restart with cmd+r
pressed). Then Disk Utility > Select disk > Erase (Format it) > Close Disk Utility > Select option Reinstall MacOS (Choose macOS ver. to install).
Notes
- In save dialogues I can press these keys:
Return
or⌘ + S
= SaveESC
= Cancel
- I can also press
/
or~
to quickly go to some directory from a save dialogue. And I can press⌘ + ↑
to go toparent directory
. - Recovery mode: Power off the machine, press the power button and immediately hold Cmd-R.
- Both Windows and MacOS are at a point where clean installs are unnecessary.
- I can appreciate someone wanting to do a clean install if they've installed and removed many apps and just want to clear out everything spread around all the system and hidden folders, even if it doesn't really affect performance and won't save a ton of disk space. There is something cathartic about a clean install.
/usr/local/bin
is a good place to put raw binaries available in the path, that are not installed with Nix.defaults write NSGlobalDomain KeyRepeat -int 1
setup keyboard repeat.- Can select text from middle of link's text by holding down alt while you drag and select with the mouse
- plutil tool support the generation of Swift or Objective-C code directly from plists. For example: plutil -convert swift.
- To code sign binaries ad hoc, run
codesign -s - <path_to_binary>
. This will give users a gatekeeper warning but they could still run the binary. To sign so users can run binary without warning, you need Apple developer account. - I basically install nothing except GUI apps on my Mac. I don’t even have a bashrc (or any shell rc for that matter). I never open the terminal on Mac. I live in the VM for dev work, and use GUI apps like calendar, email, messages, browser, etc. on Mac.
ls -lha /Library/Developer/CommandLineTools/usr/bin
to see what xcode command line developer tools installs.- Can right-click on a 2-factor authentication code to set it up with iCloud Keychain.
- macOS has network quality command: networkQuality (Reddit)
- Just because a root certificate is in the built-in iOS/macOS trust store doesn't mean that it is trusted. Apple applies additional constraints via configuration updates to maintain a high-level of security.
- Things I immediately do when setting up a new Mac: 1. Turn off all system notifications. 2. Turn off autocorrect. 3. Set ⌘-V to "Paste and Match Style" to remove formatting.
- For MacOS, you need to disable AirPlay to make 5000 available. System Preference > Sharing > uncheck AirPlay Receiver.
Code
macOS Defaults
bash
# Remove dock animation. https://www.reddit.com/r/apple/comments/6xg9xq/tip_of_the_day_one_thing_i_cant_live_without_in/
defaults write com.apple.dock autohide-delay -int 0
defaults write com.apple.dock autohide-time-modifier -float 0.4
killall Dock
# Revert
defaults delete com.apple.dock autohide-delay
defaults delete com.apple.dock autohide-time-modifier
killall Dock
bash
# Turn internal keyboard off. https://discussions.apple.com/thread/5044946?answerId=26556362022#26556362022
sudo kextunload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
# Turn internal keyboard on
sudo kextload /System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
Links
- macOS developer tutorials
- A Pro’s Guide to the Best Secret Mac Features
- macOS open source
- Create bootable USB macOS installer
- macOS Security and Privacy Guide
- Quick Look plugins
- cron is dead, long live launchd! (2017)
- Control Mac Keyboard Brightness - Programmatically flash the keyboard lights and control display brightness on Macs.
- maclaunchmaclaunch - Manage your macOS startup items.
- Objective-See - Simple, yet effective macOS security tools.
- Caliguvara - another approach to Touch Bar Presets (2019)
- AppUpdater - Simple app-updater for macOS, checks your GitHub releases for a binary asset once a day and silently updates your app.
- Brooklyn - Screensaver inspired by Apple's Event on October 30, 2018.
- How macOS versions evolved and changed over the time
- PureDarwin - Community project to make Darwin more usable. (HN) (Web) (HN)
- Curated list of shell commands and tools specific to macOS
- The new Mac Pro is a design remix (2019)
- BlockBlock - Continually monitors common persistence locations and displays an alert whenever a persistent component is added to the OS.
- Impact - Crash detection and recording library for Apple platforms.
- Designing LookUp for macOS (2019)
- macOS screenshot tips
- gon - CLI and Go Library for macOS Notarization.
- Shipping a Catalyst App - Peter Steinberger (2019)
- Open-source components of macOS
- macOS Headers - Consistently maintained dump of most macOS Headers.
- Every macOS white paper
- AppMover - Framework for moving your application bundle to Applications folder on launch.
- Lilu - Arbitrary kext and process patching on macOS.
- osx-hid-inspector - Command line tool for macOS for inspecting human input devices (HID).
- macOS Kernel Extensions are officially deprecated (HN)
- mas-cli - Simple command line interface for the Mac App Store. Designed for scripting and automation.
- apply-user-defaults - Small utility to set macOS user defaults declaratively from a YAML file.
- Zero.sh - Radically simple personal bootstrapping tool for macOS.
- DefaultApp - Template for starting macOS projects. (Code) (HN)
- Awesome macOS
- macOS and iOS Security Related Tools
- BlackHole - Modern MacOS virtual audio driver that allows applications to pass audio to other applications with zero additional latency.
- xcnotary - Missing macOS app notarization helper, built with Rust. (HN)
- skhd - Simple hotkey daemon for macOS.
- Proxy Audio Driver - Virtual audio driver for macOS to sends all audio to another output.
- Icons.app - App for macOS which is designed to generate consistent sized icons of an existing application in various states, jiggling (shaking) etc.
- OpenCore - Open-source, unconventional, first-in-class piece of software designed to intercept kernel loading to insert a highly advanced rootkit, designed to be an alternative to Clover. (Code) (HN)
- Creating a macOS App with SwiftUI
- Syphon - macOS technology to allow applications to share video and still images with one another in realtime, instantly.
- Mac Bare Metal - Enterprise-class IaaS for macOS.
- React Native for macOS - Build native macOS apps with React. (HN)
- My Mac App Store Debate (2020)
- Kernel debugging macOS with SIP (2020)
- Mac App Store Sandbox Escape (2020)
- macOS 10.15: Slow by Design (2020) (HN)
- Catalina is checking notarization of unsigned executables (2020) (HN)
- Push-Button Installer of macOS Guests in VirtualBox for Windows, Linux, macOS (HN)
- macOS in a Docker Container (HN) (Reddit)
- netboot.nix - Create full netboot images in 15 seconds.
- Swizzle - Extensible tweak to create simple tweaks for any app, from within any app.
- What’s New in macOS Big Sur: Human Interface Guidelines (2020) (HN)
- About the Rosetta Translation Environment (2020) (HN)
- The End of OS X (2020) (HN)
- Common Mac OS X Cursors as PNGs
- Apple’s Relentless Strategy, Execution, and Point of View (2020) (HN)
- Extract the system libraries on macOS Big Sur (2020)
- Apple Technologies Search
- AquaticPrime - Mac software licensing code using cryptographically signed license files.
- SimpleVM - Sample code for Virtualization framework. (Fork)
- macOS 11 Big Sur UI Kit
- The Art Of Mac Malware
- Compromising the macOS Kernel through Safari by Chaining Six Vulnerabilities
- Mac keyboard shortcuts (HN)
- Ask HN: What feature did you find after years of using macOS? (2020)
- Sinter - User-mode application authorization system for MacOS written in Swift. (Article)
- MacPorts package manager (Code)
- macOS icon pack - Beautiful open source icons for Big Sur. (Code)
- Thoughts on macOS Package Managers (2019)
- Hard to discover tips and apps for macOS (2020) (HN) (Lobsters)
- fastmac - MacOS instance or Linux shell. (HN)
- What should I do after getting my (first) own new Macbook? (2020)
- macOS Simple KVM - Tools to set up a quick macOS VM in QEMU, accelerated by KVM.
- HN: Apple’s T2 security chip jailbreak (2020)
- Apple's macOS SDKs
- macOS11 Big Sur UI Kit
- Apple Platform Versions - Recent history of platforms developed by Apple, including Apple-managed build tools for these platforms.
- Sketch — Part of your world: Why we’re proud to build a truly native Mac app (2020) (HN) (HN 2) (Tweet)
- macOS 11 boot volume layout (2020) (HN)
- Booting a macOS Apple Silicon Kernel in QEMU (2020) (HN)
- macOS defaults - List of macOS defaults commands with demos. (Code)
- Does Apple really log every app you run? A technical look (2020) (HN) (Reddit)
- Does it ARM - Apps that are reported to support Apple Silicon. (Code)
- Black Friday Deals macOS/iOS dev
- create-dmg - Shell script to build fancy DMGs.
- Mach-O learning tool - Toy program to learn more about the mach-o file format.
- Popover - Custom macOS Popover.
- Reverse Engineering on macOS
- Virtualization.framework tool (vftool) - Runs Linux virtual machines in macOS. (HN)
- macOS Setup Guide (Code)
- Some Differences between macOS and Common Unix Systems (2020)
- The Mac that saved Apple (HN)
- macOS app in plain C
- Reverse-Engineering Apple Dictionary (2020)
- Project Mendacius - GUI based virtualization tool for running Linux on macOS Big Sur.
- dmgdist - Automate the process of creating, uploading and notarizing the DMG of a Mac app.
- Apple Open Source Modules of Big Sur (HN)
- Apple ld64 Linker
- jolk - macOS System Executable Analyzer. (Analyzing a new release of macOS with jolk)
- MacHack - List of built-in tools in macOS that you probably didn't know about.
- Shield - App to protect against process injection on macOS. (Article)
- VMCLI - Set of utilities to help you manage VMs with Virtualization.framework. (HN)
- m1n1: Experimentation playground for Apple Silicon
- SplitConfigurations - Up the basics of a Big Sur app layout. Includes splitview and toolbarItems.
- Preloader for Linux on M1
- TinyLinux - Tiny minimum implementation of Virtualization framework to boot Linux.
- DyldExtractor - Extract Binaries from Apple's Dyld Shared Cache.
- ipsw - iOS/macOS Research Swiss Army Knife. (Web)
- Hacking native ARM64 binaries to run on the iOS Simulator (2021) (Code)
- strongarm - Full-featured, cross-platform ARM64 Mach-O analysis library.
- macbac - Lists, controls and schedules efficient APFS snapshots for your convenience.
- UTM - Virtual machines for Mac.
- Use Touch ID for Sudo on Mac (2021) (HN)
- Linux Desktop on Apple Silicon/M1 in Practice (HN)
- Reverse-engineering Rosetta 2 (2021) (Code)
- Apple M1 Microarchitecture Research (HN)
- Mathias Bynens' Sensible macOS Defaults (HN)
- xhyve - Lightweight macOS virtualization solution.
- Declarative macOS configuration options (2021)
- macOS scripts - Various scripts for macOS tasks.
- Pure Rust Implementation of Apple Code Signing (2021)
- Apple’s Notarizing (HN)
- macOS dev setup
- Lima - Linux-on-Mac ("macOS subsystem for Linux", "containerd for Mac"). (HN)
- Inspect Apple macOS software updates
- MacVM - MacOS VM for Apple Silicon using Virtualization API.
- My 2021 New Mac Setup
- macOS extensions are moving away from the kernel (2021) (HN)
- iOS and macOS Performance Tuning Book (2017)
- node-mac-permissions - Native node module to manage system permissions on macOS.
- Swift Programming for macOS (Code)
- Organize and Index Your Screenshots (OCR) on macOS (2021)
- The journey to controlling external monitors on M1 Macs (2021) (HN)
- dyld-shared-cache-extractor - CLI for extracting libraries from Apple's dyld shared cache file.
- ArchTest - Why does this not compile on Apple Silicon?
- The macOS Sandbox File Limit (2021) (HN)
- Asahi Linux for Apple M1 progress report, August 2021 (HN)
- macOS 11's hidden security improvements (2021) (HN)
- Santa - Binary authorization system for macOS. (Docs)
- Rudolph - Control server counterpart of Santa, and is used to rapidly deploy configurations to Santa agents.
- macOS persistence – Beyond the good ol' LaunchAgents (HN)
- macOS Security Compliance - Open source effort to provide a programmatic approach to generating security guidance.
- Apple M1 Exploration
- WhatsNewViewController - Nice way to present your new app features.
- macOS Cross toolchain for Linux and *BSD
- Guide to moving to M1 mac (2021)
- macOS Orb - Convenient tools and settings for utilizing MacOS on CircleCI.
- macOS Monterey: The MacStories Review (2021)
- How macOS is more reliable, and doesn’t need reinstalling (2021)
- Faster Mac Dev Tools with Custom Allocators (2021) (HN)
- perfrecord - macOS-only command line CPU profiler that displays the result in the Firefox profiler.
- vz - Create virtual machines and run Linux-based operating systems in Go using Apple Virtualization.framework.
- diskspace - macOS command line tool to return the available disk space on APFS volumes.
- PlayCover - Run iOS apps & games on M1 Mac with mouse, keyboard and controller support.
- Sideload iOS apps regardless of security settings
- node-mac-userdefaults - Native Node.js module that provides an interface to the user’s defaults database on macOS.
- Resources about macOS/iOS system security
- asitop - Performance monitoring CLI tool for Apple Silicon. (Web)
- OSX-KVM - Run macOS on QEMU/KVM. (HN)
- macOS Optimizer - Shell scripts to speed up your mac boot time, accelerate loading, and prevent unnecessary throttling.
- How to sync multiple macs (work/personal) (2021)
- Mach-O Binaries (2015)
- Explainer: .DS_Store Files (2021) (HN)
- Interview with Hansen Hsu, engineer at Apple during transition from OS 9 to OS X (2021) (Lobsters) (HN)
- optool - Command Line Tool for interacting with MachO binaries on macOS/iOS.
- mkuser - Make user accounts for macOS with many advanced options.
- Setup a New Developer Computer (HN)
- Entitlement AND Hardened Runtime Check - Python3 script for macOS to check for binaries with problematic/interesting entitlements.
- macFUSE - Allows you to extend macOS via third party file systems.
- Tuning Your Code’s Performance for Apple Silicon (HN)
- macOS Setup after 15 Years of Linux (2021) (HN)
- Machium - Debugger for Apple Silicon. (Article)
- Apple Data Formats and Knowledge - Collection of reverse engineered Apple formats, protocols, or other interesting bits.
- Running macOS in a Virtual Machine on Apple Silicon Macs (Tweet) (HN) (HN)
- Apple Internals - Information and tools to understand the internals of Apple’s operating systems.
- Apple's custom NVMes are amazingly fast – if you don't care about data integrity (2022) (HN) (Reddit) (Lobsters)
- macOS Packer Templates for Cirrus CI
- NanoMDM - Minimalist Apple MDM server heavily inspired by MicroMDM.
- eBPF for Docker Desktop on macOS
- duti - Command-line utility capable of setting default applications for various document types on macOS.
- mpw-emu: Emulating 1998-Vintage Mac Compilers (2022)
- xpcspy - Bidirectional XPC message interception and more.
- macOS Apple released code
- Apple T2 XPC - Tools to explore the XPC interface of Apple's T2 chip.
- aperture-node - Record the screen on macOS from Node.js.
- macOS GateKeeper Helper - Simple macOS GateKeeper script.
- My macOS keyboard shortcuts (2022) (HN)
- Asahi Linux installer
- Infinite Mac
- Mac pfctl Port Forwarding
- MACVZ - macOS Virtualization for Linux.
- Network Quality Server - Share example servers that can be used by the networkQuality command line tool available in macOS 12.
- SwiftInMemoryLoading - Swift implementation of in-memory Mach-O loading on macOS.
- fetch-them-macos-headers - Utility for fetching minimal macOS libc headers.
- SwiftAuthorizationSample - Swift sample app for running privileged operations on macOS using a helper tool.
- Exploring Mach-O (2022)
- launch-tui - Small TUI app to manage launchD.
- apple-tools - Collection of tools for working with Apple software/hardware.
- sudo-touchid - Native and reliable TouchID support for sudo.
- SendKeys - macOS command line application used to automate the keystrokes and mouse events.
- How macOS manages M1 CPU cores (2022) (HN)
- macOS cross compiler toolchains
- macchanger - Easily change your mac address.
- Moving a macOS window by clicking anywhere on it (2022) (HN)
- Tart - macOS VMs on Apple Silicon to use in CI and other automations.
- Scripting OS X Blog (Twitter)
- macOS tips and tricks
- HvDecompile - Decompiling macOS Hypervisor.framework by hand.
- Rediscovering the Mac: An iPad User's Journey into macOS with the M1 Max MacBook Pro (2022)
- Create macOS or Linux virtual machines (2022) (HN)
- Quick look at user-mode file systems on macOS Ventura (2022) (Lobsters)
- Quick Tip: Enable Touch ID for sudo
- macOS-Login-Items - Simple macOS LoginItems parser (and library) written in Rust.
- macOS-fseventsd - Simple macOS File System Events Disk Log Stream (FsEventsd) parser (and library) written in Rust.
- macOS-launchd - Simple macOS launchd parser (and library) written in Rust.
- VirtualBuddy - Virtualize macOS 12 and later on Apple Silicon. (HN)
- Hardening macOS (2022) (HN)
- macholib - Analyze and edit Mach-O headers, the executable format used by macOS.
- rust-macho - Mach-O File Format Parser for Rust.
- os-signpost - Wrapper for the macOS signpost API.
- macOS: App sandboxing via sandbox-exec (2020) (HN)
- macschema - Toolchain for generating JSON definitions of Apple APIs.
- qemu-vmnet - Native macOS networking for QEMU using vmnet.framework and socket networking.
- Apple’s Virtualization framework is a great, free way to test new macOS betas (2022)
- Advice on keeping macOS clean (2022)
- Running Linux microVMs on macOS (M1/M2) (2022)
- libSandy - Securely extend the sandbox of system processes and user applications.
- PlayCover - Run iOS apps and games on Apple Silicon Macs with mouse, keyboard and controller support.
- Completely Open-Source Implementation of Apple Code Signing and Notarization (2022) (HN)
- ldid - Link Identity Editor. Put real or fake signatures in a Mach-O.
- macOS Hardening
- An Introduction to ExtensionKit (2022)
- FUSE-T - Kext-less implementation of FUSE for macOS that uses NFS v4 local server instead of a kernel extension.
- Ephemeral macOS for Buildkite - Set up macOS machines to automatically erase and provision themselves on a Tailscale network with Buildkite.
- Nix macOS Monthly Discourse update posts
- Bootstrap a Linux build VM on macOS
- MIP - macOS Injection Platform.
- macOS 13 Ventura review (2022) (HN)
- Ventura volume layout (2022)
- Booting an M1 Mac from hardware to kexts (2022)
- Running Intel Binaries in Linux VMs with Rosetta (HN)
- Quill - Simple mac binary signing from any platform.
- A tale of a simple Apple kernel bug (2022)
- macOS notes
- Home Truths about macOS (2022) (HN)
- crashdump - Utility for converting macOS crashreport files (.ips) into text output which is the same as what you would see using Console.app to open them.
- Does Apple maintain APFS in older macOS? (2022) (HN)
- Rosetta-enabled virtual machine based on Apple Sample Code
- OpenCore Legacy Patcher - Running and unlocking features in macOS on supported and unsupported Macs.
- All of the sounds in macOS Big Sur
- Lightweight Alpine VMs on macOS (HN) (Code)
- The Impossible Port: MacOS (2022) (Lobsters)
- Cilicon - Self-Hosted macOS CI on Apple Silicon.
- Awesome macOS Command Line (HN)
- ProcInfo - Process info/monitoring library for macOS.
- How do you know when macOS detects and remediates malware? (2023) (HN)
- Surprising Consequences of macOS’s Environment Variable Sanitization (2023) (HN)
- Fun with macOS's SIP MetalBear (2023) (HN)
- Hacking with macOS (Code)
- Prefsniff - Utility to sniff preferences changes to macOS plist files.
- XNU Kernel Code - Kernel that is part of the Darwin operating system for use in macOS and iOS operating systems.
- Remove animation on unhiding macOS dock
- macOS Cursors (Code) (HN)
- Keyboard tricks from a macOS app dev (2023) (HN)
- macOS Internals (HN)
- Diving into a secret macOS tool - networkQuality (2023) (HN)
- Eighty Shades of Option Key
- Writing to the macOS clipboard the hard way (2023)
- dyld-cache-dump - macOS command-line tool to dump the contents of dyld shared cache files.
- rund - Experimental containerd shim for running macOS containers on macOS.
- Stop prefixing your UserDefaults keys (2023)
- macOS in QEMU (ARM edition) (2023) (HN)
- What is your Mac OS Setup? (2023)
- LIPO - Utility for creating Universal Binary as known as Fat Binary.
- Run a macOS VM on Apple Silicon from a double-click with Vimy (2023) (HN)
- nowplaying-cli - macOS command-line utility for retrieving currently playing media.