Как я могу заблокировать пользователей от смены обоев (в Unity в Ubuntu 12 и 14)?

Я не могу найти способ заблокировать пользователей от смены моих установленных обоев.
У меня есть несколько компьютеров под управлением Ubuntu 12.04 с использованием Unity, а другие работают под управлением Ubuntu 14.04 с использованием Unity.
Мне нужен какой-то твик / команда / решение, которое блокирует возможность смены обоев любым возможным способом.

Пожалуйста, не отвечайте мне с решениями под GNOME. Эти два не работают для меня:
- Как ограничить пользователей при смене обоев?
- Проблемы с тем, чтобы пользователи не могли менять обои / настройки

1 ответ

Решение

Хотя приведенное ниже предложение далеко не "водонепроницаемо", оно предлагает по крайней мере некоторые меры предосторожности "первой линии" против слишком простой смены обоев.

Вы можете сделать небольшой скрипт для запуска в фоновом режиме, который проверяет каждые x секунд, являются ли текущие обои все еще теми, которые вы установили в первую очередь.

  • Команда, чтобы увидеть (получить), что является текущими обоями:

    gsettings get org.gnome.desktop.background picture-uri
    

    Если вы запустите это в терминале, вы получите вывод, похожий на:

    'file:///home/jacob/Thema/Bureaublad4/Frog.jpg'
    

Мы можем заставить скрипт восстановить исходные обои, если они изменились.

  • Чтобы установить конкретные обои, команда:

    gsettings set org.gnome.desktop.background picture-uri 'file:///home/jacob/Thema/Bureaublad4/Frog.jpg'
    

Если мы используем эти два в скрипте Python, мы можем получить следующее (python3, 14.04):

#!/usr/bin/env python3

import time
import subprocess

set_wallpaper = "file:///home/jacob/Thema/Bureaublad4/Frog.jpg"

cmd2 = "gsettings set org.gnome.desktop.background picture-uri "+set_wallpaper
cmd1 = "gsettings get org.gnome.desktop.background picture-uri"

def check_wall():
    curr_wallpaper = subprocess.check_output(["/bin/bash", "-c", cmd1]).decode("utf-8").strip()
    if curr_wallpaper == "'"+set_wallpaper+"'":
        pass
    else:
        subprocess.Popen(["/bin/bash", "-c", cmd2])

while True:
    check_wall()
    time.sleep(10)

Единственное отличие для 12.04 - это shebang: 12.04 не поставляется с python3 по умолчанию, поэтому shebang должен быть:

#!/usr/bin/env python

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

  • скопируйте скрипт в пустой файл. Поменяйте линию обоев (после set_wallpaper =) в путь к изображению ваших обоев (начиная с file://как в примере). Сохранить как something.py,

  • запустите его командой:

    python3 /path/to/something.py
    

    или (12.04)

    python /path/to/something.py
    

Если все работает, как вы хотите, добавьте его в свои приложения запуска: Dash > "Автозагрузка приложений" > "Добавить"

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