Comme tout le monde le sait, vous pouvez créer un nouveau profil à l'aide du menu qui vous demande quel profil existant doit être le parent de votre nouveau profil, etc. Mais comment dois-je créer un nouveau profil par la ligne de commande?
Devrais-je lire chaque valeur existante du profil par défaut via gconftool et les redéfinir sous un nouveau nom ou existe-t-il une meilleure solution? Si la réponse est oui: Dois-je faire attention au nouveau nom de profil? Les nouveaux sont toujours appelés Profile0
, Profile1
, Profile2
etc.
# savoir combien de pofiles il y a - au début, il y aura juste 1 - Par défaut profiles_list = $ (gconftool-2 --get "/ apps/gnome-terminal/global/profile_list "| sed" s |\[||; s | \] ||; ") echo" 1 Liste des profils: "$ {profiles_list} last_profile = $ (echo" $ {profiles_list } "| sed" s /^.*,// "| sed 's/Profile //') echo" Dernier nom/numéro de profil: "$ {last_profile} # définit le numéro X "ProfileX" sur 0 si seule la valeur par défaut est présente ou quelle que soit la dernière valeur plus 1 if [$ {last_profile} == "Par défaut"]; then next_profile_number = 0; echo "1 Nouveau numéro de profil:" $ {next_profile_number} else next_profile_number = $ (($ {last_profile} + 1) ); echo "2 Nouveau numéro de profil:" $ {next_profile_number} fi echo "Nouveau numéro de profil:" $ {next_profile_number} # construit la liste des profils avec le profil supplémentaire "numéro" profiles_list = $ (echo "[$ {profiles_list}, Profile $ {next_profile_number}]") echo "1 Liste des profils:" $ { profiles_list} # obtenir un dump du profil par défaut, remplacez le nom global par le nouveau nom de profil profileName = MyNewProfile gconftool-2 --dump "/ apps/gnome-terminal/profiles/Default "> /tmp/${USERBuch_gnome-terminal_profiles_${profileNameName.xml sed -i" s | Défaut | Profil $ {next_profile_number} | g "/ tmp /${USERBuch_gnome-terminal_profiles_${profileNameName.xml[.____. Printer.f.#.____. Page_# charger un nouveau profil Gconftool-2 --load/tmp/$ {USER} _gnome-terminal_profiles_ $ {profileName} .xml # tell g nome-terminal qui a un autre profil gconftool-2 --set --type liste --list-type chaîne "/ apps/gnome-terminal/global/profile_list" "$ {profiles_list}" # définir les propriétés gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/nom_visible "$ {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 $ {prochain_fichier_profil}/background_color "# 000000000000 " gconftool-2 --set --type chaîne/apps/gnome-terminal/profiles/Profil $ {next_profile_number}/foreground_color" # 0000FFFF0000 " gconftool-2 --set --type chaîne/apps/gnome-terminal/profiles/Profile $ {numéro_du_profil_prochaine}/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/Profil $ {next_profile_number}/use_theme_colors "false" gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profil $ {next_profile_number}/login_Shell "true" gconftool-2 --set --type boolean/gnome-terminal/profiles/Profile $ {next_profile_number}/scrollback_unlimited "true" # créer un terminal gnome-terminal --geometry = 80x24 + 0 + 0 - profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/bin/sh"[.____.______
Vous ne pouvez pas créer de nouveau profil, mais vous pouvez vider votre configuration actuelle à l’aide de gconftool-2
, la modifier et la charger.
gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml
## Modify the file here.
gconftool-2 --load gnome-terminal-conf.xml
N'oubliez pas qu'il ne renvoie que les valeurs non définies par défaut (ou ce que gconf détecte comme non définies par défaut), de sorte que le fichier résultant ne peut pas être complet.
Pour Terminal GNOME> = 3.8 , pour créer/modifier/lire des profils via cli, vous pouvez utiliser dconf-cli
ou gsettings
name__. Mon choix est dconf-cli
.
Le répertoire dconf du terminal GNOME est
/org/gnome/terminal/legacy/profiles:
. Toutes les opérations ont lieu dans ce répertoire. Je le stocke dans$dconfdir
qui est indiqué dans les scripts ci-dessous.
Les pas minimum sont
uuidgen
name__list
name__: dconf write "$dconfdir/list" "[..., 'UUID']"
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 guillemets autour de la valeur que vous écrivez. Comme dit dans le manuel ,
Lorsque vous définissez une clé, vous devez également spécifier un
VALUE
name__. Le format de la valeur est celui d’un GVariant sérialisé. Par exemple, une chaîne doit inclure des guillemets 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 tel que /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.
Vous pouvez dconf dump
un ancien profil et load
à un profil existant. Ainsi, pour dupliquer un profil, vous devez en créer un en utilisant les étapes ci-dessus, puis copier un ancien profil pour le remplacer. N'oubliez pas de le renommer après avoir annulé.
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)
Il suffit d'écrire l'UUID du profil sur la clé default
name__:
dconf write $dconfdir/default "'$UUID'"
Simple. Utilisation:
Fichier-> Nouveau profil sur votre terminal.
Voir ici pour plus de détails.
Références: