GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Cara Menambahkan Elemen Ke Array Gsettings Di Lokasi Tertentu (diberikan Berdasarkan Indeks)?

Saya ingin menulis skrip yang menerjemahkan devilspie 's jendela aturan menjadi aturan compiz'. Pengaturan Compiz dapat diubah dengan gsettings kunci di jalur org.compiz.profiles.unity.plugins.place . Ada tiga kunci:viewport-matches , viewport-x-values dan viewport-y-values . Sayangnya setiap kunci adalah larik, dan indeks elemen penting.

Gsettings tidak memiliki dukungan array jenis selain menulis ulang seluruh array sekaligus, dan saya perlu menempatkan item dalam array di lokasi tertentu (misalnya, di awal, indeks '1').

Saya tahu, bahwa jika saya tidak peduli dengan indeks, saya dapat menggunakan

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

Pertanyaan melengkapi Bagaimana cara menghapus elemen dari larik gsettings dalam skrip?

Jawaban yang Diterima:

Skrip python3 berikut akan menyisipkan elemen baru pada indeks yang diberikan:

#!/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. Bagaimana Cara Menambahkan Opsi Shutdown Ke Layar Kunci Ubuntu?

  2. Bagaimana Cara Menambahkan Indikator-datetime Ke Panel?

  3. Bagaimana Cara Menambahkan Pengaturan Xfwm4 Ke Preferensi Windows Di Lubuntu?

  1. Bagaimana cara menambahkan baris baru ke akhir file?

  2. Cara Menampilkan File Saya sebagai Halaman Default

  3. Bagaimana cara menambahkan folder ke bilah sisi di Ubuntu?

  1. Bagaimana Cara Menambahkan Pintasan Folder Ke Peluncur?

  2. Bagaimana Cara Mendapatkan Localhost Dengan Direktori Berbeda Agar Indeks Bekerja?

  3. Bagaimana Cara Menambahkan Evolution Ke Menu Pesan?