Como todos saben, puede crear un nuevo perfil mediante el menú donde se le pregunta qué perfil existente debería ser el padre de su nuevo perfil, etc. Pero, ¿cómo debo crear un nuevo perfil mediante la línea de comando?
¿Debo leer todos los valores existentes del perfil predeterminado a través de gconftool y configurarlos nuevamente con un nuevo nombre o hay alguna solución mejor? Si la respuesta es sí: ¿Tengo que prestar atención al nuevo nombre de perfil? Los nuevos siempre se llaman Profile0
, Profile1
, Profile2
etc.
# averigüe cuántos archivos hay - al principio solo habrá 1 - Predeterminado profiles_list = $ (gconftool-2 --get "/ apps/gnome-terminal/global/profile_list "| sed" s |\[||; s | \] ||; ") echo" 1 Lista de perfiles: "$ {profiles_list} last_profile = $ (echo" $ {profiles_list } "| sed" s /^.*,// "| sed 's/Profile //') echo" Apellido/Número de perfil: "$ {last_profile} # establezca el número "ProfileX" X en 0 si solo existe el valor predeterminado o lo que sea el último más 1 si [$ {last_profile} == "Valor predeterminado"]; luego next_profile_number = 0; echo "1 Nuevo número de perfil:" $ {next_profile_number} else next_profile_number = $ (($ {last_profile} + 1) ); echo "2 Nuevo número de perfil:" $ {next_profile_number} fi echo "New Profile Number:" $ {next_profile_number} # lista de perfiles de construcción con perfil adicional "número" profiles_list = $ (echo "[$ {profiles_list}, Perfil $ {next_profile_number}]") echo "1 Lista de perfiles:" $ { profiles_list} # obtener un volcado del perfil predeterminado, cambiar el nombre global al nuevo nombre de perfil profileName = MyNewProfile gconftool-2 --dump "/ apps/gnome-terminal/profiles/Default "> /tmp/${USER}_gnome-terminal_profiles_${profileName}.xml[.____.font>sed -i" s | Default | Perfil $ {next_profile_number} | g "/ tmp /${USER}_gnome-terminal_profiles_${profileName}.xml[.____.font>[.____.font># load new profile Gconftool-2 --load/tmp/$ {USER} _gnome-terminal_profiles_ $ {profileName} .xml # tell g nome-terminal que tiene otro perfil gconftool-2 --set --type list --list-type string "/ apps/gnome-terminal/global/profile_list" "$ {profiles_list}" # set propiedades gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/visible_name "$ {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 $ {next_profile_number}/background_color "# 000000000000 " gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/foreground_color" # 0000FFFF0000 " gconftool-2 --set --type string/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/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/Profile $ {next_profile_number}/use_theme_colors "false" gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/login_Shell "true" gconftool-2 --set --type boolean/apps/gnome-terminal/profiles/Profile $ {next_profile_number}/scrollback_unlimited "true" # crea un terminal gnome-terminal --geometry = 80x24 + 0 + 0 - profile = $ {profileName} title "$ {profileName}" --zoom 0.8 -e "/bin/sh"[.____.font>
No puede crear un nuevo perfil, pero puede volcar su configuración actual, usando gconftool-2
, modificarlo y cargarlo.
gconftool-2 --dump '/apps/gnome-terminal' > gnome-terminal-conf.xml
## Modify the file here.
gconftool-2 --load gnome-terminal-conf.xml
Recuerde que solo devuelve los valores no predeterminados (o lo que gconf detecta como no predeterminado), por lo que el archivo resultante no se pudo completar.
Para Terminal GNOME> = 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$dconfdir
que se muestra en los scripts a continuación.
Los pasos mínimos son
uuidgen
list
: dconf write "$dconfdir/list" "[..., 'UUID']"
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 dijo en manual ,
Al configurar una clave, también necesita especificar un
VALUE
. El formato para el valor es el de un GVariant serializado, por ejemplo, una cadena debe incluir comillas 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. Navegue a una ruta como /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Sería mejor verificar un perfil antiguo que tiene muchas opciones establecidas.
Puede dconf dump
un perfil antiguo y load
a 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)
Simplemente escriba el UUID del perfil en la clave default
:
dconf write $dconfdir/default "'$UUID'"