防止外部設備鎖定到啟動器

防止外部設備鎖定到啟動器

如果我連接外部裝置(例如 USB 記憶棒或 Android 智慧型手機),它將自動在 nautilus 中打開,並獲得鎖定到 Unity 啟動器的相應圖示。有什麼辦法可以防止這種情況發生嗎?

我使用的是 Ubuntu 14.04

答案1

如果您從 Unity Launcher 解鎖設備,它實際上列入黑名單從啟動器。您可以透過以下命令查看目前哪些裝置被列入黑名單:

gsettings get com.canonical.Unity.Devices blacklist

下面的腳本是設定您自己的另一種方法列入黑名單的設備。不同之處在於該腳本以永久方式執行此操作,直到您刪除該檔案~/.blacklist_data。 (見解釋:怎麼運作的

後台腳本

即使對於後台腳本來說,這個也是極為重量輕,因為如果黑名單沒有任何變化,命令只會讀取當前的黑名單gsettings。它讀取dconfbinary格式化的資料庫,因此重量非常輕。

劇本

#!/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. 如果一切正常,請將其新增至啟動應用程式:選擇 Dash > 啟動應用程式 > 新增。新增指令:

    python3 /pat/to/myown_blacklist.py`
    

怎麼運作的

問題在於,一旦設備卸載,Unity 就會「忘記」設備。然後,該腳本會追蹤以下輸出發生的情況:

gsettings get com.canonical.Unity.Devices blacklist

如果將某個項目新增至清單中,則腳本會將清單寫入主目錄中的隱藏檔案中。如果刪除某個項目,它會讀取隱藏檔案並恢復黑名單(僅在卸載裝置時需要一次)

相關內容