Para o Terminal GNOME> = 3.8 , para criar / editar / ler perfis através do cli, você pode usar dconf-cli
ou gsettings
. Minha escolha é dconf-cli
.
O diretório dconf do Terminal GNOME é
/org/gnome/terminal/legacy/profiles:
. Todas as operações acontecem neste diretório. Eu guardo no $dconfdir
qual é mostrado nos scripts abaixo.
Crie um novo perfil
Etapas mínimas são
- Gere um UUID para o perfil executando o comando
uuidgen
- Acrescente-o a
list
:dconf write "$dconfdir/list" "[..., 'UUID']"
- Defina seu
visible-name
:dconf write "$dconfdir/:UUID"/visible-name "'NAME'"
Depois disso, mesmo que muitas configurações não estejam definidas, um novo perfil será exibido nas configurações da GUI do Terminal para que você possa editar as configurações pela GUI.
Um script de trabalho:
#!/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)
Tenha cuidado com as aspas em torno do valor que você escreve. Como dito no manual ,
Ao definir uma chave, você também precisa especificar a VALUE
. O formato para o valor é a de um GVariant serializado, então por exemplo, uma cadeia tem de incluir citações explícitas: "'foo'"
. Este formato também é usado ao imprimir valores.
Você pode definir mais opções do perfil através do CLI, se desejar. Corre
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
pôr. Você pode usar dconf-editor
para verificar as opções disponíveis. Navegue para um caminho como
/org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
. Seria melhor verificar um perfil antigo com muitas opções definidas.
Duplicar um perfil
Você pode criar um dconf dump
perfil antigo e load
um existente. Portanto, para duplicar um perfil, você precisa criar um novo usando as etapas acima e copiar o perfil de um antigo para substituí-lo. Lembre-se de renomeá-lo após a substituição.
Um script de trabalho:
# ... 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 obter o UUID de um perfil pelo nome:
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)
Definir um perfil como padrão
Simplesmente escreva o UUID do perfil na chave default
:
dconf write $dconfdir/default "'$UUID'"
Referência