Bloqueie a interface do aplicativo individual

2

Posso bloquear a interface de um aplicativo em particular sem bloquear a tela inteira? Seria muito útil no trabalho poder deixar certos aplicativos abertos ao sair da minha mesa, pois os colegas geralmente acessam 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 seja inutilizável / não possa ser visualizado sem uma senha separada.

    
por Oceanic_Panda 28.05.2015 / 15:03

2 respostas

2

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

Uma versão editada de este script ocultará (completamente) / mostrará as interfaces (janelas) do qualquer aplicativo, listado na seção head do script (alternar).

Possui proteção de senha "leve", já que a senha é armazenada no 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 que você mencionou, mas você terá que decidir.

Comousar

  1. Oscriptusaxdotoolewmctrl:

    sudoapt-getinstallxdotoolwmctrl
  2. Emseguida,copieoscriptabaixoemumarquivovazio,salve-ocomopassword_app.py,alteresequiserasenhaatual"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, eu configurei:

    applications = ["gedit", "thunderbird"]
    
  4. Teste-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 botão "+" e adicione o comando:

    python3 /path/to/password_app.py
    

O script

#!/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 abram novas instâncias dos aplicativos; eles ocultam os atuais. Tudo pode ser feito no entanto 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. As janelas Todas aparecerão na próxima execução do script.
por Jacob Vlijm 28.05.2015 / 16:46
0

Um aplicativo que foi projetado para aproveitar os privilégios adicionais do usuário, como Configurações do Sistema - Contas de usuário , podem fazer isso.

Um aplicativo como o Thunderbird, que não foi projetado dessa forma, não pode ser instalado de imediato. Portanto, você tem duas possibilidades:

  1. Limpe suas habilidades de programação e adicione a funcionalidade você mesmo
  2. Crie um usuário diferente para o Thunderbird e su para o usuário quando precisar ler o e-mail e mantê-lo fechado se você não ...
por Fabby 28.05.2015 / 16:27