Para GNOME Terminal> = 3.8 , para crear / editar / leer perfiles a través de cli, puede usar dconf-cli
o gsettings
. Mi elección es dconf-cli
.
El directorio dconf de GNOME Terminal es
/org/gnome/terminal/legacy/profiles:
. Todas las operaciones suceden en este directorio. Lo guardo en el $dconfdir
que se muestra en los scripts a continuación.
Crea un nuevo perfil
Los pasos mínimos son
- Genere un UUID para el perfil ejecutando el comando
uuidgen
- Añádelo a
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Establecer su
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Después de eso, incluso si no se configuran muchas configuraciones, aparecerá un nuevo perfil en la configuración de la GUI de la Terminal para que pueda editar la configuración a través de la GUI.
Un guión de trabajo:
#!/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)
Tenga cuidado con las citas alrededor del valor que escribe. Como se dice en el manual ,
Al configurar una clave, también necesita especificar a VALUE
. El formato para el valor es el de un GVariant serializado, por lo que por ejemplo una cadena debe incluir cotizaciones explícitas: "'foo'"
. Este formato también se utiliza al imprimir valores.
Puede configurar más opciones del perfil a través de cli si lo desea. correr
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
para establecer Puede usar dconf-editor
para verificar las opciones disponibles. Navega a un camino como
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Sería mejor verificar un perfil antiguo que tiene muchas opciones establecidas.
Duplicar un perfil
Puede dconf dump
un perfil antiguo y load
uno existente. Por lo tanto, para duplicar un perfil, debe crear uno nuevo siguiendo los pasos anteriores y copiar un perfil antiguo para anularlo. Recuerde cambiarle el nombre después de anularlo.
Un guión de trabajo:
# ... 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
Para obtener el UUID de un perfil por su nombre:
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)
Establecer un perfil como predeterminado
Simplemente escriba el UUID del perfil en la clave default
:
dconf write $dconfdir/default "'$UUID'"
Referencia