GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment ajouter un élément au tableau Gsettings à l'emplacement spécifique (donné par l'index) ?

Je veux écrire un script qui traduit devilspie les règles de la fenêtre de s dans les règles de compiz. Les paramètres Compiz peuvent être modifiés par gsettings clés dans le chemin org.compiz.profiles.unity.plugins.place . Il y a trois clés :viewport-matches , viewport-x-values et viewport-y-values . Malheureusement, chaque clé est un tableau et l'index des éléments est important.

Gsettings n'a aucun support de array types autres que la réécriture de tout le tableau à la fois, et je dois placer l'élément dans le tableau à l'emplacement spécifique (par exemple, au début, index '1').

Je sais que si je ne me soucie pas de l'index, je peux utiliser

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

La question complète Comment supprimer un élément du tableau gsettings dans le script ?

Réponse acceptée :

Le script python3 suivant insérera de nouveaux éléments à un index donné :

#!/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. Comment ajouter une option d'arrêt à l'écran de verrouillage Ubuntu ?

  2. Comment ajouter un indicateur-datetime au panneau ?

  3. Comment ajouter les paramètres Xfwm4 aux fenêtres de préférences dans Lubuntu ?

  4. Comment utiliser le gestionnaire d'index dans cPanel

  5. Comment ajouter un dossier à la barre latérale dans Ubuntu ?

Comment ajouter un fond d'écran au terminal Debian 10

Comment ajouter du texte au début du fichier sous Linux

Comment ajouter une application au Dock dans un système d'exploitation élémentaire

Comment ajouter une application dans la liste des applications ouvertes avec Ubuntu

Comment ajouter une application à la liste des applications ouvertes avec ?

Comment ajouter un signet dans l'explorateur de dossiers Nautilus ?