Bloqueie a interface do aplicativo individual

Bloqueie a interface do aplicativo individual

Posso bloquear a interface de um aplicativo específico sem bloquear a tela inteira? Seria muito útil no trabalho poder deixar determinados aplicativos abertos ao sair da minha mesa, pois os colegas costumam acessar minha área de trabalho para adicionar alterações. No entanto, gostaria de bloquear o pidgin/skype/firefox/thunderbird para que ele permaneça conectado, mas inutilizável/invisível sem uma senha separada.

Responder1

Ocultar janelas de aplicativos, senha para torná-los visíveis novamente

Uma versão editada deeste roteiroirá (completamente) ocultar/mostrar interfaces (janelas) dequalqueraplicativo, listado na seção head do script (alternar).

Possui uma proteção por senha "leve", já que a senha fica armazenada dentro do script. A combinação de teclas para executar o script será outra barreira que impedirá o acesso com muita facilidade. Isso provavelmente será suficiente na situação mencionada, mas você terá que decidir.

insira a descrição da imagem aqui

Como usar

  1. O script usa ambos xdotoole wmctrl:

    sudo apt-get install xdotool wmctrl
    
  2. Depois basta copiar o script abaixo em um arquivo vazio, salvá-lo como password_app.py, alterar se desejar a senha atual "Monkey" na linha:

    if passw == "Monkey":
    
  3. Na seção principal do script, adicione os aplicativos dos quais você precisa/deseja ocultar a interface. Como exemplo, defino:

    applications = ["gedit", "thunderbird"]
    
  4. Faça um teste e execute-o pelo comando:

    python3 /path/to/password_app.py
    

    Você precisa da senha para ocultar e mostrar sua interface:

  5. Se tudo funcionar bem, adicione-o a uma combinação de teclas de atalho: Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no "+" e adicione o comando:

    python3 /path/to/password_app.py
    

O roteiro

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

  • Isso não impede que os usuários abramnovas instânciasdos aplicativos, oculta os atuais. No entanto, tudo pode ser feito com codificação adicional :).
  • Se outro usuário puder abrir uma nova instância de um aplicativo listado, a execução do script adicionará primeiro essas janelas às janelas ocultas.Todoso windows aparecerá na próxima execução do script.

Responder2

Um aplicativo que foi projetado para aproveitar privilégios adicionais de usuário, como System Settings-User accounts podefazem isto.

Um aplicativo como o Thunderbird, que não foi projetado dessa forma, não pode ser pronto para uso. Portanto você tem duas possibilidades:

  1. Tire o pó de suas habilidades de programação e adicione a funcionalidade você mesmo
  2. Crie um usuário diferente para o Thunderbird e supara o usuário quando precisar ler o e-mail e mantenha-o fechado se não precisar...

informação relacionada