Если я подключу внешнее устройство (такое как карта с интерфейсом USB или смартфон на базе Android), то он автоматически откроется в наутилусе и блокировать соответствующий значок к средству запуска единицы. Там какой-либо путь состоит в том, чтобы предотвратить это?
Я использую Ubuntu 14.04
При разблокировании устройства от Средства запуска Unity оно как на самом деле поместило в черный список от средства запуска. Вы видите, какие устройства в настоящее время помещаются в черный список командой:
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
myown_blacklist.py
Тестовый прогон он командой:
python3 /pat/to/myown_blacklist.py`
Теперь разблокировали Ваш (любой, это работает не только USB-устройства), нежелательные устройства. Разблокирование только необходимо однажды.
, Если все хорошо работает, добавьте его для Запущения Приложений: выберите Dash> Startup Applications> Add. Добавьте команду:
python3 /pat/to/myown_blacklist.py`
, проблема - то, что Unity "забывает" устройства, после того как они размонтированы. Сценарий затем отслеживает то, что происходит с выводом:
gsettings get com.canonical.Unity.Devices blacklist
, Если объект добавляется к списку, сценарий написал список в скрытый файл в Вашем корневом каталоге. Если объект удален, он читает скрытый файл и восстанавливает черный список (это только необходимо однажды при размонтировании устройства)