close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

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 bau)

Das Schloss-Icon im Gnome3-Desktop verursacht Probleme.
Querverweis: #3358

Change History (19)

comment:1 by bau, 7 years ago

  • Test von kup/bau am 20.11.
    Umstellung auf gdm3 behebt das Problem


  • Test von bau am 21.11.
    • Umstellen auf gdm3, anschließendes Zurückstellen auf lightdm: Problem bleibt
    • Aufruf des Befehls
      gnome-screensaver-command -l
      
      Öffnet einen ganz anderen Sperrbildschirm, der aber tut[[BR]] Diese Lösung würde ich bevorzugen, da sie uns erlaubt, bei lightdm zu bleiben.

comment:2 by bau, 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.

in reply to:  2 comment:3 by Rüdiger Kupper, 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:5 by bau, 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 bau, 7 years ago

Description: modified (diff)

comment:7 by bau, 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 Rüdiger Kupper, 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 bau, 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 bau, 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 Rüdiger Kupper, 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 bau, 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.

Last edited 7 years ago by bau (previous) (diff)

comment:13 by bau, 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
Version 0, edited 7 years ago by bau (next)

comment:14 by Rüdiger Kupper, 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.

[bau:]
Natürlich, deshalb: Funktion des Sperr-Buttons umbiegen oder eigenen Button erzeugen!

Last edited 7 years ago by bau (previous) (diff)

comment:15 by Rüdiger Kupper, 7 years ago

Den Knopf zum Herunterfahren sollten wir eher entfernen.

comment:16 by bau, 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 Rüdiger Kupper, 7 years ago

Super. Das sollten wir dann auch gleich als öffentliche Shell-Erweiterung für alle GNOME-Nutzer anbieten.

comment:18 by bau, 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 Rüdiger Kupper, 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.

Note: See TracTickets for help on using tickets.