GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak přidat prvek do pole Gsettings na konkrétním místě (daném indexem)?

Chci napsat skript, který přeloží devilspie 's window rules do compiz' pravidel. Nastavení Compiz lze změnit pomocí gsettings klíče v cestě org.compiz.profiles.unity.plugins.place . Existují tři klíče:viewport-matches , viewport-x-values a viewport-y-values . Bohužel každý klíč je pole a na indexu prvků záleží.

Gsettings postrádá jakoukoli podporu array jiné typy než přepisování celého pole najednou a potřebuji umístit položku do pole na konkrétní místo (řekněme na začátku index ‚1‘).

Vím, že pokud mě index nezajímá, mohu použít

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

Otázka doplňuje Jak odstranit prvek z pole gsettings ve skriptu?

Přijatá odpověď:

Následující skript python3 vloží nový prvek(y) na daný index:

#!/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. Jak přidat zástupce složky do spouštěče?

  2. Jak zajistit, aby Localhost s jiným adresářem než index fungoval?

  3. Jak přidat Evolution do nabídky zpráv?

  1. Jak přidat nastavení Xfwm4 do předvoleb Windows v Lubuntu?

  2. Jak zobrazit Můj soubor jako výchozí stránku

  3. Jak přidám složku na postranní panel v Ubuntu?

  1. Jak přidat nový řádek na konec souboru?

  2. Jak přidat možnost vypnutí na obrazovku uzamčení Ubuntu?

  3. Jak přidat indikátor-datetime na panel?