Works, as of 14/04/2024, on macOS 14.4.1 and lower (prob higher but idk)
This was made for Apple Sillicon Macs.
You need another Mac for this.
If you don't have one and have recovery locked, it's not possible.
### Points and display type | |
PPI is points per inch below, not pixels per inch. Not all models are listed, just the first model with a new display size. Diamond, RGB Stripe and Pentile RGB refer to the subpixel patterns. | |
iPhone 1 = 320×480 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 4 = 320×480 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 5 = 320×568 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 6 = 375×667 at 163PPI sRGB IPS LCD RGB Stripe | |
iPhone 6 Plus = 414×736 at 153.5PPI sRGB IPS LCD RGB Stripe | |
iPhone 7 = 375×667 at 163PPI P3 IPS LCD RGB Stripe |
fun Any.prettyPrint(): String { | |
var indentLevel = 0 | |
val indentWidth = 4 | |
fun padding() = "".padStart(indentLevel * indentWidth) | |
val toString = toString() | |
val stringBuilder = StringBuilder(toString.length) |
extension UIHostingController { | |
convenience public init(rootView: Content, ignoreSafeArea: Bool) { | |
self.init(rootView: rootView) | |
if ignoreSafeArea { | |
disableSafeArea() | |
} | |
} | |
func disableSafeArea() { |
// Swift 4 | |
// Check out the history for contributions and acknowledgements. | |
extension String { | |
/// Returns a new string made by replacing all HTML character entity references with the corresponding character. | |
/// | |
/// - Returns: decoded string | |
func decodingHTMLEntities() -> String { | |
var result = String() | |
var position = startIndex |
enum JSON: Decodable { | |
case bool(Bool) | |
case double(Double) | |
case string(String) | |
indirect case array([JSON]) | |
indirect case dictionary([String: JSON]) | |
init(from decoder: Decoder) throws { | |
if let container = try? decoder.container(keyedBy: JSONCodingKeys.self) { | |
self = JSON(from: container) |
/// Our custom drop-in replacement `precondition`. | |
/// | |
/// This will call Swift's `precondition` by default (and terminate the program). | |
/// But it can be changed at runtime to be tested instead of terminating. | |
func precondition(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UWord = __LINE__) { | |
preconditionClosure(condition(), message(), file, line) | |
} | |
/// The actual function called by our custom `precondition`. | |
var preconditionClosure: (Bool, String, StaticString, UWord) -> () = defaultPreconditionClosure |
inputs = %w[ | |
CollectionSelectInput | |
DateTimeInput | |
FileInput | |
GroupedCollectionSelectInput | |
NumericInput | |
PasswordInput | |
RangeInput | |
StringInput | |
TextInput |
-- Adapted from these sources: | |
-- http://peterdowns.com/posts/open-iterm-finder-service.html | |
-- https://gist.github.com/cowboy/905546 | |
-- | |
-- Modified to work with files as well, cd-ing to their container folder | |
on run {input, parameters} | |
tell application "Finder" | |
set my_file to first item of input | |
set filetype to (kind of (info for my_file)) | |
-- Treats OS X applications as files. To treat them as folders, integrate this SO answer: |