答案1
原因
从启动器中移除设备将会把设备列入 ( gsettings
) 键的黑名单
com.canonical.Unity.Devices blacklist
但是,如果设备被移除(以任何方式断开连接),设备也会从黑名单中删除。下次连接设备时,故事又会重新开始。
解决方案
以下解决方案将把列入黑名单的设备存储在一个文件中。删除它们后一次,该设备将永远不会再出现在启动器中。如果您断开设备连接,脚本将立即(重新)将该设备添加到黑名单。
#!/usr/bin/env python3
import subprocess
import time
import os
key = "com.canonical.Unity.Devices"
bl_file = os.environ["HOME"]+"/.blacklist_data"
while True:
time.sleep(2)
current = subprocess.check_output([
"gsettings", "get", key, "blacklist",
]).decode("utf-8")
if "@as" in current:
current = []
else:
current = eval(current)
try:
r = open(bl_file).read()
r = [] if r == '' else r.splitlines()
except FileNotFoundError:
r = []
if current != r:
newlist = list(set([d for d in current+r if not d == '']))
open(bl_file, "wt").write("\n".join(newlist))
subprocess.Popen(["gsettings", "set", key, "blacklist", str(newlist)])
如何使用
- 将脚本复制到空文件中
- 另存为
remember_blacklist.py
通过命令测试运行:
python3 /path/to/remember_blacklist.py
如果一切正常,请添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:
python3 /path/to/remember_blacklist.py
笔记
- 读取
gsettings
(脚本执行的所有操作)非常轻量,不会给你的系统增加任何明显的负担 - 如果(只要)设备在任何
nautilus
窗口中打开,它仍会显示在启动器中。但是图标不会锁定到启动器,并且会消失。