quinta-feira, 23 de abril de 2026

O Journal no Linux para a guarda e consulta de logs do sistema

O sistema de logs da maioria das distribuições Linux é o Journal, que faz parte do systemd tão criticado pelos mais "raiz" no uso do sistema. O Journal é o serviço que grava todos os logs gerados pelo sistema, desde o boot até a finalização do uso na máquina. Normalmente esses dados são carregados em memória e dinamicamente alocado no disco, podendo ser acessados pelo comando journalctl seguido de parâmetros que, para um usuário mais iniciante, pode ser um saco saber. Por exemplo, para saber os logs do ssh:

journalctl -xe | grep ssh
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
abr 23 10:26:13 debian systemd[736]: Starting gcr-ssh-agent.socket - GCR ssh-agent wrapper...
abr 23 10:26:13 debian systemd[736]: Starting gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation)...
abr 23 10:26:13 debian systemd[736]: Starting ssh-agent.socket - OpenSSH Agent socket...
abr 23 10:26:13 debian systemd[736]: Listening on gcr-ssh-agent.socket - GCR ssh-agent wrapper.
abr 23 10:26:13 debian systemd[736]: Listening on ssh-agent.socket - OpenSSH Agent socket.
abr 23 10:26:13 debian systemd[736]: Listening on gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation).
abr 23 10:26:22 debian gpg-agent[971]: using fd 4 for ssh socket (/run/user/1001/gnupg/S.gpg-agent.ssh)
abr 23 10:26:22 debian gpg-agent[971]: listening on: std=3 extra=6 browser=5 ssh=4
abr 23 10:26:22 debian gpg-agent[976]: using fd 4 for ssh socket (/run/user/1001/gnupg/S.gpg-agent.ssh)
abr 23 10:26:22 debian gpg-agent[976]: listening on: std=3 extra=6 browser=5 ssh=4

Nesse exemplo que vou mostrar, mostra um usuário editando o GDM3 para ser o gerenciador de login gráfico:

journalctl -b | grep gdm
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
abr 23 10:27:25 debian sudo[1993]: sidserra : TTY=pts/0 ; PWD=/home/sidserra ; USER=root ; COMMAND=/usr/bin/nano /etc/gdm3/daemon.conf
abr 23 10:27:53 debian sudo[2655]: sidserra : TTY=pts/0 ; PWD=/home/sidserra ; USER=root ; COMMAND=/usr/bin/systemctl enable gdm3
abr 23 10:27:57 debian sudo[2938]: sidserra : TTY=pts/0 ; PWD=/home/sidserra ; USER=root ; COMMAND=/usr/bin/systemctl enable gdm
abr 23 10:28:22 debian sudo[3362]: sidserra : TTY=pts/0 ; PWD=/home/sidserra ; USER=root ; COMMAND=/usr/sbin/dpkg-reconfigure gdm3

Também é possível "monitorar" o Journal em tempo real em busca de algum tipo de problema que não permitiu (ou não permite) algum programa ou recurso funcionar no sistema; o exemplo abaixo fica de olho no que acontece na sessão do usuário:

 journalctl --user -f
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "640x480"x0.0 30.24 640 704 768 864 480 483 486 525 -hsync -vsync (35.0 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "640x480"x0.0 25.18 640 656 752 800 480 490 492 525 -hsync -vsync (31.5 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "720x400"x0.0 28.32 720 738 846 900 400 412 414 449 -hsync +vsync (31.5 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "1024x768"x0.0 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync (60.0 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "1024x768"x0.0 75.00 1024 1048 1184 1328 768 771 777 806 -hsync -vsync (56.5 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "1024x768"x0.0 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "832x624"x0.0 57.28 832 864 928 1152 624 625 628 667 -hsync -vsync (49.7 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "800x600"x0.0 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync (46.9 kHz e)
abr 23 18:17:18 debian /usr/libexec/gdm-x-session[680]: (II) modeset(0): Modeline "800x600"x0.0 50.00 800 856 976 1040 600 637 643 666 +hsync +vsync (48.1 kHz e)

De um modo geral, o usuário praticamente nunca vai usar esse tipo de recurso - verificar logs - pois normalmente quem faz esse tipo de coisa são usuários mais experientes ou mesmo aqueles que querem conhecer mais do sistema.

Há programas gráficos para isso e um deles é o Gnome Logs e normalmente já vem instalado:


Linux: O Journal no Linux para a guarda e consulta de logs do sistema
Apesar da moçada mais ligada na bagaça preferir linha de comando por já terem esse conhecimento, essa ferramenta gráfica é bastante útil e tem até procura e exportação de logs para arquivo de texto.

Uma coisa que pode ser problemática é que os logs podem ficar quilométricos já que registram tudo mas dá pra configurar certas coisas no recurso de modo a se adequar a máquinas mais antigas com poucos recuros (disco rígido lento, pouca memória ram e de baixa velocidade, processador modesto, etc). O arquivo de configuração fica em /etc/systemd/journald.conf. Uma configuração legal vai depender do tipo de uso da máquina e por quanto tempo se quer logs guardados para acesso posterior. O comando abaixo "mede" mais ou menos o quanto de dados são gerados em 24 horas:


journalctl --since "24 hours ago" | wc -c
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
10203872

O número 10203872 mostra que um dia (últimas 24 horas) de uso da máquina geraram 10MB de logs; de posse desse dado dá pra dosar mais ou menos o tamanho dos logs para que não pese no uso da máquina. Edite o arquivo /etc/systemd/journald.conf:

sudo nano /etc/systemd/journald.conf

Bote # em todas as linhas e coloque esses parâmetros:

[journal]
Storage=persistent
SystemMaxUse=50M
SystemMaxFileSize=5M
RuntimeMaxUse=20M
Compress=yes
Seal=no
RateLimitIntervalSec=30s
RateLimitBurst=200
MaxRetentionSec=7day
SyncIntervalSec=5m

Salve e reinicie a máquina. Esse parâmetro (SystemMaxUse=50M) limita o tamanho dos logs a 50MB e, comparando com a configuração de 10MB da máquina, é suficiente para aproximadamente 5 dias. Você pode mudar esse parâmetro de acordo com a situação mas normalmente os valores originais dão conta. A configuração "por fora" é mais para garantir logs mais simples e menores para não ocupar espaço em disco e que também não é aquela perda de espaço como pode parecer.

Para saber qual o tamanho dos logs do journal:


journalctl --disk-usage

Para a pasta de logs (espaço real usado em disco):

sudo du -sh /var/log/journal

Para dar uma "flushada" caso seus logs sejam grandes:

sudo journalctl --vacuum-size=50M

O comando dado vai fazer o journal "limpar" os logs mais antigos. Para SSD, bote no arquivo journald.conf as linhas (mostrando o que cada linha faz):

[Journal]
Storage=persistent

# Limite bem controlado no disco
SystemMaxUse=100M
SystemMaxFileSize=10M

# RAM como buffer
RuntimeMaxUse=30M

# Compressão ajuda a reduzir escrita total
Compress=yes

# Integridade desligada (menos escrita extra)
Seal=no

# Evita flood de logs
RateLimitIntervalSec=30s
RateLimitBurst=200

# Retenção moderada
MaxRetentionSec=7day

# Reduz frequência de sync (menos escrita no SSD)
SyncIntervalSec=10m

Salve e reinicie a máquina e veja como a máquina se comporta. Você pode zerar os logs pra começar as coisas de modo limpo:

sudo systemctl stop systemd-journald
sudo rm -rf /var/log/journal/*
sudo systemctl start systemd-journald

Essas configurações, como dito antes, visam otimizar o uso do recurso de modo a não ficar com tudo gigantão, facilitando o gerenciamento dos logs em caso de problemas.

sexta-feira, 17 de abril de 2026

Dando uma turbinada no terminal bash

Nessa dica eu mostro como dar uma configurada mais avançada no bash e no zsh mas tem usuários que podem ter alguns problemas com o zsh (eu mesmo já tive), então resolvi fazer essa dica para implementar funções mais avançadas aos moldes que vemos no zsh.

Parte da dica citada acima vai servir de base, então vale uma lida lá antes de tentar essa aqui. Primeiro comece instalado os pacotes:

sudo apt install zoxide zfz bash-completion

Após isso, faça backup do seu ~/.bashrc:

cp ~/.bashrc ~/.bashrc-bkp

Agora abra o seu ~/.bashrc atual, apague o conteúdo e coloque esse aqui (depois de editado, dê um source ~./bashrc):

# ~/.bashrc

# =========================
# INTERATIVO
# =========================
case $- in
    *i*) ;;
      *) return;;
esac

# =========================
# HISTÓRICO
# =========================
HISTCONTROL=ignoreboth
HISTSIZE=10000
HISTFILESIZE=20000
shopt -s histappend
shopt -s checkwinsize

# =========================
# PROMPT
# =========================
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
esac

# =========================
# CORES LS
# =========================
if [ -x /usr/bin/dircolors ]; then
    eval "$(dircolors -b)"
    alias ls='ls --color=auto'
fi

# =========================
# ALIASES EXTERNOS
# =========================
[ -f ~/.bash_aliases ] && . ~/.bash_aliases

# =========================
# ZOXIDE
# =========================
eval "$(zoxide init bash)"

# =========================
# FZF
# =========================
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border --info=inline"

[ -f /usr/share/doc/fzf/examples/key-bindings.bash ] && \
  source /usr/share/doc/fzf/examples/key-bindings.bash

zi() {
  local dir
  dir=$(zoxide query -l | fzf --height 40% --layout=reverse --border --preview 'ls -la {}') && cd "$dir"
}

# =========================
# FZF - HISTÓRICO EXATO
# =========================
fzf-history-widget-exact() {
  local selected
  selected=$(history | tac | sed 's/^[ ]*[0-9]*[ ]*//' | \
    FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS --exact" fzf)

  if [ -n "$selected" ]; then
    READLINE_LINE="$selected"
    READLINE_POINT=${#READLINE_LINE}
  fi
}

# escolha o atalho (recomendado Alt+F)
bind -x '"\ef": fzf-history-widget-exact'

Não esqueça que o zoxide precisa "aprender" o seu histórico caso você tenha instalado o recurso agora:

cat ~/.bash_history \
| sed 's/^: [0-9]*:[0-9]*;//' \
| grep -E '^cd ' \
| sed 's/^cd //' \
| while read -r dir; do
    dir="${dir/#\~/$HOME}"
    [ -d "$dir" ] && zoxide add "$dir"
done

O funcionamento é o mesmo mostrado na dica citada acima. Lembrando que o zoxide é um "cd melhorado com busca" onde você digita parte da pasta que você já entrou e ele mostra uma lista; se a pasta for completa, já entra direto desde que já tenha sido acessada anteriormente. Se digitar só "zi" sem as aspas você cai direto na pesquisa e conforme vai digitando as opções vão diminuindo conforme ficar mais completo o nome de onde você quer ir.

Agora o fzf é um "procurador de histórico" e procura por tudo que você já tenha digitado em termos de comando. No terminal, apertando CTRL+R você vai para uma listagem onde conforme vai digitando a listagem vai diminuindo; chegando onde quer, enter.

Linux: Dando uma turbinada no bash
Dá até pra combinar palavras:

Linux: Dando uma turbinada no bash
Agora uma espécie de suggestions, onde você digita parte de um comando inicial e usando as teclas de setas pra cima e pra baixo mostra as opções complementares de comandos já efetuados. Por exemplo, se você digitar sem as aspas "sudo apt-mark" e usar as setas de direção TODAS as entradas de comandos já digitadas e presentes no histórico (~/.bash_history) que tenham a opção de início "sudo apt-mark" aparecerão conforme o uso das setas. Crie o arquivo ~./inputrc:

nano ~/.inputrc

Coloque dentro:

$include /etc/inputrc

# command history search
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

# extended auto-completation with tab
set show-all-if-ambiguous on
set completion-ignore-case on

# colors
set colored-completion-prefix on
set colored-stats on

# misc
set blink-matching-paren on
set mark-symlinked-directories on

Salve e feche o arquivo, reinicie a sessão e pronto. Esse recurso não "antecipa" o comando mas é melhor do que ficar procurando com as teclas de setas; e ainda temos o fzf e zoxide que fornece indiretamente essa opção.

O ~/.inputrc é interessante ter pois ele dá cores ao uso do TAB para complementar o comando e para deixar tudo mais completo, no seu ~/.bashrc coloque isso aqui DEPOIS do esac do Interativo:

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Vai ficar assim:

Linux: Dando uma turbinada no bash
Complementando: o CTRL+R pode encontrar mais do que deveria, "pulverizando" as palavras mais curtas com o conteúdo de outras opções encontradas. Por exemplo, mandando procurar por "sudo apt" ele pode expandir a procura para outras coisas que tenham su, do e até mesmo as letras da procura inicial. Para uma procura "de gente grande, use o ALT+F, aí sim é procura exata.

E para evitar que comandos muito curtos (como o z, zi, cd ~/ e tal) entrem no histórico, coloque isso no seu ~/.basrc na parte de histórico, que fica aqui:

# =========================
# HISTÓRICO
# =========================
HISTCONTROL=ignoreboth
HISTSIZE=10000
HISTFILESIZE=20000
shopt -s histappend
shopt -s checkwinsize

export HISTIGNORE="ls:cd ~/*:clear:quit:z*:zi*"

Essa linha (de exemplo) vai impedir que linhas começando por:
  • ls
  • cd ~/
  • clear
  • quit
  • z
  • zi

entrem no histórico. Se quiser colocar mais itens é só acrescentar os mesmos, mantendo os itens dentro das aspas e separando-os por dois pontos. E se você quiser limpar o seu histórico com os itens mostrados:

grep -vE '^(ls|cd ~\/|clear|quit)\b' ~/.bash_history > /tmp/bash_history_clean && \
mv /tmp/bash_history_clean ~/.bash_history && \
history -c && \
history -r

E outra vez você pode inserir novos itens dentro de:

(ls|cd ~\/|clear|quit)


mantendo a seleção dentro dos parênteses e separados por | (aquele caracter usado com o grep).

Terminal bash quase "profissa"...




segunda-feira, 13 de abril de 2026

Configurando o Cairo Dock individualmente em ambientes diferentes na mesma máquina

Nessa dica eu mostro como instalar e configurar o Cairo Dock, um dock de ícones bem avançado ainda para os dias de hoje mesmo que o desenvolvimento principal tenha parado. O que temos hoje então são patches providos pelas distribuições que incluem o pacote nos seus repositórios mas basicamente não há mais atualizações por parte do desenvolvedor mas ainda hoje está plenamente funcional e agradável no seu uso.

Há usuários que possuem mais de um ambiente gráfico na máquina (como eu) de modo a preencher todos os quesitos de usabilidade que o usuário procura na sua máquina; usar o Cairo Dock em mais de um ambiente na mesma máquina pode fazer com que duas instâncias do dock apareçam e não é isso que queremos. Aqui vou mostrar como separar as configurações do Cairo Dock para que cada ambiente gráfico possua o seu próprio, com seus ícones, funcionalidades e aparência. Vou fazer essa dica levando em conta o XFCE, o Gnome e o Plasma 6 com o XFCE sendo o ambiente principal. Atenção que isso é para X11.

Primeiro de tudo, tire da pasta ~/·config/autostart os atalhos de inicialização do Cairo Dock. Essa pasta é comum aos ambientes gráficos e se você colocar um atalho em cada ambiente que você usa o Cairo Dock irá iniciar em todos eles, tendo então mais de uma instância em funcionamento. No Terminal vamos criar as pastas individuais de configuração, que fica na ~/.config/cairo-dock. Vou usar como base a que é usada no XFCE.

Do XFCE para o Gnome:

cp -r ~/.config/cairo-dock ~/.config/cairo-dock-gnome

Do XFCE para o Plasma 6:

cp -r ~/.config/cairo-dock ~/.config/cairo-dock-plasma

Do XFCE para o XFCE (apenas para uniformizar as configurações):

cp -r ~/.config/cairo-dock ~/.config/cairo-dock-xfce

Crie o arquivo de auto-início em /usr/local/bin com o nome cairo-dock-auto:

sudo nano /usr/local/bin/cairo-dock-auto

Coloque lá dentro:

#!/bin/bash

DE="$XDG_CURRENT_DESKTOP"
SESSION="$XDG_SESSION_TYPE"

# evita Wayland (o :contentReference[oaicite:0]{index=0} sofre aqui)
if [[ "$SESSION" == "wayland" ]]; then
    exit 0
fi

sleep 12

if [[ "$DE" == *KDE* ]]; then
    cairo-dock -o -d "$HOME/.config/cairo-dock-plasma"

elif [[ "$DE" == *XFCE* ]]; then
    cairo-dock -o -d "$HOME/.config/cairo-dock-xfce"

elif [[ "$DE" == *GNOME* ]]; then
    cairo-dock -o -d "$HOME/.config/cairo-dock-gnome"

else
    cairo-dock -o
fi

Salve com CTRL+O e feche com CTRL+X. Depois, no Terminal:

sudo chmod +x /usr/local/bin/cairo-dock-auto

Agora coloque na inicialização automática esse script usando as ferramentas de configuração do seu ambiente gráfico - só basta fazer isso uma vez e em um deles. Ou crie a entrada manualmente:

sudo nano ~/.config/autostart/cairo-dock-auto

Coloque dentro:

[Desktop Entry]
Exec=cairo-dock-auto
Icon=
Name=cairo-dock-auto
Path=
Terminal=False
Type=Application

Salve e dê o chmod +x à essa entrada. Depois disso basta sair da sessão e entrar na do Plasma, por exemplo: o Cairo Dock vai abrir com a mesma cara que no Gnome e no XFCE, então configure-o conforme você desejar para uso no Plasma. Depois vá para o Gnome e faça a mesma coisa lá. Pode configurar tudo, animações, tipo de dock, ícones e tudo mais, cada configuração será guardada individualmente sem interferir na outra.

quinta-feira, 9 de abril de 2026

Máquina modesta - a vez dos navegadores ferrarem o usuário

Nessa dica ou mostro como "consertar" um erro no navegador Brave em relação ao webgl que é utilizado para a navegação e interação com sites comuns e de jogos que precisam desse recurso. Mas isso não é apenas em relação ao Brave, também se estende para demais navegadores baseados no Chrome e, por enquanto, o Firefox (que não é "chromado") ainda está funcional na sua versão 149 (na presente data desse artigo no Debian 13).

O problema não vai ficar só nos navegadores mas vai se estender a outros itens do seu setup em relação às configurações. É inevitável que a tecnologia tem que avançar e isso demanda novos hardwares que deem as funcionalidades necessárias aos softwares e vice-versa e é difícil, dentro do leque de milhões de configurações mundo afora, manter a compatibilidade com tudo. O que temos hoje ocorrendo:
  • Gnome abandonando o X11 para usar Wayland;
  • Programas como OBS Studio "pedindo" OpenGL mais atual e, por consequência, drivers e até placa de vídeo;
  • Devido às novas versões, ambientes gráficos como o Plasma 6 mais novo tem os efeitos de desktop no mínimo possível se não possuir drivers/OpenGL mais novos (3.0+);
  • Navegadores que, por conta de suas próprias atualizações, acabam se "descompatibilizando" com o sistema de vídeo devido às mudanças do pipeline e do motor gráfico, com listas negras que inserem lá placas de vídeo que podem ser problemáticas no uso da navegação.

E tudo isso ocorre (ou pode ocorrer) em sistemas que possuam placas de vídeo (vou me manter nas Intel da vida):
  • Intel Série GMA 950/3000;
  • Intel série (chipset) G41/45;
  • Intel série "i" - primeira geração.

Já nas listadas abaixo podem começar a peidar na farofa:
  • Intel série "i" de segunda e terceira gerações.

Por enquanto estão de fora as Intel série "i" de 4ª geração pra frente. E essas limitações levam o usuário a passar por diversas escolhas, três delas listadas abaixo:
  • Procurar um sistema que ofereça suporte ao hardware utilizado mesmo que isso o faça usar distribuições menos amigáveis;
  • Procurar outros softwares que não precisem de "coisas mais atuais" ou adaptar o que usa para tal;
  • Se tudo falhar, comprar hardware novo ou mudar para um usado mais "acima" do que o atual e que preencha os requisitos mínimos de funcionalidade.

Tem gente que fica pistola com isso, diz que é "obsolescência programada", ou que é "conspiração tecnológica" mas não sabe p*rra nenhuma de manutenção de funcionalidades x recursos de hardware. Em uma comparação simples, vai colocar turbo em um motor aspirado sem fazer as mudanças necessárias para ver o que acontece. O motor é uma m*rda? Não, só que pra funcionar com turbo há uma série de medidas a serem tomadas para lidar, por exemplo, com o aumento de pressão, a maior injeção de combustível e por aí vai.

Pros dias de hoje - no caso de Informática, OpenGL abaixo de 3.0 estão defasados frente ao que já existe e a compatibilidade está pouco a pouco acabando. Instale na sua máquina:

sudo apt install mesa-utils vulkan-tools

Para saber a sua placa de vídeo e qual o OpenGL dela:

glxinfo | grep "OpenGL"

Deverá aparecer algo assim:

OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) G41 (ELK)
OpenGL version string: 2.1 Mesa 25.0.7-2
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 25.0.7-2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:

O que está em negrito já mostra as informações da placa de vídeo e do OpenGL que já entrega a eventual necessidade de upgrade ou de procurar ou usar algo mais compatível. Já o comando:

vkcube

mostra uma animação atestando a funcionalidade da aceleração mesmo que de forma empírica.

Linux: Maquina modesta - a vez dos navegadores ferrarem o usuario 
 

Em todo caso, o usuário tem que ter em mente que tudo tem limite, querer usar uma máquina - por exemplo - Atom com 1GB de RAM - e querer que ela se comporte mediamente bem como desktop é o mesmo que achar que a "Çelessão Barasileira" vai ser hexa nos próximos 20 anos.

Não é só o ambiente gráfico, todo sistema, "leve" ou não, tem seu limite funcional dentro do que o usuário espera ter, não tem milagre nenhum.

Quem fala que "roda tudo" (meu zôvú!) em máquina modesta (perereca) é porque NUNCA rodou tudo e sim apenas o que ele precisou que rodasse, assim até eu...


 

quarta-feira, 8 de abril de 2026

Otimizando o uso do bash

Eu já tinha feito uma postagem sobre otimização do bash para quem curte usar o Terminal (acesse-a clicando aqui) e aqui vou complementar a postagem anterior, dotando o bash (não do zsh) de um auto-suggestion colorido e um "leitor" de histórico (history search) que vai facilitar a procura de comandos já feitos no sistema. Tudo isso também pode ser implementado no ZSH (outro shell) com plugins próprios mas aqui é - pelo menos por enquanto - para uso no bash que é o padrão das distribuições.

O auto-suggestions é o recurso de você digitar a parte inicial de um comando, apertar TAB e são mostradas as opções de comandos disponíveis a partir daquele "pedaço" que você digitou. Por exemplo, digitando "apt" ou "system" e dando TAB:

 


Vão aparecer as opções disponíveis completas para o item digitado - daí o "suggestions".

Já o history search é o recurso de você digitar parte de um comando, como "sudo apt", usar as teclas de direção e os comandos que já foram feitos iniciando com "sudo apt" vão aparecendo. Vamos então ver como implementar essas duas opções que até já podem existir mas vamos deixá-las mais adequadas. Abra o Terminal e digite:

nano ~/.inputrc

Coloque dentro e depois salve (crtl+o) e feche o arquivo (ctrl+x), reiniciando a sessão.

$include /etc/inputrc

# command history search
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

# extended auto-completation with tab
set show-all-if-ambiguous on
set completion-ignore-case on

# colors
set colored-completion-prefix on
set colored-stats on

Com isso, se você tiver no seu histórico do Bash (~/.bash_history), por exemplo, "nano", ao digitar "nano" e usar as teclas de direção pra cima e pra baixo tudo que você já digitou tendo no início "nano" (nano ~/.conkyrc, nano ~/.bashrc, etc) vai aparecendo; chegando ao que você precisa, basta usar TAB ou a seta para a direita e dar enter. E os comandos dados em parte e apertando TAB os comandos possíveis aparecerão como a primeira imagem dessa postagem.

segunda-feira, 6 de abril de 2026

Consertando o erro no Brave de webgl

Hoje em dia está cada vez mais difícil usar máquina modesta devido aos avanços das tecnologias e a eventual perda de suporte a certos recursos.

O navegador Brave acima da versão 1.70 não consegue mais criar um "contexto opengl" pois precisa do OpenGL acima da versão 3.0 para rodar. O navegador funciona mas para coisas como joguinhos 3D no navegador e mesmo ver vídeos o desempenho pode diminuir ou mesmo não funcionar, com a página aparecendo mas não carregando, ou tudo lento ou aparecendo uma mensagem tipo:

error - could not initialize webgl - sorry

Você pode ver isso indo no Brave e digitando isso aqui no campo de endereços:

brave://gpu/

Atenção aos itens destacados:

Linux: Consertando o erro no Brave de webgl
Se estiverem "disable" já era, mesmo que nas configurações de aceleração a mesma esteja habilitada. Vamos então usar uma versão anterior do navegador. No terminal (Debian e agregados):

wget https://github.com/brave/brave-browser/releases/download/v1.64.122/brave-browser_1.64.122_amd64.deb

Depois disso, desinstale a versão anterior, apague a pasta ~/.cache/BraveSoftware e depois:
  • sudo dpkg -i brave-browser_1.64.122_amd64.deb
  • sudo apt install -f (atenção: NÃO atualize!)
  • sudo apt-mark hold brave-browser

Esses comandos vão instalar o navegador, corrigir as dependências (mas NÃO atualize!) e marcar o pacote como "retido" (não será atualizado futuramente pelo apt).

Vão dizer para usar outro navegador mas pode ocorrer de alguns recursos, como localização, não sejam reconhecidos nos outros navegadores ou o usuário gosta do navegador e quer ficar com ele, então essa é uma "solução temporária" para quando houver possibilidade de um upgrade de hardware, como placa de vídeo mesmo sendo onboard - nesse caso, placa nova e/ou processador novo.


terça-feira, 31 de março de 2026

Zoxide e fzf no bash para incrementar o uso do Terminal

zoxide e o fzf são programas externos que são usados junto do shell (terminal) para acelerar a entrada de pastas e listar possibilidades de entradas disponíveis no histórico. Combinando os dois é possível achar comandos e "entradas cd" (de pastas) para deixar o uso do terminal mais agradável. O problema é que implementar isso acaba deixando o usuário preguiçoso mas vamos lá assim mesmo. Isso pode ser feito também no zsh mas vou mostrar primeiro como fazer no bash.

No Debian e agregados:

sudo apt install fzf zoxide

Abra o arquivo ~/.bashrc:

nano ~/.bashrc

Cole dentro, lá no final do arquivo:

eval "$(zoxide init bash)"

Salve e feche o arquivo. Recarregue o bash:

source ~/.bashrc


Agora todas as pastas em que você entrar no terminal usando bash serão guardadas num banco de dados e dota o seu terminal de um "acelerador". Digamos que você já tenha entrado na pasta .config; basta você digitar sem as aspas "z .config" (nem precisa ser o .config completo, .conf já serve já que é pasta e não arquivo) e o prompt vai aparecer o .config mais novo que você entrou. Se digitar zi config  você vai habilitar o modo de procura caso haja mais de uma entrada disponível:

Linux: Usando o zoxide e fzf no bash do Terminal

 Basta então escolher na listagem qual o que você quer usando as setas de direção. E o interessante é que você não precisa digitar o nome da pasta completo, basta digitar "z pasta ou parte do nome" e o zoxide vai direto na última entrada. A única necessidade é que você já tenha entrado na pasta individualmente via cd anteriormente. E, na listagem, ainda mostra as eventuais subpastas presentes nas entradas como ilustra a imagem acima.

Veja os exemplos:

  • z share = Vai entrar na pasta mas recente com a entrada share, por exemplo, /usr/local/share;
  • zi share = vai listar as entradas do histórico do bash que possuem "share" e pode ser escolhida a entrada com as setas de direção;
  • z local = Mesmo que a pasta exista (por exemplo, /usr/local) se você não tiver entrado nela anteriormente via cd (cd /usr/local) não vai achar nada. O zoxide não completa caminhos sozinho e sim se baseia no histórico do shell;

  • zi con = Vai listar as pastas já visitadas que tenham "con", como no exemplo abaixo.

  • Linux: Usando o zoxide e fzf no bash do Terminal

     Lembrando, a pasta TEM que estar no histórico. Se você tiver entrado na /usr/local ou /usr/local/share (atenção ao negrito de ambas) o comando z local ou z share vai achar as entradas MAS NÃO VAI entrar em z usr pois você não entrou nenhuma vez na pasta /usr individualmente.

    Depois de instalado o programa precisa "aprender" as pastas que você entra pois ele "linka" ao ~/.bash_history. Para saber o que o zoxide já "aprendeu", abra o terminal e digite:

    zoxide query -l

    Devem aparecer algumas entradas de comandos de pastas que você já tenha feito. Se estiver em branco é necessário "ensinar" para já "pegar" o que você já tem. Para acelerar o aprendizado, no terminal:

    cat ~/.bash_history \
    | sed 's/^: [0-9]*:[0-9]*;//' \
    | grep -E '^cd ' \
    | sed 's/^cd //' \
    | while read -r dir; do
        dir="${dir/#\~/$HOME}"
        [ -d "$dir" ] && zoxide add "$dir"
    done

    Pronto, o zoxide já está "esperto" para listar o que está no seu histórico. Se precisar apagar o banco de dados:

    rm -rf ~/.local/share/zoxide/db.zo

    e refaça o penúltimo comando mostrado aqui para "ensinar" o seu histórico de pastas ao zoxide.

    Só pra deixar claro, o "z" é o substituto do "cd", é como um alias para o comando "cd"; o "z" mais o resto faz o zoxide saber que você está querendo entrar em pastas e esse "z" é o zoxide que determina; poderia ser configurado o j, p ou qualquer outra letra mas vamos ficar no z mesmo.

    E lembrando:
    • z pasta ou nome parcial: entra na mais recente;
    • zi pasta ou nome parcial: mostra as pastas acessadas numa lista e que pode ser escolhida a entrada desejada via setas do teclado.