Para Terminal GNOME > = 3.8 , para criar / editar / ler perfis através de cli,
você pode usar dconf-cli
ou gsettings
. Minha escolha é dconf-cli
.
% bl0ck_qu0te%
Crie um novo perfil
As etapas mínimas são
- Gere um UUID para o perfil executando o comando
uuidgen
- Anexá-lo 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 sejam definidas, um novo perfil será exibido na GUI do Terminal
configurações para que você possa editar as configurações através da 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 ,
% bl0ck_qu0te%
Você pode definir mais opções do perfil através do cli, se quiser. Executar
dconf write /org/gnome/terminal/legacy/profiles:/:UUID/KEY "'NAME'"
para definir. Você pode usar dconf-editor
para verificar as opções disponíveis. Navegue até um caminho como
%código%.
Seria melhor verificar um perfil antigo que tenha muitas opções definidas.
Duplicar um perfil
Você pode /org/gnome/terminal/legacy/profiles:/:9ca4ab84-42f2-4acf-8aa9-50e6351b209a/
um perfil antigo e dconf dump
para um existente. Então, 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 depois de substituir.
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
Basta escrever o UUID do perfil na chave load
:
dconf write $dconfdir/default "'$UUID'"
Referência
-
Anthony25 / gnome-terminal-colors -solarizado . Eu descubro meu caminho lendo muitos códigos daqui. Realmente útil.
- Manual de Referência do dconf