Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Some icons disappear when shell is restarted or the session is locked and unlocked #75
Comments
tribut
commented
May 20, 2017
|
Seeing the same behavior with nextcloud (Ubuntu 17.04, extension from extensions.gnome.org, nextcloud 2.3.1). |
thermatk
commented
May 23, 2017
|
Same with Telegram Desktop (Qt) |
|
I don't think this will be easy to fix without some changes in GNOME Shell itself, see https://bugzilla.gnome.org/show_bug.cgi?id=781760 |
jhasse
added
the
bug
label
May 29, 2017
|
To clarify this extension works via the org.kde.StatusNotifierWatcher DBus interface. When the session is locked and then unlocked or GNOME Shell is restarted all extensions are reloaded. So the extension is forced to un-own and then re-own that interface. The apps in question should be listening for that signal but are not apparently? |
|
Yes, this is how I understand it. |
kwill
commented
Sep 7, 2017
|
If this can / should be solved in the app, can you provide an info page that we can point app developers to? (And contribute to if it's helpful to add links, say, to libraries and methods in various programming languages / frameworks.) |
|
If I'm not mistaken this problems only occurs with Qt applications (not with libappindicator). I've created a Qt bug, hopefully it can be fixed upstream: https://bugreports.qt.io/browse/QTBUG-63065 |
lestcape
commented
Sep 22, 2017
|
I really don't see other way to lead with qt app, that reported it. I think instead of disable the whole extension on a lock screen, is possible check for the session state and base on that just disconnect and connect the signals (hide and show the icons) or really destroy all if the session is not locked. We probably need an AppIndicatorManager to centralized most of this commons actions to be apply to all indicators. Is something similar to this: |
|
Extensions are not given a choice. By GNOME design they are forced disabled. |
lestcape
commented
Sep 22, 2017
|
Maybe i'm wrong because the extension are a submodule and maybe with some magic it can unloaded complete, but are you not (the developer) who decide what the disable function do? |
|
Yes, but I don't think there's an easy way to distinguish between a disable request because of a screen lock and a normal disable request. |
lestcape
commented
Sep 22, 2017
|
When the session is locked, the only way that is possible to me that a user can disable the extension, is if he start another terminal session and use gsettings to disable the extension. I considered this a strange behaviour so not be take in consideration, so with base in this: The session is synchronized here: So you can play with Main.sessionMode.isLocked && Main.sessionMode.isGreeter, to detected the lock screen, but also only the extension is removed by the session when the session mode don't allow extensions (https://github.com/GNOME/gnome-shell/blob/033277b68f2910e54ce62f45fa92af2f5092a7ba/js/ui/extensionSystem.js#L361), then, probably it just will work:
|
|
You really can't get the screen lock signal. Extensions are unloaded before it propagates down the stack. Best you can do is connect to the fade out signal like I do in my other extension. |
lestcape
commented
Sep 22, 2017
•
|
This is where the extension will be disable: The function is called because the session mode change first: So, in my opinion you can save used Note: see i don't capture |
lestcape
commented
Sep 22, 2017
•
|
Demonstration with Reductio ad absurdum (https://en.wikipedia.org/wiki/Reductio_ad_absurdum):
If the shell code is right, this mean !Main.sessionMode.allowExtensions can not be wrong, because is the only condition that is used in the function If the shell code is wrong this mean the shell disable the extension when is not correct, but we know that this not occurs and this enter in contradiction with the assumption that the shell code is right. That's finally prove our theory. |
|
I don't know if the extension would get through review if it tries to trick the Shell like this. Having support for this upstream would be a cleaner solution, have a look at my patch here: https://bugzilla.gnome.org/show_bug.cgi?id=781760 |
lestcape
commented
Sep 22, 2017
|
@jhasse sorry for my little confidence of the influence of a third-patry extension can do in the gnome upstream. I try to find a solution locally just for my little confidence. In my opinion what you do are correctly and this could save the day, really more easy if will have merged in the upstream, but just if will be merged. Regards. |
This was referenced Sep 23, 2017
3v1n0
self-assigned this
Oct 10, 2017
3v1n0
referenced this issue
Oct 10, 2017
Merged
statusNotifierWatcher: seek for SNIs in the bus to ensure we have them all #97
eugene-rom
commented
Oct 27, 2017
|
This trick works for me with TopIcons Plus to avoid disabling on screen lock - phocean/TopIcons-plus#100 - check "+" marked lines. |
lestcape
referenced this issue
in phocean/TopIcons-plus
Oct 27, 2017
Open
[enhancement, patch] prevent disabling extension on screen lock #100
thermatk
commented
Oct 27, 2017
•
|
#97 fixed the issue with Telegram and Nextcloud disappearing after suspend on Shell 3.26.1 |
georgelemental commentedMay 2, 2017
Whenever I restart gnome-shell or lock and unlock the session, the KeePassXC and MEGASync indicators disappear. The Dropbox and Safe Eyes indicators do not do this.
I am using Ubuntu 17.04, gnome-shell 3.24, and the latest version of the extension from git.