>From a6e63a1c578351c6bad42a0ab9e6871fc2e226d9 Mon Sep 17 00:00:00 2001
From: Goran Dokic <vlc@8hz.com>
Date: Sat, 2 Jan 2016 11:16:58 +0100
Subject: [PATCH] macosx: Update/Cleanup commit VLCStatusBarIcon code for
 macosx gui.

---
 Makefile.am                                        |   8 +
 .../English.lproj/VLCStatusBarIconMainMenu.xib     |  63 +++
 .../macosx/Resources/vlcmenubaricon/pauseIcon.png  | Bin 0 -> 455 bytes
 .../Resources/vlcmenubaricon/pauseIcon@2x.png      | Bin 0 -> 1055 bytes
 .../macosx/Resources/vlcmenubaricon/playIcon.png   | Bin 0 -> 559 bytes
 .../Resources/vlcmenubaricon/playIcon@2x.png       | Bin 0 -> 1528 bytes
 .../Resources/vlcmenubaricon/statusBarIcon.png     | Bin 0 -> 559 bytes
 .../Resources/vlcmenubaricon/statusBarIcon@2x.png  | Bin 0 -> 1024 bytes
 .../macosx/Resources/vlcmenubaricon/stopIcon.png   | Bin 0 -> 354 bytes
 .../Resources/vlcmenubaricon/stopIcon@2x.png       | Bin 0 -> 688 bytes
 .../package/macosx/vlc.xcodeproj/project.pbxproj   |  63 ++-
 modules/gui/macosx/Makefile.am                     |   1 +
 modules/gui/macosx/VLCStatusBarIcon.h              |  57 +++
 modules/gui/macosx/VLCStatusBarIcon.m              | 469 +++++++++++++++++++++
 modules/gui/macosx/intf.h                          |   2 +
 modules/gui/macosx/intf.m                          |  11 +
 16 files changed, 672 insertions(+), 2 deletions(-)
 create mode 100755 extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/pauseIcon@2x.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/playIcon.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/playIcon@2x.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon@2x.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png
 create mode 100644 extras/package/macosx/Resources/vlcmenubaricon/stopIcon@2x.png
 create mode 100644 modules/gui/macosx/VLCStatusBarIcon.h
 create mode 100644 modules/gui/macosx/VLCStatusBarIcon.m

diff --git a/Makefile.am b/Makefile.am
index c853f52..a7a2a88 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -855,6 +855,14 @@ EXTRA_DIST += \
 	extras/package/macosx/Resources/sidebar-icons_yosemite/ys-sidebar-playlist@2x.png \
 	extras/package/macosx/Resources/sidebar-icons_yosemite/ys-sidebar-podcast.png \
 	extras/package/macosx/Resources/sidebar-icons_yosemite/ys-sidebar-podcast@2x.png \
+	extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png \
+	extras/package/macosx/Resources/vlcmenubaricon/pauseIcon@2x.png \
+	extras/package/macosx/Resources/vlcmenubaricon/playIcon.png \
+	extras/package/macosx/Resources/vlcmenubaricon/playIcon@2x.png \
+	extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.png \
+	extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon@2x.png \
+	extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png \
+	extras/package/macosx/Resources/vlcmenubaricon/stopIcon@2x.png \
 	extras/package/macosx/Resources/vlc.scriptSuite \
 	extras/package/macosx/Resources/vlc.scriptTerminology \
 	extras/package/macosx/ub.sh \
diff --git a/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib b/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
new file mode 100755
index 0000000..20fb774
--- /dev/null
+++ b/extras/package/macosx/Resources/English.lproj/VLCStatusBarIconMainMenu.xib
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="14F1509" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="VLCStatusBarIcon">
+                <connections>
+                    <outlet property="vlcStatusBarIconMenu" destination="534" id="O0F-8Q-FgA"/>
+                </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customObject id="420" customClass="NSFontManager"/>
+        <menu id="534" userLabel="vlcStatusBarIconMenu">
+            <items>
+                <menuItem title="Show Main WIndow" toolTip="Restore main window" id="08C-TA-yqu">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <connections>
+                        <action selector="restoreMainWindow:" target="-2" id="2Uq-Pa-toi"/>
+                    </connections>
+                </menuItem>
+                <menuItem isSeparatorItem="YES" id="t2X-zn-Z4x"/>
+                <menuItem title="Play" tag="74747" toolTip="Start/Pause playback" id="9kC-yJ-Gy5">
+                    <modifierMask key="keyEquivalentModifierMask"/>
+                    <connections>
+                        <action selector="statusBarIconTogglePlayPause:" target="-2" id="py3-sd-ST2"/>
+                    </connections>
+                </menuItem>
+                <menuItem title="Stop" tag="83838" toolTip="Stop playback" id="4Sh-MJ-bSf">
+                    <connections>
+                        <action selector="statusBarIconStop:" target="-2" id="unT-d5-vlC"/>
+                    </connections>
+                </menuItem>
+                <menuItem isSeparatorItem="YES" id="b5S-aL-b79"/>
+                <menuItem title="Next" toolTip="Next track in playlist" id="GhQ-VQ-jtu">
+                    <connections>
+                        <action selector="statusBarIconNext:" target="-2" id="VZh-xB-5IC"/>
+                    </connections>
+                </menuItem>
+                <menuItem title="Previous" toolTip="Previous track in playlist" id="iHu-rd-8KL">
+                    <connections>
+                        <action selector="statusBarIconPrevious:" target="-2" id="rNU-Dq-Sot"/>
+                    </connections>
+                </menuItem>
+                <menuItem isSeparatorItem="YES" id="Dn5-wA-WfF"/>
+                <menuItem title="Random" tag="63636" toolTip="Randomize play order" id="lPi-EL-hoN">
+                    <connections>
+                        <action selector="statusBarIconToggleRandom:" target="-2" id="DyP-Hd-KHG"/>
+                    </connections>
+                </menuItem>
+                <menuItem isSeparatorItem="YES" id="p96-c8-lBM"/>
+                <menuItem title="Quit" toolTip="Quit VLC" id="539">
+                    <connections>
+                        <action selector="quitAction:" target="-2" id="OJL-0Y-e8i"/>
+                    </connections>
+                </menuItem>
+            </items>
+            <point key="canvasLocation" x="328.5" y="267.5"/>
+        </menu>
+    </objects>
+</document>
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..76b8a5c25a31bd37bac6bac06c76de824a7b6d99
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon@2x.png b/extras/package/macosx/Resources/vlcmenubaricon/pauseIcon@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..d5325b1e3457c60e63ffae9a6c4d6ec0e963ad70
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/playIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/playIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4bf1d6dcac5a6d0940dced28fe99a195071ee1b
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/playIcon@2x.png b/extras/package/macosx/Resources/vlcmenubaricon/playIcon@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..a17b73ff8a0875c573c54a4fc3ace504ddd78c41
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecbb60d34929e0f0b94a48f27ab9e202b0574da4
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon@2x.png b/extras/package/macosx/Resources/vlcmenubaricon/statusBarIcon@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac53523e96c231007c9d6fb18b32f46a8f9f6e02
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png b/extras/package/macosx/Resources/vlcmenubaricon/stopIcon.png
new file mode 100644
index 0000000000000000000000000000000000000000..503ac127f80a14b3cd4e387bae0d88962f945096
GIT binary patch
diff --git a/extras/package/macosx/Resources/vlcmenubaricon/stopIcon@2x.png b/extras/package/macosx/Resources/vlcmenubaricon/stopIcon@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..0dad40c64924b85170368c58fc71f95817577eb2
GIT binary patch
diff --git a/extras/package/macosx/vlc.xcodeproj/project.pbxproj b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
index fa0ed11..98941dc 100644
--- a/extras/package/macosx/vlc.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/vlc.xcodeproj/project.pbxproj
@@ -459,8 +459,17 @@
 		1CE5ED2419DD6AB700FCEFD3 /* lion-window-fullscreen-over@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CE5ED1E19DD6AB700FCEFD3 /* lion-window-fullscreen-over@2x.png */; };
 		1CE5ED2519DD6AB700FCEFD3 /* lion-window-fullscreen.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CE5ED1F19DD6AB700FCEFD3 /* lion-window-fullscreen.png */; };
 		1CE5ED2619DD6AB700FCEFD3 /* lion-window-fullscreen@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1CE5ED2019DD6AB700FCEFD3 /* lion-window-fullscreen@2x.png */; };
+		532F0F251C31C5760050536C /* VLCStatusBarIconMainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 532F0F231C31C5760050536C /* VLCStatusBarIconMainMenu.xib */; settings = {ASSET_TAGS = (57575, ); }; };
+		53312D6A1C3B078300EBD0E6 /* pauseIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 53312D641C3B078300EBD0E6 /* pauseIcon.png */; };
+		53312D6C1C3B078300EBD0E6 /* playIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 53312D661C3B078300EBD0E6 /* playIcon.png */; };
+		53312D6E1C3B078300EBD0E6 /* stopIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 53312D681C3B078300EBD0E6 /* stopIcon.png */; };
+		535DE7531C3B36B800F1BD2E /* statusBarIcon.png in Resources */ = {isa = PBXBuildFile; fileRef = 535DE7511C3B36B800F1BD2E /* statusBarIcon.png */; };
+		535DE7541C3B36B800F1BD2E /* statusBarIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 535DE7521C3B36B800F1BD2E /* statusBarIcon@2x.png */; };
+		536912B51C3B129C001C16D6 /* pauseIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 536912B11C3B129C001C16D6 /* pauseIcon@2x.png */; };
+		536912B61C3B129C001C16D6 /* playIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 536912B21C3B129C001C16D6 /* playIcon@2x.png */; };
+		536912B81C3B129C001C16D6 /* stopIcon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 536912B41C3B129C001C16D6 /* stopIcon@2x.png */; };
 		633121D01B5112C300E636DA /* ResumeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 633121CE1B5112C300E636DA /* ResumeDialog.xib */; };
-		6B13E2A81BC67678001AD24A /* VLCScrollingClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */; settings = {ASSET_TAGS = (); }; };
+		6B13E2A81BC67678001AD24A /* VLCScrollingClipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */; };
 		7D3F6525188051F2005776C4 /* BWQuincyMain.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D3F6523188051F2005776C4 /* BWQuincyMain.xib */; };
 		7D8BB0B71830311300FAE9B7 /* DebugMessageVisualizer.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B51830311300FAE9B7 /* DebugMessageVisualizer.xib */; };
 		7D8BB0BA1830367200FAE9B7 /* PlaylistMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0B81830367200FAE9B7 /* PlaylistMenu.xib */; };
@@ -1233,6 +1242,17 @@
 		1CE5ED2019DD6AB700FCEFD3 /* lion-window-fullscreen@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "lion-window-fullscreen@2x.png"; sourceTree = "<group>"; };
 		2AEF857609A5FEC900130822 /* fspanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fspanel.h; path = ../../../modules/gui/macosx/fspanel.h; sourceTree = SOURCE_ROOT; };
 		2AEF857709A5FEC900130822 /* fspanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = fspanel.m; path = ../../../modules/gui/macosx/fspanel.m; sourceTree = SOURCE_ROOT; };
+		532F0F241C31C5760050536C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/VLCStatusBarIconMainMenu.xib; sourceTree = "<group>"; };
+		532F0F261C31C68B0050536C /* VLCStatusBarIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLCStatusBarIcon.h; path = ../../../modules/gui/macosx/VLCStatusBarIcon.h; sourceTree = "<group>"; };
+		532F0F271C31C68B0050536C /* VLCStatusBarIcon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VLCStatusBarIcon.m; path = ../../../modules/gui/macosx/VLCStatusBarIcon.m; sourceTree = "<group>"; };
+		53312D641C3B078300EBD0E6 /* pauseIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pauseIcon.png; path = Resources/vlcmenubaricon/pauseIcon.png; sourceTree = "<group>"; };
+		53312D661C3B078300EBD0E6 /* playIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = playIcon.png; path = Resources/vlcmenubaricon/playIcon.png; sourceTree = "<group>"; };
+		53312D681C3B078300EBD0E6 /* stopIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = stopIcon.png; path = Resources/vlcmenubaricon/stopIcon.png; sourceTree = "<group>"; };
+		535DE7511C3B36B800F1BD2E /* statusBarIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statusBarIcon.png; path = Resources/vlcmenubaricon/statusBarIcon.png; sourceTree = "<group>"; };
+		535DE7521C3B36B800F1BD2E /* statusBarIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "statusBarIcon@2x.png"; path = "Resources/vlcmenubaricon/statusBarIcon@2x.png"; sourceTree = "<group>"; };
+		536912B11C3B129C001C16D6 /* pauseIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pauseIcon@2x.png"; path = "Resources/vlcmenubaricon/pauseIcon@2x.png"; sourceTree = "<group>"; };
+		536912B21C3B129C001C16D6 /* playIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "playIcon@2x.png"; path = "Resources/vlcmenubaricon/playIcon@2x.png"; sourceTree = "<group>"; };
+		536912B41C3B129C001C16D6 /* stopIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "stopIcon@2x.png"; path = "Resources/vlcmenubaricon/stopIcon@2x.png"; sourceTree = "<group>"; };
 		5CCED71014C0D4A90057F8D1 /* ExtensionsDialogProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtensionsDialogProvider.h; path = ../../../modules/gui/macosx/ExtensionsDialogProvider.h; sourceTree = SOURCE_ROOT; };
 		5CCED71114C0D4A90057F8D1 /* ExtensionsDialogProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ExtensionsDialogProvider.m; path = ../../../modules/gui/macosx/ExtensionsDialogProvider.m; sourceTree = SOURCE_ROOT; };
 		5CCED71214C0D4A90057F8D1 /* ExtensionsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtensionsManager.h; path = ../../../modules/gui/macosx/ExtensionsManager.h; sourceTree = SOURCE_ROOT; };
@@ -1821,6 +1841,8 @@
 		08FB77AFFE84173DC02AAC07 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				532F0F261C31C68B0050536C /* VLCStatusBarIcon.h */,
+				532F0F271C31C68B0050536C /* VLCStatusBarIcon.m */,
 				7D871D391B5E684D000B56C0 /* helpers.h */,
 				8EE1AF9F044465080059A3A7 /* about.h */,
 				8EE1AFA0044465080059A3A7 /* about.m */,
@@ -2329,6 +2351,21 @@
 			path = "Resources/fspanel-yosemite";
 			sourceTree = "<group>";
 		};
+		53C509761C3AFF3C00AEC69B /* vlcmenubaricon */ = {
+			isa = PBXGroup;
+			children = (
+				535DE7511C3B36B800F1BD2E /* statusBarIcon.png */,
+				535DE7521C3B36B800F1BD2E /* statusBarIcon@2x.png */,
+				53312D641C3B078300EBD0E6 /* pauseIcon.png */,
+				536912B11C3B129C001C16D6 /* pauseIcon@2x.png */,
+				53312D661C3B078300EBD0E6 /* playIcon.png */,
+				536912B21C3B129C001C16D6 /* playIcon@2x.png */,
+				53312D681C3B078300EBD0E6 /* stopIcon.png */,
+				536912B41C3B129C001C16D6 /* stopIcon@2x.png */,
+			);
+			name = vlcmenubaricon;
+			sourceTree = "<group>";
+		};
 		7D3F652A1880529C005776C4 /* QuincyKit */ = {
 			isa = PBXGroup;
 			children = (
@@ -2385,6 +2422,7 @@
 		CC0430EE13B2461A00D7D52E /* ui graphics */ = {
 			isa = PBXGroup;
 			children = (
+				53C509761C3AFF3C00AEC69B /* vlcmenubaricon */,
 				1C88BC5719DC7CB300645190 /* fspanel-yosemite */,
 				CCCB86BF0ACFDE4A00CF1E10 /* fspanel */,
 				1C88BA9D19DC7C7800645190 /* mainwindow_yosemite */,
@@ -2895,7 +2933,9 @@
 		DCF358BC077F1236007DB450 /* xibs */ = {
 			isa = PBXGroup;
 			children = (
+				532F0F231C31C5760050536C /* VLCStatusBarIconMainMenu.xib */,
 				E0FB95CC1615B6DF0005069A /* DetachedVideoWindow.xib */,
+				7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */,
 				CCD83E2E13FEA143004F1652 /* About.xib */,
 				1CBB2CC61B06A6DE00110ADA /* Help.xib */,
 				CCD83E3013FEA143004F1652 /* AudioEffects.xib */,
@@ -2905,7 +2945,6 @@
 				CCD83E3813FEA143004F1652 /* MediaInfo.xib */,
 				CCD83E3A13FEA143004F1652 /* Open.xib */,
 				CCD83E3C13FEA143004F1652 /* Preferences.xib */,
-				7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */,
 				CCD83E3E13FEA143004F1652 /* SyncTracks.xib */,
 				CCD83E4013FEA143004F1652 /* VideoEffects.xib */,
 				CCD83E2B13FE9B90004F1652 /* MainMenu.xib */,
@@ -3029,6 +3068,9 @@
 		089C1669FE841209C02AAC07 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
+				KnownAssetTags = (
+					57575,
+				);
 				LastUpgradeCheck = 0430;
 				TargetAttributes = {
 					1C07EDF61B1CD67300A0BBDB = {
@@ -3107,6 +3149,7 @@
 				CC04323F13B246DF00D7D52E /* effects-double-buttons-pressed_dark.png in Resources */,
 				CC04324013B246DF00D7D52E /* effects-one-button_dark.png in Resources */,
 				CC04324413B246DF00D7D52E /* fullscreen-double-buttons_dark.png in Resources */,
+				53312D6E1C3B078300EBD0E6 /* stopIcon.png in Resources */,
 				7DD6EC101B58136D0047CF5C /* SimplePreferences.xib in Resources */,
 				CC04324513B246DF00D7D52E /* fullscreen-double-buttons-pressed_dark.png in Resources */,
 				CC04324613B246DF00D7D52E /* pause_dark.png in Resources */,
@@ -3312,6 +3355,7 @@
 				1C88BB5619DC7C7800645190 /* ys-repeat-one-pressed.png in Resources */,
 				1C88BB1B19DC7C7800645190 /* ys-effects-one-button@2x.png in Resources */,
 				1C88BA9119DC7C5D00645190 /* ys-sidebar-local.png in Resources */,
+				53312D6C1C3B078300EBD0E6 /* playIcon.png in Resources */,
 				1C88BBE519DC7C8100645190 /* ys-backward-3btns-dark-pressed.png in Resources */,
 				1C88BC1419DC7C8100645190 /* ys-play-pressed_dark@2x.png in Resources */,
 				CC0433B413B28B9C00D7D52E /* ogg.icns in Resources */,
@@ -3326,6 +3370,7 @@
 				1C88BA9419DC7C5D00645190 /* ys-sidebar-movie@2x.png in Resources */,
 				1C88BCC119DC7CB300645190 /* ys-fs_volume_slider_knob@2x.png in Resources */,
 				CC0433BC13B28B9C00D7D52E /* wmv.icns in Resources */,
+				536912B51C3B129C001C16D6 /* pauseIcon@2x.png in Resources */,
 				1C88BCAE19DC7CB300645190 /* ys-fs_stop_highlight.png in Resources */,
 				1C88BC9119DC7CB300645190 /* ys-fs_exit_fullscreen@2x.png in Resources */,
 				1C88BC1F19DC7C8100645190 /* ys-previous-6btns-dark-pressed.png in Resources */,
@@ -3369,6 +3414,7 @@
 				CCD83E4A13FEA143004F1652 /* Open.xib in Resources */,
 				CCD83E4B13FEA143004F1652 /* Preferences.xib in Resources */,
 				1C88BA7419DC7B2200645190 /* yosemite-window-minimize-over.png in Resources */,
+				532F0F251C31C5760050536C /* VLCStatusBarIconMainMenu.xib in Resources */,
 				CCD83E4C13FEA143004F1652 /* SyncTracks.xib in Resources */,
 				CCD83E4D13FEA143004F1652 /* VideoEffects.xib in Resources */,
 				1C88BA9519DC7C5D00645190 /* ys-sidebar-music.png in Resources */,
@@ -3600,6 +3646,7 @@
 				CC9E5E08159760B100D14E83 /* stop@2x.png in Resources */,
 				CC9E5E09159760B100D14E83 /* volume-high@2x.png in Resources */,
 				1C88BCB719DC7CB300645190 /* ys-fs_volume_max@2x.png in Resources */,
+				536912B81C3B129C001C16D6 /* stopIcon@2x.png in Resources */,
 				1C88BB3019DC7C7800645190 /* ys-pause-pressed.png in Resources */,
 				CC9E5E0A159760B100D14E83 /* volume-low@2x.png in Resources */,
 				1C88BCBD19DC7CB300645190 /* ys-fs_volume_mute_highlight@2x.png in Resources */,
@@ -3658,6 +3705,7 @@
 				CC91908D159B4BB800E634A7 /* play_dark@2x.png in Resources */,
 				CC91908E159B4BB800E634A7 /* play-pressed_dark@2x.png in Resources */,
 				1C88BC1D19DC7C8100645190 /* ys-playlist_dark.png in Resources */,
+				53312D6A1C3B078300EBD0E6 /* pauseIcon.png in Resources */,
 				CC919091159B4BB800E634A7 /* effects-double-buttons_dark@2x.png in Resources */,
 				7D8BB0BA1830367200FAE9B7 /* PlaylistMenu.xib in Resources */,
 				1C88BC4A19DC7C8100645190 /* ys-topbar-dark-center-fill@2x.png in Resources */,
@@ -3713,6 +3761,7 @@
 				CC973BB815F0E14400D5F650 /* forward-3btns@2x.png in Resources */,
 				1C88BB4E19DC7C7800645190 /* ys-progression-track-wrapper-middle.png in Resources */,
 				1CE5ED2419DD6AB700FCEFD3 /* lion-window-fullscreen-over@2x.png in Resources */,
+				535DE7531C3B36B800F1BD2E /* statusBarIcon.png in Resources */,
 				CC3F2E8C15F5038F009D7F39 /* playlist-1btn-pressed.png in Resources */,
 				CC3F2E8D15F5038F009D7F39 /* playlist-1btn-pressed@2x.png in Resources */,
 				CC3F2E8E15F5038F009D7F39 /* playlist-1btn.png in Resources */,
@@ -3769,6 +3818,7 @@
 				1C88BB1E19DC7C7800645190 /* ys-forward-3btns.png in Resources */,
 				CC166FE915F517660088201B /* backward-6btns-pressed.png in Resources */,
 				1C88BB6819DC7C7800645190 /* ys-stop.png in Resources */,
+				535DE7541C3B36B800F1BD2E /* statusBarIcon@2x.png in Resources */,
 				CC166FEA15F517660088201B /* backward-6btns-pressed@2x.png in Resources */,
 				1C88BBF719DC7C8100645190 /* ys-effects-one-button-pressed-dark.png in Resources */,
 				1C88BA9619DC7C5D00645190 /* ys-sidebar-music@2x.png in Resources */,
@@ -3814,6 +3864,7 @@
 				1C88BC9019DC7CB300645190 /* ys-fs_exit_fullscreen.png in Resources */,
 				1C88BB2A19DC7C7800645190 /* ys-fullscreen-one-button.png in Resources */,
 				633121D01B5112C300E636DA /* ResumeDialog.xib in Resources */,
+				536912B61C3B129C001C16D6 /* playIcon@2x.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3994,6 +4045,14 @@
 			name = Help.xib;
 			sourceTree = "<group>";
 		};
+		532F0F231C31C5760050536C /* VLCStatusBarIconMainMenu.xib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				532F0F241C31C5760050536C /* English */,
+			);
+			name = VLCStatusBarIconMainMenu.xib;
+			sourceTree = "<group>";
+		};
 		633121CE1B5112C300E636DA /* ResumeDialog.xib */ = {
 			isa = PBXVariantGroup;
 			children = (
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 691cf12..2c5d48a 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -74,5 +74,6 @@ libmacosx_plugin_la_SOURCES = \
 	VLCTimeSelectionPanelController.h VLCTimeSelectionPanelController.m \
 	VLCUIWidgets.h VLCUIWidgets.m \
 	VLCScrollingClipView.h VLCScrollingClipView.m \
+	VLCStatusBarIcon.h VLCStatusBarIcon.m \
 	VLCVoutWindowController.h VLCVoutWindowController.m \
 	Windows.h Windows.m
diff --git a/modules/gui/macosx/VLCStatusBarIcon.h b/modules/gui/macosx/VLCStatusBarIcon.h
new file mode 100644
index 0000000..3eb5d6e
--- /dev/null
+++ b/modules/gui/macosx/VLCStatusBarIcon.h
@@ -0,0 +1,57 @@
+/*****************************************************************************
+ * VLCStatusBarIcon.h: Mac OS X module for vlc
+ *****************************************************************************
+ * Copyright (C) 2001-2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Goran Dokic <vlc at 8hz dot com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <cocoa/cocoa.h>
+
+
+@interface VLCStatusBarIcon : NSObject <NSMenuDelegate>
+{
+    NSMenuItem *_vlcStatusBarMenuItem;
+
+    NSString *_nameToDisplay;
+    NSString *_timeToDisplay;
+    NSString *_durationToDisplay;
+    NSString *_urlToDisplay;
+    NSImage *_menuImagePlay;
+    NSImage *_menuImagePause;
+    NSImage *_menuImageStop;
+}
+
+@property NSStatusItem *statusItem;
+@property NSTimer *dataRefreshUpdateTimer;
+@property (readwrite, strong) IBOutlet NSMenu *vlcStatusBarIconMenu;
+
+// get data from VLC and update the little status menu
+- (void) updateMenuItemRandom;
+- (void) updateMenuItemPlayPause;
+- (void) setDataUpdateTimer:(float) interval;
+
+- (IBAction) updateMenuItemContent:(id)sender;
+- (IBAction) restoreMainWindow:(id)sender;
+- (IBAction) statusBarIconTogglePlayPause:(id)sender;
+- (IBAction) statusBarIconStop:(id)sender;
+- (IBAction) statusBarIconNext:(id)sender;
+- (IBAction) statusBarIconPrevious:(id)sender;
+- (IBAction) statusBarIconToggleRandom:(id)sender;
+
+@end
diff --git a/modules/gui/macosx/VLCStatusBarIcon.m b/modules/gui/macosx/VLCStatusBarIcon.m
new file mode 100644
index 0000000..d9ce744
--- /dev/null
+++ b/modules/gui/macosx/VLCStatusBarIcon.m
@@ -0,0 +1,469 @@
+/*****************************************************************************
+ * VLCStatusBarIcon.m: Mac OS X module for vlc
+ *****************************************************************************
+ * Copyright (C) 2001-2016 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Goran Dokic <vlc at 8hz dot com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCStatusBarIcon.h"
+
+#import "MainMenu.h"
+#import "intf.h"
+
+#import <vlc_common.h>
+#import <vlc_playlist.h>
+#import <vlc_input.h>
+#import <CoreInteraction.h>
+#import <StringUtility.h>
+
+#pragma mark -
+#pragma mark Defines
+
+#define playPauseMenuItemTag 74747
+#define stopMenuItemTag 83838
+#define randomMenuItemTag 63636
+#define dataUpdateTimerInterval 1.0
+#define NSInitialToolTipDelayIn_ms 20
+// #define showURLInToolTip 1
+
+#pragma mark -
+#pragma mark Implementation
+
+//--
+@implementation VLCStatusBarIcon {
+    //
+}
+
+#pragma mark -
+#pragma mark Init
+
+//--
+//
+//
++(id)alloc
+{
+    return [super alloc];
+}
+
+
+//--
+//
+//
+- (id) init
+{
+    self = [super init];
+    if (self)
+    {
+        // Do some init if needed
+    }
+    return self;
+}
+
+
+// fire it up
+//
+//
+- (void) awakeFromNib
+{
+    [super awakeFromNib];
+
+    _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
+    [_statusItem setHighlightMode:YES];
+    [_statusItem setEnabled:YES];
+    [_statusItem setTarget:self];
+
+    // Attach pull-down menu
+    [_statusItem setMenu:_vlcStatusBarIconMenu];
+
+    // add the top menu item for dynamic data
+    _vlcStatusBarMenuItem = [[NSMenuItem alloc] initWithTitle:@"URL/Path Options" action:@selector(updateMenuItemContent:) keyEquivalent:@""];
+
+    [_vlcStatusBarMenuItem setToolTip:@"Misc functions with media URL or Path"];
+    [_vlcStatusBarMenuItem setTarget:self];
+
+    [_vlcStatusBarIconMenu insertItem:_vlcStatusBarMenuItem atIndex:0];
+
+    // Set our selves up as delegate, to receive menuNeedsUpdate messages, so
+    // we can update our menu as needed/before it's drawn
+    [_vlcStatusBarIconMenu setDelegate:self];
+
+    // Disable custom menu item initially
+    // needs to be done with validateMenuItem (see below)
+    [_vlcStatusBarMenuItem setEnabled:NO];
+
+    NSImage *menuIcon;
+
+    // set black/white icon (or color, like originally)
+    menuIcon = [NSImage imageNamed:@"statusBarIcon"];
+
+    // Make sure the b/w statusItem icon is inverted on dark/light mode
+    menuIcon.template = YES;
+
+    // Deprecated in osx10.10, but needed before.
+    [_statusItem setHighlightMode:YES];
+    [_statusItem setImage:menuIcon];
+
+    // Increase toolTip speed, improves status usability
+    // Tweak delay above, with '#define NSInitialToolTipDelayIn_ms x'
+
+    [[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithInt: NSInitialToolTipDelayIn_ms] forKey: @"NSInitialToolTipDelay"];
+
+    // init _urlToDisplay
+    _urlToDisplay = nil;
+
+    // Load the menu icons
+    _menuImagePlay = [NSImage imageNamed:@"playIcon"];
+    _menuImagePause = [NSImage imageNamed:@"pauseIcon"];
+
+    _menuImageStop = [NSImage imageNamed:@"stopIcon"];
+    NSMenuItem *menuItemToChange = [_vlcStatusBarIconMenu itemWithTag:stopMenuItemTag];
+    [menuItemToChange setImage:_menuImageStop];
+
+    // I'd rather not use a timer and only update when mouse comes near
+    // status icon in bar. But one can't tell without evil sourcery :(
+    // Tweak update frequency above (#define)
+
+    [self setDataUpdateTimer:dataUpdateTimerInterval];
+}
+
+
+#pragma mark -
+#pragma mark Various functions
+
+//---
+// Menu delegate/callback for cocoa - called before menu is opened/displayed
+// fire off menu item updates (dynamic item 0, play/pause, random)
+- (void)menuNeedsUpdate:(NSMenu *)menu
+{
+    // update dynamic menu 'item 0' (follows data gathered by timer handler)
+    [self updateDynamicMenuItemText];
+
+    // update play/pause status in status bar menu
+    [self updateMenuItemPlayPause];
+
+    // update random status in status bar menu
+    [self updateMenuItemRandom];
+}
+
+
+//---
+// Make sure we can enable/disable menu items (in our case index 0)
+// override class method. Called every time before menu is drawn.
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
+{
+    SEL action = menuItem.action;
+
+    // disable the URL/Path options menu if there is no meaningful data
+    if ((action == @selector(updateMenuItemContent:)) && (!_urlToDisplay))
+    {
+        return NO;
+    }
+    return YES;
+}
+
+
+//---
+// callback for tooltip update timer
+//
+- (void) dataRefreshTimeHandler:(NSTimer *)timer
+{
+    [self gatherDataToDisplay];
+    [self updateToolTipText];
+}
+
+
+//---
+// Make sure data is fresh, before displaying
+//
+- (void) gatherDataToDisplay
+{
+    mtime_t pos;
+
+    // get name of current item - clear first!
+    _nameToDisplay = nil;
+    _nameToDisplay = [[VLCCoreInteraction sharedInstance] nameOfCurrentPlaylistItem];
+
+    // If status is 'stopped' there is no useful data
+    // Otherwise could have used 'if (_nameToDisplay == nil)'
+
+    if ([self vlcPlayingStatus] == PLAYLIST_STOPPED)
+    {
+        _urlToDisplay = nil;
+    } else {
+        input_thread_t * p_input;
+        p_input = pl_CurrentInput(VLCIntf);
+        if (p_input)
+        {
+            pos = var_GetInteger(p_input, "time") / CLOCK_FREQ;
+            vlc_object_release(p_input); // must release or get segfault on quit
+        }
+
+        // update our time counter
+        _timeToDisplay = [[VLCStringUtility sharedInstance] stringForTime:(long long) pos];
+
+        // get the duration (if it's there)
+        int duration = [[VLCCoreInteraction sharedInstance] durationOfCurrentPlaylistItem];
+        _durationToDisplay = [[VLCStringUtility sharedInstance] stringForTime:(long long) duration];
+
+        // update the playing item's URL/Path
+        _urlToDisplay =  [[[VLCCoreInteraction sharedInstance] URLOfCurrentPlaylistItem] absoluteString];
+    }
+}
+
+
+//---
+// Call for periodic updates of tooltip text
+//
+- (void) updateToolTipText
+{
+    NSString *toolTipText = nil;
+
+    // craft the multiline string, for the tooltip, depending on play status
+
+    if ([self vlcPlayingStatus] == PLAYLIST_STOPPED)
+    {
+         // nothing playing
+         toolTipText = @"VLC media player\nNothing playing";
+    } else {
+#ifdef showURLInToolTip
+    toolTipText = [NSString stringWithFormat:@"VLC media player\nName: %@\nDuration: %@\nTime: %@\nURL/Path: %@", _nameToDisplay, _durationToDisplay, _timeToDisplay, _urlToDisplay];
+#else
+    toolTipText = [NSString stringWithFormat:@"VLC media player\nName: %@\nDuration: %@\nTime: %@", _nameToDisplay, _durationToDisplay, _timeToDisplay];
+#endif
+    }
+
+    [_statusItem setToolTip:toolTipText];
+}
+
+
+
+//---
+// Call for updating of dynamic menu item
+//
+- (void) updateDynamicMenuItemText
+{
+    NSString *menuString = nil;
+
+    // create string for dynamic menu bit (sync?)
+    if ([self vlcPlayingStatus] == PLAYLIST_STOPPED)
+    {
+         // put back our disabled menu item text.
+         menuString =  @"URL/Path Options";
+    } else {
+         if ([_urlToDisplay hasPrefix:@"file://"])
+         {
+              // offer to show 'file://' in finder
+              menuString = [NSString stringWithFormat:@"Select File In Finder"];
+         } else {
+              // offer to copy URL to clipboard
+              menuString = [NSString stringWithFormat:@"Copy URL to clipboard"];
+         }
+    }
+
+    [_vlcStatusBarMenuItem setTitle:menuString];
+}
+
+
+//---
+// set timer for tooltips updates and flee
+//
+- (void) setDataUpdateTimer:(float) interval
+{
+    self.dataRefreshUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:interval
+    target:self
+    selector:@selector(dataRefreshTimeHandler:)
+    userInfo:nil
+    repeats:YES];
+}
+
+
+//---
+//
+//
+- (void) updateMenuItemRandom
+{
+    // get current random status
+    bool b_value;
+    playlist_t *p_playlist = pl_Get(VLCIntf);
+    b_value = var_GetBool(p_playlist, "random");
+
+    // get menuitem 'Random'
+    NSMenuItem* menuItemToChange = [_vlcStatusBarIconMenu itemWithTag:randomMenuItemTag];
+    if (b_value)
+    {
+        [menuItemToChange setState:NSOnState];
+    } else {
+        [menuItemToChange setState:NSOffState];
+    }
+}
+
+
+//---
+//
+//
+- (void) updateMenuItemPlayPause
+{
+    NSMenuItem* menuItemToChange = [_vlcStatusBarIconMenu itemWithTag:playPauseMenuItemTag];
+
+    if ([self vlcPlayingStatus] == PLAYLIST_RUNNING)
+    {
+        [menuItemToChange setTitle:@"Pause"];
+        [menuItemToChange setImage:_menuImagePause];
+    } else {
+        [menuItemToChange setTitle:@"Play"];
+        [menuItemToChange setImage:_menuImagePlay];
+    }
+}
+
+
+#pragma mark -
+#pragma mark Utility functions
+
+//---
+// Returns VLC playlist status
+// Check for: constants PLAYLIST_RUNNING, PLAYLIST_STOPPED, PLAYLIST_PAUSED.
+- (int) vlcPlayingStatus
+{
+    int res;
+    // get the playlist 'playing' status
+    playlist_t *p_playlist = pl_Get(VLCIntf);
+
+    PL_LOCK;
+    res = playlist_Status( p_playlist );
+    PL_UNLOCK;
+
+    return res;
+}
+
+
+//---
+// Returns true if playing, false in all other cases.
+//
+- (BOOL) isVLCPlaying
+{
+    bool vlcPlaying = false;
+
+    // get the playlist 'playing' status
+    playlist_t *p_playlist = pl_Get(VLCIntf);
+
+    PL_LOCK;
+    switch( playlist_Status( p_playlist ) )
+    {
+        case PLAYLIST_RUNNING:
+            vlcPlaying = true;
+            break;
+        case PLAYLIST_STOPPED:
+        case PLAYLIST_PAUSED:
+        default:
+            break;
+    }
+    PL_UNLOCK;
+
+    return vlcPlaying;
+}
+
+
+#pragma mark -
+#pragma mark Menu item Actions
+
+//-- action for dynamic menu index 0
+
+- (IBAction) updateMenuItemContent:(id)sender
+{
+    // Here we offer to copy the url to the clipboard or
+    // select/show a local file in the finder..(useful imo ;-)
+
+    if ([self vlcPlayingStatus] == PLAYLIST_STOPPED)
+    {
+        // Don't do anything, as the 'URL/path' is emtpy
+    } else {
+        if ([_urlToDisplay hasPrefix:@"file://"])
+        {
+            // show local file in finder
+            NSString *path=[_urlToDisplay substringFromIndex:7];
+            [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:path];
+        } else {
+            // copy remote URL to clipboard
+            [[NSPasteboard generalPasteboard] clearContents];
+            [[NSPasteboard generalPasteboard] setString:_urlToDisplay  forType:NSStringPboardType];
+        }
+    }
+}
+
+
+//-- action for 'main window'
+
+- (IBAction)restoreMainWindow:(id)sender
+{
+    // force our window to go to front (huzzah) and restore window
+    [[VLCApplication sharedApplication] activateIgnoringOtherApps:YES];
+    [[[VLCMain sharedInstance] mainWindow] makeKeyAndOrderFront:sender];
+}
+
+
+//-- action for 'toggle play/pause'
+
+- (IBAction)statusBarIconTogglePlayPause:(id)sender
+{
+    [[VLCCoreInteraction sharedInstance] playOrPause];
+}
+
+
+//-- action for 'stop'
+
+- (IBAction)statusBarIconStop:(id)sender
+{
+    [[VLCCoreInteraction sharedInstance] stop];
+}
+
+
+//-- action for 'Next track'
+
+- (IBAction)statusBarIconNext:(id)sender
+{
+    [[VLCCoreInteraction sharedInstance] next];
+}
+
+
+//-- action for 'previous track'
+
+- (IBAction)statusBarIconPrevious:(id)sender
+{
+    [[VLCCoreInteraction sharedInstance] previous];
+}
+
+
+//-- action to actually 'toggle VLC randomize playorder status'
+
+- (IBAction)statusBarIconToggleRandom:(id)sender
+{
+    [[VLCCoreInteraction sharedInstance] shuffle];
+}
+
+
+//-- action voor 'quit'
+
+- (IBAction)quitAction:(id)sender
+{
+    // clean timer, quit
+    [self.dataRefreshUpdateTimer invalidate];
+    [[NSApplication sharedApplication] terminate:nil];
+}
+
+@end
diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index f3cc079..6e297fd 100644
--- a/modules/gui/macosx/intf.h
+++ b/modules/gui/macosx/intf.h
@@ -74,6 +74,7 @@ static NSString * VLCInputChangedNotification = @"VLCInputChangedNotification";
 @class VLCVideoEffects;
 @class VLCConvertAndSave;
 @class ExtensionsManager;
+@class VLCStatusBarIcon;
 
 @interface VLCMain : NSObject <NSWindowDelegate, NSApplicationDelegate>
 
@@ -95,6 +96,7 @@ static NSString * VLCInputChangedNotification = @"VLCInputChangedNotification";
 - (ResumeDialogController *)resumeDialog;
 - (VLCInputManager *)inputManager;
 - (ExtensionsManager *)extensionsManager;
+- (VLCStatusBarIcon *)statusBarIcon;
 
 - (VLCDebugMessageVisualizer *)debugMsgPanel;
 
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index 63d3e43..b00ed5e 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -65,6 +65,8 @@
 #import "AudioEffects.h"
 #import "intf-prefs.h"
 
+#import "VLCStatusBarIcon.h"
+
 #ifdef HAVE_SPARKLE
 #import <Sparkle/Sparkle.h>                 /* we're the update delegate */
 #endif
@@ -94,6 +96,7 @@ int OpenIntf (vlc_object_t *p_this)
         [VLCMain sharedInstance];
 
         [NSBundle loadNibNamed:@"MainMenu" owner:[[VLCMain sharedInstance] mainMenu]];
+        [NSBundle loadNibNamed:@"VLCStatusBarIconMainMenu" owner:[[VLCMain sharedInstance] statusBarIcon]];
         [[[VLCMain sharedInstance] mainWindow] makeKeyAndOrderFront:nil];
 
         msg_Dbg(p_intf, "Finished loading macosx interface");
@@ -165,6 +168,7 @@ static int ShowController(vlc_object_t *p_this, const char *psz_variable,
     ResumeDialogController *_resume_dialog;
     VLCInputManager *_input_manager;
     VLCPlaylist *_playlist;
+    VLCStatusBarIcon *_statusBarIcon;
     VLCDebugMessageVisualizer *_messagePanelController;
     VLCTrackSynchronization *_trackSyncPanel;
     VLCAudioEffects *_audioEffectsPanel;
@@ -218,6 +222,8 @@ static VLCMain *sharedInstance = nil;
         _coredialogs = [[VLCCoreDialogProvider alloc] init];
 
         _mainmenu = [[VLCMainMenu alloc] init];
+        _statusBarIcon = [[VLCStatusBarIcon  alloc] init];
+
         _voutController = [[VLCVoutWindowController alloc] init];
         _playlist = [[VLCPlaylist alloc] init];
 
@@ -499,6 +505,11 @@ static VLCMain *sharedInstance = nil;
     return _mainmenu;
 }
 
+- (VLCStatusBarIcon *)statusBarIcon
+{
+    return _statusBarIcon;
+}
+
 - (VLCMainWindow *)mainWindow
 {
     return (VLCMainWindow *)[_mainWindowController window];
-- 
2.5.4 (Apple Git-61)

