He escrito un script de instalación que automatiza mi proceso de instalación. Después, me gustaría reorganizar/agregar/eliminar los íconos del lanzador de Unity.
Usando dconf watch /
Puedo ver la salida cuando reordeno los íconos. ¿Hay alguna forma de línea de comando para hacer esto, posiblemente con gsettings
? ?
Respuesta aceptada:
Introducción
El siguiente script simple permite tomar un archivo como argumento y configura el iniciador para que tenga cualquier acceso directo a los programas que aparezcan 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 volverse tedioso si desea agregar muchos elementos y citar puede convertirse en una molestia. Uno siempre puede abrir un programa deseado y hacer clic con el botón derecho en el ícono para invocar la opción "Bloquear al 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, con 1 vez por línea, construir el texto del comando y ejecutarlo. Esto no es diferente de ejecutar el gsettings set
comando anterior, excepto que el trabajo duro ya está hecho por ti.
Uso:
Para ejecutar el script, guárdelo en un archivo, hágalo ejecutable con chmod +x /path/to/script
y ejecutar 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.
Demostración
Antes de ejecutar el script
Después de ejecutar el script
Tenga en cuenta que el orden es exactamente el mismo que el de las entradas que aparecen 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)