Opened 7 years ago
Closed 7 years ago
#3356 closed Defekt (im Image)
Sperrbildschirm-Problem
| Reported by: | bau | Owned by: | Rüdiger Kupper |
|---|---|---|---|
| Priority: | schnell erledigen | Milestone: | Schuljahr 2019/20 |
| Component: | Software: Ubuntu | Severity: | beeinträchtigt den Unterricht einiger Lehrer |
| Keywords: | Cc: |
Description (last modified by )
Das Schloss-Icon im Gnome3-Desktop verursacht Probleme.
Querverweis: #3358
Change History (19)
comment:1 by , 7 years ago
follow-up: 3 comment:2 by , 7 years ago
Wie kann man das Panel in gnome3, vor allem die Befehle, die sich hinter den Icons verstecken bearbeiten?
Da taucht auch wieder das Menü zum Netzwerk auf, was leider immer mal wieder dazu führt, dass die Netzwerkverbindung ausgeschalten wird - blöd eben.
comment:3 by , 7 years ago
Replying to bau:
Wie kann man das Panel in gnome3, vor allem die Befehle, die sich hinter den Icons verstecken bearbeiten?
Ich fürchte, dazu muss man sich mit GNOME-Shell-Plugins auseinandersetzen.
comment:4 by , 7 years ago
Das wird hier beschrieben:
https://wiki.gnome.org/Projects/GnomeShell/Extensions/StepByStepTutorial#myFirstExtension
comment:5 by , 7 years ago
@kup: Kannst du mal nachsehen, wo deine Abmelde-Erweiterung abgelegt wurde?
Mögliche Orte sind:
- ~/.local/share/gnome-shell/extensions/
- /usr/share/gnome-shell/extensions
Dann haben wir mal einen Prototyp von so einem Plugin.
Wenn wir die vorhandenen Buttons finden, können wir dort nachsehen, was die machen.
comment:6 by , 7 years ago
| Description: | modified (diff) |
|---|
comment:7 by , 7 years ago
OK, das Problem ist, dass die Icons und STRG-L ein DBUS-Signal an den gdm3 senden:
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
siehe https://unix.stackexchange.com/questions/86221/how-can-i-lock-my-screen-in-gnome-3-without-gdm
Wenn der gdm3 nicht läuft, läuft das Signal irgendwie ins Leere. In obigem Link wird ein Workaround angeboten, der das DBUS-Signal abfängt und dann den screen-saver aufruft (hier angepasst):
/etc/xdg/autostart/gscreenlock.py (chmod a+rx - ausführbar machen!)
#!/usr/bin/python
import dbus
import dbus.service
import dbus.glib
import gobject
import os
class ScreenDbusObj(dbus.service.Object):
def __init__(self):
session_bus = dbus.SessionBus()
bus_name=dbus.service.BusName("org.gnome.ScreenSaver",bus=session_bus)
dbus.service.Object.__init__(self,bus_name, '/org/gnome/ScreenSaver')
@dbus.service.method("org.gnome.ScreenSaver")
def Lock(self):
os.system( "gnome-screensaver-command -l" )
if __name__ == '__main__':
object=ScreenDbusObj()
gobject.MainLoop().run()
/etc/xdg/autostart/gscreenlock.desktop
[Desktop Entry] Type=Application Encoding=UTF-8 Name=gscreenlock TryExec=/etc/xdg/autostart/gscreenlock.py Exec=/etc/xdg/autostart/gscreenlock.py NoDisplay=true NotShowIn=XFCE;KDE; Comment=Allows screen locking in gnome
Ich hoffe, wir können uns so den Umstieg auf gdm3 ersparen!
comment:8 by , 7 years ago
Ja, GNOME macht inzwischen alles über DBus. Darüber weiß ich auch noch zu wenig.
Das Skript oben muss ich mal ausprobieren. Habe mich inzwischen aber auch mit gdm3 befasst. Die Lehrerliste habe ich auf dem Testrechner im LZ bereits deaktiviert.
Mal sehen, was weniger Aufwand ist: Die Loginbomb umstellen oder Lightdm mit GNOME zu verheiraten.
Jedenfalls geht die Arbeit nicht aus!
comment:9 by , 7 years ago
Idee scheint nicht zu funktionieren - anscheinend verwendet das gnome-Icon (Schloss) nicht den oben genannten DBUS-Aufruf. Wenn ich den DBUS-Aufruf im Terminal eingebe, dann wird ein korrekter Lock-Screen gestartet - komisch!
comment:10 by , 7 years ago
Bei meiner Recherche habe ich herausgefunden, wie man bei den Usern per Script den Abmeldebutton oben reinbekommt:
- Ordner ~/.local/share/gnome-shell/extensions/LogOutButton@kyle.aims.ac.za/ auf jedem Client nach /usr/share/gnome-shell/extensions/LogOutButton@kyle.aims.ac.za/ legen
- die aktivierten Erweiterungen kann man mit
gsettings get org.gnome.shell enabled-extensions
abrufen - mit
gsettings set org.gnome.shell enabled-extensions "[ (...), , 'LogOutButton@kyle.aims.ac.za' ]"
wird es dann aktiviert. (Natürlich ist ein kleines Script nötig, welches die aktuellen Settings einliest, in ein Array steckt, die neue Extension hinzufügt und das Array JSON-notiert wieder an gsettings übergibt.
comment:11 by , 7 years ago
Ja, und dann muss man noch das Problem umschiffen, dass gsettings als der betreffende User ausgeführt werden muss, weil es mit dem persönlichen DBUS-Bus des Users kommuniziert. Die Lösung habe ich aber schon woanders aufgeschrieben, ich glaube, der Befehl war dbus-launch oder so.
Okay, das mit dem Logout-Knopf sollte kein so großes Problem sein…
comment:12 by , 7 years ago
Ich habe eine Erweiterung gefunden, die an den Buttons herumoperiert (Suspend-Button: https://extensions.gnome.org/extension/826/suspend-button/) - der blendet im App-Menu den I/O Button aus oder zeigt auch mal zwei Buttons an. Daran kann man eventuell lernen, wie man dem Schloss-Button eine andere Aktion zuweist.
comment:13 by , 7 years ago
Ich habe nun eine Test-Extension zusammengebastelt, die beim Klicken den Befehl
gnome-screensaver-command -l
aufruft, dazu gibt es die Klasse util:
const Util = imports.misc.util; [...] Util.spawn(['/usr/bin/gnome-screensaver-command', '-l']);
Jetzt ist nur noch folgendes Umzusetzen:
- Aktivität des Sperr-Buttons (Schloß) umbiegen
- oder: Schloss-Button ausblenden und eigenen Button erzeugen
Sehr hilfreich wäre es dabei, zu wissen, wie der Button heißt :-)
comment:14 by , 7 years ago
Ich finde, den Sperr-Button sollte es weiterhin geben. Wenn ich kurz den Klassenraum verlasse oder im LZ einen Kaffee ziehe, möchte ich mich ja nicht abmelden.
comment:16 by , 7 years ago
Das Entfernen des Herunterfahren-Buttons ist kein Problem:
const systemMenu = Main.panel.statusArea['aggregateMenu']._system; [... dann in init() ...] systemMenu._actionsItem.actor.remove_child(this.systemMenu._altSwitcher.actor);
comment:17 by , 7 years ago
Super. Das sollten wir dann auch gleich als öffentliche Shell-Erweiterung für alle GNOME-Nutzer anbieten.
comment:18 by , 7 years ago
Realisierung: Entfernen des Shutdown-Buttons:
in einfügen in /usr/share/gnome-shell/extensions/LogOutButton@kyle.aims.ac.za/extension.js function init():
System._actionsItem.actor.remove_child(System._altSwitcher.actor);
comment:19 by , 7 years ago
| Resolution: | → im Image |
|---|---|
| Status: | new → closed |
bau hat das in eine eigene Extension ausgelagert:
/usr/share/gnome-shell/extensions/kepler_LogOutButton@kg-fds.de.
Ist im nächsten Image.
Umstellung auf gdm3 behebt das Problem