์, .Net ํ๋ ์์ํฌ์ NotifyIcon ํด๋์ค๊ฐ ์์ง๋ง ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ์ต๋๋ค.
"๊ธฐ๋ณธ KDE ๋ฐ์คํฌํ์ ์คํ ์ค์ธ ๊ฒฝ์ฐ ์ผ๋ฐ NotifyIcon์ด ํ์๋์ง ์์ต๋๋ค.
์๋ฆผ ์์ญ ์ ํ๋ฆฟ์ด๋ผ๋ Gnome ํจ๋์ด ํ์ํฉ๋๋ค."
http://www.codeproject.com/Articles/466805/AmberIndicator-a-systray-app-under-Linux
"openSUSE, Fedora ๋ฐ Ubuntu์์ NotifyIcon์ ์ฌ์ฉํ ์ ์์ต๋๋ค"
https://bugzilla.novell.com/show_bug.cgi?id=590093
"NotifyIcon์ด ์์คํ
ํธ๋ ์ด์ ํ์๋์ง ์์ต๋๋ค(ํ
์คํธ OS: Fedora, Arch. DE: MATE, Cinnamon)"
https://bugzilla.xamarin.com/show_bug.cgi?id=14976
DBus์ ๋ ํตํฉ๋ ๊ฒ์ด ์์ด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์์ด๋์ด๋ ์๋ฆผ ์์ญ์ ์์ด์ฝ์ ๋ง๋๋ ๊ฒ์
๋๋ค.
๋ํ ์์๋ฅผ ํ์ํ๋ ๊ฒ๋ณด๋ค ๋ ์ฑ๊ฐ์๋ค(๋ํ ์์๋ ํ์ฌ ์์
์ ์ค๋จํ๊ณ ์์ด์ฝ์ ์ฌ์ฉ์๊ฐ ํ๋์ ๋ฌด์ํ ์ ์์). ๊ทธ๋ฌ๋ ์์ด์ฝ๋ ๋์ ๋๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ํธ๋ ์ด ์์ด์ฝ์ด ์์ ๋ฉ์์ง ํ์ ์ ๋์ธ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค(ํ์ ์ ์ถ์
๋ฌธ ์นด๋ฉ๋ผ์ ์ด๋ฏธ์ง๋ ๋น๋์ค ์คํธ๋ฆผ์ด ํฌํจ๋ ์ ์์ต๋๊น? ์๋๋ฉด ๋ฌธ์์ด๋ง ํ์๋ ์ ์์ต๋๊น?). ํนํ, ์ด๋ ํ์ ์ด ์ผ์ ์๊ฐ ํ์ ์ฌ๋ผ์ง์ ์๋ฏธํฉ๋๋ค(๊ทธ๋ฌ๋ Rigo ๊ด๋ฆฌ์๊ฐ ์๋ชป - ์ฌ์ฉ์๊ฐ ํ์ ์ ์๋์ผ๋ก ๋ซ์์ผ ํจ).
DBus๋ฅผ ํตํด ํตํฉํ๊ธฐ์ ์ข์ _Workspace Switcher Applet_๋ ์์ต๋๋ค. ์ฌ์ฉ ์๋๋ฆฌ์ค - ๋ค๋ฅธ ์์ ๊ณต๊ฐ์ ๋ค๋ฅธ ๋ฌธ์ ์ธํธ๋ฅผ ํ์ํด์ผ ํ๋ MDI ํ๋ก๊ทธ๋จ. ์์ ๊ณต๊ฐ์ ๋ํ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ ์์ฒญ์ ๋ง๋ค์์ต๋๋ค - https://github.com/picoe/Eto/issues/409
"GNOME ์์คํ ํธ๋ ์ด๋ ์ํ ๋๋ ์์ง์ผ ์ ์์ต๋๋ค"
"์์คํ ํธ๋ ์ด๋ ํ์ ๋ฉ์์ง๋ฅผ ์กฐ์ ํ์ฌ ์ผ๊ด๋ ๋ชจ์๊ณผ ๋๋์ ๊ฐ๊ณ ํ ๋ฒ์ ์ฌ๋ฌ ํ์ ๋ฉ์์ง๋ฅผ ํ์ํ์ง ์๋๋ก ํฉ๋๋ค. ... ์์คํ ํธ๋ ์ด๋ ํ ๋ฒ์ ์ฌ๋ฌ ํธ๋ ์ด ์์ด์ฝ์์ ๋ฉ์์ง์ ์ผ๋ถ๋ฅผ ์์ ํ ์ ์์ผ๋ฏ๋ก ํ์ ํธ๋ ์ด ์์ด์ฝ์ ์ฐฝ ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฌ์กฐ๋ฆฝํ๋ ค๋ฉด.... ํ์ ๋ฉ์์ง๋ ์งง์ ๋ฌธ์ ๋ฉ์์ง์ ๋๋ค. ... ๋ฉ์์ง์ ์๊ฐ ์ด๊ณผ๊ฐ ์์ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๊ฐ ์ด๊ณผ๊ฐ ๋ง๋ฃ๋ ํ ๋ฉ์์ง๊ฐ ์ญ์ ๋ฉ๋๋ค. ...ํธ๋ ์ด ์์ด์ฝ์ด ์ด์ ์ ๋ณด๋ธ ํ์ ๋ฉ์์ง๋ฅผ ์ทจ์ํ ์ ์์ต๋๋ค."
์ผ๋ถ URL:
GNOME HIG์ ๋ฐ๋ฅด๋ฉด ํจ๋์ ์์ด์ฝ์ ์ถ๊ฐํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ใ
. ํจ๋ ์ ํ๋ฆฟ("Wanda-the-fish"์์ ์ผ์ชฝ์ ์์)
๋น. ์๋ฆผ ์์ญ ์์ด์ฝ (์๋ฆผ ํจ๋ ์์ฒด๊ฐ ํจ๋ ์ฑ์ผ๋ก ํจ๋์ ์ถ๊ฐ๋จ)
Mono๋ X11 ์ฌ์ ์์ "์๋ฆผ ์์ญ ์์ด์ฝ"์ ๊ตฌํํฉ๋๋ค(Gtk# ์์ด ์ง์ ).
๋ชจ๋
ธ๋ ๋ฉ์๋์ ํจ๊ป XplatUI ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SystrayAdd, SystrayRemove, SystrayChange, SystrayBalloon, SendMessage, SetForegroundWindow
https://github.com/mono/mono/blob/ef380e3712af86ef7f8064fab19400523c7510c0/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUI.cs#L1106-L1128
ํตํ๊ฐ ํ์์๊ฒ ์ ๋ฌ๋ฉ๋๋ค.
static XplatUIDriver driver;
์ด๋ค ์ ํ์ ๋๊น ??? MATE ํ๊ฒฝ์ฉ.
์ด๋ค ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ง๋ ๋ค์ ์ค์์ ์ ํ๋ XplatUIX11์ผ ๊ฒ์
๋๋ค.
https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUI.cs#L112
ํธ๋ ์ด ์์ด์ฝ์ ์์คํ ํธ๋ ์ด์ ๋ด์ฅ๋๋ ์ฐฝ์ ๋๋ค.
๋ด๋ถ ํด๋์ค NotifyIconWindow : Form { ... // 57ํ
๊ฐ์ธ NotifyIconWindow ์ฐฝ; // 45ํ
์ฐฝ = ์๋ก์ด NotifyIconWindow(์ด); // 389ํ
XplatUI.SystrayAdd(window.Handle, ํ
์คํธ, ์์ด์ฝ, ํดํ ์ถ๋ ฅ); // 524ํ
๊ทธ๋ฆฌ๊ธฐ ๋ฌธ์ :
https://bugzilla.novell.com/show_bug.cgi?id=324237#c13
"64๋นํธ ์ปดํจํฐ์์๋ ์์ด์ฝ์ด ํธ๋ ์ด์ ์ ํ ํ์๋์ง ์์ต๋๋ค."
ํฌ๋ช
์ฑ ๋ฌธ์ :
http://lists.ximian.com/pipermail/mono-winforms-list/2007-December/003173.html
๋ฌธ์ ์ ์์ธ์ ๋ผ์ธ 189
(์ด๊ฒ์ 8๋
๋์ ์์ ๋์ง ์์ ๋ฒ๊ทธ์
๋๋ค)
๊ทธ๋ฌ๋ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ ๋ฉ์์ง์ ์ฒจ๋ถ ํ์ผ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ํ๋ณด์ญ์์ค
http://standards.freedesktop.org/systemtray-spec/latest/ar01s06.html
๋ค์ ๊ทธ๋ฆฌ๊ธฐ ๋ฌธ์ :
http://mono.1490590.n4.nabble.com/NotifyIcon-and-ContextMenu-redrawing-issues-in-gnome-td1541474.html
https://bugzilla.novell.com/show_bug.cgi?id=324237
https://bugzilla.novell.com/show_bug.cgi?id=MONO81668
๊ด๋ฆฌ์ ์ ํ์ ๋ํ ๊ท์น์ ICCCM( http://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html#manager_selections )์ ์ ์๋์ด ์์ต๋๋ค.
์์คํ
ํธ๋ ์ด๋ ์ฃผ์ด์ง ํ๋ฉด์์ ํน๋ณํ ๊ด๋ฆฌ์ ์ ํ์ ์์ ํ๋ X ํด๋ผ์ด์ธํธ์
๋๋ค.
์์คํ
ํธ๋ ์ด์ ์์ด์ฝ์ ์ ๊ณตํ๋ ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋จผ์ ์์คํ
ํธ๋ ์ด๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค.
๊ด๋ฆฌ์ ์ ํ์ ์์ ์ ์ฐฝ์ ์์ฒญํ์ฌ.
๊ด๋ฆฌ์ ์ ํ์ ์์ ์๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์์คํ
ํธ๋ ์ด๊ฐ ๋ํ๋ ๋ ์๋ฆผ์ ๋ฐ๊ธฐ ์ํด ICCCM(MANAGER ํด๋ผ์ด์ธํธ ๋ฉ์์ง ๊ฐ์)์ ์ค๋ช
๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ํ ์์ ์ ์ฐฝ์ ์์คํ ํธ๋ ์ด์์ ์ ๊ณตํ๋ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ์ฐฝ๊ณผ ๋์ผํ์ง ์์ต๋๋ค(์ฆ, ๊ด๋ฆฌ์ ์ ํ์ ์์คํ ํธ๋ ์ด ์์ด์ฝ์ ํฌํจํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฐฝ๊ณผ ๋ค๋ฅผ ์ ์์). ๊ด๋ฆฌ์ ์ ํ์ด ์์ค๋๋ฉด ํ๊ธฐ๋์ด์ผ ํฉ๋๋ค.
์์คํ ํธ๋ ์ด๋ _NET_SYSTEM_TRAY_Sn์ด๋ผ๋ ๊ด๋ฆฌ์ ์ ํ์ ํ๋ํด์ผ ํ๋ฉฐ n์ ํธ๋ ์ด๊ฐ ์ฌ์ฉํ๋ ค๋ ํ๋ฉด ๋ฒํธ๋ก ๋์ฒดํด์ผ ํฉ๋๋ค.
XGrabServer(DisplayHandle);
SystrayMgrWindow = XGetSelectionOwner(DisplayHandle, _NET_SYSTEM_TRAY_S);
XUngrabServer(DisplayHandle);
XFlush(DisplayHandle);
Xlib.XGrabServer (display);
IntPtr SystrayMgrWindow = Xlib.XGetSelectionOwner (display, Atoms._NET_SYSTEM_TRAY_S);
Xlib.XUngrabServer (display);
๋ฉ์์ง ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
http://standards.freedesktop.org/systemtray-spec/latest/ar01s04.html
Xlib๋ฅผ ์ฌ์ฉํ์ง ์๊ณ X ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์์ต๋๊น? XCB ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ์ ๊น๋ ค ์์ต๋๋ค.
์ฆ, C# ์ฝ๋์์ "์์ด์ด"๋ก ์ง์ ?
https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms/XplatUIX11.cs#L6259
SendNetClientMessage(SystrayMgrWindow, _NET_SYSTEM_TRAY_OPCODE, IntPtr.Zero, (IntPtr)SystrayRequest.SYSTEM_TRAY_REQUEST_DOCK, hwnd.whole_window);
https://github.com/mono/mono/blob/b7a308f660de8174b64697a422abfc7315d07b8c/mcs/class/System.Windows.Forms/System.Windows.Forms.X11Internal/X11Display.cs#L413-L417
SendNetClientMessage (SystrayMgrWindow,
Atoms._NET_SYSTEM_TRAY_OPCODE,
IntPtr.Zero,
(IntPtr)SystrayRequest.SYSTEM_TRAY_REQUEST_DOCK,
hwnd.WholeWindow);
https://en.wikipedia.org/wiki/D-๋ฒ์ค
D-BUS๋ IPC(ํ๋ก์ธ์ค ๊ฐ ํต์ ) ์์คํ
์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ก ํต์ ํ๊ณ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ฉฐ ์๋น์ค๋ฅผ ์์ฒญํ ์ ์๋๋ก ํ๋ ๊ฐ๋จํ๋ฉด์๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
"D-BUS๋ ๋ ๋ฐ์คํฌํ(GNOME ๋ฐ KDE) ๋ชจ๋์์ ์ฌ์ฉ๋๋ ํตํฉ๋๊ณ ๋ถ๊ฐ์ง๋ก ์ ์ธ IPC ๋ฉ์ปค๋์ฆ์ด ๋ ์ ์์ต๋๋ค."
_ํ์ง๋ง, ํ์ง๋ง - ICCCM์ ๋ํ ํ๋ก์ธ์ค ๊ฐ, ํตํฉ๋๊ณ ๋ถ๊ฐ์ง๋ก ์ ์
๋๋ค..._
์ปค๋ ์ด๋ฒคํธ ๊ณ์ธต - DBus๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ ์ฒด ์์คํ
์์ ๊ณต์ ํ๋ ๋จ์ผ ๋ฒ์ค๋ ์ปค๋์์ ์์คํ
์ ์ต์์ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ด๋ฒคํธ ์ ํ๋ฅผ ํ์ฉํฉ๋๋ค.
๋์คํฌ๊ฐ ๊ฐ๋ ์ฐผ๊ฑฐ๋ ํ๋ฆฐํฐ ๋๊ธฐ์ด์ด ๋น์ด ์๊ฑฐ๋ ๋ฐฐํฐ๋ฆฌ ์ ์ ๋ถ์กฑ๊ณผ ๊ฐ์ ์ด๋ฒคํธ๋ ์์คํ
์คํ์ ๋ฒ๋ธ๋งํ ์ ์์ผ๋ฉฐ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์์คํ
์ด ์๋ตํ๊ณ ๋์ํ ์ ์์ต๋๋ค.
D-๋ฒ์ค ์ฌ์
http://dbus.freedesktop.org/doc/dbus-specification.html
C#์ฉ DBus ๋ผ์ด๋ธ๋ฌ๋ฆฌ(๋ํผ ์๋, ์์ C#)
https://github.com/mono/dbus-sharp
ํจ๋ ์ ํ๋ฆฟ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐธ์กฐ ์ค๋ช
์
https://developer.gnome.org/panel-applet/stable/
GnomeGoal์ ๋ชจ๋ Gnome ์ ํ๋ฆฟ์ ์๋ก์ด DBUS API(Bonobo์์ ์ ๊ณต)๋ก ์ด์ํ๋ ๊ฒ์
๋๋ค.
https://wiki.gnome.org/Initiatives/GnomeGoals/AppletsDbusMigration
Ubuntu ํจ๋ ์ ํ๋ฆฟ๊ณผ ๊ฐ์ ๊ฒ์ด ์์ต๋๊น?
Gnome ๋ Unity ํจ๋(์ ํ๋ฆฟ) ํธํ์ฑ
http://ubuntu.itssprite.com/ubuntugnome-vs-unity-panel-applet-compatibility/
์ํ ์๋ฆฌ๋ฏธ ์ฌ์(SNI, org.freedesktop.StatusNotifierItem)
http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/
"Freedesktop ์์คํ
ํธ๋ ์ด ์ฌ์์ ๋์ฒดํ๊ธฐ ์ํ ๊ฒ์
๋๋ค...
์ต์ํ KDE Plasma ๋ฐ Unity์์ ํ๋ก๋์
์ ์ฌ์ฉ๋ฉ๋๋ค."
libappindicator ์ฐธ์กฐ ์ค๋ช
์
http://developer.ubuntu.com/api/devel/ubuntu-12.04/c/appindicator/
Gnome ํจ๋์ Ayatana ํ์๊ธฐ:
https://launchpad.net/indicator-applet
MATE์ฉ ํจ๋ ์ ํ๋ฆฟ์ด ์์ต๋๋ค.
https://github.com/mate-desktop/mate-indicator-applet
๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๋ณด๋ฅผ ํจ๋์ ์ผ๊ด๋๊ฒ ํ์ํฉ๋๋ค.
Unity ๋ฐ Mono C#์ด ์๋ Ubuntu์ ์๋ฆผ ์์ด์ฝ ์:
http://www.arvydas.co.uk/2012/08/notification-icon-in-ubuntu-with-unity-and-mono-c-sharp-example/
๊ฐ ํ์๊ธฐ๋ DBus์์ ์ฐพ์ ์์น์ ํจ๋์ ํ์๋๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ /usr/share/unity/indicators์ ์์ ํ์ผ์ ์ค์นํฉ๋๋ค. ํ์๊ธฐ ํ๋ก์ธ์ค๋ ์ธ์ ์ด๊ธฐํ ๋ฐ๋ชฌ์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
๋ฐ์คํฌํ ์๋ฆผ ์ฌ์
http://www.galago-project.org/specs/notification/0.9/index.html
" ์๋ฆผ์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ ์ ์์ง๋ง ์ฃผ์ํด์ผ ํฉ๋๋ค. ์ด๋ฏธ์ง๋ 200x100์ ์ด๊ณผํด์๋ ์ ๋์ง๋ง ์ต๋ ํฌ๊ธฐ๋ก ์๊ฐํด์ผ ํฉ๋๋ค."
https://wiki.ubuntu.com/MessagingMenu/
๋ฉ๋ด ํจ๋์ ํฌ๋ช
ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ:
http://www.linuxandlife.com/2012/05/ubuntu-panel-transparent.html
"์งํ๋ ํจ๋์ ๋ ์ด๋ธ์ด๋ ์์ด์ฝ๋ง ํฌํจํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ ๋๋ง ๋๋ ๊ธฐํ ์์ ฏ ์์"
์์ฉ ํ๋ก๊ทธ๋จ ํ์๊ธฐ๋ 22ํฝ์
์ ๊ณ ์ ์์ด์ฝ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
https://bugs.launchpad.net/ubuntu/+source/indicator-application/+bug/533439
"Libindicator API๋ ์์ด์ฝ ํฌ๊ธฐ ๋ฐ
๋ฐ๋ผ์ ๋ชจ๋ ์์ด์ฝ ํฌ๊ธฐ๋ 22px์
๋๋ค."
์คํ ์ค์ธ ํ์๊ธฐ ์ ํ๋ฆฟ์ ์ํ ์์ด์ฝ ๋ณ๊ฒฝ ๋ฐ ์
๋ฐ์ดํธ
http://www.helptouser.com/ubuntu/11162-is-it-possible-to-alter-and-update-the-status-icon-of-a-running-indicator-applet.html
xembed ํญ๋ชฉ์ 22ร22 ํฝ์ ๋ก ํ๋ ์ฝ๋ฉ๋ฉ๋๋ค.
์ํ ์๋ฆฌ๋ฏธ ์ฌ์, KStatusNotifierItem ํด๋์ค
https://github.com/lxde/lxqt/issues/359
2014๋
3์ 2014-03-04, Plasma Next์ ์์คํ
ํธ๋ ์ด
http://blog.martin-graesslin.com/blog/2014/03/system-tray-in-plasma-next/
"์ฐ๋ฆฌ๋ Plasma Next๋ฅผ ์ํ ๋ ๊ฑฐ์(xembed) ์์คํ
์ ๊ตฌํํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํ๊ณ ์ถ์ง ์์ต๋๋ค."
"๋๋ถ๋ถ์ GTK+ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ํตํฉ ํตํฉ์ ์ํด appindicator ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค."
"ํ์ง๋ง ๊ธฐ๋ฅ์ด ์ ๋๋ก ์๋ํ๋ ค๋ฉด Qt 5.4๊น์ง ๊ฑธ๋ฆด ๊ฒ์
๋๋ค."
"์์ง๋ ๋ ๊ฑฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์๊ณ ์ค๋จ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค."
https://wiki.gnome.org/Design/OS/MessageTray
"๋ฉ์์ง ํธ๋ ์ด ๋์์ธ ํ์ด์ง๋ ๊ตฌ์์ด๋ฉฐ ์ฐธ์กฐ์ฉ์ผ๋ก๋ง ๋ณด๊ด ์ค์
๋๋ค. ์ต์ ๋์์ธ์ ์๋ฆผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์."
https://wiki.gnome.org/Design/OS/Notifications
Ubuntu์ ๋ฆฌํฌ์งํ ๋ฆฌ์๋ Gnome 3์ฉ ํ์ฌ "Indicator Applet"๋ ์์ต๋๋ค.
https://code.launchpad.net/~jconti/indicator-applet/gnome3
http://live.gnome.org/GnomeShell/Extensions
๊ทธ๋ ์์ (์ค๊ณ์) ๋งค์ฐ ์ ํ๋ ์ฌ์ฉ์ ์ ์๋ฅผ ํ์ฉํ๋ฉฐ ์์คํ ํธ๋ ์ด๋ ์ด๋ฌํ ์์ญ ์ค ํ๋๊ฐ ์๋๋๋ค. ์ค์ ๋ก ์กด์ฌํ๋ค๋ ์ฌ์ค์ ํน์ ๋ ๊ฑฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ง์ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
"์์คํ ํธ๋ ์ด ์์ด์ฝ์ ๊ฐ๋ฐ์๋ค์ด ์์ ๊ณ ์ถ์ดํ๋ ์ฐ๋งํจ์ ์ผ๋ฐ์ ์ธ ์์ธ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค."
"๋ฌธ์ ๋ฅผ ์ ๋๋ก ์ฒ๋ฆฌํ๋ ค๋ฉด ์ API๋ฅผ ์ค์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅผ ์ด์ํ ์๊ฐ์ ์ฃผ์ด์ผ ํฉ๋๋ค. ํ์ฌ ์ด์ ๋ํ ๊ณํ์ ์ธ์ฐ๊ณ ์์ต๋๋ค."
http://worldofgnome.org/shell-new-notifications-goodbye-message-tray/
2014-01-05, "GNOME ๊ฐ๋ฐ์๋ ์์ ํ ์๋ก์ด ์๋ฆผ ์์คํ
์ ๋ํ ๋ช ๊ฐ์ง ์ค์ํ ๋ณ๊ฒฝ์ ๊ณํํ๊ณ ์์ต๋๋ค."
https://blogs.gnome.org/aday/2014/06/18/a-notifications-update/
Fedora 22(GNOME 3.16)๋ ํ๋ฉด์ ์ผ์ชฝ ํ๋จ ๋ชจ์๋ฆฌ์ ํ์ฅ ๊ฐ๋ฅํ ๋ ๊ฑฐ์ ์์ด์ฝ ๋ง๋๋ฅผ ๋์
ํ์ต๋๋ค.
๋ ๊ฑฐ์ "ํธ๋ ์ด" ์์ด์ฝ์ ํ๋ฉด ์ผ์ชฝ ํ๋จ์ ์๋ ์จ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ "์๋"์ ํ์๋ฉ๋๋ค.
๊ทธ๋ 3.16 ๋ฆด๋ฆฌ์ค ๋
ธํธ
https://github.com/gnome-design-team/gnome-mockups/tree/master/notifications
ํ์๊ธฐ๋ฅผ ๋ณด์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ฒ๋ฅผ ์์ฑํ๋ ์ธ๋ จ๋ ์๋จ ํจ๋
ayatana ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ณธ OS:
https://github.com/dyson/indicator-workspaces/issues/3
์ด ์๋ก์ด ํ์๊ธฐ์๋ ํจ์ฌ ๋ ๋ง์ ์์ ๋๊ฐ ์์ผ๋ฏ๋ก(๋ฉ๋ด ๋์์ธ์ ๊ตญํ๋์ง ์๊ณ ์ด์ ์์ ฏ์ ํฌํจํ ์ ์์) ์ฃผ์ํด์ผ ํ ์ฌํญ์ผ ์ ์์ต๋๋ค. ;) Ayatana ํ์๊ธฐ๋ ์ฌ์ ํ ๊ธฐ์ ์ ์ผ๋ก ์ง์๋ฉ๋๋ค.
ํจ๋ ์์
์ ํ ์๋ Workrave ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค.
๊ฐ ํจ๋ ์ ํ์ ๋ํ ํด๋์ค๊ฐ ์์ต๋๋ค.
https://github.com/rcaelers/workrave/tree/7cb9aef971f21c9a473146f9b72693b86a4a76f6/frontend/applet ์ด ์์ต๋๋ค.
"๊ณํผ", "๊ณตํต", "gnome-shell", "gnome2", "gnome3", "indicator", "mate", "win32", "xfce"
๋๊ตฐ๊ฐ ๋ด ๊ฐ๋จํ ์ง๋ฌธ์ ๋๋ตํ ์ ์์ต๋๊น?
1) ์ด์ Eto๋ก ํธ๋ ์ด ์์ด์ฝ์ ๋ง๋ค ์ ์์ต๋๊น?
2) ์ด๋ค OS๊ฐ ์ง์๋๋์?
3) ์ด๋์ ์ฝ์ ์ ์์ต๋๊น? ์๋ง๋ ํด๋์ค ์ด๋ฆ?
๋์ ์์, ์ฌ์ ํ ์ง์ ์์, ์ข์ ์์, ์ด๋ฒ โโ์ฃผ๋ง์ Linux ๋ฐ Windows์ฉ์ผ๋ก ๊ตฌํํ๋ ค๊ณ ํ์ต๋๋ค. :)
์ ๋ง ๋ฉ์ง! :) ์ด์ ๋ณํฉ๋ง ํ์ํ๊ฐ์?
๊ทธ๋ฆฌ๊ณ ๋งฅ OS?
Android์์ ํธ๋ ์ด ์๋ฎฌ๋ ์ด์ ์ด ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. :)
์ ๋ง ๋ฉ์ง! :) ์ด์ ๋ณํฉ๋ง ํ์ํ๊ฐ์?
์์ง ์์ ์ ์์ํ์ง ์์์ต๋๋ค... ํ์ง๋ง ๋ฌด์์ ํด์ผ ํ๋์ง ์๊ณ ์ฌ์ ์ #714๋ฅผ ์ํํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋งฅ OS?
๋ค๋ฅธ ์ฌ๋์ด MacOS์ฉ์ผ๋ก ๊ตฌํํด์ผ ํฉ๋๋ค. ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ์ผํ MacOS๋ VirtualBox์ ์์ต๋๋ค.
Linux Gtk ๋ฒ์ ์ด ๊ฑฐ์ ์์ฑ๋์์ต๋๋ค :D
์ ํ์ด! :)
์ ํ๋ ์ฝํ ์ธ ๊ฐ ํ์ฉ๋๋ ์ผ๋ฐ ์ฐฝ ๋๋ ํ์ ์ ๋๊น?
์ ํ์ด! :)
์ ํ๋ ์ฝํ ์ธ ๊ฐ ํ์ฉ๋๋ ์ผ๋ฐ ์ฐฝ ๋๋ ํ์ ์ ๋๊น?
์ด๊ฒ์ด ๋ฐ๋ก GNOME์์ libappindicator ํ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํฉ์ ๋ง๋ ๋ฉ๋ด๊ฐ ํ์๋๋ ๋ฐฉ์์ ๋๋ค.
๋ด ์์คํ ์ ์ด์ํ ํ์ฅ์ด ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก GNOME์์ libappindicator ํ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ์ํฉ์ ๋ง๋ ๋ฉ๋ด๊ฐ ํ์๋๋ ๋ฐฉ์์ ๋๋ค.
์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค... Hello World ๋์ ์ด๋ฏธ์ง์ ๊ฐ์ ์ฝํ ์ธ ๋ฅผ ํ์ํ ์ ์๋์ง ์ธ๊ธํ์ต๋๋ค. ์๋ฅผ ๋ค์ด Windows์์๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค(์์ด์ฝ์ด ์๋ ๋ฉ๋ด ํญ๋ชฉ๋ง).. ์์ฒด ์ฐฝ์ ๊ตฌํํ๊ณ ํธ๋ ์ด ์์ด์ฝ์ด๋ ๋ง์ฐ์ค ํด๋ฆญ ๊ทผ์ฒ์ ํ์ํด์ผ ํฉ๋๋ค. ๋ํ ํธ๋ ์ด ์์ด์ฝ(๋๋ถ๋ถ ์ฌ์ฉ๋จ)์ด WPF๊ฐ ์๋ Windows.Forms์ ์ผ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์ขํ๋ฅผ ๋ณํํด์ผ ํฉ๋๋ค.
๋ค์ ... ๊ทธ๊ฒ์ ๋ด ์์คํ ์์ ์ปจํ ์คํธ ๋ฉ๋ด๊ฐ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ... ๋ ๋ฒ์งธ ์คํฌ๋ฆฐ ์ท์๋ณด์ญ์์ค. ํ ๋ง์ ์ผ๋ถ๊ฐ ๋นํ์ฑํ ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ๋๊ฐ์ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
@hardhub afaik, winforms(๋ฐ macOS)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ด ํญ๋ชฉ์ ์ฌ์ฉ์ ์ง์ ์ปจํธ๋กค์ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด GTK#์์ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@cwensley ๋๋ ์ด๊ฒ์ ๋ํด ํ ๊ฐ์ง ๋ถ์ ์ ์ธ ์ ์๋ณด๊ณ ํด์ผํฉ๋๋ค. appindicator๋ ๋ฉ๋ชจ๋ฆฌ์์ ์์ด์ฝ์๋ก๋ํ๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค ... ๊ทธ๋์ TrayIcon ์ฉ Eto์ API๊ฐ ์ค์ ํ์ผ ๊ฒฝ๋ก์์๋ก๋ํ๋๋กํด์ผํ์ต๋๋ค ...
@cra0zy ๊ธ์, ๊ทธ๊ฒ์ ๊ฝค ์ง์ฆ๋ฉ๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ์์ ํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ์ ์ธ ์ ์์ต๋๋ค.
@cwensley ,
๋ด ๋ง์:
https://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.windows.forms.menuitem (v=vs.110).aspx
๊ฑฐ๊ธฐ์ ํ ์คํธ์ ์์ด์ฝ ๋ง ๋ฃ์ ์ ์์ต๋๋ค ...
@cra0zy ๊ธ์, ๊ทธ๊ฒ์ ๊ฝค ์ง์ฆ๋ฉ๋๋ค. ์๋ง๋ ์ฐ๋ฆฌ๋ ์์ ํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ์ ์ธ ์ ์์ต๋๋ค.
๊ทธ๊ฒ ๋ด๊ฐ ์ด๋ฏธ ํ ์ผ์ ๋๋ค.
@hardhub ์ ๋ง๋ค, ToolStripMenuItem
๊ฐ ์๋๋ผ $ MenuItem
#$ .. uh. ์ด๋ ์ชฝ์ด๋ ์ฌ์ฉ์ ์ ์ ์ฐฝ ๊ธฐ๋ฅ์ Windows ํ๋ซํผ์ ๊ตฌ์ถํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ๊ตฌํํ ํ์๊ฐ ์์ต๋๋ค.
Windows 7์ ๋ณผ๋ฅจ ๋ฏน์์ ๊ฐ์ ์ผ์ชฝ ํด๋ฆญ ์ฐฝ์ ๋ง์ํ์๋ ๊ฑด๊ฐ์? ์ข ํท๊ฐ๋ฆฌ๋ค์...
์ด์จ๋ ๋ค์์ API์ ๊ตฌ์กฐ์
๋๋ค.
```c#
๊ณต๊ฐ bool Visible { get; ์ธํธ; }
๊ณต๊ฐ ๋ฌธ์์ด ์ ๋ชฉ { get; ์ธํธ; }
๊ณต๊ฐ ์ด๋ฒคํธ ํ์ฑํ { get; ์ธํธ; }
๊ณต๊ฐ ๋ฌดํจ SetMenu(ContextMenu ๋ฉ๋ด);
๊ณต๊ฐ ๋ฌดํจ SetIcon(์์ด์ฝ ์์ด์ฝ);
๊ณต๊ฐ ๋ฌดํจ Show();
๊ณต๊ฐ ๋ฌดํจ ์จ๊ธฐ๊ธฐ();
```
@cra0zy , ์ผ์ชฝ ํด๋ฆญ์ด ์ฌ์ฉ์ ์ ์ ์ฐฝ์ ์ฌ๋ ๊ฒ ๊ฐ์์. ๋๋ ์ค๋ฅธ์ชฝ ํด๋ฆญ์ ๋ํด ์ผ์ต๋๋ค. ์ต์ํ "Quit" ํญ๋ชฉ์ด ์๋ ์๋ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ ๋ฉ๋ด์ฒ๋ผ ๋ณด์ ๋๋ค.
@cwensley
ContextMenuStrip ์์ฑ์ ์ฌ์ฉํด ๋ณผ ์๋ ์์ง๋ง... ์ฌ์ฉ์ ์ ์๋ฅผ ์ถ๊ฐํ ์๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค...
https://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenustrip(v=vs.110).aspx
๋ฉ๋ด ํญ๋ชฉ์ ์ผ์ชฝ์ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ ์ ์๋ค๊ณ ์ธ๊ธํ ๊ฒ ๊ฐ์๋ฐ... ์, ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์คํ ํธ๋ ์ด์์ ์ฌ์ฉํ ์ ์๋ ํ์ ์ ์ฌ์ฉ์ ์ ์ ๋ ์ด์์์ ๋ํด ๋งํ์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ํญ๋ชฉ ์ผ์ชฝ์ ์์ ์์ด์ฝ์ด ์๋ ์ฌ์ฉ์ ์ ์ ์ฝํ ์ธ ๋ก ์ธ๊ธํ์ต๋๋ค.
WinForms ๊ตฌํ ์๋ฃ:
Gtk Mac/Windows ๊ตฌํ ์๋ฃ:
Wpf ๊ตฌํ ์๋ฃ:
ํ๋ณด: #731
@cwensley ๋ซ์ ์ ์์ต๋๋ค.
@cra0zy ๋ ์ฌ์ ํ Mac ํฌํธ๋ฅผ ์ํํด์ผ ํ์ง๋ง #750์ผ๋ก ๋ฎ์ฌ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Wpf ๊ตฌํ ์๋ฃ: