Some minor fixes and improvements (#786)

This commit is contained in:
Istvan T 2021-11-14 10:43:49 +01:00 committed by GitHub
parent 2e05ce1d5c
commit 5c82b996ed
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 269 additions and 257 deletions

View file

@ -1 +1 @@
5.0
5.5

View file

@ -41,6 +41,13 @@
AA99521926FE49A300612E07 /* MenuHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA99521826FE49A300612E07 /* MenuHandler.swift */; };
AA9AE86F26B5BF3D00B6CA65 /* OSD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE86E26B5BF3D00B6CA65 /* OSD.framework */; };
AA9AE87126B5BFB700B6CA65 /* CoreDisplay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE87026B5BFB700B6CA65 /* CoreDisplay.framework */; };
AAB2F638273ED099004AB5A4 /* .swiftlint.yml in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F637273ED099004AB5A4 /* .swiftlint.yml */; };
AAB2F63C273ED0AD004AB5A4 /* .swift-version in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F639273ED0AD004AB5A4 /* .swift-version */; };
AAB2F63D273ED0AD004AB5A4 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F63A273ED0AD004AB5A4 /* .gitignore */; };
AAB2F63E273ED0AD004AB5A4 /* .swiftformat in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F63B273ED0AD004AB5A4 /* .swiftformat */; };
AAB2F640273ED0B8004AB5A4 /* .bartycrouch.toml in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F63F273ED0B8004AB5A4 /* .bartycrouch.toml */; };
AAB2F642273ED0C7004AB5A4 /* .github in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F641273ED0C7004AB5A4 /* .github */; };
AAB2F644273ED0E9004AB5A4 /* License.txt in Resources */ = {isa = PBXBuildFile; fileRef = AAB2F643273ED0E9004AB5A4 /* License.txt */; };
AACE5E2327050C63006C2A48 /* NSNotification+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AACE5E2227050C63006C2A48 /* NSNotification+Extension.swift */; };
AADB625A26BC196900DFFAA5 /* DisplayServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AADB625926BC196900DFFAA5 /* DisplayServices.framework */; };
F01B0699228221B7008E64DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F01B0680228221B6008E64DB /* Localizable.strings */; };
@ -128,6 +135,13 @@
AA9CB6402704C1A40086DC0E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
AA9CB6412704C1B80086DC0E /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Main.strings"; sourceTree = "<group>"; };
AA9CB6422704C1B80086DC0E /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Localizable.strings"; sourceTree = "<group>"; };
AAB2F637273ED099004AB5A4 /* .swiftlint.yml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.yaml; path = .swiftlint.yml; sourceTree = "<group>"; };
AAB2F639273ED0AD004AB5A4 /* .swift-version */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ".swift-version"; sourceTree = "<group>"; };
AAB2F63A273ED0AD004AB5A4 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
AAB2F63B273ED0AD004AB5A4 /* .swiftformat */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .swiftformat; sourceTree = "<group>"; };
AAB2F63F273ED0B8004AB5A4 /* .bartycrouch.toml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .bartycrouch.toml; sourceTree = "<group>"; };
AAB2F641273ED0C7004AB5A4 /* .github */ = {isa = PBXFileReference; lastKnownFileType = folder; path = .github; sourceTree = "<group>"; };
AAB2F643273ED0E9004AB5A4 /* License.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = License.txt; sourceTree = "<group>"; };
AACE5E2227050C63006C2A48 /* NSNotification+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSNotification+Extension.swift"; sourceTree = "<group>"; };
AADB625926BC196900DFFAA5 /* DisplayServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DisplayServices.framework; path = ../../../../../System/Library/PrivateFrameworks/DisplayServices.framework; sourceTree = "<group>"; };
F01B0682228221B6008E64DB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
@ -193,7 +207,7 @@
56754EA21D9A4016007BCDC5 = {
isa = PBXGroup;
children = (
AA3B4A2726AE103C00B74CD2 /* README.md */,
AAB2F646273ED127004AB5A4 /* Misc */,
28D1DDD1227FB759004CB494 /* Frameworks */,
56754EAD1D9A4016007BCDC5 /* MonitorControl */,
F06792E8200A73460066C438 /* MonitorControlHelper */,
@ -248,6 +262,21 @@
path = Enums;
sourceTree = "<group>";
};
AAB2F646273ED127004AB5A4 /* Misc */ = {
isa = PBXGroup;
children = (
AAB2F641273ED0C7004AB5A4 /* .github */,
AAB2F63A273ED0AD004AB5A4 /* .gitignore */,
AAB2F637273ED099004AB5A4 /* .swiftlint.yml */,
AAB2F639273ED0AD004AB5A4 /* .swift-version */,
AAB2F63B273ED0AD004AB5A4 /* .swiftformat */,
AAB2F63F273ED0B8004AB5A4 /* .bartycrouch.toml */,
AAB2F643273ED0E9004AB5A4 /* License.txt */,
AA3B4A2726AE103C00B74CD2 /* README.md */,
);
name = Misc;
sourceTree = "<group>";
};
F01B067F228221B6008E64DB /* Support */ = {
isa = PBXGroup;
children = (
@ -412,12 +441,19 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
AAB2F642273ED0C7004AB5A4 /* .github in Resources */,
AAB2F63E273ED0AD004AB5A4 /* .swiftformat in Resources */,
56754EB11D9A4016007BCDC5 /* Assets.xcassets in Resources */,
6CDA0FCF26485A8300F52125 /* Main.storyboard in Resources */,
AAB2F640273ED0B8004AB5A4 /* .bartycrouch.toml in Resources */,
8C1741852707B91100E88D53 /* InternetAccessPolicy.plist in Resources */,
AAB2F638273ED099004AB5A4 /* .swiftlint.yml in Resources */,
AAB2F63C273ED0AD004AB5A4 /* .swift-version in Resources */,
AA3B4A2826AE103C00B74CD2 /* README.md in Resources */,
F01B0699228221B7008E64DB /* Localizable.strings in Resources */,
AAB2F63D273ED0AD004AB5A4 /* .gitignore in Resources */,
8C1741882707B91F00E88D53 /* InternetAccessPolicy.strings in Resources */,
AAB2F644273ED0E9004AB5A4 /* License.txt in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -759,13 +795,13 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 4.0.1;
MARKETING_VERSION = 4.0.2;
PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 5.5;
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
@ -794,13 +830,13 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 4.0.1;
MARKETING_VERSION = 4.0.2;
PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 5.5;
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks",
@ -829,11 +865,11 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 4.0.1;
MARKETING_VERSION = 4.0.2;
PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 5.5;
};
name = Debug;
};
@ -858,11 +894,11 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.14;
MARKETING_VERSION = 4.0.1;
MARKETING_VERSION = 4.0.2;
PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 5.5;
};
name = Release;
};

View file

@ -4,14 +4,14 @@ import Cocoa
public extension CGDirectDisplayID {
var vendorNumber: UInt32? {
return CGDisplayVendorNumber(self)
CGDisplayVendorNumber(self)
}
var modelNumber: UInt32? {
return CGDisplayModelNumber(self)
CGDisplayModelNumber(self)
}
var serialNumber: UInt32? {
return CGDisplaySerialNumber(self)
CGDisplaySerialNumber(self)
}
}

View file

@ -4,7 +4,7 @@ import Cocoa
public extension NSScreen {
var displayID: CGDirectDisplayID {
return (self.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? CGDirectDisplayID)!
(self.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? CGDirectDisplayID)!
}
var vendorNumber: UInt32? {

View file

@ -19,7 +19,7 @@
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>6941</string>
<string>6956</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>

View file

@ -16,7 +16,7 @@ class Display: Equatable {
let swBrightnessSemaphore = DispatchSemaphore(value: 1)
static func == (lhs: Display, rhs: Display) -> Bool {
return lhs.identifier == rhs.identifier
lhs.identifier == rhs.identifier
}
var sliderHandler: [Command: SliderHandler] = [:]
@ -31,7 +31,7 @@ class Display: Equatable {
var defaultGammaTablePeak: Float = 1
func prefExists(key: PrefKey? = nil, for command: Command? = nil) -> Bool {
return prefs.object(forKey: self.getKey(key: key, for: command)) != nil
prefs.object(forKey: self.getKey(key: key, for: command)) != nil
}
func removePref(key: PrefKey, for command: Command? = nil) {
@ -43,23 +43,23 @@ class Display: Equatable {
}
func readPrefAsFloat(key: PrefKey? = nil, for command: Command? = nil) -> Float {
return prefs.float(forKey: self.getKey(key: key, for: command))
prefs.float(forKey: self.getKey(key: key, for: command))
}
func readPrefAsInt(key: PrefKey? = nil, for command: Command? = nil) -> Int {
return prefs.integer(forKey: self.getKey(key: key, for: command))
prefs.integer(forKey: self.getKey(key: key, for: command))
}
func readPrefAsBool(key: PrefKey? = nil, for command: Command? = nil) -> Bool {
return prefs.bool(forKey: self.getKey(key: key, for: command))
prefs.bool(forKey: self.getKey(key: key, for: command))
}
func readPrefAsString(key: PrefKey? = nil, for command: Command? = nil) -> String {
return prefs.string(forKey: self.getKey(key: key, for: command)) ?? ""
prefs.string(forKey: self.getKey(key: key, for: command)) ?? ""
}
private func getKey(key: PrefKey? = nil, for command: Command? = nil) -> String {
return (key ?? PrefKey.value).rawValue + (command != nil ? String((command ?? Command.none).rawValue) : "") + self.prefsId
(key ?? PrefKey.value).rawValue + (command != nil ? String((command ?? Command.none).rawValue) : "") + self.prefsId
}
internal init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
@ -321,7 +321,7 @@ class Display: Equatable {
}
func resetSwBrightness() -> Bool {
return self.setSwBrightness(1)
self.setSwBrightness(1)
}
func isSwBrightnessNotDefault() -> Bool {
@ -335,7 +335,7 @@ class Display: Equatable {
}
func refreshBrightness() -> Float {
return 0
0
}
func isBuiltIn() -> Bool {

View file

@ -72,7 +72,7 @@ class OtherDisplay: Display {
}
func getDDCValueFromPrefs(_ command: Command) -> UInt16 {
return self.convValueToDDC(for: command, from: (!prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) && command == .brightness) ? max(0, self.readPrefAsFloat(for: command) - self.combinedBrightnessSwitchingValue()) * (1 / (1 - self.combinedBrightnessSwitchingValue())) : self.readPrefAsFloat(for: command))
self.convValueToDDC(for: command, from: (!prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) && command == .brightness) ? max(0, self.readPrefAsFloat(for: command) - self.combinedBrightnessSwitchingValue()) * (1 / (1 - self.combinedBrightnessSwitchingValue())) : self.readPrefAsFloat(for: command))
}
func restoreDDCSettingsToDisplay(command: Command) {
@ -162,7 +162,7 @@ class OtherDisplay: Display {
}
func setupSliderCurrentValue(command: Command) -> Float {
return (command == .audioSpeakerVolume && self.readPrefAsBool(key: .enableMuteUnmute) && self.readPrefAsInt(for: .audioMuteScreenBlank) == 1) ? 0 : self.readPrefAsFloat(for: command)
(command == .audioSpeakerVolume && self.readPrefAsBool(key: .enableMuteUnmute) && self.readPrefAsInt(for: .audioMuteScreenBlank) == 1) ? 0 : self.readPrefAsFloat(for: command)
}
func stepVolume(isUp: Bool, isSmallIncrement: Bool) {
@ -255,7 +255,7 @@ class OtherDisplay: Display {
}
func isSwOnly() -> Bool {
return (!self.arm64ddc && self.ddc == nil) || self.isVirtual || self.isDummy
(!self.arm64ddc && self.ddc == nil) || self.isVirtual || self.isDummy
}
func isSw() -> Bool {
@ -362,7 +362,7 @@ class OtherDisplay: Display {
}
override func getBrightness() -> Float {
return self.prefExists(for: .brightness) ? self.readPrefAsFloat(for: .brightness) : 1
self.prefExists(for: .brightness) ? self.readPrefAsFloat(for: .brightness) : 1
}
func getRemapControlCodes(command: Command) -> [UInt8] {
@ -510,6 +510,6 @@ class OtherDisplay: Display {
}
func combinedBrightnessSwitchingValue() -> Float {
return Float(self.readPrefAsInt(key: .combinedBrightnessSwitchingPoint) + 8) / 16
Float(self.readPrefAsInt(key: .combinedBrightnessSwitchingPoint) + 8) / 16
}
}

View file

@ -117,12 +117,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
DisplayManager.shared.resetSwBrightnessForAllDisplays(noPrefSave: true)
CGDisplayRestoreColorSyncSettings()
self.reconfigureID += 1
self.updateMediaKeyTap()
os_log("Bumping reconfigureID to %{public}@", type: .info, String(self.reconfigureID))
_ = DisplayManager.shared.destroyAllShades()
if self.sleepID == 0 {
let dispatchedReconfigureID = self.reconfigureID
os_log("Display to be reconfigured with reconfigureID %{public}@", type: .info, String(dispatchedReconfigureID))
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.configure(dispatchedReconfigureID: dispatchedReconfigureID)
}
}
@ -159,7 +160,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
func checkPermissions() {
let permissionsRequired: Bool = [KeyboardVolume.media.rawValue, KeyboardVolume.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)) || [KeyboardBrightness.media.rawValue, KeyboardBrightness.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue))
if !MediaKeyTapManager.readPrivileges(prompt: false) && permissionsRequired {
if !MediaKeyTapManager.readPrivileges(prompt: false), permissionsRequired {
MediaKeyTapManager.acquirePrivileges()
}
}
@ -177,13 +178,14 @@ class AppDelegate: NSObject, NSApplicationDelegate {
@objc private func sleepNotification() {
self.sleepID += 1
os_log("Sleeping with sleep %{public}@", type: .info, String(self.sleepID))
self.updateMediaKeyTap()
}
@objc private func wakeNotification() {
if self.sleepID != 0 {
os_log("Waking up from sleep %{public}@", type: .info, String(self.sleepID))
let dispatchedSleepID = self.sleepID
DispatchQueue.main.asyncAfter(deadline: .now() + 6.0) { // Some displays take time to recover...
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) { // Some displays take time to recover...
self.soberNow(dispatchedSleepID: dispatchedSleepID)
}
}
@ -203,6 +205,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
self.job(start: true)
}
self.startupActionWriteRepeatAfterSober()
self.updateMediaKeyTap()
}
}

View file

@ -235,15 +235,15 @@ class DisplayManager {
}
func getOtherDisplays() -> [OtherDisplay] {
return self.displays.compactMap { $0 as? OtherDisplay }
self.displays.compactMap { $0 as? OtherDisplay }
}
func getAllDisplays() -> [Display] {
return self.displays
self.displays
}
func getDdcCapableDisplays() -> [OtherDisplay] {
return self.displays.compactMap { display -> OtherDisplay? in
self.displays.compactMap { display -> OtherDisplay? in
if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSw() {
return otherDisplay
} else { return nil }
@ -251,11 +251,11 @@ class DisplayManager {
}
func getAppleDisplays() -> [AppleDisplay] {
return self.displays.compactMap { $0 as? AppleDisplay }
self.displays.compactMap { $0 as? AppleDisplay }
}
func getBuiltInDisplay() -> Display? {
return self.displays.first { CGDisplayIsBuiltin($0.identifier) != 0 }
self.displays.first { CGDisplayIsBuiltin($0.identifier) != 0 }
}
func getCurrentDisplay(byFocus: Bool = false) -> Display? {
@ -481,7 +481,7 @@ class DisplayManager {
}
static func getByDisplayID(displayID: CGDirectDisplayID) -> NSScreen? {
return NSScreen.screens.first { $0.displayID == displayID }
NSScreen.screens.first { $0.displayID == displayID }
}
static func getDisplayRawNameByID(displayID: CGDirectDisplayID) -> String {

View file

@ -164,11 +164,15 @@ class MediaKeyTapManager: MediaKeyTapDelegate {
keys.append(contentsOf: [.mute, .volumeUp, .volumeDown])
}
// Remove brightness keys if no external displays are connected, but only if brightness fine control is not active
var isInternalDisplayOnly = true
var disengageBrightness = true
for display in DisplayManager.shared.getAllDisplays() where !display.isBuiltIn() {
isInternalDisplayOnly = false
disengageBrightness = false
}
if isInternalDisplayOnly, !prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue) {
// Disengage brightness keys on sleep so MacBook native screen can be controlled meanwhile
if app.sleepID != 0 || app.reconfigureID != 0 {
disengageBrightness = true
}
if disengageBrightness, !prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue) {
let keysToDelete: [MediaKey] = [.brightnessUp, .brightnessDown]
keys.removeAll { keysToDelete.contains($0) }
}

View file

@ -64,15 +64,15 @@ class OSDUtils: NSObject {
static let chicletCount: Float = 16
static func chiclet(fromValue value: Float, maxValue: Float, half: Bool = false) -> Float {
return (value * self.chicletCount * (half ? 2 : 1)) / maxValue
(value * self.chicletCount * (half ? 2 : 1)) / maxValue
}
static func value(fromChiclet chiclet: Float, maxValue: Float, half: Bool = false) -> Float {
return (chiclet * maxValue) / (self.chicletCount * (half ? 2 : 1))
(chiclet * maxValue) / (self.chicletCount * (half ? 2 : 1))
}
static func getDistance(fromNearestChiclet chiclet: Float) -> Float {
return abs(chiclet.rounded(.towardZero) - chiclet)
abs(chiclet.rounded(.towardZero) - chiclet)
}
static func showOSDLockOnAllDisplays(osdImage: Int64) {

View file

@ -204,7 +204,7 @@ class SliderHandler {
class ClickThroughImageView: NSImageView {
override func hitTest(_ point: NSPoint) -> NSView? {
return subviews.first { subview in subview.hitTest(point) != nil
subviews.first { subview in subview.hitTest(point) != nil
}
}
}

View file

@ -5,6 +5,6 @@ import Sparkle
class UpdaterDelegate: NSObject, SPUUpdaterDelegate {
func allowedChannels(for _: SPUUpdater) -> Set<String> {
return prefs.bool(forKey: PrefKey.isBetaChannel.rawValue) ? Set(["beta"]) : Set([])
prefs.bool(forKey: PrefKey.isBetaChannel.rawValue) ? Set(["beta"]) : Set([])
}
}

View file

@ -315,15 +315,15 @@
<objects>
<viewController storyboardIdentifier="MenuslidersPrefsVC" id="tLm-u5-aZ2" customClass="MenuslidersPrefsViewController" customModule="MonitorControl" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" translatesAutoresizingMaskIntoConstraints="NO" id="5un-m0-FM4">
<rect key="frame" x="0.0" y="0.0" width="730" height="561"/>
<rect key="frame" x="0.0" y="0.0" width="730" height="560"/>
<subviews>
<gridView xPlacement="leading" yPlacement="fill" rowAlignment="none" rowSpacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="ZrF-7t-BP5">
<rect key="frame" x="20" y="20" width="690" height="521"/>
<rect key="frame" x="20" y="20" width="690" height="520"/>
<rows>
<gridRow height="20" bottomPadding="-6" id="jyr-gk-BEN"/>
<gridRow height="20" bottomPadding="-6" id="ZS3-Gy-pfA"/>
<gridRow bottomPadding="-13" id="OpF-3Q-ZZp"/>
<gridRow bottomPadding="-13" id="HAl-L8-LPI"/>
<gridRow height="20" bottomPadding="-13" id="ZS3-Gy-pfA"/>
<gridRow bottomPadding="-10" id="HAl-L8-LPI"/>
<gridRow bottomPadding="-10" id="AKq-Nb-ugC"/>
<gridRow bottomPadding="-10" id="Cor-61-8R5"/>
<gridRow bottomPadding="-13" id="x3R-eu-dsV"/>
<gridRow bottomPadding="-10" id="dyb-Ub-uU5"/>
@ -349,7 +349,7 @@
<gridCells>
<gridCell row="jyr-gk-BEN" column="FRJ-Rb-RRh" xPlacement="trailing" yPlacement="center" id="vn6-rs-m8R">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ELU-jk-ITc">
<rect key="frame" x="141" y="503" width="71" height="16"/>
<rect key="frame" x="141" y="502" width="71" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" baseWritingDirection="leftToRight" alignment="right" title="Menu Icon:" id="u6s-Pb-BCG">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -359,7 +359,7 @@
</gridCell>
<gridCell row="jyr-gk-BEN" column="V6M-Jv-Agj" xPlacement="leading" id="wUb-Z3-UWb">
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TFy-Wt-ZJK">
<rect key="frame" x="217" y="497" width="252" height="25"/>
<rect key="frame" x="217" y="496" width="252" height="25"/>
<popUpButtonCell key="cell" type="push" title="Always show in the menu bar" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="MM0-Lf-VgF" id="p9E-Ck-YKe">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
@ -378,7 +378,7 @@
</gridCell>
<gridCell row="ZS3-Gy-pfA" column="FRJ-Rb-RRh" xPlacement="trailing" yPlacement="center" id="6xd-Be-tsQ">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="phO-ae-q58">
<rect key="frame" x="50" y="469" width="162" height="16"/>
<rect key="frame" x="50" y="468" width="162" height="16"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" baseWritingDirection="leftToRight" alignment="right" title="General menu items style:" id="thh-DG-ecH">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -388,7 +388,7 @@
</gridCell>
<gridCell row="ZS3-Gy-pfA" column="V6M-Jv-Agj" xPlacement="leading" id="QXg-i0-lVT">
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6td-Zq-3e7">
<rect key="frame" x="217" y="463" width="126" height="25"/>
<rect key="frame" x="217" y="462" width="126" height="25"/>
<popUpButtonCell key="cell" type="push" title="Show as text" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="fWd-Es-zsy" id="2lO-tb-DFv">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
@ -405,10 +405,21 @@
</connections>
</popUpButton>
</gridCell>
<gridCell row="OpF-3Q-ZZp" column="FRJ-Rb-RRh" xPlacement="trailing" id="nsg-IK-UoL"/>
<gridCell row="OpF-3Q-ZZp" column="V6M-Jv-Agj" xPlacement="leading" id="9Au-qH-WOr">
<gridCell row="HAl-L8-LPI" column="FRJ-Rb-RRh" id="ulS-1p-gHw"/>
<gridCell row="HAl-L8-LPI" column="V6M-Jv-Agj" xPlacement="leading" id="tw2-81-sd0">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmW-TV-zvg">
<rect key="frame" x="218" y="431" width="474" height="28"/>
<textFieldCell key="cell" controlSize="small" title="Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app." id="hF7-fM-aKr">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="AKq-Nb-ugC" column="FRJ-Rb-RRh" id="d0X-Ge-aRg"/>
<gridCell row="AKq-Nb-ugC" column="V6M-Jv-Agj" xPlacement="leading" id="Aow-M0-BhQ">
<button key="contentView" verticalHuggingPriority="750" placeholderIntrinsicWidth="150" placeholderIntrinsicHeight="20" translatesAutoresizingMaskIntoConstraints="NO" id="dy4-nH-cIr">
<rect key="frame" x="213" y="426" width="164" height="32"/>
<rect key="frame" x="213" y="394" width="164" height="32"/>
<buttonCell key="cell" type="push" title="Quit application" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="qlb-wH-qr4">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -418,17 +429,6 @@
</connections>
</button>
</gridCell>
<gridCell row="HAl-L8-LPI" column="FRJ-Rb-RRh" id="ulS-1p-gHw"/>
<gridCell row="HAl-L8-LPI" column="V6M-Jv-Agj" xPlacement="leading" id="tw2-81-sd0">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OmW-TV-zvg">
<rect key="frame" x="218" y="398" width="474" height="28"/>
<textFieldCell key="cell" controlSize="small" title="Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app." id="hF7-fM-aKr">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="Cor-61-8R5" column="FRJ-Rb-RRh" headOfMergedCell="054-Ho-JWX" id="054-Ho-JWX">
<box key="contentView" autoresizesSubviews="NO" horizontalHuggingPriority="1" verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" placeholderIntrinsicWidth="690" placeholderIntrinsicHeight="2" verifyAmbiguity="off" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="jt4-ec-HMg">
<rect key="frame" x="0.0" y="387" width="690" height="6"/>
@ -686,7 +686,7 @@
<outlet property="quitApplication" destination="dy4-nH-cIr" id="aXV-0Q-H4L"/>
<outlet property="rowMenuItemStyle" destination="ZS3-Gy-pfA" id="tVN-WD-eoa"/>
<outlet property="rowMultiSliders" destination="CuW-77-ls4" id="XPi-6a-J58"/>
<outlet property="rowQuitButton" destination="OpF-3Q-ZZp" id="0vU-Ls-hJj"/>
<outlet property="rowQuitButton" destination="AKq-Nb-ugC" id="yym-xx-O9Z"/>
<outlet property="rowQuitButtonText" destination="HAl-L8-LPI" id="6CN-Wq-CBJ"/>
<outlet property="rowSlidersCombineText" destination="MaK-MK-gRQ" id="OPU-QW-LEv"/>
<outlet property="rowTickCheck" destination="Ojm-8A-t1d" id="0Aq-FJ-wGD"/>
@ -700,7 +700,7 @@
</viewController>
<customObject id="oB1-KW-86Y" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="298" y="185.5"/>
<point key="canvasLocation" x="298" y="178"/>
</scene>
<!--Keyboard Prefs View Controller-->
<scene sceneID="VuM-5u-zkv">

View file

@ -1,30 +1,23 @@
/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */
"0ca-DG-AgB.title" = "Sincronizar los cambios del brillo de la pantalla incorporada con la pantalla de Apple";
/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */
"1PJ-14-Bvn.title" = "MonitorControl";
/* Class = "NSMenuItem"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "1in-79-6qm"; */
"1in-79-6qm.title" = "Asumir que la última configuración guardada es válida (recomendado)";
/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */
"1PJ-14-Bvn.title" = "MonitorControl";
/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */
"1sy-Kd-WL5.title" = "Teclas por defecto para silenciar y el volumen";
/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */
"1zE-fg-xEm.title" = "DDC mín";
/* Class = "NSMenuItem"; title = "Apply last saved values to the display"; ObjectID = "3Jr-bW-YYq"; */
"3Jr-bW-YYq.title" = "Aplicar los últimos valores guardados a la pantalla";
/* Class = "NSBox"; title = "#bc-ignore!"; ObjectID = "3a3-In-jeQ"; */
"3a3-In-jeQ.title" = "#bc-ignore!";
/* Class = "NSMenuItem"; title = "Show separate controls for each display in menu"; ObjectID = "3eO-bN-ZRl"; */
"3eO-bN-ZRl.title" = "Mostrar controles separados para cada pantalla en el menú";
/* Class = "NSButtonCell"; title = "https://monitorcontrol.app"; ObjectID = "42n-Zy-AqF"; Note = "#bc-ignore!"; */
"42n-Zy-AqF.title" = "https://monitorcontrol.app";
/* Class = "NSMenuItem"; title = "Apply last saved values to the display"; ObjectID = "3Jr-bW-YYq"; */
"3Jr-bW-YYq.title" = "Aplicar los últimos valores guardados a la pantalla";
/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */
"4CG-0I-anB.title" = "Atajos de teclado personalizados";
@ -32,15 +25,9 @@
/* Class = "NSTextFieldCell"; title = "Using window focus might not work properly with full screen apps."; ObjectID = "4dX-o1-xAc"; */
"4dX-o1-xAc.title" = "Usar el enfoque de ventana podría no funcionar en apps a pantalla completa.";
/* Class = "NSBox"; title = "#bc-ignore!"; ObjectID = "4wn-2u-KRo"; */
"4wn-2u-KRo.title" = "#bc-ignore!";
/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */
"5yT-5F-X5R.title" = "Restablecer Preferencias";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "6GJ-6Q-gqz"; */
"6GJ-6Q-gqz.title" = "#bc-ignore!";
/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */
"6mo-7S-oOO.title" = "Siempre oculto";
@ -59,9 +46,6 @@
/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */
"95V-M4-2l5.title" = "Agradecimientos especiales a nuestros colaboradores!";
/* Class = "NSBox"; title = "#bc-ignore!"; ObjectID = "9aX-gm-8TS"; */
"9aX-gm-8TS.title" = "#bc-ignore!";
/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */
"9eC-PD-FHl.title" = "Atajos de teclado personalizados";
@ -71,11 +55,14 @@
/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */
"A8P-vn-DEJ.title" = "Mostrar muecas en 0%, 25%, 50%, 75% y 100% para una mayor precisión.";
/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */
"an7-Aj-3fZ.title" = "Usar el brillo, volumen y otras configuraciones de la última vez o por defecto. Los valores serán aplicados a la pantalla cuando el usuario los cambie por primera vez.";
/* Class = "NSMenuItem"; title = "Use audio device name to determine which display to control"; ObjectID = "AqF-uD-KCY"; */
"AqF-uD-KCY.title" = "Usar nombre del dispositivo de audio para determinar qué pantalla controlar";
/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */
"BYS-7Y-bRz.title" = "Restablecer configuración";
/* Class = "NSMenuItem"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "bbf-sS-uGv"; */
"bbf-sS-uGv.title" = "Mostrar sliders solo para las pantallas que actualmente se muestran en el menú";
/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */
"Bhb-6l-uPQ.title" = "Brillo:";
@ -83,12 +70,33 @@
/* Class = "NSTextFieldCell"; title = "(Software->DDC)"; ObjectID = "Bid-UL-blc"; */
"Bid-UL-blc.title" = "(Software->DDC)";
/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */
"bIe-6O-xEH.title" = "Sólo para pantallas controladas por hardware (DDC). Los resultados pueden variar.";
/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */
"bkM-Px-U3b.title" = "Deshabilitar OSD de macOS para el volumen";
/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */
"bP4-GJ-vhJ.title" = "Escala OSD:";
/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "Bqc-s3-C0w"; */
"Bqc-s3-C0w.title" = "Escala OSD:";
/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */
"BYS-7Y-bRz.title" = "Restablecer configuración";
/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */
"bZq-0d-lJa.title" = "Habilitar comando DDC para silenciar";
/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */
"c9D-MB-lma.title" = "Mostrar slider de volumen en el menú";
/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */
"Cle-DD-vR7.title" = "Personalizado";
/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */
"cNt-Cq-vK4.title" = "Al iniciar o arrancar:";
/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */
"Cz1-Mh-llk.title" = "⚠️ ¡Atención! ¡Cambiar algunos de estos valores puede causar cuelgues en el sistema o comportamientos anómalos!";
@ -113,27 +121,60 @@
/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */
"EvN-FT-vdZ.title" = "Silencio:";
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volumen:";
/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */
"f6J-Ui-uMB.title" = "Normalmente, los controles de teclado cambian un valor completo del escalón del OSD y Shift+Option permite un control más preciso. Esto hace el control más preciso por defecto.";
/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */
"f9g-8s-gdd.title" = "Restablecer Nombre";
/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */
"Faf-9L-TXx.title" = "Comprobar actualizaciones automáticamente";
/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */
"fe9-Ia-t9m.title" = "Control del brillo:";
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */
"FER-Ri-4UO.title" = "Volumen:";
/* Class = "NSButtonCell"; title = "Allow zero brightness via software or combined dimming"; ObjectID = "FjB-XL-fG5"; */
"FjB-XL-fG5.title" = "Permitir brillo cero vía software u atenuación combinada";
/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */
"fmZ-HI-Mdc.title" = "Las pantallas de Apple e incorporadas ya tienen un slider para el brillo en el Centro de Control.";
/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */
"FoA-yh-Yx3.title" = "Ninguno";
/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */
"fR3-kq-cps.title" = "Mostrar como iconos";
/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */
"fWd-Es-zsy.title" = "Mostrar como texto";
/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */
"G5A-y3-eZz.title" = "Invertir";
/* Class = "NSMenuItem"; title = "Use window focus to determine which display to control"; ObjectID = "gTR-FW-FHc"; */
"gTR-FW-FHc.title" = "Usar foco de ventana para determinar qué pantalla controlar";
/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */
"gXH-HL-ZOL.title" = "Slider del brillo para pantallas o TVs controladas por hardware o software.";
/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */
"H9X-it-sXs.title" = "Sobrescribir nombre del dispositivo de audio:";
/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */
"hF7-fM-aKr.title" = "Reinicia la app para acceder a Preferencias si el menú opción no es accesible. Usa el botón de arriba para cerrar la app.";
/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */
"hkC-vq-IcD.title" = "Obtener actual";
/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */
"HUT-Qc-kuu.title" = "Esconder";
/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */
"i5X-M5-Tf5.title" = "Controles adicionales:";
/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "IJB-mO-e8I"; */
"IJB-mO-e8I.title" = "Brillo:";
@ -143,153 +184,6 @@
/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */
"J3L-MW-iJL.title" = "Usar escala OSD de volumen precisa";
/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */
"Jx2-gO-nq9.title" = "Nota: puedes presionar la tecla Shift mientras arrancas la app para entrar en el 'Modo Seguro' para restaurar los valores por defecto y evitar leer o establecer la configuración.";
/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */
"K6A-4z-1aQ.title" = "Habilitar también para pantallas de Apple o incorporadas";
/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "Kfj-WK-aSL"; */
"Kfj-WK-aSL.title" = "Ventana de control:";
/* Class = "NSTextFieldCell"; title = "Brightness and contrast:"; ObjectID = "LO4-4k-gxY"; */
"LO4-4k-gxY.title" = "Brillo y contraste:";
/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */
"MM0-Lf-VgF.title" = "Mostrar siempre en la barra de menú";
/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */
"MMk-S2-yJN.title" = "Contraste:";
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Mostrar slider del brillo en el menú";
/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */
"MlU-hl-d46.title" = "Habilitar ajuste por slider";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Separar escalas de atenuación por hardware & software";
/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */
"Oke-bW-cb1.title" = "Teclas estándar para el brillo";
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "conteo:";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Método de control:";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "Pqk-VW-JGY"; */
"Pqk-VW-JGY.title" = "#bc-ignore!";
/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */
"PyY-p9-3NP.title" = "Usar atenuación por software una vez que la pantalla alcanza el brillo 0 para un rango extendido. Funciona sólo para pantallas controladas por DDC.";
/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */
"QDG-SA-mRX.title" = "Ambos, atajos estándar y personalizados";
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */
"Riq-uM-bTs.title" = "Normal";
/* Class = "NSTextFieldCell"; title = "@the0neyouseek (Guillaume B.)\n@JoniVR (Joni Van Roost)\n@waydabber (István T.)"; ObjectID = "TKd-J8-Iyk"; */
"TKd-J8-Iyk.title" = "@the0neyouseek (Guillaume B.)\n@JoniVR (Joni Van Roost)\n@waydabber (István T.)";
/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "UBq-Od-SIB"; */
"UBq-Od-SIB.title" = "Mostrar configuración avanzada";
/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */
"UqR-WE-jHl.title" = "Habilitar control por teclado para las pantallas";
/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */
"W58-ch-j69.title" = "Opciones generales:";
/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */
"XU4-Bn-bwH.title" = "Funciona mejor cuando están habilitadas varias sincronizaciones y la configuración del teclado para 'controlar todo'.";
/* Class = "NSMenuItem"; title = "Change volume for all screens"; ObjectID = "Xih-P5-NyM"; */
"Xih-P5-NyM.title" = "Cambiar volumen para todas las pantallas";
/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */
"YHZ-VL-QJ3.title" = "La escala completa del OSD estará disponible para el control del brillo por hardware y después de alcanzar el brillo 0, será usada la atenuación por software.";
/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */
"YqZ-LS-YvR.title" = "Identificador:";
/* Class = "NSMenuItem"; title = "Depends on mouse pointer position"; ObjectID = "Ytd-mg-N5E"; */
"Ytd-mg-N5E.title" = "Depender de la posición del cursor del ratón";
/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */
"ZKk-ve-rS4.title" = "Donar";
/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */
"ZUu-MR-XwA.title" = "Mostrar porcentajes";
/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */
"ZdU-gV-V05.title" = "Usar control DDC por hardware";
/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */
"an7-Aj-3fZ.title" = "Usar el brillo, volumen y otras configuraciones de la última vez o por defecto. Los valores serán aplicados a la pantalla cuando el usuario los cambie por primera vez.";
/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */
"bIe-6O-xEH.title" = "Sólo para pantallas controladas por hardware (DDC). Los resultados pueden variar.";
/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */
"bP4-GJ-vhJ.title" = "Escala OSD:";
/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */
"bZq-0d-lJa.title" = "Habilitar comando DDC para silenciar";
/* Class = "NSMenuItem"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "bbf-sS-uGv"; */
"bbf-sS-uGv.title" = "Mostrar sliders solo para las pantallas que actualmente se muestran en el menú";
/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */
"bkM-Px-U3b.title" = "Deshabilitar OSD de macOS para el volumen";
/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */
"c9D-MB-lma.title" = "Mostrar slider de volumen en el menú";
/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */
"cNt-Cq-vK4.title" = "Al iniciar o arrancar:";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "e0q-fb-k7R"; */
"e0q-fb-k7R.title" = "#bc-ignore!";
/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */
"f6J-Ui-uMB.title" = "Normalmente, los controles de teclado cambian un valor completo del escalón del OSD y Shift+Option permite un control más preciso. Esto hace el control más preciso por defecto.";
/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */
"f9g-8s-gdd.title" = "Restablecer Nombre";
/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */
"fR3-kq-cps.title" = "Mostrar como iconos";
/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */
"fWd-Es-zsy.title" = "Mostrar como texto";
/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */
"fe9-Ia-t9m.title" = "Control del brillo:";
/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */
"fmZ-HI-Mdc.title" = "Las pantallas de Apple e incorporadas ya tienen un slider para el brillo en el Centro de Control.";
/* Class = "NSMenuItem"; title = "Use window focus to determine which display to control"; ObjectID = "gTR-FW-FHc"; */
"gTR-FW-FHc.title" = "Usar foco de ventana para determinar qué pantalla controlar";
/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */
"gXH-HL-ZOL.title" = "Slider del brillo para pantallas o TVs controladas por hardware o software.";
/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */
"hF7-fM-aKr.title" = "Reinicia la app para acceder a Preferencias si el menú opción no es accesible. Usa el botón de arriba para cerrar la app.";
/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */
"hkC-vq-IcD.title" = "Obtener actual";
/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */
"i5X-M5-Tf5.title" = "Controles adicionales:";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "ibQ-4u-ClE"; */
"ibQ-4u-ClE.title" = "#bc-ignore!";
/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */
"j72-NF-zsW.title" = "Abrir al Iniciar sesión";
@ -299,69 +193,117 @@
/* Class = "NSButtonCell"; title = "Check for updates"; ObjectID = "jVH-oc-rUi"; */
"jVH-oc-rUi.title" = "Comprobar actualizaciones";
/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */
"Jx2-gO-nq9.title" = "Nota: puedes presionar la tecla Shift mientras arrancas la app para entrar en el 'Modo Seguro' para restaurar los valores por defecto y evitar leer o establecer la configuración.";
/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */
"K6A-4z-1aQ.title" = "Habilitar también para pantallas de Apple o incorporadas";
/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "Kfj-WK-aSL"; */
"Kfj-WK-aSL.title" = "Ventana de control:";
/* Class = "NSMenuItem"; title = "Depends on mouse pointer position"; ObjectID = "km4-hK-auM"; */
"km4-hK-auM.title" = "Depender de la posición del cursor del ratón";
/* Class = "NSMenuItem"; title = "Use combined slider for all displays"; ObjectID = "lA0-tv-qRs"; */
"lA0-tv-qRs.title" = "Usar slider combinado para todas las pantallas";
/* Class = "NSTextFieldCell"; title = "Brightness and contrast:"; ObjectID = "LO4-4k-gxY"; */
"LO4-4k-gxY.title" = "Brillo y contraste:";
/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */
"lSJ-6w-KJ2.title" = "Tipo de pantalla:";
/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */
"ltL-gR-K3Z.title" = "Pantalla a controlar:";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "mBs-6m-13Q"; */
"mBs-6m-13Q.title" = "#bc-ignore!";
/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */
"MlU-hl-d46.title" = "Habilitar ajuste por slider";
/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */
"MM0-Lf-VgF.title" = "Mostrar siempre en la barra de menú";
/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */
"MMk-S2-yJN.title" = "Contraste:";
/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "mue-fa-8z6"; */
"mue-fa-8z6.title" = "Volumen:";
/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */
"MWo-6I-s9L.title" = "Mostrar slider del brillo en el menú";
/* Class = "NSButtonCell"; title = "Avoid gamma table manipulation"; ObjectID = "na6-mS-MPi"; */
"na6-mS-MPi.title" = "Evitar manipulación de la tabla gamma";
/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */
"O8o-hI-8eR.title" = "Separar escalas de atenuación por hardware & software";
/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */
"oHf-Gh-68c.title" = "Deshabilitar teclado";
/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */
"okD-DG-pYa.title" = "Aplicación:";
/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */
"pF5-Sw-7BR.title" = "Retraso más largo durante las operaciones DDC de lectura";
/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */
"Oke-bW-cb1.title" = "Teclas estándar para el brillo";
/* Class = "NSTextFieldCell"; title = "#bc-ignore!"; ObjectID = "pIy-Lk-kkm"; */
"pIy-Lk-kkm.title" = "#bc-ignore!";
/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */
"Orv-yj-Nad.title" = "conteo:";
/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Command to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */
"pa0-Hz-ace.title" = "Usar las teclas de brillo de tu teclado de Apple para controlar el brillo. Puedes mantener la tecla Control para ajustar la pantalla incorporada, Control+Command para ajustar las pantallas externas. Mantén Shift+Option para un control más preciso. Control+Option+Command ajusta el contraste en pantallas compatibles con DDC.";
/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */
"PaK-1f-DsW.title" = "Método de control:";
/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */
"pF5-Sw-7BR.title" = "Retraso más largo durante las operaciones DDC de lectura";
/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */
"psF-vX-AFB.title" = "DDC máx";
/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */
"qO0-dB-yUs.title" = "Mostrar slider de contraste en el menú";
/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */
"PyY-p9-3NP.title" = "Usar atenuación por software una vez que la pantalla alcanza el brillo 0 para un rango extendido. Funciona sólo para pantallas controladas por DDC.";
/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */
"qXy-CL-Wf1.title" = "Mostrar porcentaje cerca del slider para una mayor precisión.";
/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */
"QDG-SA-mRX.title" = "Ambos, atajos estándar y personalizados";
/* Class = "NSButtonCell"; title = "Quit application"; ObjectID = "qlb-wH-qr4"; */
"qlb-wH-qr4.title" = "Cerrar aplicación";
/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */
"qO0-dB-yUs.title" = "Mostrar slider de contraste en el menú";
/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */
"qoh-Gn-f11.title" = "Control del volumen (sólo DDC):";
/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */
"qXy-CL-Wf1.title" = "Mostrar porcentaje cerca del slider para una mayor precisión.";
/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */
"r76-Zc-x09.title" = "Combinar atenuación por hardware y software";
/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */
"Riq-uM-bTs.title" = "Normal";
/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */
"thh-DG-ecH.title" = "Estilo de los elementos del menú:";
/* Class = "NSTextFieldCell"; title = "@the0neyouseek (Guillaume B.)\n@JoniVR (Joni Van Roost)\n@waydabber (István T.)"; ObjectID = "TKd-J8-Iyk"; */
"TKd-J8-Iyk.title" = "@the0neyouseek (Guillaume B.)\n@JoniVR (Joni Van Roost)\n@waydabber (István T.)";
/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */
"u6s-Pb-BCG.title" = "Icono del menú:";
/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "UBq-Od-SIB"; */
"UBq-Od-SIB.title" = "Mostrar configuración avanzada";
/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */
"uF5-a9-Ngz.title" = "Funciona si un dispositivo de audio es seleccionado sin control del volumen nativo.";
/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */
"UqR-WE-jHl.title" = "Habilitar control por teclado para las pantallas";
/* Class = "NSTextFieldCell"; title = "Contrast (DDC):"; ObjectID = "urd-Rh-aiL"; */
"urd-Rh-aiL.title" = "Contraste (DDC):";
@ -377,29 +319,56 @@
/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */
"vwm-hY-on5.title" = "Modo de sondeo de lectura DDC:";
/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */
"W58-ch-j69.title" = "Opciones generales:";
/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */
"w8B-x6-sq5.title" = "Útil cuando una pantalla tiende a resetear su configuración mientras está en modo stand by.";
/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */
"wjv-tq-iUx.title" = "Los cambios producidos por el sensor de luz ambiental o hechos a través de la Touch Bar, Centro de Control, Preferencias del Sistema serñan replicados a todas las pantallas.";
/* Class = "NSMenuItem"; title = "Change volume for all screens"; ObjectID = "Xih-P5-NyM"; */
"Xih-P5-NyM.title" = "Cambiar volumen para todas las pantallas";
/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */
"xjq-hs-wWB.title" = "Actualizar configuración desde la pantalla. Puede no funcionar con algunos hardware.";
/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */
"xLa-PN-rsq.title" = "Sólo si hay presente al menos un slider";
/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */
"xQJ-aJ-VhH.title" = "Ambos, atajos estándar y personalizados";
/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */
"xjq-hs-wWB.title" = "Actualizar configuración desde la pantalla. Puede no funcionar con algunos hardware.";
/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */
"XU4-Bn-bwH.title" = "Funciona mejor cuando están habilitadas varias sincronizaciones y la configuración del teclado para 'controlar todo'.";
/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */
"yBJ-5d-I7e.title" = "Disponible";
/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */
"YHZ-VL-QJ3.title" = "La escala completa del OSD estará disponible para el control del brillo por hardware y después de alcanzar el brillo 0, será usada la atenuación por software.";
/* Class = "NSTextFieldCell"; title = "Warning! With this option enabled, you might find yourself in a position when you end up with a blank display. This, combined with disabled keyboard controls can be frustrating."; ObjectID = "yi3-e1-wsL"; */
"yi3-e1-wsL.title" = "¡Atención! Con esta opción habilitada, puedes acabar con la pantalla en blanco. Esto, combinado con los controles por teclado deshabilitados puede ser frustrante.";
/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */
"YqZ-LS-YvR.title" = "Identificador:";
/* Class = "NSMenuItem"; title = "Depends on mouse pointer position"; ObjectID = "Ytd-mg-N5E"; */
"Ytd-mg-N5E.title" = "Depender de la posición del cursor del ratón";
/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */
"ZdU-gV-V05.title" = "Usar control DDC por hardware";
/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */
"zHa-xo-XPW.title" = "Deshabilitar teclado";
/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */
"ZKk-ve-rS4.title" = "Donar";
/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */
"ZUu-MR-XwA.title" = "Mostrar porcentajes";
/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */
"zv8-pZ-OPy.title" = "Puntos combinados de atenuación:";

View file

@ -68,7 +68,7 @@ class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableView
}
func numberOfRows(in _: NSTableView) -> Int {
return self.displays.count
self.displays.count
}
public static func isImac() -> Bool {

View file

@ -19,7 +19,7 @@
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>6941</string>
<string>6956</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSBackgroundOnly</key>