Блокировка интерфейса отдельного приложения

Могу ли я заблокировать интерфейс определенного приложения, не блокируя весь экран? На работе было бы очень полезно иметь возможность оставлять определенные приложения открытыми, оставляя мой рабочий стол, поскольку коллеги часто получают доступ к моему рабочему столу, чтобы добавлять изменения. Однако я хотел бы заблокировать pidgin / skype / firefox / thunderbird, чтобы он оставался в системе, но не использовался / не просматривался без отдельного пароля.

2
задан 28 May 2015 в 22:48

2 ответа

Скройте окна приложений, пароль для создания их видимыми снова

Отредактированная версия этого сценария (полностью) скроется/покажет интерфейсы (окна) любого приложения, перечисленного в главном разделе сценария (переключатель).

Это имеет "умеренную" защиту паролем, так как пароль хранится в сценарии. Сочетание клавиш для запущения скрипта будет другим барьером, который предотвратит доступ слишком легко. Это, вероятно, будет достаточно в ситуации, которую Вы упоминаете, но необходимо будет решить.

enter image description here

Как использовать

  1. Сценарий использует обоих xdotool и wmctrl:

    sudo apt-get install xdotool wmctrl
    
  2. Затем просто скопируйте сценарий ниже в пустой файл, сохраните его как password_app.py, изменитесь, если Вы хотите текущий пароль "Обезьяна" в строке:

    if passw == "Monkey":
    
  3. В главном разделе сценария добавьте приложения, от которых необходимо скрыть интерфейс. Как пример, я установил:

    applications = ["gedit", "thunderbird"]
    
  4. Тестовый прогон это командой:

    python3 /path/to/password_app.py
    

    Вам нужен пароль и для сокрытия и для показа Вашего интерфейса:

  5. Если все хорошо работает, добавьте его к комбинации сочетания клавиш: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

    python3 /path/to/password_app.py
    

Сценарий

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

Примечания

  • Это не препятствует тому, чтобы пользователи открыли новые экземпляры приложений, это скрывает текущие. Все могут быть сделаны однако с дополнительным кодированием :).
  • Если другой пользователь мог бы открыть новый экземпляр перечисленного приложения, запущение скрипта сначала добавит те окна к скрытым окнам. Все окна затем обнаружатся на следующем запуске сценария.
2
ответ дан 28 May 2015 в 22:48

Приложение, которое было разработано для использования в своих интересах дополнительных полномочий пользователя как Параметры настройки системы - учетные записи пользователей , может делать это.

приложение как Thunderbird, который не был разработан как этот, не может out-of-the-box. Поэтому Ваш имеют две возможности:

  1. Стирают Ваши навыки программирования и добавляют, что функциональность самостоятельно
  2. Создает различного пользователя для Thunderbird и su в пользователя, когда необходимо считать почту и сохранить закрытым, если Вы не делаете...
0
ответ дан 28 May 2015 в 22:48

Другие вопросы по тегам:

Похожие вопросы: