コマンドライン経由でGnomeターミナルの新しいプロファイルを作成するにはどうすればよいですか?


15

誰もが知っているように、メニューから新しいプロファイルを作成することができます。このメニューでは、どの既存プロファイルを新しいプロファイルの親にするかなどを尋ねられます。しかし、コマンドラインで新しいプロファイルを作成するにはどうすればよいですか?

gconftoolを使用してデフォルトのプロファイルから既存の値をすべて読み取り、新しい名前で再度設定する必要がありますか、それともより良い解決策がありますか?答えが「はい」の場合:新しいプロファイル名に注意を払う必要がありますか?新しいものは常に呼ばれProfile0Profile1Profile2など


回答:


3
#pofileの数を調べる-最初は1つだけ-デフォルト
profiles_list = $(gconftool-2 --get "/ apps / gnome-terminal / global / profile_list" | sed "s | \ [||; s | \] ||;")
echo "1プロファイルリスト:" $ {profiles_list}
last_profile = $(echo "$ {profiles_list}" | sed "s /^.*,//" | sed 's / Profile //')
echo "最後のプロファイル名/番号:" $ {last_profile}

#デフォルトのみが存在する場合、または最後がプラス1である場合は、「ProfileX」X番号を0に設定
if [$ {last_profile} == "Default"]; それから
    next_profile_number = 0;
echo "1新しいプロファイル番号:" $ {next_profile_number}
そうしないと
    next_profile_number = $(($ {last_profile} + 1));
echo "2新しいプロファイル番号:" $ {next_profile_number}
fi
echo "新しいプロファイル番号:" $ {next_profile_number}

#追加のプロファイル「番号」でプロファイルリストを作成
profiles_list = $(echo "[$ {profiles_list}、Profile $ {next_profile_number}]")
echo "1プロファイルリスト:" $ {profiles_list}

#デフォルトプロファイルのダンプを取得し、グローバル名を新しいプロファイル名に変更します
profileName = MyNewProfile
gconftool-2 --dump "/ apps / gnome-terminal / profiles / Default"> /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml
sed -i "s | Default | Profile $ {next_profile_number} | g" /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

#新しいプロファイルをロード
gconftool-2 --load /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml

#別のプロファイルを持つgnome-terminalに伝える
gconftool-2 --set --type list --list-type string "/ apps / gnome-terminal / global / profile_list" "$ {profiles_list}"

#プロパティを設定
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / visible_name "$ {profileName}"
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / exit_action "hold"
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / font "Monospace 14"
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / background_color "#000000000000"
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / foreground_color "#0000FFFF0000"
gconftool-2 --set --type string / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / scrollbar_position "hidden"
gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_system_font "false"
gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / use_theme_colors "false"
gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / login_shell "true"
gconftool-2 --set --type boolean / apps / gnome-terminal / profiles / Profile $ {next_profile_number} / scrollback_unlimited "true"

#ターミナルを作成
gnome-terminal --geometry = 80x24 + 0 + 0 --profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/ bin / sh"


9

新しいプロファイルを作成することはできませんが、を使用して現在の構成をダンプしgconftool-2、変更してロードすることができます。

gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml
## Modify the file here.
gconftool-2 --load gnome-terminal-conf.xml

デフォルト以外の値(またはgconfがデフォルト以外として検出する値)のみを返すため、結果のファイルは完全ではないことに注意してください。


5

以下のためにGNOMEターミナル> = 3.8、作成する/編集/ CLIを使用してプロファイルを読んで、あなたはいずれかを使用することができますdconf-cligsettings。私の選択はdconf-cliです。

GNOMEターミナルのdconfディレクトリは /org/gnome/terminal/legacy/profiles:です。すべての操作はこのディレクトリで行われます。$dconfdir以下のスクリプトに示されている場所に保存します。

新しいプロファイルを作成する

最小ステップは

  1. コマンドを実行して、プロファイルのUUIDを生成します uuidgen
  2. 以下に追加しlistます。dconf write "$dconfdir/list" "[..., 'UUID']"
  3. その設定visible-namedconf write "$dconfdir/:UUID"/visible-name "'NAME'"

その後、多くの設定が設定されていない場合でも、新しいプロファイルがターミナルのGUI設定に表示されるので、GUIを使用して設定を編集できます。

作業スクリプト:

#!/bin/bash
dconfdir=/org/gnome/terminal/legacy/profiles:

create_new_profile() {
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))
    local profile_name="$1"
    local profile_ids_old="$(dconf read "$dconfdir"/list | tr -d "]")"
    local profile_id="$(uuidgen)"

    [ -z "$profile_ids_old" ] && local lb="["  # if there's no `list` key
    [ ${#profile_ids[@]} -gt 0 ] && local delimiter=,  # if the list is empty
    dconf write $dconfdir/list \
        "${profile_ids_old}${delimiter} '$profile_id']"
    dconf write "$dconfdir/:$profile_id"/visible-name "'$profile_name'"
    echo $profile_id
}

# Create profile
id=$(create_new_profile TEST)

記述する値を囲む引用符に注意してください。マニュアルで述べたように、

キーを設定するときは、を指定する必要もありますVALUE。値の形式は、シリアル化されたGVariantの形式です"'foo'"。たとえば、文字列には明示的な引用符を含める必要があります。この形式は、値を出力するときにも使用されます。

必要に応じて、cliを使用してプロファイルのオプションをさらに設定できます。走る

dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"

設定する。利用可能なdconf-editorオプションを確認するために使用できます。などのパスに移動します /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/。多くのオプションが設定されている古いプロファイルを確認することをお勧めします。

プロファイルを複製する

dconf dump古いプロファイルとload既存のプロファイルを作成できます。したがって、プロファイルを複製するには、上記の手順を使用して新しいプロファイルを作成し、古いプロファイルをコピーして上書きする必要があります。オーバーライドした後は、必ず名前を変更してください。

作業スクリプト:

# ... codes from last script

duplicate_profile() {
    local from_profile_id="$1"; shift
    local to_profile_name="$1"; shift
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))

    # If UUID doesn't exist, abort
    in_array "$from_profile_id" "${profile_ids[@]}" || return 1
    # Create a new profile
    local id=$(create_new_profile "$to_profile_name")
    # Copy an old profile and write it to the new
    dconf dump "$dconfdir/:$from_profile_id/" \
        | dconf load "$dconfdir/:$id/"
    # Rename
    dconf write "$dconfdir/:$id"/visible-name "'$to_profile_name'"
}

# Create a profile from an existing one
duplicate_profile $id TEST1

名前でプロファイルのUUIDを取得するには:

get_profile_uuid() {
    # Print the UUID linked to the profile name sent in parameter
    local profile_ids=($(dconf list $dconfdir/ | grep ^: |\
                        sed 's/\///g' | sed 's/://g'))
    local profile_name="$1"
    for i in ${!profile_ids[*]}; do
        if [[ "$(dconf read $dconfdir/:${profile_ids[i]}/visible-name)" == \
            "'$profile_name'" ]]; then
            echo "${profile_ids[i]}"
            return 0
        fi
    done
}

id=$(get_profile_uuid Default)

プロファイルをデフォルトとして設定する

プロファイルのUUIDをキーに書き込むだけdefaultです:

dconf write $dconfdir/default "'$UUID'"

参照


これが最も正確で最新のものであるため、私たちは間違いなくこの答えを支持しなければなりません!私はこれをしばらく自分で探していて、設定しdconf watch /、最終的に何が起こっているのかを見つけました。答えは@joegnisが書いたように正確です。ただ、UUIDを作成し、データベースとセットにそれを書くvisible-name/list
カミル

2

シンプル。使用する:

端末のファイル->新規プロファイル

詳細はこちらをご覧ください。

参照:


1
質問では、メニューを使用するのではなく、代わりにコマンドラインを使用します。
ジョナサンハートリー

あまり助けにはならなかった大丈夫、推測
レイナルゴーベル

1
これは、すべてのGoogleを経由してここに来て私たちの残りの部分の助けをする-あなたは...それはOPを助けていませんが、他の人を助けることができると言って答えを編集かもしれない(私を助けて!)
セージ

1
GUIの新しいQ&A を作成しました
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.