Post

Estação de Trabalho como Código (Parte 5): Customizando o GNOME Terminal e a Interface do Ubuntu

Aprenda a personalizar o GNOME Terminal e a interface do Ubuntu 24.04 para criar um ambiente visualmente coeso e agradável. Este tutorial cobre instalação de fontes, criação de perfis customizados, temas profissionais e integração com sua estação de trabalho como código.

Estação de Trabalho como Código (Parte 5): Customizando o GNOME Terminal e a Interface do Ubuntu

Tutorial Anterior: Estação de Trabalho como Código (Parte 4.5): Menu SSH Interativo

Introdução

Após configurar ferramentas essenciais de linha de comando (Bash, Vim, Tmux, SSH), é hora de focar na experiência visual. O GNOME Terminal é a interface que você usará diariamente, e personalizá-lo adequadamente melhora significativamente a produtividade e o conforto visual.

Neste tutorial, vamos transformar o GNOME Terminal padrão em um ambiente profissional e visualmente agradável. Aprenderemos a instalar fontes modernas (NerdFonts), criar perfis customizados com temas elegantes e integrar tudo com nossa estrutura workspace-as-code. O resultado será uma estação de trabalho coesa, onde a interface visual reflete a qualidade da configuração interna.

Observação: Esta é uma parte focada em customização visual. Se você preferir manter a interface padrão do Ubuntu, pode pular para a Parte 6. No entanto, recomendamos completar esta parte para criar um ambiente profissional e agradável.

Objetivos desta Parte

  • Entender o que é GNOME Terminal e como funciona a configuração
  • Instalar NerdFonts para melhorar a aparência do terminal
  • Compreender como gsettings e dconf funcionam
  • Criar um script para gerenciar perfis de terminal
  • Adicionar múltiplos temas profissionais (Graphite, Solarized, Nord, Gruvbox, Tomorrow)
  • Criar e configurar um perfil customizado como padrão
  • Validar que todas as configurações foram aplicadas corretamente
  • Integrar o script com workspace-as-code e versioná-lo no Git

Pré-requisitos

  • Conclusão da Parte 4.5 desta série
  • GNOME Terminal instalado (padrão no Ubuntu 24.04)
  • Acesso a terminal com permissões de usuário
  • Conhecimento básico de linha de comando

A quem se destina

Este tutorial é ideal para:

  • SysAdmins: Que querem um terminal profissional e produtivo
  • DevOps Engineers: Que passam horas no terminal diariamente
  • Desenvolvedores: Que valorizam uma interface visual agradável
  • Profissionais de TI: Que querem um ambiente de trabalho coeso

Pré-conhecimento: Nenhum pré-conhecimento adicional é necessário além das partes anteriores.

Tempo Estimado

40-50 minutos

Isso inclui:

  • Leitura e compreensão: ~10 min
  • Instalação de fontes: ~5 min
  • Instalação de dependências: ~5 min
  • Criação de script: ~5 min
  • Testes e customização: ~10-15 min
  • Troubleshooting (se necessário): ~5 min

Dica Útil: Se você quiser apenas copiar e colar, pode fazer em 25 minutos. Mas recomendamos ler e entender cada seção.


Verificando Pré-Requisitos

Antes de começar, certifique-se de que seu ambiente está pronto:

Verificando GNOME Terminal

1
2
3
4
5
6
7
8
9
10
11
# Verifique se GNOME Terminal está instalado
$ which gnome-terminal

# Você deve ver:
# /usr/bin/gnome-terminal

# Verifique a versão
$ gnome-terminal --version

# Você deve ver algo como:
# GNOME Terminal 3.50.0

Verificando Dependências

1
2
3
4
5
6
7
8
9
10
11
# Verifique se gsettings está disponível
$ which gsettings

# Você deve ver:
# /usr/bin/gsettings

# Verifique se fc-cache está disponível (para fontes)
$ which fc-cache

# Você deve ver:
# /usr/bin/fc-cache

Se alguma ferramenta não for encontrada, instale:

1
2
3
4
5
# Instale ferramentas de fonte
$ sudo apt install fontconfig

# Instale ferramentas de configuração GNOME
$ sudo apt install dconf-cli gsettings-desktop-schemas

Entendendo a Configuração do GNOME Terminal

O que é gsettings?

gsettings é uma ferramenta de linha de comando que permite ler e modificar configurações do GNOME. Funciona através de esquemas (schemas) que definem as configurações disponíveis.

1
2
3
4
5
6
# Listar todos os esquemas disponíveis
$ gsettings list-schemas | grep -i terminal

# Você deve ver:
# org.gnome.Terminal.ProfilesList
# org.gnome.Terminal.Legacy.Profile

O que é dconf?

dconf é o backend de armazenamento para gsettings. Enquanto gsettings é a interface de alto nível, dconf é onde os dados são realmente armazenados.

1
2
3
4
5
6
7
# Ver configurações armazenadas em dconf
$ dconf dump /org/gnome/terminal/

# Você verá algo como:
# [legacy/profiles:/:...]
# visible-name='Default'
# background-color='#XXXXXX'

Estrutura de Configuração

ComponenteDescrição
SchemaDefine as configurações disponíveis (ex: org.gnome.Terminal.ProfilesList)
KeyConfiguração específica (ex: visible-name, background-color)
ValueValor da configuração (ex: ‘Dark’, ‘#1C1C1E’)
ProfileConjunto de configurações para um terminal (ex: Default, Dark, Light)

Instalando NerdFonts

NerdFonts são fontes monoespaciais com ícones integrados, perfeitas para terminais modernos.

Passo 1: Criar Diretório de Fontes

1
2
3
4
5
6
7
8
# Crie o diretório local para fontes
$ mkdir -p ~/.local/share/fonts

# Verifique se foi criado
$ ls -la ~/.local/share/

# Você deve ver:
# drwxr-xr-x fonts

Passo 2: Baixar NerdFont

1
2
3
4
5
6
7
8
9
10
# Navegue até o diretório de fontes
$ cd ~/.local/share/fonts

# Baixe a fonte Source Code Pro (recomendada)
$ wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/SourceCodePro.zip

# Você deve ver:
# Resolving github.com... [IP]
# Connecting to github.com... connected.
# HTTP request sent, awaiting response... 200 OK

Passo 3: Descompactar Fonte

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Descompacte o arquivo
$ unzip SourceCodePro.zip

# Você deve ver vários arquivos .ttf extraídos

# Remova o arquivo zip
$ rm SourceCodePro.zip

# Verifique os arquivos
$ ls -la *.ttf | head -5

# Você deve ver:
# -rw-r--r-- SourceCodePro-Bold.ttf
# -rw-r--r-- SourceCodePro-BoldItalic.ttf
# ... etc

Passo 4: Atualizar Cache de Fontes

1
2
3
4
5
6
7
8
9
10
11
12
13
# Atualize o cache de fontes
$ fc-cache -fv

# Você deve ver:
# /home/user/.local/share/fonts: caching, new cache contents: ...
# /home/user/.local/share/fonts: caching, new cache contents: ...

# Verifique se a fonte foi instalada
$ fc-list | grep -i "Source Code Pro"

# Você deve ver:
# /home/user/.local/share/fonts/SourceCodePro-Regular.ttf: Source Code Pro:style=Regular
# ... etc

Informação: O cache de fontes pode levar alguns segundos para atualizar. Se não aparecer imediatamente, aguarde e tente novamente.


Criando o Script de Gerenciamento de Perfis

Vamos criar um script robusto para gerenciar perfis de terminal com múltiplos temas.

Passo 1: Criar Diretório do Script

1
2
3
4
5
6
7
8
# Crie o diretório para o script
$ mkdir -p ~/workspace-as-code/scripts/gnome-terminal

# Verifique se foi criado
$ ls -la ~/workspace-as-code/scripts/

# Você deve ver:
# drwxr-xr-x gnome-terminal

Passo 2: Criar o Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
$ cat > ~/workspace-as-code/scripts/gnome-terminal/add-terminal-profile << 'EOF'
#!/usr/bin/env bash

################################################################################
# add-terminal-profile - Gerenciador de Perfis do GNOME Terminal
################################################################################
#
# Descrição:
#   Script para criar e gerenciar perfis personalizados no GNOME Terminal.
#   Suporta múltiplos temas profissionais com cores, fontes e configurações
#   customizáveis.
#
# Dependências:
#   - bash (versão 4.0+)
#   - gsettings (GNOME)
#   - uuidgen (util-linux)
#   - jq (JSON processor)
#
# Uso:
#   add-terminal-profile [OPÇÕES]
#
# Exemplos:
#   add-terminal-profile --theme graphite
#   add-terminal-profile -t solarized -f "Source Code Pro 12"
#   add-terminal-profile --list-themes
#
# Autor: Gean Martins (adaptado para workspace-as-code)
# Versão: 2.0.0
# Data: 2026-02-24
#
################################################################################

set -euo pipefail

# ============================================================================
# Definições de Cores
# ============================================================================

readonly RED='\033[0;31m'
readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly BLUE='\033[0;34m'
readonly CYAN='\033[0;36m'
readonly NC='\033[0m'

# ============================================================================
# Configurações Padrão
# ============================================================================

readonly DEFAULT_THEME="graphite"
readonly DEFAULT_FONT="SauceCodePro Nerd Font Mono 14"
readonly FALLBACK_FONT="Monospace 12"
readonly SET_AS_DEFAULT=true

# ============================================================================
# Definição de Temas
# ============================================================================

declare -A THEMES

THEMES[graphite]='{
  "name": "Graphite",
  "bg": "#1C1C1E",
  "fg": "#DADADA",
  "cursor": "#F4A623",
  "palette": "['"'"'#1C1C1E'"'"', '"'"'#E53E3E'"'"', '"'"'#76C893'"'"', '"'"'#F4A623'"'"', '"'"'#159BEE'"'"', '"'"'#A24BCF'"'"', '"'"'#56C7D6'"'"', '"'"'#EAEAEA'"'"', '"'"'#3A3A3C'"'"', '"'"'#FF6B6B'"'"', '"'"'#88E4A2'"'"', '"'"'#FFC857'"'"', '"'"'#50B7F5'"'"', '"'"'#BB6BD9'"'"', '"'"'#70D8E0'"'"', '"'"'#FFFFFF'"'"']"
}'

THEMES[solarized]='{
  "name": "Solarized Dark",
  "bg": "#002b36",
  "fg": "#839496",
  "cursor": "#b58900",
  "palette": "['"'"'#002b36'"'"', '"'"'#dc322f'"'"', '"'"'#859900'"'"', '"'"'#b58900'"'"', '"'"'#268bd2'"'"', '"'"'#d33682'"'"', '"'"'#2aa198'"'"', '"'"'#839496'"'"', '"'"'#073642'"'"', '"'"'#cb4b16'"'"', '"'"'#586e75'"'"', '"'"'#657b83'"'"', '"'"'#93a1a1'"'"', '"'"'#6c71c4'"'"', '"'"'#eee8d5'"'"', '"'"'#fdf6e3'"'"']"
}'

THEMES[nord]='{
  "name": "Nord",
  "bg": "#2E3440",
  "fg": "#D8DEE9",
  "cursor": "#81A1C1",
  "palette": "['"'"'#2E3440'"'"', '"'"'#BF616A'"'"', '"'"'#A3BE8C'"'"', '"'"'#EBCB8B'"'"', '"'"'#81A1C1'"'"', '"'"'#B48EAD'"'"', '"'"'#88C0D0'"'"', '"'"'#E5E9F0'"'"', '"'"'#4C566A'"'"', '"'"'#BF616A'"'"', '"'"'#A3BE8C'"'"', '"'"'#EBCB8B'"'"', '"'"'#81A1C1'"'"', '"'"'#B48EAD'"'"', '"'"'#8FBCBB'"'"', '"'"'#ECEFF4'"'"']"
}'

THEMES[gruvbox]='{
  "name": "Gruvbox Dark",
  "bg": "#282828",
  "fg": "#ebdbb2",
  "cursor": "#fabd2f",
  "palette": "['"'"'#282828'"'"', '"'"'#cc241d'"'"', '"'"'#98971a'"'"', '"'"'#d79921'"'"', '"'"'#458588'"'"', '"'"'#b16286'"'"', '"'"'#689d6a'"'"', '"'"'#a89984'"'"', '"'"'#928374'"'"', '"'"'#fb4934'"'"', '"'"'#b8bb26'"'"', '"'"'#fabd2f'"'"', '"'"'#83a598'"'"', '"'"'#d3869b'"'"', '"'"'#8ec07c'"'"', '"'"'#ebdbb2'"'"']"
}'

THEMES[tomorrow]='{
  "name": "Tomorrow Night",
  "bg": "#1d1f21",
  "fg": "#c5c8c6",
  "cursor": "#f0c674",
  "palette": "['"'"'#1d1f21'"'"', '"'"'#cc6666'"'"', '"'"'#b5bd68'"'"', '"'"'#f0c674'"'"', '"'"'#81a2be'"'"', '"'"'#b294bb'"'"', '"'"'#8abeb7'"'"', '"'"'#c5c8c6'"'"', '"'"'#969896'"'"', '"'"'#cc6666'"'"', '"'"'#b5bd68'"'"', '"'"'#f0c674'"'"', '"'"'#81a2be'"'"', '"'"'#b294bb'"'"', '"'"'#8abeb7'"'"', '"'"'#ffffff'"'"']"
}'

# ============================================================================
# Funções de Log
# ============================================================================

die() {
    echo -e "${RED}Erro: $*${NC}" >&2
    exit 1
}

warn() {
    echo -e "${YELLOW}Aviso: $*${NC}" >&2
}

success() {
    echo -e "${GREEN}$*${NC}"
}

info() {
    echo -e "${CYAN}$*${NC}"
}

# ============================================================================
# Funções Auxiliares
# ============================================================================

command_exists() {
    command -v "$1" &>/dev/null
}

show_usage() {
    cat << 'HELP'
Uso: add-terminal-profile [OPÇÕES]

Cria um perfil personalizado no GNOME Terminal.

Opções:
  -t, --theme TEMA       Escolhe o tema (padrão: graphite)
  -f, --font FONTE       Define a fonte (padrão: SauceCodePro Nerd Font Mono 14)
  -l, --list-themes      Lista temas disponíveis
  --no-default           Não define o perfil criado como padrão
  -h, --help             Mostra esta ajuda

Temas disponíveis:
  graphite      - Tema moderno com cores suaves
  solarized     - Tema Solarized Dark
  nord          - Tema Nord com cores frias
  gruvbox       - Tema Gruvbox Dark com cores quentes
  tomorrow      - Tema Tomorrow Night

Exemplos:
  add-terminal-profile --theme graphite
  add-terminal-profile -t solarized -f "Source Code Pro 12"
  add-terminal-profile --list-themes
HELP
}

list_themes() {
    info "Temas disponíveis:"
    echo ""
    for theme in "${!THEMES[@]}"; do
        local theme_name=$(echo "${THEMES[$theme]}" | jq -r '.name')
        printf "  %-15s - %s\n" "$theme" "$theme_name"
    done
    echo ""
}

# ============================================================================
# Verificação de Dependências
# ============================================================================

check_dependencies() {
    local missing=()
    
    if ! command_exists uuidgen; then
        missing+=("uuidgen (uuid-runtime)")
    fi
    
    if ! command_exists gsettings; then
        missing+=("gsettings (GNOME)")
    fi
    
    if ! command_exists jq; then
        missing+=("jq (JSON processor)")
    fi
    
    if [ ${#missing[@]} -gt 0 ]; then
        die "Dependências faltando: ${missing[*]}"
    fi
}

# ============================================================================
# Verificação de Fontes
# ============================================================================

check_font() {
    local font="$1"
    local font_family=$(echo "$font" | sed 's/ [0-9]\+$//')
    
    if ! fc-match "$font_family" >/dev/null 2>&1; then
        warn "Fonte '$font_family' não encontrada. Usando: $FALLBACK_FONT"
        echo "$FALLBACK_FONT"
    else
        echo "$font"
    fi
}

# ============================================================================
# Criação de Perfil
# ============================================================================

create_profile() {
    local theme="$1"
    local font="$2"
    
    # Validar tema
    if [[ -z "${THEMES[$theme]+x}" ]]; then
        die "Tema '$theme' não encontrado!"
    fi
    
    # Verificar fonte
    font=$(check_font "$font")
    
    # Extrair configurações do tema
    local theme_config="${THEMES[$theme]}"
    local name=$(echo "$theme_config" | jq -r '.name')
    local bg_color=$(echo "$theme_config" | jq -r '.bg')
    local fg_color=$(echo "$theme_config" | jq -r '.fg')
    local cursor_color=$(echo "$theme_config" | jq -r '.cursor')
    local palette=$(echo "$theme_config" | jq -r '.palette')
    
    # Criar novo perfil
    local profile_id=$(uuidgen)
    local profile_path="org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$profile_id/"
    
    info "Criando perfil: $name"
    
    # Atualizar lista de perfis
    local current_list=$(gsettings get org.gnome.Terminal.ProfilesList list)
    local new_list
    
    if [[ "$current_list" == "@as []" || "$current_list" == "[]" ]]; then
        new_list="['$profile_id']"
    else
        new_list=$(echo "$current_list" | sed "s/\]\$/, '$profile_id']/")
    fi
    
    gsettings set org.gnome.Terminal.ProfilesList list "$new_list"
    
    # Configurar perfil
    gsettings set "$profile_path" visible-name "$name"
    gsettings set "$profile_path" background-color "$bg_color"
    gsettings set "$profile_path" foreground-color "$fg_color"
    gsettings set "$profile_path" palette "$palette"
    gsettings set "$profile_path" font "$font"
    gsettings set "$profile_path" use-system-font false
    gsettings set "$profile_path" use-theme-colors false
    gsettings set "$profile_path" cursor-colors-set true
    gsettings set "$profile_path" cursor-foreground-color "$cursor_color"
    gsettings set "$profile_path" cursor-background-color "$bg_color"
    gsettings set "$profile_path" cursor-blink-mode 'on'
    
    # Configurar transparência
    if gsettings list-recursively | grep -q "use-transparent-background"; then
        gsettings set "$profile_path" use-transparent-background true
        gsettings set "$profile_path" background-transparency-percent 5
    fi
    
    # Definir como padrão
    if [ "$SET_AS_DEFAULT" = true ]; then
        gsettings set org.gnome.Terminal.ProfilesList default "$profile_id"
        success "Perfil '$name' criado e definido como padrão!"
    else
        success "Perfil '$name' criado!"
    fi
    
    info "ID do Perfil: $profile_id"
    info "Tema: $theme"
    info "Fonte: $font"
}

# ============================================================================
# Função Principal
# ============================================================================

main() {
    local theme="$DEFAULT_THEME"
    local font="$DEFAULT_FONT"
    
    while [[ $# -gt 0 ]]; do
        case $1 in
            -t|--theme)
                theme="$2"
                shift 2
                ;;
            -f|--font)
                font="$2"
                shift 2
                ;;
            -l|--list-themes)
                list_themes
                exit 0
                ;;
            --no-default)
                SET_AS_DEFAULT=false
                shift
                ;;
            -h|--help)
                show_usage
                exit 0
                ;;
            *)
                die "Opção desconhecida: $1"
                ;;
        esac
    done
    
    check_dependencies
    create_profile "$theme" "$font"
}

main "$@"
EOF

# Dê permissão de execução
$ chmod +x ~/workspace-as-code/scripts/gnome-terminal/add-terminal-profile

# Verifique se foi criado
$ ls -la ~/workspace-as-code/scripts/gnome-terminal/

# Você deve ver:
# -rwxr-xr-x add-terminal-profile

Passo 3: Instalar Dependências

1
2
3
4
5
6
7
8
# Instale jq (necessário para processar JSON)
$ sudo apt install jq

# Verifique a instalação
$ jq --version

# Você deve ver:
# jq-1.6
1
2
3
4
5
6
7
8
9
10
11
# Crie link simbólico para acesso global
$ sudo ln -s ~/workspace-as-code/scripts/gnome-terminal/add-terminal-profile /usr/local/bin/add-terminal-profile

# Verifique
$ which add-terminal-profile

# Você deve ver:
# /usr/local/bin/add-terminal-profile

# Teste o script
$ add-terminal-profile --help

Usando o Script

Listar Temas Disponíveis

1
2
3
4
5
6
7
8
9
10
11
# Liste todos os temas
$ add-terminal-profile --list-themes

# Você deve ver:
# Temas disponíveis:
#
#   graphite            - Tema moderno com cores suaves
#   solarized           - Tema Solarized Dark
#   nord                - Tema Nord com cores frias
#   gruvbox             - Tema Gruvbox Dark com cores quentes
#   tomorrow            - Tema Tomorrow Night

Criar Perfil com Tema Padrão

1
2
3
4
5
6
7
8
9
# Crie um perfil com o tema padrão (Graphite)
$ add-terminal-profile

# Você deve ver:
# Criando perfil: Graphite
# Perfil 'Graphite' criado e definido como padrão!
# ID do Perfil: 12345678-1234-1234-1234-123456789012
# Tema: graphite
# Fonte: SauceCodePro Nerd Font Mono 14

Criar Perfil com Tema Específico

1
2
3
4
5
6
7
8
# Crie um perfil Solarized
$ add-terminal-profile --theme solarized

# Crie um perfil Nord
$ add-terminal-profile -t nord

# Crie um perfil Gruvbox
$ add-terminal-profile --theme gruvbox

Criar Perfil com Fonte Customizada

1
2
3
4
5
# Crie perfil com fonte específica
$ add-terminal-profile -t solarized -f "Source Code Pro 12"

# Crie perfil com fonte grande
$ add-terminal-profile --theme nord --font "Monospace 16"

Criar Perfil Sem Definir como Padrão

1
2
3
4
5
# Crie perfil mas não defina como padrão
$ add-terminal-profile -t tomorrow --no-default

# Você deve ver:
# Perfil 'Tomorrow Night' criado!

Exemplos Práticos

Exemplo 1: Configuração Profissional Completa

1
2
3
4
5
6
7
8
9
10
11
# Instale a fonte
$ cd ~/.local/share/fonts
$ wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/SourceCodePro.zip
$ unzip SourceCodePro.zip && rm SourceCodePro.zip
$ fc-cache -fv

# Crie um perfil Graphite como padrão
$ add-terminal-profile --theme graphite

# Abra GNOME Terminal e veja a mudança
$ gnome-terminal

Exemplo 2: Múltiplos Perfis para Diferentes Contextos

1
2
3
4
5
6
7
8
9
10
11
# Crie perfil para produção (Solarized)
$ add-terminal-profile -t solarized

# Crie perfil para desenvolvimento (Nord)
$ add-terminal-profile -t nord --no-default

# Crie perfil para testes (Gruvbox)
$ add-terminal-profile -t gruvbox --no-default

# Agora você pode alternar entre perfis no GNOME Terminal
# Menu: Hambúrguer > Preferências > Perfis

Exemplo 3: Fonte Customizada

1
2
3
4
5
# Se você tiver outra NerdFont instalada
$ add-terminal-profile -t solarized -f "FiraCode Nerd Font 13"

# Ou use a fonte padrão do sistema
$ add-terminal-profile -t nord -f "Monospace 14"

Entendendo o Script

Seção 1: Definição de Temas

O script define 5 temas profissionais com paletas de cores específicas:

TemaEstiloUso Recomendado
GraphiteModerno, cores suavesUso geral, conforto visual
SolarizedCientífico, bem testadoDesenvolvimento, leitura
NordMinimalista, cores friasAmbientes corporativos
GruvboxQuente, cores vibrantesCriatividade, design
TomorrowLimpo, modernoUso geral, profissional

Seção 2: Verificação de Dependências

1
2
3
4
check_dependencies() {
    # Verifica se uuidgen, gsettings e jq estão instalados
    # Se faltar algo, o script sai com erro
}

Isso garante que o script só execute se tudo estiver disponível.

Seção 3: Criação de Perfil

1
2
3
4
5
6
7
create_profile() {
    # Gera UUID único para o perfil
    # Extrai configurações do tema
    # Atualiza lista de perfis no gsettings
    # Configura cada opção do perfil
    # Define como padrão (opcional)
}

Comparação de Temas

AspectoGraphiteSolarizedNordGruvboxTomorrow
Fundo#1C1C1E#002b36#2E3440#282828#1d1f21
Texto#DADADA#839496#D8DEE9#ebdbb2#c5c8c6
Cursor#F4A623#b58900#81A1C1#fabd2f#f0c674
TipoModernoCientíficoMinimalistaQuenteLimpo
ContrasteMédioAltoMédioAltoMédio

Troubleshooting

Erro: “jq not found”

Problema: jq não está instalado.

Solução:

1
2
3
4
$ sudo apt install jq

# Verifique
$ jq --version

Erro: “gsettings not found”

Problema: GNOME não está instalado ou gsettings não está disponível.

Solução:

1
2
3
4
5
# Instale GNOME
$ sudo apt install gnome-shell

# Ou instale ferramentas GNOME
$ sudo apt install dconf-cli gsettings-desktop-schemas

Erro: “Fonte não encontrada”

Problema: A fonte especificada não está instalada.

Solução:

1
2
3
4
5
6
7
8
# Verifique fontes instaladas
$ fc-list | grep -i "source code"

# Se não aparecer, instale novamente
$ cd ~/.local/share/fonts
$ wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/SourceCodePro.zip
$ unzip SourceCodePro.zip && rm SourceCodePro.zip
$ fc-cache -fv

Perfil não aparece no GNOME Terminal

Problema: Perfil foi criado mas não aparece na interface.

Solução:

1
2
3
4
5
6
7
# Feche e reabra GNOME Terminal
$ pkill gnome-terminal
$ gnome-terminal

# Ou reinicie o gerenciador de configurações
$ dconf reset -f /org/gnome/terminal/
$ add-terminal-profile --theme graphite

Cores não aparecem corretamente

Problema: As cores do tema não estão sendo aplicadas.

Solução:

1
2
3
4
5
6
7
8
# Verifique se o perfil foi criado
$ gsettings list-schemas | grep -i terminal

# Recrie o perfil
$ add-terminal-profile -t graphite

# Se persistir, reinicie a sessão GNOME
$ gnome-session-quit --no-prompt

Dicas e Boas Práticas

Dica 1: Teste Múltiplos Temas

1
2
3
4
5
6
# Crie vários perfis para experimentar
$ add-terminal-profile -t graphite --no-default
$ add-terminal-profile -t solarized --no-default
$ add-terminal-profile -t nord --no-default

# Alterne entre eles em Preferências > Perfis

Dica 2: Customize a Fonte por Contexto

1
2
3
4
5
# Perfil para leitura (fonte maior)
$ add-terminal-profile -t solarized -f "Monospace 16" --no-default

# Perfil para código (fonte menor)
$ add-terminal-profile -t nord -f "Monospace 11" --no-default

Dica 3: Crie Perfis para Diferentes Ambientes

1
2
3
4
5
6
7
8
# Produção (tema conservador)
$ add-terminal-profile -t solarized --no-default

# Desenvolvimento (tema vibrante)
$ add-terminal-profile -t gruvbox --no-default

# Testes (tema neutro)
$ add-terminal-profile -t nord --no-default

Dica 4: Mantenha Backup de Configurações

1
2
3
4
5
# Exporte configurações
$ dconf dump /org/gnome/terminal/ > ~/terminal-backup.dconf

# Restaure se necessário
$ dconf load /org/gnome/terminal/ < ~/terminal-backup.dconf

Dica 5: Integre com Seu Fluxo de Trabalho

1
2
3
4
5
6
7
# Crie alias para criar perfis rapidamente
$ echo "alias term-dark='add-terminal-profile -t graphite'" >> ~/.bash_aliases
$ echo "alias term-light='add-terminal-profile -t solarized'" >> ~/.bash_aliases

# Agora use
$ term-dark
$ term-light

Integrando com Seu Fluxo de Trabalho

Adicionar Script ao Git

1
2
3
4
5
# Adicione o script ao repositório
$ cd ~/workspace-as-code
$ git add scripts/gnome-terminal/
$ git commit -m "feat: add gnome terminal profile manager"
$ git push origin main

Criar Script de Setup Automático

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Crie script para setup completo
$ cat > ~/workspace-as-code/scripts/setup-terminal.sh << 'EOF'
#!/bin/bash
# Setup completo do GNOME Terminal

# Instale fontes
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/SourceCodePro.zip
unzip -o SourceCodePro.zip && rm SourceCodePro.zip
fc-cache -fv

# Crie perfis
add-terminal-profile -t graphite
add-terminal-profile -t solarized --no-default
add-terminal-profile -t nord --no-default

echo "Setup do GNOME Terminal concluído!"
EOF

$ chmod +x ~/workspace-as-code/scripts/setup-terminal.sh

Usar em Novo Computador

1
2
3
4
# Restaure configurações em novo computador
$ cd ~/workspace-as-code
$ git clone <seu-repositorio>
$ ./scripts/setup-terminal.sh

Validação de Sucesso

Para validar que tudo foi configurado corretamente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Verifique se a fonte está instalada
$ fc-list | grep -i "source code pro"

# Você deve ver:
# /home/user/.local/share/fonts/SourceCodePro-Regular.ttf: ...

# Verifique se o perfil foi criado
$ gsettings get org.gnome.Terminal.ProfilesList list

# Você deve ver:
# ['12345678-1234-1234-1234-123456789012', ...]

# Abra GNOME Terminal e verifique:
# - Fonte está correta
# - Cores estão aplicadas
# - Cursor está visível
# - Transparência funciona (se habilitada)

Conclusão

Você transformou o GNOME Terminal de uma interface padrão em um ambiente profissional e visualmente agradável. Agora sua estação de trabalho tem uma aparência coesa, refletindo a qualidade da configuração interna.

O Que Você Alcançou

✓ Instalação de NerdFonts para melhor aparência ✓ Compreensão de gsettings e dconf ✓ Criação de script robusto para gerenciar perfis ✓ Adição de 5 temas profissionais ✓ Criação de perfil customizado como padrão ✓ Validação de todas as configurações ✓ Integração com workspace-as-code

Próximos Passos Imediatos

  1. Instale as fontes:
    1
    2
    3
    4
    
    $ cd ~/.local/share/fonts
    $ wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/SourceCodePro.zip
    $ unzip SourceCodePro.zip && rm SourceCodePro.zip
    $ fc-cache -fv
    
  2. Crie seu primeiro perfil:
    1
    
    $ add-terminal-profile --theme graphite
    
  3. Abra GNOME Terminal e aprecie:
    1
    
    $ gnome-terminal
    
  4. Commit suas mudanças:
    1
    2
    3
    4
    
    $ cd ~/workspace-as-code
    $ git add scripts/gnome-terminal/
    $ git commit -m "feat: add gnome terminal profile manager"
    $ git push origin main
    

Próximo Tutorial

Com o terminal visualmente agradável, o próximo passo é explorar virtualização local para criar ambientes de desenvolvimento isolados.


Recursos Adicionais


Fim da Parte 5

Próxima: Configurando KVM e LIBVIRT

This post is licensed under CC BY 4.0 by the author.