如何在 Unity 启动器中停止分区图标?

如何在 Unity 启动器中停止分区图标?

新问题。Ubuntu 16.04/16.10。现在,每当我启动 gparted 时,Unity 启动器中垃圾桶图标上方就会出现新的磁盘分区图标。我必须“从启动器解锁”才能摆脱它们。

针对旧版本的 Ubuntu 的旧帖子提出了各种修复方法,这些修复方法在 16.04/16.10 中不再适用。有什么办法可以永久摆脱这些讨厌的图标吗?

下面的屏幕截图显示了垃圾桶图标上方的 3 个图标:

在此处输入图片描述

答案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)])

如何使用

  1. 将脚本复制到空文件中
  2. 另存为remember_blacklist.py
  3. 通过命令测试运行:

    python3 /path/to/remember_blacklist.py
    
  4. 如果一切正常,请添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:

    python3 /path/to/remember_blacklist.py
    

笔记

  1. 读取gsettings(脚本执行的所有操作)非常轻量,不会给你的系统增加任何明显的负担
  2. 如果(只要)设备在任何nautilus窗口中打开,它仍会显示在启动器中。但是图标不会锁定到启动器,并且会消失。

相关内容