
Escrevi um script de instalação que automatiza meu processo de instalação. Depois eu gostaria de reorganizar/adicionar/remover os ícones do lançador de unidade.
Usando, dconf watch /
posso ver a saída enquanto reordeno os ícones. Existe uma maneira de fazer isso na linha de comando - possivelmente com gsettings
?
Responder1
Introdução
O script simples abaixo permite usar um arquivo como argumento e configura o inicializador para ter quaisquer atalhos para programas que apareçam no arquivo (um por linha).
A ideia básica é que os ícones do inicializador sejam, na verdade, links para .desktop
arquivos (onde quer que apareçam), e o método canônico para definir os itens do inicializador é executar o seguinte comando:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
Isso pode ser entediante se você quiser adicionar muitos itens e citar pode se tornar uma dor. Sempre é possível abrir o programa desejado e clicar com o botão direito no ícone para invocar a opção "Bloquear no inicializador", mas isso também não é prático quando você está lidando com uma grande quantidade de itens.
A abordagem adotada aqui é simplesmente ler um arquivo, uma vez por linha, criar o comando text e executá-lo. Isso não é diferente de executar o gsettings set
comando acima, exceto que o trabalho duro é feito para você.
Uso:
Para executar o script, salve-o em um arquivo, torne-o executável chmod +x /path/to/script
e execute-o como
python /path/to/script /path/to/file
O arquivo de entrada deve conter o caminho completo para os itens que você deseja adicionar ao inicializador, como /usr/share/applications/firefox.desktop
, mas não é necessário, uma linha com firefox.desktop
também está OK.
Demonstração
Antes de executar o script
Depois de executar o script
Observe que a ordem é exatamente a mesma em que as entradas aparecem no arquivo de entrada
Fonte do roteiro
#!/usr/bin/env python
# Author: Serg Kolo
# Date: April 22, 2016
# Purpose: programmatically set Unity launcher items
# by reading a file
# Written for: http://askubuntu.com/q/760895/295286
# Tested on: Ubuntu 14.04 LTS
import sys
import subprocess
command="""gsettings set com.canonical.Unity.Launcher favorites """
def run_command(cmd):
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output = p.stdout.read().strip()
return output
items=""
with open(sys.argv[1]) as file:
for line in file:
temp = "'" + line.strip().split('/')[-1] + "'"
items = ",".join([items,temp])
items = '"[ ' + items[1:] + ' ]"'
print run_command(command + " " + items)