Pour GNOME Terminal> = 3.8 , pour créer / éditer / lire des profils via cli, vous pouvez utiliser soit dconf-cli
ou gsettings
. Mon choix est dconf-cli
.
Le répertoire dconf du terminal GNOME est
/org/gnome/terminal/legacy/profiles:
. Toutes les opérations se déroulent dans ce répertoire. Je le stocke dans $dconfdir
ce qui est montré dans les scripts ci-dessous.
Créer un nouveau profil
Les étapes minimales sont
- Générez un UUID pour le profil en exécutant la commande
uuidgen
- Ajoutez-le à
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Réglez son
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Après cela, même si de nombreux paramètres ne sont pas définis, un nouveau profil apparaîtra dans les paramètres de l'interface graphique du terminal afin que vous puissiez modifier les paramètres via l'interface graphique.
Un script de travail:
#!/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)
Faites attention aux citations autour de la valeur que vous écrivez. Comme indiqué dans le manuel ,
Lors de la définition d'une clé, vous devez également spécifier a VALUE
. Le format de la valeur est celle d'un GVariant sérialisé, donc par exemple une chaîne doit inclure des citations explicites: "'foo'"
. Ce format est également utilisé lors de l'impression des valeurs.
Vous pouvez définir plus d'options du profil via cli si vous le souhaitez. Courir
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
mettre en place. Vous pouvez utiliser dconf-editor
pour vérifier les options disponibles. Accédez à un chemin comme
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Il serait préférable de vérifier un ancien profil comportant de nombreuses options.
Dupliquer un profil
Vous pouvez dconf dump
un ancien profil et le load
remplacer par un existant. Donc, pour dupliquer un profil, vous devez en créer un nouveau en suivant les étapes ci-dessus et copier le profil d'un ancien pour le remplacer. N'oubliez pas de le renommer après avoir remplacé.
Un script de travail:
# ... 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
Pour obtenir l'UUID d'un profil par son nom:
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)
Définir un profil par défaut
Écrivez simplement l'UUID du profil sur la clé default
:
dconf write $dconfdir/default "'$UUID'"
Référence