diff --git a/code/cli/munki/shared/SignalHandler.swift b/code/cli/munki/shared/SignalHandler.swift new file mode 100644 index 00000000..9875aa6a --- /dev/null +++ b/code/cli/munki/shared/SignalHandler.swift @@ -0,0 +1,8 @@ +// +// SignalHandler.swift +// munki +// +// Created by Greg Neagle on 9/4/24. +// + +import Foundation diff --git a/code/cli/munki/shared/UNIXProcessInfo.swift b/code/cli/munki/shared/UNIXProcessInfo.swift new file mode 100644 index 00000000..49df4fb7 --- /dev/null +++ b/code/cli/munki/shared/UNIXProcessInfo.swift @@ -0,0 +1,8 @@ +// +// UNIXProcessInfo.swift +// munki +// +// Created by Greg Neagle on 9/4/24. +// + +import Foundation diff --git a/code/cli/munki/shared/utils/osutils.swift b/code/cli/munki/shared/utils/osutils.swift index 1e6bc6b1..d3cc221e 100644 --- a/code/cli/munki/shared/utils/osutils.swift +++ b/code/cli/munki/shared/utils/osutils.swift @@ -36,6 +36,21 @@ func getConsoleUser() -> String { return SCDynamicStoreCopyConsoleUser(nil, nil, nil) as? String ?? "" } +func currentGUIUsers() -> [String] { + // Gets a list of GUI users by parsing the output of /usr/bin/who + var guiUsers = [String]() + let result = runCLI("/usr/bin/who") + for line in result.output.components(separatedBy: .newlines) { + let parts = line.components(separatedBy: .whitespaces).filter { + !$0.isEmpty + } + if parts.count > 1, parts[1] == "console" { + guiUsers.append(parts[0]) + } + } + return guiUsers +} + func getIdleSeconds() -> Int { // Returns the number of seconds since the last mouse // or keyboard event.