GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo agregar elementos a la matriz Gsettings en la ubicación específica (dada por el índice)?

Quiero escribir un script que traduzca devilspie Las reglas de la ventana se convierten en reglas de compilación. La configuración de Compiz se puede cambiar mediante gsettings claves en la ruta org.compiz.profiles.unity.plugins.place . Hay tres claves:viewport-matches , viewport-x-values y viewport-y-values . Desafortunadamente, cada clave es una matriz y el índice de los elementos es importante.

Gsettings carece de soporte de array tipos que no sean reescribir toda la matriz a la vez, y necesito colocar el elemento en la matriz en la ubicación específica (digamos, al principio, índice '1').

Lo sé, si no me importa el índice, puedo usar

gsettings set ${schema} ${key} \"`gsettings get ${schema} ${key} | sed s/.$//`, ${value}]\"

La pregunta complementa ¿Cómo eliminar un elemento de la matriz gsettings en el script?

Respuesta aceptada:

El siguiente script de python3 insertará nuevos elementos en un índice dado:

#!/usr/bin/env python3

import argparse
import subprocess

parser = argparse.ArgumentParser()
parser.add_argument("schema", help="gsettings shema", metavar="SCHEMA")
parser.add_argument("key", help="gsettings key", metavar="KEY")
parser.add_argument("index",
                    help="KEY array index where VALUE(s) need to be inserted",
                    metavar="INDEX", type=int)
parser.add_argument("value",
                    help="gsettings VALUE(s) to add to the KEY array",
                    metavar="VALUE", nargs='*')

args = parser.parse_args()

array = eval(subprocess.check_output(["gsettings", "get", args.schema, args.key]))
for v in sorted(args.value, reverse=True):
    try:
        value = eval(v)
    except NameError:
        value = v
    array.insert(args.index, value)
subprocess.call(["gsettings", "set", args.schema, args.key, str(array)])

Ubuntu
  1. ¿Cómo agregar una nueva línea al final de un archivo?

  2. ¿Cómo agregar accesos directos de carpeta al lanzador?

  3. ¿Cómo agregar Evolution al menú de mensajería?

  4. Cómo mostrar mi archivo como página predeterminada

  5. ¿Cómo agrego una carpeta a la barra lateral en Ubuntu?

Cómo agregar un fondo de pantalla a la terminal Debian 10

Cómo agregar texto al comienzo del archivo en Linux

Cómo agregar una aplicación al Dock en el sistema operativo elemental

Cómo agregar una aplicación en la lista de aplicaciones abiertas con Ubuntu

¿Cómo agregar una aplicación a la lista de aplicaciones abiertas con?

¿Cómo agregar un marcador en el Explorador de carpetas de Nautilus?