Back in mid-2021 I submitted a feature request <https://bugs.openjdk.org/browse/JDK-8266423> to add new APIs for toast notifications on macOS and Windows *without* using SystemTray. It's something I'd like to implement. Apple introduced its notification APIs <https://developer.apple.com/documentation/foundation/nsusernotification?language=objc> in macOS 10.8. Never worked with the WinRT before, though.
SWinxy On Mon, Jan 8, 2024 at 4:06 PM Davide Perini <[email protected]> wrote: > Thanks for the explanation Aleksei > but can you explain me what is the OpenJDK direction please? > > Suppose that you have a feature like this one, a simple notifications. > Java worked well with Windows notifications until Win10, > then Microsoft changed the APIs for notifications in Win11. > > Isn't OpenJDK supposed to adapt to the new Windows APIs? > > Does OpenJDK supports Windows 11 or not? > > It's a little "weird" to close an issue by saying that Java uses the same > way to do the same thing since Windows 95 > and that it's a Microsoft problem if they changed the way to send > notifications to the OS. > > Java should support Microsoft Windows, it isn't Microsoft Windows that > should support Java, > isn't it? > > Other languages adapted their APIs for the new notifications system, like > everyone should expect from a modern language, > after 2 years from the release of Win 11, > Oracle says that it worked since Windows 95, so it is ok to have a broken > API in JDK because it worked before, they are the ones who broke it > (Microsoft). > > Does Java offers a correct way to send Notifications in Win10? Answer: Yes > Does Java offers a correct way to send Notifications in Win11? Answer: No > Does other languages offers a correct way to send Notifications in Win11? > Answer: Yes > Does current JDK APIs works as expected in Win11? > Answer: No because JDK uses an old API born with Win95 (30 years ago + or > -) with a new OS born in 2021, this results in an unexcpected behaviour > that doesn't work as supposed initially by the API. > > In the bug report you wrote: > "I can't see what Java can do to change the behaviour." > > The answer is: > "By implementing the correct API for the correct OS". > > > Java is currently not able to correctly send a Notification in Windows 11. > > > I see a bug there, if you don't see it, > I'm pretty worried of the new JDK direction. > > Thanks > Davide > > > Il 08/01/2024 20:55, Aleksei Ivanov ha scritto: > > On 2024-01-08 19:30, Davide Perini wrote: > > Thanks for the Answer Aleksei, > I have a lot of Windows apps that uses notifications without problems. > > even a simple python program like this works correctly. > > from win11toast import toast > > toast('Hello', 'Click to run python script') > > > Python could use newer WinRT APIs [6], in particular ToastNotification > class [7] which provide richer interface for the toast notifications. The > package name ‘toast’ hints it uses the newer APIs. > > is it possible that Microsoft changed the way how to create Notifications > in Windows 11 and Java still uses the way it worked in Windows 7? > > > Perhaps, Microsoft changed how they handle notifications in Windows 11. In > Windows 10, the notifications created with a Java app remain in Action / > Notification centre. > > Java uses Shell_NotifyIcon [8] function that has been available since > Windows 95. > > -- > Regards, > Alexey > > [6] https://learn.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/ > [7] > https://learn.microsoft.com/en-us/uwp/api/windows.ui.notifications.toastnotification?view=winrt-22621 > [8] > https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyiconw > > > Thanks > Davide > > > > Il 08/01/2024 17:59, Aleksei Ivanov ha scritto: > > Hi Davide, > > The bug that you reported has been moved to JDK project in JBS, you can > view it as JDK-8315647 [1]. You should've received a link to it. > > Is there a way to workaround this JDK bug? > I opened a bug report months ago but no one answered. > > > What kind of answer did you expect to receive? > > You already asked this question on this mailing list in August [2]. I > replied to your question [3]. Nothing has changed since August. It is not a > bug in Java because a native Win32 app behaves the same way. > > I compiled and tested the sample [4], it behaves in Windows 11 as Java > does: the displayed balloon notification does not go to notification > centre. However, if I open notification centre while the balloon is > displayed, it remains there. If I disable "Show notification banners" and > leave "Show notifications in notification centre" enabled, the balloon goes > directly to notification centre without displaying a banner. > > You can compile and test the sample too: > > git clone --filter=blob:none --sparse > https://github.com/microsoft/Windows-classic-samples.git > <https://urldefense.com/v3/__https://github.com/microsoft/Windows-classic-samples.git__;!!ACWV5N9M2RV99hQ!NLmQsIei56bZm5IGVWA45k6g1Dduh_MFpShFK0TzjLM7OJHlH90je29IlZRa410GYcehUmNb21kyLplVv8fTzwWsci7s6yw2$> > windows-samples > cd windows-samples > git sparse-checkout add > Samples/Win7Samples/winui/shell/appshellintegration/NotificationIcon > > Navigate to the NotificationIcon folder and open NotificationIcon.sln in > Visual Studio to compile and run it. > > If required, I can attach the compiled version of the application. > > > I have closed JDK-8315647 as duplicate of JDK-8310352 [5]. > > > > >
