Für GNOME Terminal> = 3.8 können Sie zum Erstellen / Bearbeiten / Lesen von Profilen über cli entweder dconf-cli
oder verwenden gsettings
. Meine Wahl ist dconf-cli
.
Das Verzeichnis dconf von GNOME Terminal lautet
/org/gnome/terminal/legacy/profiles:
. Alle Operationen finden in diesem Verzeichnis statt. Ich speichere es, in $dconfdir
dem in den Skripten unten gezeigt wird.
Erstellen Sie ein neues Profil
Mindestschritte sind
- Generieren Sie eine UUID für das Profil, indem Sie den Befehl ausführen
uuidgen
- Hänge es an
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Stellen Sie seine
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Danach wird in den GUI-Einstellungen von Terminal ein neues Profil angezeigt, damit Sie die Einstellungen über die GUI bearbeiten können, auch wenn nicht viele Einstellungen festgelegt wurden.
Ein funktionierendes Skript:
#!/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)
Achten Sie auf die Anführungszeichen um den Wert, den Sie schreiben. Wie im Handbuch gesagt ,
Beim Festlegen eines Schlüssels müssen Sie auch a angeben VALUE
. Das Format für den Wert ist die ein serialisiert GVariant, so zB ein String explizite Anführungszeichen enthalten muss: "'foo'"
. Dieses Format wird auch beim Ausdrucken von Werten verwendet.
Sie können weitere Optionen des Profils über cli festlegen, wenn Sie möchten. Lauf
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
zu setzen. Mit können dconf-editor
Sie verfügbare Optionen prüfen. Navigieren Sie zu einem Pfad wie
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Es ist besser, ein altes Profil zu überprüfen, für das viele Optionen festgelegt wurden.
Dupliziere ein Profil
Sie können dconf dump
ein altes Profil undload
es einem vorhandenen zuordnen. Um ein Profil zu duplizieren, müssen Sie ein neues mit den obigen Schritten erstellen und ein altes Profil kopieren, um es zu überschreiben. Denken Sie daran, es nach dem Überschreiben umzubenennen.
Ein funktionierendes Skript:
# ... 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
So rufen Sie die UUID eines Profils anhand seines Namens ab:
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)
Ein Profil als Standard festlegen
Schreiben Sie einfach die UUID des Profils in den Schlüssel default
:
dconf write $dconfdir/default "'$UUID'"
Referenz