防止外部设备被锁定到发射器

如果我连接外部设备(例如USB记忆棒或Android智能手机),它将自动在nautilus中打开,并将相应的图标锁定到Unity启动器。 有什么办法可以防止这种情况吗?

我正在使用Ubuntu 14.04

如果您从Unity Launcher中解锁设备,它实际上已从启动器列入黑名单 。 您可以通过命令查看当前列入黑名单的设备:

gsettings get com.canonical.Unity.Devices blacklist 

下面的脚本是设置您自己的黑名单设备的另一种方法。 区别在于脚本以永久方式执行,直到您删除文件~/.blacklist_data 。 (见解释: 工作原理

背景脚本

即使对于后台脚本,这个也非常轻,因为如果黑名单没有任何变化, gsettings命令只会读取当前的黑名单。 它读取dconf数据库,它是binary格式,因此重量很轻。

剧本

 #!/usr/bin/env python3 import subprocess import os import time blacklist_data = os.environ["HOME"]+"/.blacklist_data" def get_setlist(): cmd = "gsettings get com.canonical.Unity.Devices blacklist" blacklist = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip() return "[]" if blacklist == "@as []" else blacklist try: blacklist1 = str(open(blacklist_data).read()).strip() cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+blacklist1+'"' subprocess.call(["/bin/bash", "-c", cmd]) except FileNotFoundError: blacklist1 = "[]" open(blacklist_data, "wt").write(blacklist1) while True: time.sleep(1) blacklist2 = get_setlist() if blacklist2 != blacklist1: oldlist = open(blacklist_data).read().strip() n_old = len(eval(oldlist)) try: n_new = len(eval(blacklist2)) except SyntaxError: n_new = 0 if n_old < n_new: open(blacklist_data, "wt").write(blacklist2) else: cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+oldlist+'"' subprocess.call(["/bin/bash", "-c", cmd]) blacklist1 = blacklist2 

如何使用

  1. 将脚本复制到空文件中,将其另存为myown_blacklist.py
  2. 测试 - 通过命令运行它:

     python3 /pat/to/myown_blacklist.py` 

    现在解锁您的(任何,它不仅适用于usb设备)不需要的设备。 解锁只需要一次。

  3. 如果一切正常,请将其添加到Startup Applications:选择Dash> Startup Applications> Add。 添加命令:

     python3 /pat/to/myown_blacklist.py` 

这个怎么运作

问题是Unity在卸载后会“忘记”设备。 然后脚本会跟踪输出的内容:

 gsettings get com.canonical.Unity.Devices blacklist 

如果将项目添加到列表中,脚本会将列表写入主目录中的隐藏文件。 如果删除了某个项目,它会读取隐藏文件并恢复黑名单(这只需要卸载一次设备)