GNU/Linux >> Linux の 問題 >  >> Ubuntu

特定の場所(インデックスで指定)のGsettings配列に要素を追加するにはどうすればよいですか?

devilspieを翻訳するスクリプトを書きたい のウィンドウルールをcompizルールに変換します。 Compizの設定は、gsettingsで変更できます。 パスorg.compiz.profiles.unity.plugins.placeのキー 。 3つのキーがあります:viewport-matchesviewport-x-values およびviewport-y-values 。残念ながら、各キーは配列であり、要素のインデックスが重要です。

Gsettings arrayのサポートがありません 配列全体を一度に書き換える以外のタイプで、配列内の特定の場所(たとえば、最初にインデックス「1」)にアイテムを配置する必要があります。

インデックスを気にしない場合は、使用できることを知っています

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

質問は、スクリプトのgsettings配列から要素を削除する方法を補足しますか?

承認された回答:

次のpython3スクリプトは、指定されたインデックスに新しい要素を挿入します:

#!/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. Ubuntuのロック画面にシャットダウンオプションを追加するにはどうすればよいですか?

  2. インデックスとは異なるディレクトリを持つローカルホストを機能させる方法は?

  3. メッセージングメニューに進化を加える方法は?

  1. ファイルの最後に改行を追加するにはどうすればよいですか?

  2. パネルにインジケーター-日時を追加する方法は?

  3. Ubuntu のサイドバーにフォルダを追加するにはどうすればよいですか?

  1. Lubuntuの設定ウィンドウにXfwm4設定を追加する方法は?

  2. cPanelでインデックスマネージャーを使用する方法

  3. マイファイルをデフォルトページとして表示する方法