Bloquear la interfaz de la aplicación individual

Bloquear la interfaz de la aplicación individual

¿Puedo bloquear la interfaz de una aplicación en particular sin bloquear toda la pantalla? Sería muy útil en el trabajo poder dejar ciertas aplicaciones abiertas al salir de mi escritorio, ya que los colegas suelen acceder a mi escritorio para agregar cambios. Sin embargo, me gustaría bloquear pidgin/skype/firefox/thunderbird para que permanezca conectado pero inutilizable/no visible sin una contraseña separada.

Respuesta1

Ocultar ventanas de aplicaciones, contraseña para volver a hacerlas visibles

Una versión editada deeste guiónocultará/mostrará (completamente) las interfaces (ventanas) decualquieraplicación, que figura en la sección principal del script (alternar).

Tiene una protección de contraseña "suave", ya que la contraseña se almacena dentro del script. La combinación de teclas para ejecutar el script será otra barrera que impedirá el acceso con demasiada facilidad. Probablemente eso sea suficiente en la situación que mencionas, pero tendrás que decidir.

ingrese la descripción de la imagen aquí

Cómo utilizar

  1. El script utiliza ambos xdotooly wmctrl:

    sudo apt-get install xdotool wmctrl
    
  2. Luego simplemente copie el siguiente script en un archivo vacío, guárdelo como password_app.py, cámbielo si desea la contraseña actual "Monkey" en la línea:

    if passw == "Monkey":
    
  3. En la sección principal del script, agregue las aplicaciones de las que necesita o desea ocultar la interfaz. Como ejemplo, puse:

    applications = ["gedit", "thunderbird"]
    
  4. Pruébelo con el comando:

    python3 /path/to/password_app.py
    

    Necesita la contraseña para ocultar y mostrar su interfaz:

  5. Si todo funciona bien, agréguelo a una combinación de teclas de acceso directo: Elija: Configuración del sistema > "Teclado" > "Atajos" > "Atajos personalizados". Haga clic en "+" y agregue el comando:

    python3 /path/to/password_app.py
    

La secuencia de comandos

#!/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

Notas

  • Esto no impide que los usuarios abrannuevas instanciasde las aplicaciones, oculta las actuales. Sin embargo, todo se puede hacer con codificación adicional :).
  • Si otro usuario puede abrir una nueva instancia de una aplicación listada, al ejecutar el script primero se agregarán esas ventanas a las ventanas ocultas.TodoWindows aparecerá en la siguiente ejecución del script.

Respuesta2

Una aplicación que ha sido diseñada para aprovechar privilegios de usuario adicionales como System Settings:User accounts poderhacer esto.

Una aplicación como Thunderbird que no ha sido diseñada así no puede ser lista para usar. Por lo tanto tienes dos posibilidades:

  1. Desempolve sus habilidades de programación y agregue la funcionalidad usted mismo
  2. Cree un usuario diferente para Thunderbird y suacceda al usuario cuando necesite leer el correo y manténgalo cerrado si no lo hace...

información relacionada