diff --git a/SwiftBar/AppDelegate.swift b/SwiftBar/AppDelegate.swift index 99c479c..60bf314 100644 --- a/SwiftBar/AppDelegate.swift +++ b/SwiftBar/AppDelegate.swift @@ -53,6 +53,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, SPUStandardUserDriverDelegat } #endif + setDefaultShelf() // Check if plugin folder exists var isDir: ObjCBool = false if let pluginDirectoryPath = prefs.pluginDirectoryResolvedPath, @@ -100,6 +101,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, SPUStandardUserDriverDelegat } } + func setDefaultShelf() { + let out = try? runScript(to: "dscl", args: [".", "-read", "~/", "UserShell", "|", "awk", "'{print $2}'"]) + if let shell = out?.out, shell != "" { + sharedEnv.userLoginShell = shell + } + } + func changePresentationType() { if preferencesWindowController.window?.isVisible != true && repositoryWindowController?.window?.isVisible != true { NSApp.setActivationPolicy(.accessory) diff --git a/SwiftBar/PreferencesStore.swift b/SwiftBar/PreferencesStore.swift index c25fed9..f8fd77d 100644 --- a/SwiftBar/PreferencesStore.swift +++ b/SwiftBar/PreferencesStore.swift @@ -9,12 +9,7 @@ enum TerminalOptions: String, CaseIterable { enum ShellOptions: String, CaseIterable { case Bash = "bash" case Zsh = "zsh" - case BashEnv = "bash(env)" - case ZshEnv = "zsh(env)" - - var envPath: String { - "/usr/bin/env" - } + case Default = "default" var path: String { switch self { @@ -22,10 +17,8 @@ enum ShellOptions: String, CaseIterable { return "/bin/bash" case .Zsh: return "/bin/zsh" - case .BashEnv: - return "bash" - case .ZshEnv: - return "zsh" + case .Default: + return Environment.shared.userLoginShell } } } @@ -132,7 +125,7 @@ class PreferencesStore: ObservableObject { var stealthMode: Bool { PreferencesStore.getValue(key: .StealthMode) as? Bool ?? false } - + var collectCrashReports: Bool { PreferencesStore.getValue(key: .CollectCrashReports) as? Bool ?? false } diff --git a/SwiftBar/Utility/Environment.swift b/SwiftBar/Utility/Environment.swift index 9cb1e90..dc25c90 100644 --- a/SwiftBar/Utility/Environment.swift +++ b/SwiftBar/Utility/Environment.swift @@ -26,6 +26,8 @@ class Environment { return formatter }() + var userLoginShell = "/bin/zsh" + private var systemEnv: [Variables: String] = [ .swiftBar: "1", .swiftBarVersion: Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "", diff --git a/SwiftBar/Utility/RunScript.swift b/SwiftBar/Utility/RunScript.swift index 3b4083d..ac2ea3a 100644 --- a/SwiftBar/Utility/RunScript.swift +++ b/SwiftBar/Utility/RunScript.swift @@ -47,14 +47,8 @@ private extension Process { arguments = args } else { let shell = delegate.prefs.shell - switch shell { - case .Bash, .Zsh: - executableURL = URL(fileURLWithPath: shell.path) - arguments = ["-c", "-l", "\(script.escaped()) \(args.joined(separator: " "))"] - case .BashEnv, .ZshEnv: - executableURL = URL(fileURLWithPath: shell.envPath) - arguments = [shell.path, "-c", "-l", "\(script.escaped()) \(args.joined(separator: " "))"] - } + executableURL = URL(fileURLWithPath: shell.path) + arguments = ["-c", "-l", "\(script.escaped()) \(args.joined(separator: " "))"] } guard let executableURL = executableURL, FileManager.default.fileExists(atPath: executableURL.path) else {