Sperren Sie die Schnittstelle einzelner Anwendungen

Sperren Sie die Schnittstelle einzelner Anwendungen

Kann ich die Benutzeroberfläche einer bestimmten Anwendung sperren, ohne den gesamten Bildschirm zu sperren? Bei der Arbeit wäre es sehr nützlich, bestimmte Anwendungen geöffnet lassen zu können, wenn ich meinen Schreibtisch verlasse, da Kollegen häufig auf meinen Desktop zugreifen, um Änderungen vorzunehmen. Ich möchte jedoch Pidgin/Skype/Firefox/Thunderbird sperren, sodass es zwar angemeldet bleibt, aber ohne ein separates Passwort nicht verwendet/angezeigt werden kann.

Antwort1

Anwendungsfenster ausblenden, Kennwort verwenden, um sie wieder sichtbar zu machen

Eine bearbeitete Version vondieses Skriptblendet/blendet die Schnittstellen (Fenster) vonbeliebigAnwendung, aufgeführt im Kopfabschnitt des Skripts (Umschalter).

Es verfügt über einen „milden“ Passwortschutz, da das Passwort im Skript gespeichert ist. Die Tastenkombination zum Ausführen des Skripts ist eine weitere Barriere, die den Zugriff zu leicht verhindert. Das wird in der von Ihnen genannten Situation wahrscheinlich ausreichen, aber Sie müssen entscheiden.

Bildbeschreibung hier eingeben

Wie benutzt man

  1. Das Skript verwendet sowohl xdotoolals auch wmctrl:

    sudo apt-get install xdotool wmctrl
    
  2. Anschließend einfach das untenstehende Skript in eine leere Datei kopieren, unter speichern und password_app.pyggf. das aktuelle Passwort "Monkey" in der Zeile: ändern.

    if passw == "Monkey":
    
  3. Fügen Sie im Kopfbereich des Skripts Anwendungen hinzu, vor denen Sie die Schnittstelle verbergen möchten. Ich habe beispielsweise Folgendes festgelegt:

    applications = ["gedit", "thunderbird"]
    
  4. Führen Sie einen Testlauf mit dem folgenden Befehl durch:

    python3 /path/to/password_app.py
    

    Sie benötigen das Passwort sowohl zum Ausblenden als auch zum Anzeigen Ihrer Benutzeroberfläche:

  5. Wenn alles funktioniert, fügen Sie es einer Tastenkombination hinzu: Wählen Sie: Systemeinstellungen > „Tastatur“ > „Tastenkombinationen“ > „Benutzerdefinierte Tastenkombinationen“. Klicken Sie auf das „+“ und fügen Sie den Befehl hinzu:

    python3 /path/to/password_app.py
    

Das Drehbuch

#!/usr/bin/env python3
import subprocess
import getpass
import os
import time

#---
applications = ["gedit", "thunderbird"]
#---

get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()

def toggle():
    windowlist = os.environ["HOME"]+"/"+".windowlist.txt"
    user = getpass.getuser()
    wlist = [l for l in get("wmctrl -lp").splitlines()]
    procs = sum([[p.split()[0] for p in get("ps -u "+user).splitlines() if app in p] for app in applications], [])
    matches = sum([[l.split()[0] for l in wlist if p in l] for p in procs], [])
    if len(matches) != 0:
        with open(windowlist, "a+") as out:
            for match in matches:
                out.write(match+"\n")
                subprocess.Popen(["/bin/bash", "-c", "xdotool windowunmap "+match])
    else:
        try:
            with open(windowlist) as r:
                for l in r.readlines():
                    subprocess.Popen(["/bin/bash", "-c", "xdotool windowmap "+l])
            os.remove(windowlist)
        except FileNotFoundError:
            pass

try:
    cmd = "zenity --entry --title='Restricted!' --text='Enter your _password:'"
    passw = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()
    if passw == "Monkey":
        time.sleep(1)
        toggle()
except subprocess.CalledProcessError:
    pass

Anmerkungen

  • Dies hindert Benutzer nicht daran,neue Instanzender Anwendungen, es verbirgt die aktuellen. Alles kann jedoch mit zusätzlichem Code gemacht werden :).
  • Wenn ein anderer Benutzer möglicherweise eine neue Instanz einer aufgelisteten Anwendung öffnet, werden beim Ausführen des Skripts diese Fenster zunächst zu den ausgeblendeten Fenstern hinzugefügt.AlleBeim nächsten Ausführen des Skripts werden dann Fenster angezeigt.

Antwort2

Eine Anwendung, die entwickelt wurde, um zusätzliche Benutzerrechte zu nutzen, wie System Settings:User accounts dürfenmach das.

Eine Anwendung wie Thunderbird, die nicht so konzipiert wurde, kann nicht sofort einsatzbereit sein. Daher haben Sie zwei Möglichkeiten:

  1. Holen Sie Ihre Programmierkenntnisse raus und fügen Sie die Funktionalität selbst hinzu
  2. Erstellen Sie einen anderen Benutzer für Thunderbird und suin den Benutzer, wenn Sie die E-Mails lesen müssen, und halten Sie ihn geschlossen, wenn Sie dies nicht tun ...

verwandte Informationen