Automatizar a ordenação de ícone do iniciador de unidade

2

Eu escrevi um script de instalação que automatiza o processo de instalação. Depois eu gostaria de reorganizar / adicionar / remover os ícones para o lançador de unidade.

Usando dconf watch / , posso ver a saída quando eu reordenar os ícones. Existe uma maneira de linha de comando para fazer isso - possivelmente com gsettings ?

    
por myol 23.04.2016 / 00:16

1 resposta

2

Introdução

O script simples abaixo permite pegar um arquivo como argumento e configura o lançador para que os atalhos para os programas apareçam no arquivo (um por linha).

A ideia básica é que os ícones do iniciador são, na verdade, links para .desktop files (onde quer que possam aparecer), e o método canônico para definir os itens do launcher é 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 as cotações podem se tornar um problema. Pode-se sempre abrir um programa desejado e clicar com o botão direito no ícone para invocar a opção "Lock to launcher", mas isso também não é prático quando se lida com uma grande quantidade de itens.

A abordagem aqui é simplesmente ler um arquivo, com 1 hora por linha, construir o texto do comando e executá-lo. Isso não é diferente de executar o comando gsettings set acima, exceto que o trabalho árduo é feito para você.

Uso:

Para executar o script, salve-o em um arquivo, torne-o executável com chmod +x /path/to/script e execute 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 iniciador, como /usr/share/applications/firefox.desktop , mas não é necessário, uma linha com firefox.desktop também está OK.

Demo

Antes de executar o script

Depois de executar o script

Observe que a ordem é exatamente igual às entradas exibidas no arquivo de entrada

Origem do script

#!/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)
    
por Sergiy Kolodyazhnyy 23.04.2016 / 07:06