
He escrito un script de instalación que automatiza mi proceso de instalación. Luego me gustaría que reorganice/agregue/elimine los íconos en el iniciador de Unity.
Usando dconf watch /
puedo ver el resultado mientras reordeno los íconos. ¿Existe una forma de línea de comando para hacer esto, posiblemente con gsettings
?
Respuesta1
Introducción
El sencillo script que aparece a continuación permite tomar un archivo como argumento y configura el iniciador para que tenga los accesos directos a los programas que aparecen en el archivo (uno por línea).
La idea básica es que los íconos del iniciador son en realidad enlaces a .desktop
archivos (dondequiera que aparezcan), y el método canónico para configurar los elementos del iniciador es ejecutar el siguiente comando:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
Esto puede resultar tedioso si desea agregar muchos elementos y citar puede convertirse en una molestia. Siempre se puede abrir el programa deseado y hacer clic derecho en el ícono para invocar la opción "Bloquear en el iniciador", pero eso tampoco es práctico cuando se trata de una gran cantidad de elementos.
El enfoque adoptado aquí es simplemente leer un archivo, una vez por línea, crear el texto del comando y ejecutarlo. Esto no es diferente de ejecutar el gsettings set
comando anterior, excepto que el trabajo duro ya lo hace usted.
Uso:
Para ejecutar el script, guárdelo en un archivo, hágalo ejecutable chmod +x /path/to/script
y ejecútelo como
python /path/to/script /path/to/file
El archivo de entrada debe contener la ruta completa a los elementos que desea agregar al iniciador, como /usr/share/applications/firefox.desktop
, pero no es necesario, una línea con firefox.desktop
también está bien.
Manifestación
Antes de ejecutar el script
Después de ejecutar el script
Tenga en cuenta que el orden es exactamente el mismo que aparecen las entradas en el archivo de entrada.
Fuente del guión
#!/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)