From e98032034ff24a3d2146814c4ce9d268d045c349 Mon Sep 17 00:00:00 2001 From: Astro Kid <71262643+MDNich@users.noreply.github.com> Date: Fri, 17 Jun 2022 11:43:44 -0400 Subject: [PATCH] Fixed Storage and Displays for new MBPs --- .../UserInterfaceState.xcuserstate | Bin 16215 -> 40210 bytes About This Hack/.DS_Store | Bin 8196 -> 8196 bytes About This Hack/Base.lproj/Main.storyboard | 56 +++++++++++++----- About This Hack/HardwareCollector.swift | 27 ++++++--- About This Hack/ViewControllerDisplays.swift | 3 + About This Hack/ViewControllerStorage.swift | 5 +- 6 files changed, 67 insertions(+), 24 deletions(-) diff --git a/About This Hack.xcodeproj/project.xcworkspace/xcuserdata/mdnich.xcuserdatad/UserInterfaceState.xcuserstate b/About This Hack.xcodeproj/project.xcworkspace/xcuserdata/mdnich.xcuserdatad/UserInterfaceState.xcuserstate index 5f8a716a3a6787d3a5ab75c5fb10debf2eca398e..a7e335b4efbaa2751d47f24ab2a2d0c9a1c1b1c2 100644 GIT binary patch literal 40210 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 delta 8804 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 NZ^`@{y`&FmZ;9E>uPF9^tQo-QE4%+1XZ3{;TH qki(EO`GSbl - + - + + @@ -129,8 +130,8 @@ - - + + @@ -420,6 +421,15 @@ + - + @@ -574,7 +586,7 @@ - + @@ -583,12 +595,12 @@ - + - + @@ -596,6 +608,14 @@ + + + + + + + + @@ -603,6 +623,7 @@ + @@ -749,5 +770,8 @@ + + + diff --git a/About This Hack/HardwareCollector.swift b/About This Hack/HardwareCollector.swift index 7d55eed..78aacb4 100644 --- a/About This Hack/HardwareCollector.swift +++ b/About This Hack/HardwareCollector.swift @@ -31,7 +31,8 @@ class HardwareCollector { static var builtInDisplaySize: Float = 0 static var storageType: Bool = false static var storageData: String = "" - + static var storagePercent: Double = 0.0 + static func getAllData() { if (dataHasBeenSet) {return} @@ -57,7 +58,8 @@ class HardwareCollector { displayNames = getDisplayNames() // getDisplayDiagonal() Having some issues, removing for now storageType = getStorageType() - storageData = getStorageData() + storageData = getStorageData()[0] + storagePercent = Double(getStorageData()[1])! dataHasBeenSet = true } @@ -70,7 +72,9 @@ class HardwareCollector { static func getDisplayRess() -> [String] { let numDispl = getNumDisplays() if numDispl == 1 { - return [run("system_profiler SPDisplaysDataType | grep Resolution | cut -c 23-") ] + return [run(""" +echo "$(system_profiler SPDisplaysDataType -xml | grep -A2 _spdisplays_resolution | grep string | cut -c 15- | cut -f1 -d"<")" +""") ] } else if (numDispl == 2) { let tmp = run("system_profiler SPDisplaysDataType | grep Resolution | cut -c 23-") @@ -84,8 +88,10 @@ class HardwareCollector { let numDispl = getNumDisplays() if numDispl == 1 { return [run(""" +echo "$(system_profiler SPDisplaysDataType | grep "Display Type" | cut -c 25-)" echo "$(system_profiler SPDisplaysDataType -xml | grep -A2 "" | awk -F'>|<' '/_name/{getline; print $3}')" | tr -d '\n' -""")] +""")] // + } else if (numDispl == 2) { let tmp = run(""" @@ -573,16 +579,23 @@ echo "$(system_profiler SPDisplaysDataType -xml | grep -A2 "" | awk -F'>| } } - static func getStorageData() -> String { + static func getStorageData() -> [String] { let name = "\(HardwareCollector.getStartupDisk())" let size = run("diskutil info \"\(name)\" | grep 'Disk Size' | sed 's/.*: //' | cut -f1 -d'(' | tr -d '\n'") let available = run("diskutil info \"\(name)\" | Grep 'Container Free Space' | sed 's/.*: //' | cut -f1 -d'(' | tr -d '\n'") - return """ + let sizeTrimmed = run("echo \"\(size)\" | cut -f1 -d\" \"").dropLast(1) + let availableTrimmed = run("echo \"\(available)\" | cut -f1 -d\" \"").dropLast(1) + //print("Size: \(sizeTrimmed)") + //print("Available: \(availableTrimmed)") + var percent: Double = Double(availableTrimmed)! / Double(sizeTrimmed)! + //print("%: \(percent)") + return [""" \(name) \(size)(\(available)Available) -""" +""",String(percent)] } + } enum macOSvers { diff --git a/About This Hack/ViewControllerDisplays.swift b/About This Hack/ViewControllerDisplays.swift index 2acab3b..3578bf9 100644 --- a/About This Hack/ViewControllerDisplays.swift +++ b/About This Hack/ViewControllerDisplays.swift @@ -36,6 +36,9 @@ class ViewControllerDisplays: NSViewController { @IBOutlet weak var DisplayNameR2: NSTextField! + @IBAction func openPrefsDispl(_ sender: Any) { + run("open /System/Library/PreferencePanes/Displays.prefPane") + } override func viewDidLoad() { diff --git a/About This Hack/ViewControllerStorage.swift b/About This Hack/ViewControllerStorage.swift index 7ebe1c5..4914a74 100644 --- a/About This Hack/ViewControllerStorage.swift +++ b/About This Hack/ViewControllerStorage.swift @@ -13,6 +13,8 @@ class ViewControllerStorage: NSViewController { @IBOutlet weak var startupDiskImage: NSImageView! @IBOutlet weak var storageValue: NSTextField! + + @IBOutlet weak var storageAmount: NSLevelIndicatorCell! override func viewDidLoad() { super.viewDidLoad() start() @@ -39,6 +41,7 @@ class ViewControllerStorage: NSViewController { } // Text - storageValue.stringValue = "\(HardwareCollector.getStorageData())" + storageValue.stringValue = HardwareCollector.storageData + storageAmount.doubleValue = HardwareCollector.storagePercent*1000000 } }