GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come aggiungere un elemento all'array Gsettings nella posizione specifica (data dall'indice)?

Voglio scrivere uno script che traduca devilspie "regole della finestra in regole di compiz". Le impostazioni di Compiz possono essere modificate da gsettings chiavi nel percorso org.compiz.profiles.unity.plugins.place . Ci sono tre chiavi:viewport-matches , viewport-x-values e viewport-y-values . Sfortunatamente ogni chiave è un array e l'indice degli elementi è importante.

Gsettings manca di qualsiasi supporto per array tipi diversi dalla riscrittura dell'intero array in una volta e ho bisogno di posizionare l'elemento nell'array nella posizione specifica (ad esempio, all'inizio, l'indice '1').

So che se non mi interessa l'indice, posso usare

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

La domanda completa Come rimuovere l'elemento dall'array gsettings nello script?

Risposta accettata:

Il seguente script python3 inserirà nuovi elementi in un determinato indice:

#!/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. Come aggiungere una nuova riga alla fine di un file?

  2. Come ottenere il Localhost con una directory diversa dall'indice funzionante?

  3. Come aggiungere Indicator-datetime al pannello?

  4. Come aggiungere le impostazioni di Xfwm4 alle finestre delle preferenze in Lubuntu?

  5. Come utilizzare Index Manager in cPanel

Come aggiungere uno sfondo al terminale Debian 10

Come aggiungere testo all'inizio del file in Linux

Come aggiungere un'applicazione al Dock nel sistema operativo elementare

Come aggiungere un'applicazione nell'elenco delle applicazioni aperte in Ubuntu

Come aggiungere un'applicazione all'elenco delle applicazioni aperte?

Come aggiungere un segnalibro in Nautilus Folder Explorer?