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)