aboutsummaryrefslogtreecommitdiff
path: root/src/sources/spotify.rs
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2024-03-16 17:08:52 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2024-03-16 17:08:52 +0100
commit8d584ce755e90c6f5260f7f2828e5a294004148b (patch)
tree09eb1aa94be55b93ecd827f0b5b9e5aa42e6d7a4 /src/sources/spotify.rs
parentf5a040da21ff2bf594e50d886b5e485cdfdc4a70 (diff)
Add mac command
Diffstat (limited to 'src/sources/spotify.rs')
-rw-r--r--src/sources/spotify.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/sources/spotify.rs b/src/sources/spotify.rs
index b23ea73..e4bf19c 100644
--- a/src/sources/spotify.rs
+++ b/src/sources/spotify.rs
@@ -1,8 +1,8 @@
use std::ffi::CStr;
use std::io::Result;
-use cocoa::{base::nil, foundation::NSString};
-use objc::{class, msg_send, sel, sel_impl, runtime::Object};
+use cocoa::{base::{nil, id}, foundation::NSString};
+use objc::{class, msg_send, sel, sel_impl, runtime::{Class, Object}};
use objc_id::Id;
use crate::Track;
@@ -28,8 +28,17 @@ impl LyricsSource for Spotify {
let app: Id<Object> = {
let cls = class!(SBApplication);
let bundle_identifier = NSString::alloc(nil).init_str("com.spotify.Client");
- let app: *mut Object = msg_send![cls, applicationWithBundleIdentifier:bundle_identifier];
- Id::from_ptr(app)
+
+ let workspace_class = Class::get("NSWorkspace").unwrap();
+ let shared_workspace: id = msg_send![workspace_class, sharedWorkspace];
+ let app_url: id = msg_send![shared_workspace, URLForApplicationWithBundleIdentifier:bundle_identifier];
+
+ if app_url != nil {
+ let app: *mut Object = msg_send![cls, applicationWithBundleIdentifier:bundle_identifier];
+ Id::from_ptr(app)
+ } else {
+ return None
+ }
};
if msg_send![app, isRunning] {