Como parar os ícones de partição no iniciador do Unity?

8

Novo problema. Ubuntu 16.04 / 16.10. Agora, sempre que eu inicio o gparted, novos ícones de partição de disco aparecem, logo acima do ícone da lixeira, no iniciador do Unity. Eu tenho que "desbloquear do iniciador" para me livrar deles.

As postagens mais antigas para versões mais antigas do Ubuntu propõem várias correções que não se aplicam mais em 16.04 / 16.10. Alguma idéia de como se livrar permanentemente desses ícones traquinas?

Aqui está uma captura de tela que mostra os 3 ícones, logo acima do ícone da lixeira:

insira a descrição da imagem aqui

heynnema
fonte
Por favor, adicione uma captura de tela
You'reAGitForNotUsingGit
A captura de tela não permite que eu pegue um dos três ícones da partição de disco que são adicionados sempre que executo o gparted, porque o iniciador não irá rolar para a parte inferior da lista de lançadores quando a captura de tela estiver ativa. ps: Se eu pudesse obter uma captura de tela, como posso adicioná-la no futuro?
heynnema
Ao editar sua postagem, na barra superior, existe um pequeno ícone de imagem. Se você clicar nele, permite incorporar uma imagem.
You'reAGitForNotUsingGit
Além disso, se você disser à captura de tela para fazer um snap na janela cheia com um atraso, ela deve funcionar :)
AGitForNotUsingGit 13/08/16

Respostas:

6

A causa

A remoção de dispositivos do iniciador colocará na lista negra o dispositivo na gsettingstecla ( )

com.canonical.Unity.Devices blacklist

No entanto, se o dispositivo for removido (desconectado de qualquer forma), o dispositivo também será removido da lista negra. Na próxima vez que você conectar o dispositivo, a história começará novamente.

A solução

A solução abaixo armazenará os dispositivos na lista negra em um arquivo. Depois de removê-los uma vez , o dispositivo nunca será exibido novamente no iniciador. Se você desconectar um dispositivo, o script irá imediatamente (re) adicionar o dispositivo à lista negra.

#!/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)])

Como usar

  1. Copie o script em um arquivo vazio
  2. Salve como remember_blacklist.py
  3. Teste-execute pelo comando:

    python3 /path/to/remember_blacklist.py
    
  4. Se tudo funcionar bem, adicione aos Aplicativos de inicialização: Dash> Aplicativos de inicialização> Adicionar. Adicione o comando:

    python3 /path/to/remember_blacklist.py
    

Nota

  1. A leitura de gsettings(praticamente tudo o que o script faz) é extremamente leve e não adiciona nenhum fardo perceptível ao seu sistema
  2. Se (e enquanto) o dispositivo for aberto em qualquer nautilusjanela, ele ainda aparecerá no iniciador. O ícone não será bloqueado no iniciador e desaparecerá.
Jacob Vlijm
fonte
Obrigado pela ajuda! Vou testá-lo em breve. Então eu vou voltar e votar / aceitar.
heynnema
1
Parece funcionar! Quando eu estava testando, fiz um controle-c para pará-lo e obtive isso ... $ python3 ~/bin/remember_blacklist.py ^CTraceback (most recent call last): File "/home/alheynneman/bin/remember_blacklist.py", line 23, in <module> time.sleep(2) KeyboardInterruptQuão difícil seria adicionar um manipulador de "interrupção" que vá para uma boa saída limpa?
heynnema
@ heynnema sim, é isso que você deve obter ao pressionar Ctrl-c. Isso significa que o loop foi interrompido por Ctrl c. Caso contrário, o loop seria imparável.
23430 Jacob Vlijm
1
O que aconteceria ... e suponho que nunca aconteceria se ... estivesse em Startup Applications... que um controle-c (ou uma matança?) Interrompesse a gravação nos dados .blacklist_ e a corrompesse?
heynnema
Nono, que é quando você executá-lo a partir de um terminal de :)
Jacob Vlijm