已安装的设备未显示在 ubuntu 14.04 的启动器上。如何启用它?

已安装的设备未显示在 ubuntu 14.04 的启动器上。如何启用它?

我在我的 HP Pavillion 台式机上使用 Ubuntu 14.04。

几分钟前,设备、U盘和外部硬盘分别在安装和插入时显示出来。

突然,我发现已安装的设备不再显示在启动器上。如果我将它们从启动器拖出并锁定,则在我解锁它们的那一刻,它们就会消失,即使在安装时也不会回来。

关于如何在安装时恢复启动器的外观,您有什么想法吗?

编辑:运行时fdisk -l我得到以下信息:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted


Disk /dev/sda: 4000.8 GB, 4000785948160 bytes
255 heads, 63 sectors/track, 486401 cylinders, total 7814035055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

编辑:当我尝试通过数据线连接我的 Android 手机时,大多数情况下它都无法安装。数据线完全没问题,我在其他系统中也用过它。

答案1

已安装的(USB)驱动器是否显示在 Unity 启动器中与 fstab 无关。

运行以下命令重置黑名单并在启动器中再次显示所有已安装的设备:

gsettings set com.canonical.Unity.Devices blacklist "[]"

解释

当你从启动器解锁已安装的卷时,你实际上是将它们添加到黑名单com.canonical.Unity.Devices),这样它们就不会出现在启动器中。但它们仍会被安装。

您可以通过运行以下命令查看哪些设备当前在黑名单中:

gsettings get com.canonical.Unity.Devices blacklist

强制暂时列入黑名单

要自动从黑名单中删除已列入黑名单的设备(一旦它们被卸载),您可以在后台运行一个小脚本。它会监视已安装卷列表中的变化。如果设备断开连接,脚本会将其(可能)列入黑名单。
然后,下次连接时,该设备将再次出现在启动器中。

如何使用

  • 将下面的脚本复制到一个空文件中(使用例如gedit)。
  • 将文件保存为某处rm_blacklist.py
  • 为了全新启动,请使用以下命令重置黑名单:

    gsettings set com.canonical.Unity.Devices blacklist "[]"
    
  • 打开终端窗口并运行命令来测试脚本:

    python3 /path/to/rm_blacklist.py
    

    保持终端窗口打开(运行脚本):

    • 插入 U 盘。等待几秒钟,直到安装完成,然后从启动器解锁
    • 断开 U 盘。
    • 几秒钟后再次插入;它现在应该重新出现在启动器中。

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

python3 /path/to/rm_blacklist.py

剧本

#!/usr/bin/env python3
import subprocess
import time

def get_info(cmd):
    return subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")

def get_mountedlist():
    devices = get_info("lsblk").splitlines()
    return [l.split("/")[-1].strip() for l in devices if "/" in l and not l.endswith("/")]

def get_blacklist():
    try:
        return eval(get_info("gsettings get com.canonical.Unity.Devices blacklist"))
    except SyntaxError:
        return []

while True:
    curr_blacklist = get_blacklist()
    mounted_blacklisted = sum([[it for it in curr_blacklist if m in it] for m in get_mountedlist() ], [])
    if '-' in curr_blacklist:
        mounted_blacklisted = mounted_blacklisted+['-']
    if not curr_blacklist == mounted_blacklisted:
        cmd = "gsettings set com.canonical.Unity.Devices blacklist "+'"'+str(mounted_blacklisted)+'"'
        subprocess.Popen(["/bin/bash", "-c", cmd])
    time.sleep(3)

相关内容