วิธีหยุดไอคอนพาร์ติชันใน Unity launcher


8

ปัญหาใหม่ Ubuntu 16.04 / 16.10 ตอนนี้เมื่อใดก็ตามที่ฉันเริ่ม gparted ไอคอนดิสก์พาร์ติชันใหม่จะปรากฏขึ้นเหนือไอคอนถังขยะในตัวเรียกใช้ Unity ฉันต้อง "ปลดล็อกจากตัวเรียกใช้งาน" เพื่อกำจัดมัน

โพสต์ที่เก่ากว่าสำหรับ Ubuntu รุ่นเก่าเสนอการแก้ไขต่าง ๆ ที่ไม่ได้ใช้ใน 16.04 / 16.10 ความคิดใด ๆ ของวิธีการกำจัดไอคอนน่ารำคาญเหล่านี้อย่างถาวรหรือไม่

นี่คือภาพหน้าจอที่แสดงไอคอน 3 ไอคอนซึ่งอยู่เหนือไอคอนถังขยะ:

ป้อนคำอธิบายรูปภาพที่นี่


โปรดเพิ่มภาพหน้าจอ
You'reAGitForNotUsingGit

ภาพหน้าจอจะไม่ให้ฉันใช้ไอคอนพาร์ติชั่นดิสก์ 3 ตัวที่เพิ่มเข้ามาเมื่อใดก็ตามที่ฉันรัน gparted เพราะตัวเรียกใช้งานจะไม่เลื่อนไปที่ด้านล่างของรายการตัวเรียกใช้เมื่อ Screenshot เปิดใช้งาน ป.ล. : ถ้าฉันได้ภาพหน้าจอฉันจะเพิ่มมันในอนาคตได้อย่างไร
heynnema

เมื่อคุณแก้ไขโพสต์ของคุณในแถบด้านบนจะมีไอคอนรูปภาพเล็กน้อย หากคุณคลิกมันจะช่วยให้คุณสามารถฝังภาพ
You'reAGitForNotUsingGit

นอกจากนี้หากคุณบอกให้จับภาพสกรีนช็อตด้วยการหน่วงเวลาเต็มหน้าต่างมันควรจะทำงาน :)
You'reAGitForNotUsingGit

คำตอบ:


6

สาเหตุ

การลบอุปกรณ์ออกจากตัวเรียกใช้งานจะขึ้นบัญชีดำของอุปกรณ์ในปุ่ม ( 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)])

วิธีใช้

  1. คัดลอกสคริปต์ลงในไฟล์เปล่า
  2. บันทึกเป็น remember_blacklist.py
  3. ทดสอบโดยใช้คำสั่ง:

    python3 /path/to/remember_blacklist.py
    
  4. หากทำงานได้ดีให้เพิ่มในแอปพลิเคชันเริ่มต้น: Dash> แอปพลิเคชันเริ่มต้น> เพิ่ม เพิ่มคำสั่ง:

    python3 /path/to/remember_blacklist.py
    

บันทึก

  1. การอ่านจากgsettings(แทบทุกสิ่งที่สคริปต์ทำ) มีน้ำหนักเบามากและจะไม่เพิ่มภาระใด ๆ ที่เห็นได้ชัดเจนให้กับระบบของคุณ
  2. หาก (และตราบเท่าที่) อุปกรณ์เปิดในnautilusหน้าต่างใด ๆ อุปกรณ์จะยังคงปรากฏในตัวเรียกใช้งาน อย่างไรก็ตามไอคอนจะไม่ถูกล็อคไปที่ตัวเรียกใช้และหายไป

ขอบคุณสำหรับความช่วยเหลือของคุณ! ฉันจะทดสอบในไม่ช้า จากนั้นฉันจะกลับมาอีกและลงคะแนน / ยอมรับ
heynnema

1
ดูเหมือนว่าจะทำงาน! เมื่อฉันทำการทดสอบฉันได้ทำการควบคุม -c เพื่อหยุดมันและฉันได้รับสิ่งนี้ ... $ python3 ~/bin/remember_blacklist.py ^CTraceback (most recent call last): File "/home/alheynneman/bin/remember_blacklist.py", line 23, in <module> time.sleep(2) KeyboardInterruptมันจะยากแค่ไหนหากจะเพิ่มตัวจัดการ "ขัดจังหวะ" ที่ไปยังทางออกที่สะอาดดี?
heynnema

@heynnema ใช่นั่นคือสิ่งที่คุณควรได้รับเมื่อกด Ctrl -c หมายความว่าลูปหยุดโดย Ctrl c มิฉะนั้นลูปจะไม่สามารถหยุดได้
Jacob Vlijm

1
จะเกิดอะไรขึ้น ... และฉันคิดว่ามันไม่เคยเกิดขึ้นถ้าในStartup Applications... ว่า control-c (หรือ kill?) จะขัดจังหวะการเขียนไปยัง. blacklist_data และทำให้เสียหายหรือไม่
heynnema

nono ที่เมื่อคุณใช้มันจาก :) มินัล
จาค็อบ Vlijm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.