1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00

Compare commits

...

4 Commits

Author SHA1 Message Date
10fdcf9700
Reference MediaKeyTap.framework.dSYM from the right folder 2019-02-22 11:14:21 -05:00
8f2346dbf8
Ignore Carthage folder 2019-02-22 11:12:06 -05:00
67c6b87cfd
Move dSym file for MediaKeyTap 2019-02-22 10:39:29 -05:00
797d7b206d
Add MediaKeyTap to capture media keys
This is resulting in an alarming warning appearing in the console:

```
pid(87021)/euid(501) is calling TIS/TSM in non-main thread environment,
ERROR : This is NOT allowed. Please call TIS/TSM in main thread!!!
```

I've opened an issue on the library GitHub page for now.
2019-02-22 08:35:52 -05:00
7 changed files with 51 additions and 1 deletions

1
.gitignore vendored
View File

@ -61,6 +61,7 @@ playground.xcworkspace
# Add this line if you want to avoid checking in source code from Carthage dependencies. # Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts # Carthage/Checkouts
Carthage
Carthage/Build Carthage/Build
# fastlane # fastlane

View File

@ -1,2 +1,3 @@
brew "carthage"
brew "meson" brew "meson"
brew "ninja" brew "ninja"

1
Cartfile Normal file
View File

@ -0,0 +1 @@
github "nhurden/MediaKeyTap"

1
Cartfile.resolved Normal file
View File

@ -0,0 +1 @@
github "nhurden/MediaKeyTap" "2.2.0"

View File

@ -24,9 +24,12 @@
E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41B22C521FB932700D544F6 /* MPDClient.swift */; }; E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41B22C521FB932700D544F6 /* MPDClient.swift */; };
E41EA46C221636AF0068EF46 /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EA46B221636AF0068EF46 /* PreferencesViewController.swift */; }; E41EA46C221636AF0068EF46 /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EA46B221636AF0068EF46 /* PreferencesViewController.swift */; };
E41EA46F221715910068EF46 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EA46E221715910068EF46 /* Preferences.swift */; }; E41EA46F221715910068EF46 /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41EA46E221715910068EF46 /* Preferences.swift */; };
E421ACA3221F73C4008B2449 /* MediaKeyTap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E421ACA1221F73B8008B2449 /* MediaKeyTap.framework */; };
E421ACA4221F73C4008B2449 /* MediaKeyTap.framework in Embed Libraries */ = {isa = PBXBuildFile; fileRef = E421ACA1221F73B8008B2449 /* MediaKeyTap.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
E42A8F3B22176D6400A13ED9 /* LICENSE.md in Resources */ = {isa = PBXBuildFile; fileRef = E42A8F3922176D6400A13ED9 /* LICENSE.md */; }; E42A8F3B22176D6400A13ED9 /* LICENSE.md in Resources */ = {isa = PBXBuildFile; fileRef = E42A8F3922176D6400A13ED9 /* LICENSE.md */; };
E42A8F3C22176D6400A13ED9 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = E42A8F3A22176D6400A13ED9 /* README.md */; }; E42A8F3C22176D6400A13ED9 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = E42A8F3A22176D6400A13ED9 /* README.md */; };
E465049A21E94DF500A70F4C /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E465049921E94DF500A70F4C /* WindowController.swift */; }; E465049A21E94DF500A70F4C /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E465049921E94DF500A70F4C /* WindowController.swift */; };
E47E2FCC2220573500F747E6 /* MediaKeyTap.framework.dSYM in Resources */ = {isa = PBXBuildFile; fileRef = E47E2FCB2220573500F747E6 /* MediaKeyTap.framework.dSYM */; };
E4928E0B2218D62A001D4BEA /* CGColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4928E0A2218D62A001D4BEA /* CGColor.swift */; }; E4928E0B2218D62A001D4BEA /* CGColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4928E0A2218D62A001D4BEA /* CGColor.swift */; };
E4A642DA22090CBE00067D21 /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4A642D922090CBE00067D21 /* Status.swift */; }; E4A642DA22090CBE00067D21 /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4A642D922090CBE00067D21 /* Status.swift */; };
E4E8CC902204EC7F0024217A /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E8CC8F2204EC7F0024217A /* Delegate.swift */; }; E4E8CC902204EC7F0024217A /* Delegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E8CC8F2204EC7F0024217A /* Delegate.swift */; };
@ -62,10 +65,20 @@
dstSubfolderSpec = 10; dstSubfolderSpec = 10;
files = ( files = (
E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */, E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */,
E421ACA4221F73C4008B2449 /* MediaKeyTap.framework in Embed Libraries */,
); );
name = "Embed Libraries"; name = "Embed Libraries";
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
E421AC9B221F7319008B2449 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 16;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
@ -128,9 +141,11 @@
E41B22EB21FB966C00D544F6 /* playlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = playlist.h; sourceTree = "<group>"; }; E41B22EB21FB966C00D544F6 /* playlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = playlist.h; sourceTree = "<group>"; };
E41EA46B221636AF0068EF46 /* PreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = "<group>"; }; E41EA46B221636AF0068EF46 /* PreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = "<group>"; };
E41EA46E221715910068EF46 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; }; E41EA46E221715910068EF46 /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
E421ACA1221F73B8008B2449 /* MediaKeyTap.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaKeyTap.framework; path = Carthage/Build/Mac/MediaKeyTap.framework; sourceTree = "<group>"; };
E42A8F3922176D6400A13ED9 /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; }; E42A8F3922176D6400A13ED9 /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; };
E42A8F3A22176D6400A13ED9 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; }; E42A8F3A22176D6400A13ED9 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
E465049921E94DF500A70F4C /* WindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = "<group>"; }; E465049921E94DF500A70F4C /* WindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = "<group>"; };
E47E2FCB2220573500F747E6 /* MediaKeyTap.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = MediaKeyTap.framework.dSYM; path = Carthage/Build/Mac/MediaKeyTap.framework.dSYM; sourceTree = "<group>"; };
E4928E0A2218D62A001D4BEA /* CGColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGColor.swift; sourceTree = "<group>"; }; E4928E0A2218D62A001D4BEA /* CGColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGColor.swift; sourceTree = "<group>"; };
E4A642D922090CBE00067D21 /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = "<group>"; }; E4A642D922090CBE00067D21 /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = "<group>"; };
E4E8CC8F2204EC7F0024217A /* Delegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Delegate.swift; sourceTree = "<group>"; }; E4E8CC8F2204EC7F0024217A /* Delegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Delegate.swift; sourceTree = "<group>"; };
@ -147,6 +162,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */, E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */,
E421ACA3221F73C4008B2449 /* MediaKeyTap.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -264,6 +280,8 @@
E41B22BE21FB6B3300D544F6 /* Frameworks */ = { E41B22BE21FB6B3300D544F6 /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E47E2FCB2220573500F747E6 /* MediaKeyTap.framework.dSYM */,
E421ACA1221F73B8008B2449 /* MediaKeyTap.framework */,
E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */, E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */,
); );
name = Frameworks; name = Frameworks;
@ -390,6 +408,7 @@
E40786152110CE6E006887B1 /* Frameworks */, E40786152110CE6E006887B1 /* Frameworks */,
E40786162110CE6E006887B1 /* Resources */, E40786162110CE6E006887B1 /* Resources */,
E41B22C221FB6C3300D544F6 /* Embed Libraries */, E41B22C221FB6C3300D544F6 /* Embed Libraries */,
E421AC9B221F7319008B2449 /* CopyFiles */,
); );
buildRules = ( buildRules = (
); );
@ -497,6 +516,7 @@
E42A8F3C22176D6400A13ED9 /* README.md in Resources */, E42A8F3C22176D6400A13ED9 /* README.md in Resources */,
E408D3CB220E341D0006D9BE /* AlbumItem.xib in Resources */, E408D3CB220E341D0006D9BE /* AlbumItem.xib in Resources */,
E40786232110CE70006887B1 /* Main.storyboard in Resources */, E40786232110CE70006887B1 /* Main.storyboard in Resources */,
E47E2FCC2220573500F747E6 /* MediaKeyTap.framework.dSYM in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -708,6 +728,10 @@
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = BDEE7ZBFZ3; DEVELOPMENT_TEAM = BDEE7ZBFZ3;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Persephone/Info.plist; INFOPLIST_FILE = Persephone/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -735,6 +759,10 @@
CODE_SIGN_STYLE = Manual; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = BDEE7ZBFZ3; DEVELOPMENT_TEAM = BDEE7ZBFZ3;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/Mac",
);
INFOPLIST_FILE = Persephone/Info.plist; INFOPLIST_FILE = Persephone/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",

View File

@ -7,10 +7,12 @@
// //
import Cocoa import Cocoa
import MediaKeyTap
@NSApplicationMain @NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate { class AppDelegate: NSObject, NSApplicationDelegate, MediaKeyTapDelegate {
var preferences = Preferences() var preferences = Preferences()
var mediaKeyTap: MediaKeyTap?
static let mpdClient = MPDClient( static let mpdClient = MPDClient(
withDelegate: NotificationsController() withDelegate: NotificationsController()
@ -21,6 +23,9 @@ class AppDelegate: NSObject, NSApplicationDelegate {
preferences.addObserver(self, forKeyPath: "mpdHost") preferences.addObserver(self, forKeyPath: "mpdHost")
preferences.addObserver(self, forKeyPath: "mpdPort") preferences.addObserver(self, forKeyPath: "mpdPort")
mediaKeyTap = MediaKeyTap(delegate: self)
mediaKeyTap?.start()
} }
func applicationWillTerminate(_ aNotification: Notification) { func applicationWillTerminate(_ aNotification: Notification) {
@ -42,6 +47,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
} }
} }
func handle(mediaKey: MediaKey, event: KeyEvent) {
switch mediaKey {
case .playPause:
AppDelegate.mpdClient.playPause()
case .next, .fastForward:
AppDelegate.mpdClient.nextTrack()
case .previous, .rewind:
AppDelegate.mpdClient.prevTrack()
}
}
func connect() { func connect() {
AppDelegate.mpdClient.connect( AppDelegate.mpdClient.connect(
host: preferences.mpdHostOrDefault, host: preferences.mpdHostOrDefault,

View File

@ -2,6 +2,8 @@
git submodule update --init git submodule update --init
carthage update
cd libmpdclient && \ cd libmpdclient && \
meson . output && \ meson . output && \
ninja -C output ninja -C output