Dla GNOME Terminal> = 3,8 , do tworzenia / edycji / odczytu profili poprzez CLI, można użyć jednej dconf-cli
lub gsettings
. Mój wybór to dconf-cli
.
Katalog dconf terminala GNOME to
/org/gnome/terminal/legacy/profiles:
. Wszystkie operacje odbywają się w tym reż. Przechowuję go w tym, $dconfdir
co pokazano w poniższych skryptach.
Utwórz nowy profil
Minimalne kroki to
- Wygeneruj identyfikator UUID dla profilu, uruchamiając polecenie
uuidgen
- Dołącz do
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Ustaw jego
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Następnie, nawet jeśli wiele ustawień nie jest skonfigurowanych, nowy profil pojawi się w ustawieniach GUI terminala, aby można było edytować ustawienia za pomocą GUI.
Działający skrypt:
#!/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)
Uważaj na cytaty wokół pisanej wartości. Jak powiedziano w instrukcji ,
Podczas ustawiania klucza musisz także określić VALUE
. Format wartości jest to, że zserializowanego GVariant, więc np ciąg musi zawierać wyraźne cytaty: "'foo'"
. Ten format jest również używany podczas drukowania wartości.
Możesz ustawić więcej opcji profilu za pomocą cli, jeśli chcesz. Biegać
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
ustawić. Możesz użyć, dconf-editor
aby sprawdzić dostępne opcje. Przejdź do ścieżki podobnej do
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Lepiej byłoby sprawdzić stary profil z ustawionymi wieloma opcjami.
Zduplikuj profil
Możesz dconf dump
stary profil i load
istniejący. Aby zduplikować profil, musisz utworzyć nowy, wykonując powyższe kroki, i skopiować profil starego, aby go zastąpić. Pamiętaj, aby zmienić nazwę po zastąpieniu.
Działający skrypt:
# ... 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
Aby uzyskać identyfikator UUID profilu według jego nazwy:
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)
Ustaw profil jako domyślny
Po prostu wpisz UUID profilu do klucza default
:
dconf write $dconfdir/default "'$UUID'"
Odniesienie