
외부 장치(예: USB 스틱 또는 안드로이드 스마트폰)를 연결하면 노틸러스에서 자동으로 열리고 해당 아이콘이 유니티 런처에 잠깁니다. 이를 방지할 수 있는 방법이 있나요?
우분투 14.04를 사용하고 있습니다
답변1
Unity Launcher에서 장치의 잠금을 해제하면 실제로는블랙리스트에 등록됨런처에서. 다음 명령으로 현재 블랙리스트에 등록된 장치를 확인할 수 있습니다.
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 > 시작 응용 프로그램 > 추가를 선택합니다. 다음 명령을 추가합니다.
python3 /pat/to/myown_blacklist.py`
작동 원리
문제는 Unity가 마운트 해제된 장치를 "잊어버린다"는 것입니다. 그런 다음 스크립트는 다음의 출력에 어떤 일이 발생하는지 추적합니다.
gsettings get com.canonical.Unity.Devices blacklist
항목이 목록에 추가되면 스크립트는 홈 디렉터리의 숨겨진 파일에 목록을 기록합니다. 항목이 제거되면 숨겨진 파일을 읽고 블랙리스트를 복원합니다(장치를 마운트 해제할 때 한 번만 필요함).