Unityランチャーでパーティションアイコンを停止する方法


8

新しい問題。Ubuntu 16.04 / 16.10。これで、gpartedを起動すると、Unityランチャーのゴミ箱アイコンのすぐ上に、新しいディスクパーティションアイコンが表示されます。それらを取り除くには、「ランチャーからロック解除」する必要があります。

古いバージョンのUbuntuの古い投稿では、16.04 / 16.10で適用されなくなったさまざまな修正が提案されています。これらの厄介なアイコンを永久に取り除く方法のアイデアはありますか?

これは、ゴミ箱アイコンのすぐ上にある3つのアイコンを示すスクリーンショットです。

ここに画像の説明を入力してください


スクリーンショットを追加してください
You'reAGitForNotUsingGit

スクリーンショットがアクティブな場合、ランチャーはランチャーリストの一番下までスクロールしないため、スクリーンショットでは、gpartedを実行するたびに追加される3つのディスクパーティションアイコンのスナップを取得できません。PS:スクリーンショットが撮れたら、将来どうやって追加すればいいですか?
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. すべてが正常に機能する場合は、スタートアップアプリケーションに追加します。ダッシュ>スタートアップアプリケーション>追加。次のコマンドを追加します。

    python3 /path/to/remember_blacklist.py
    

注意

  1. gsettings(実際にスクリプトが実行するすべてのこと)からの読み取りは非常に軽量であり、システムに目立った負担を加えることはありません
  2. デバイスが任意のnautilusウィンドウで開かれている場合(およびその限り)、ランチャーには引き続き表示されます。ただし、アイコンはランチャーにロックされず、消えます。

ご協力いただきありがとうございます!すぐにテストします。それから私は戻ってきて投票/承認します。
heynnema 2016年

1
動作するようです!私がそれをテストしていたとき、私はそれを停止するためにcontrol-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 2016年

@heynnemaええ、」あなたは何だことをすべきである Ctrlキーの-cを押したときに取得します。これは、ループがCtrl cによって停止されたことを意味します。そうでなければ、ループは止められないでしょう。
Jacob Vlijm 2016年

1
何が起こりますか?そして、もしそれがあったとしてStartup Applicationsも、制御-c(またはkill?)が.blacklist_dataへの書き込みを中断してそれを破壊することはないと思いますか?
heynnema 2016年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.