สาเหตุ
การลบอุปกรณ์ออกจากตัวเรียกใช้งานจะขึ้นบัญชีดำของอุปกรณ์ในปุ่ม ( 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)])
วิธีใช้
- คัดลอกสคริปต์ลงในไฟล์เปล่า
- บันทึกเป็น
remember_blacklist.py
ทดสอบโดยใช้คำสั่ง:
python3 /path/to/remember_blacklist.py
หากทำงานได้ดีให้เพิ่มในแอปพลิเคชันเริ่มต้น: Dash> แอปพลิเคชันเริ่มต้น> เพิ่ม เพิ่มคำสั่ง:
python3 /path/to/remember_blacklist.py
บันทึก
- การอ่านจาก
gsettings
(แทบทุกสิ่งที่สคริปต์ทำ) มีน้ำหนักเบามากและจะไม่เพิ่มภาระใด ๆ ที่เห็นได้ชัดเจนให้กับระบบของคุณ
- หาก (และตราบเท่าที่) อุปกรณ์เปิดใน
nautilus
หน้าต่างใด ๆ อุปกรณ์จะยังคงปรากฏในตัวเรียกใช้งาน อย่างไรก็ตามไอคอนจะไม่ถูกล็อคไปที่ตัวเรียกใช้และหายไป