@@ -40,15 +40,15 @@ public ShellEvents(@NotNull Configuration conf) {
4040 this .conf = conf ;
4141 }
4242
43- private void exec (String command ) {
43+ private void exec (String command , String ... envp ) {
4444 if (!this .conf .enabled )
4545 return ;
4646
4747 if (command == null || command .trim ().isEmpty ())
4848 return ;
4949
5050 try {
51- int exitCode = runtime .exec (command .trim ()).waitFor ();
51+ int exitCode = runtime .exec (command .trim (), envp ).waitFor ();
5252 LOGGER .trace ("Executed shell command: {} -> {}" , command , exitCode );
5353 } catch (IOException | InterruptedException ex ) {
5454 LOGGER .error ("Failed executing command: {}" , command , ex );
@@ -57,12 +57,16 @@ private void exec(String command) {
5757
5858 @ Override
5959 public void onContextChanged (@ NotNull Player player , @ NotNull String newUri ) {
60- exec (conf .onContextChanged );
60+ exec (conf .onContextChanged , "CONTEXT_URI=" + newUri );
6161 }
6262
6363 @ Override
6464 public void onTrackChanged (@ NotNull Player player , @ NotNull PlayableId id , @ Nullable MetadataWrapper metadata ) {
65- exec (conf .onTrackChanged );
65+ exec (conf .onTrackChanged , "TRACK_URI=" + id .toSpotifyUri (),
66+ "NAME=" + (metadata == null ? "" : metadata .getName ()),
67+ "ARTIST=" + (metadata == null ? "" : metadata .getArtist ()),
68+ "ALBUM=" + (metadata == null ? "" : metadata .getAlbumName ()),
69+ "DURATION=" + (metadata == null ? "" : metadata .duration ()));
6670 }
6771
6872 @ Override
@@ -72,22 +76,24 @@ public void onPlaybackEnded(@NotNull Player player) {
7276
7377 @ Override
7478 public void onPlaybackPaused (@ NotNull Player player , long trackTime ) {
75- exec (conf .onPlaybackPaused );
79+ exec (conf .onPlaybackPaused , "POSITION=" + trackTime );
7680 }
7781
7882 @ Override
7983 public void onPlaybackResumed (@ NotNull Player player , long trackTime ) {
80- exec (conf .onPlaybackResumed );
84+ exec (conf .onPlaybackResumed , "POSITION=" + trackTime );
8185 }
8286
8387 @ Override
8488 public void onTrackSeeked (@ NotNull Player player , long trackTime ) {
85- exec (conf .onTrackSeeked );
89+ exec (conf .onTrackSeeked , "POSITION=" + trackTime );
8690 }
8791
8892 @ Override
8993 public void onMetadataAvailable (@ NotNull Player player , @ NotNull MetadataWrapper metadata ) {
90- exec (conf .onMetadataAvailable );
94+ exec (conf .onMetadataAvailable , "TRACK_URI=" + metadata .id .toSpotifyUri (),
95+ "NAME=" + metadata .getName (), "ARTIST=" + metadata .getArtist (),
96+ "ALBUM=" + metadata .getAlbumName (), "DURATION=" + metadata .duration ());
9197 }
9298
9399 @ Override
@@ -101,7 +107,7 @@ public void onInactiveSession(@NotNull Player player, boolean timeout) {
101107
102108 @ Override
103109 public void onVolumeChanged (@ NotNull Player player , @ Range (from = 0 , to = 1 ) float volume ) {
104- exec (conf .onVolumeChanged );
110+ exec (conf .onVolumeChanged , "VOLUME=" + Math . round ( volume * 100f ) );
105111 }
106112
107113 @ Override
0 commit comments