Skip to content

Instantly share code, notes, and snippets.

View macshome's full-sized avatar

Josh Wisenbaker macshome

View GitHub Profile
@macshome
macshome / swift-format-defaults.md
Last active June 23, 2025 00:26
The default settings for swift-format

swift-format Default Settings

Since I've not found anywhere that describes the default settings of swift-format other than the code, I've pulled those settings out and presented them here.

Rules that are opt-in are marked as such.

Formating-Only Rules

(Most of these rules are defined in the default config, not the rules folder.)

  1. maximumBlankLines = 1
  2. lineLength = 100
  3. tabWidth = 8
@macshome
macshome / GetProcessList.swift
Last active May 21, 2025 08:49
Swift Playground to get all running processes on macOS
import Darwin
func getProcessList() {
// Requesting the pid of 0 from systcl will return all pids
var mib = [CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0]
var bufferSize = 0
// To find the needed buffer size you call sysctl with a nil results pointer.
// This sets the size of the buffer needed in the bufferSize pointer.
if sysctl(&mib, UInt32(mib.count), nil, &bufferSize, nil, 0) < 0 {
@macshome
macshome / MemoryLayout.swift
Created April 3, 2023 19:20
Swift playground for exploring memory layout
import Foundation
// Playground for exploring memory layout in Swift.
// A simple struct
struct Foo {
let a: Int?
let b: Int?
var isTrue = true
}
@macshome
macshome / DiskSpace.swift
Created October 30, 2023 17:47
Paste into a Playground to see the different ways to calculate free disk space on macOS.
import Cocoa
import CoreServices
// Different ways of finding out about disk space on macOS.
// This method from CoreServices lets you find the space the OS considers "purgable"
// You can trigger a purge as well with `CSDiskSpaceStartRecovery`
let path = URL(fileURLWithPath: "/")
let possibleBytes = CSDiskSpaceGetRecoveryEstimate(path as NSURL)
@macshome
macshome / MetadataSearching.swift
Last active October 30, 2023 18:43
Paste into a Swift playground to find all the executable binaries and shell scripts on your system with blinding speed.
import Foundation
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
// Simple class to search for things with `NSMetadataQuery`.
class Searcher {
// This is just for timing things
let startTime = Date()
@macshome
macshome / Sessions.swift
Created October 30, 2023 18:55
Paste into a macOS Swift Playground to explore SecuritySession and CGSession attributes.
import Cocoa
// Security Session
//
// You can access bits about the security session to get some basic info. You can only get info about your own session.
// Other than the session id, the values are all Bools.
var sessionID = SecuritySessionId()
var sessionAttrs = SessionAttributeBits()
let result = SessionGetInfo(callerSecuritySession,
@macshome
macshome / IsScreenLocked.swift
Created October 30, 2023 19:05
Paste into a Swift playground on macOS to see if your screen is locked
import Cocoa
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
var isScreenLocked: Bool {
guard let wssProperties = CGSessionCopyCurrentDictionary() as? [String : Any], (wssProperties["CGSSessionScreenIsLocked"] != nil) else {
return false
}
return true
@macshome
macshome / Activity.swift
Created February 15, 2024 18:49 — forked from zwaldowski/Activity.swift
os_activity_t for Swift 3
//
// Activity.swift
//
// Created by Zachary Waldowski on 8/21/16.
// Copyright © 2016 Zachary Waldowski. Licensed under MIT.
//
import os.activity
private final class LegacyActivityContext {
@macshome
macshome / TimeInterval+Calendar.swift
Last active February 29, 2024 17:06
A simple extension to TimeInterval that allows you to just use the standard units of time rather than all that 60 * 60 jazz with APIs that use TimeInterval.
import Foundation
extension TimeInterval {
var seconds: TimeInterval { self }
var minutes: TimeInterval { self * 60 }
var hours: TimeInterval { self * 3_600 }
var days: TimeInterval { self * 86_400 }
var weeks: TimeInterval { self * 604_800 }
var months: TimeInterval { self * 2_628_000 }
@macshome
macshome / IOKit.swift
Last active February 25, 2025 20:26
This playground shows you a few different ways to get device info via IOKit.
// This playground shows you a few different ways to get device info via IOKit.
// If you want to explore IOKit and look for interesting data I would download
// the Additional Developer Tools from Apple and use the IORegistryExplorer app.
// It makes it super easy to poke around in the IOKit planes.
import IOKit
import Foundation
// For convient access we can make a computed getter for the PlatformExpert.
// Traditionally this has been where you go to find all sorts of data about the