Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

show application if not focused or closed when clicking on tray icon #549

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app/app.tray.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function setupTray(browserWindow) {
role: 'quit',
},
]))
tray.on('click', () => browserWindow.show())
tray.on('click', () => browserWindow.isFocused() ? browserWindow.close() : browserWindow.show())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isFocused() cannot be used here for this purpose. At the moment the tray icon is clicked, the window is not focused already because the click moves the focus. At least on Windows.

To have similar behavior, we need to either close the window if it was visible (no matter if it was focused), or, instead of isFocused(), handle focus change event with some short timeout, considering the window focused if it was focused less than, let say, 1 second ago.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now I see it doesn't work either on Kde Plasma 6. I changed today and I'm using Wayland now. My idea was:

  • If window is closed show it.
  • If window is focused close it.
  • If window is open but not focused focus it

This effect was nice on X11, but it doesn't work on Wayland, at least on Kde.

A use case could be you are working and receive a message, you don't know if the windows is closed or behind the others, but being the notification nearby the tray icon, click the icon and the "talk" window appears.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A use case could be you are working and receive a message, you don't know if the windows is closed or behind the others, but being the notification nearby the tray icon, click the icon and the "talk" window appears.

It is supposed to work. Currently, clicking on the tray icon always shows the window.

As I understand your proposal, you wanted tray icon not only to show the window, but also close if it is shown and was focused already (same as Telegram, for example).

But to archive this keeping feature of focusing on a shown non-focused window, there must be a custom isFocused() with a timeout.


browserWindow.on('close', event => {
if (!isAppQuitting) {
Expand Down