如何阻止用户更改壁纸(在 Ubuntu 12 和 14 中的 Unity 下)?

如何阻止用户更改壁纸(在 Ubuntu 12 和 14 中的 Unity 下)?

我找不到阻止用户更改我所在机构的壁纸的方法。
我有一些 PC 运行使用 Unity 的 Ubuntu 12.04,还有一些运行使用 Unity 的 Ubuntu 14.04。
我需要某种调整/命令/解决方案来阻止以任何可能的方式更改壁纸的选项。

请不要用 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

如何使用

  • 将脚本复制到一个空文件中。将 wallpaper 行(在 之后set_wallpaper =)更改为壁纸图像的路径(以 开头file://,如示例中所示)。将其另存为something.py

  • 通过命令运行它:

    python3 /path/to/something.py
    

    或 (12.04)

    python /path/to/something.py
    

如果一切顺利,请将其添加到启动应用程序中:Dash > “启动应用程序” > “添加”

相关内容