Nguyên nhân
Xóa thiết bị khỏi trình khởi chạy sẽ đưa vào danh sách đen thiết bị trong phím ( gsettings
)
com.canonical.Unity.Devices blacklist
Tuy nhiên, nếu thiết bị bị xóa (ngắt kết nối theo bất kỳ cách nào), thiết bị cũng bị xóa khỏi danh sách đen. Vào lần tiếp theo bạn kết nối thiết bị, câu chuyện lại bắt đầu.
Giải pháp
Giải pháp dưới đây sẽ lưu trữ các thiết bị trong danh sách đen trong một tệp. Sau khi loại bỏ chúng một lần , thiết bị sẽ không bao giờ xuất hiện lại trong trình khởi chạy. Nếu bạn ngắt kết nối thiết bị, tập lệnh sẽ ngay lập tức (lại) thêm thiết bị vào danh sách đen.
#!/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)])
Cách sử dụng
- Sao chép tập lệnh vào một tập tin trống
- Lưu nó dưới dạng
remember_blacklist.py
Kiểm tra- chạy nó bằng lệnh:
python3 /path/to/remember_blacklist.py
Nếu tất cả đều hoạt động tốt, hãy thêm vào Ứng dụng khởi động: Dash> Ứng dụng khởi động> Thêm. Thêm lệnh:
python3 /path/to/remember_blacklist.py
Ghi chú
- Đọc từ
gsettings
(thực tế là tất cả những gì kịch bản làm) rất nhẹ và sẽ không thêm bất kỳ gánh nặng đáng chú ý nào vào hệ thống của bạn
- Nếu (và miễn là) thiết bị được mở trong bất kỳ
nautilus
cửa sổ nào , thiết bị vẫn sẽ hiển thị trong trình khởi chạy. Tuy nhiên, biểu tượng sẽ không bị khóa với trình khởi chạy và biến mất.