Tecnologia / Blog /
Fiz as pazes, finalmente, com meu desktop

Cléber

![Meu Desktop - 2019](/files/63) Quem acompanha meus artigos já está acostumado a, de quando em quando, ler algo a respeito da configuração do meu desktop. É fato que eu sou “um cara do terminal”. Escrevo esse texto, inclusive, usando o editor vim, chamado pelo zsh dentro de um lxterminal que foi chamado e posicionado adequadamente via teclas de atalho do fluxbox. E estou feliz da vida porque meus terminais virtuais (aqueles do "agetty" da vida) agora usam a fonte Terminus. Mas é verdade, também, que minha experiência com o desktop, em geral, nunca foi das melhores. Explico. ## Sofrendo sem saber Não é como se todo dia eu sofresse bastante aqui no “ambiente gráfico” e no fim, suspirando, eu pensasse “oh!, como minha experiência com o desktop é infausta!”. Pelo contrário: eu acreditava que estava fazendo tudo certo e que tudo ia bem. E foi só depois de algumas mudanças bem impactantes é que percebi como é possível ter uma experiência de uso muito mais fluida de um ambiente gráfico. Tudo começa com o Ubuntu. Ah, o Ubuntu! O Windows da nova geração. Tudo corria razoavelmente bem no meu laptop Asus com 8GB de RAM. Eu sempre usei ferramentas muito leves e, no geral, 90% da memória era utilizada pelo Firefox, que vivia com 50 janelas e 300 abas abertas. Sempre dei meu jeito de não manter as 300 abas carregadas ao mesmo tempo, seja matando processos manualmente (eu criei um script ffkiller.sh para matar as abas que consumissem mais memória caso o uso, no geral, passasse de determinado limiar), seja com extensões do próprio navegador. Mas, ainda assim, embora o footprint do restante do sistema circulasse em torno dos 400MB de RAM, era abrir o navegador e ver o uso saltar para mais de 6GB, mesmo depois que eu fazia minhas "limpas" das abas e mantinha apenas uma dúzia ainda abertas. Eventualmente, comecei a trabalhar em um projeto Python/Flask/SQLAlchemy/Postgres no qual os testes unitários exigiam bastante I/O do HD. E então comecei a perceber como meu HD andava ocupado tendo que compensar o uso excessivo de RAM (e alterar a swapacidade do gerenciador de memória do kernel é interessante, mas não faz milagres). Um teste que rodava em poucos segundos num laptop com configuração similar acabava demorando meio minuto no meu. Ademais, quando me veio a ideia de acelerar os testes tornado o diretório pgdata do Postgres (que rodava viadocker-compose) um ponto de montagem tmpfs (ou seja: fazer o Postgres gravar tudo em RAM sem nem mesmo desconfiar durante os testes) esbarrava no problema óbvio de que a máquina dispunha de pouquíssima RAM a ser doada para essa ideia boa, bela e moral. Junte-se a isso que, conversando com a equipe, acabei descobrindo um usuário de Gentoo e isso acabou instigando em mim novamente aquela vontade de lidar com “Linux de verdade”. Nota: não é curioso como as experiências mais próximas do que seria um “Linux de verdade”, hoje em dia, vem majoritariamente de projetos que puxam algo dos BSDs? ## Testando outras opções Felizmente, descobri que o HD tinha duas partições de cerca de 50GB absolutamente livres e disponíveis para experimentação com outras distros (ou mesmo outros sistemas operacionais). Comecei com testes bem radicais: Haiku OS e Android for x86. O primeiro foi bem interessante e ainda está ali aguardando momentos de curiosidade adequados. Já o segundo foi decepcionante: mesmo usando uma app de “gerenciar janelas”, a experiência é demasiadamente voltada a toques na tela, tornando o uso do sistema com mouse um baita sofrimento. Achei o projeto Exherbo bem interessante, mas quando vi que o sistema de init default era o systemd, desanimei. O systemd reúne um conjunto considerável de elementos que ou eu tenho "alguma aversão" ou absolutamente desprezo: * O código é lastimável. * Não me agrada muito as atitudes de alguns mantenedores. * Vem da Red Hat (eu tenho meus motivos para não gostar). * Não segue a Filosofia Unix. * Tenta abraçar o mundo. * Ganhou hype sem os devidos méritos. * Te obriga a usar ferramentas próprias ao invés de utilidades comuns de linha de comando. * Trouxe para o Linux o esquema de “atualizamos os pacotes, agora você deve reiniciar seu computador”. * Baseia-se em uma porção de mentiras descaradas. Uma das mentiras, especialmente, é a que diz que “systemd torna o boot mais rápido”. Que me perdoem seus defensores, mas não é assim simples vender essa lorota para quem usava Slackware 10 em 2004. Eu sei bem o que é um boot rápido e o que não é. E a velocidade de inicialização do sistema era uma das coisas mais deploráveis do Ubuntu. Repare: não tem navegador web nessa história. E, no entanto, mesmo com uma porção de serviços manualmente desabilitados, ainda assim a demora era de fazer chorar. E piora bastante quando, de vez em quando, ao exigir bastante do sistema, tudo trava e você se obriga a forçar um reboot. Em outras circunstâncias, mui raramente reiniciar-se-ia um laptop (eu já vi uptimes de meses na época que usava Gentoo). Comecei, então, a instalar o Funtoo. No fim das contas, era o que me daria mais liberdade. Entretanto, no meio do processo eu acabei lembrando da causa pela qual havia desistido dessa distro anteriormente: é muito trabalho. Não entro nem no mérito do certo ou errado. Eu mesmo, como já disse, usei Gentoo por muito tempo e gostava bastante. Mas cada época da nossa vida tem suas características e eu não estou mais numa temporada própria para lidar com Gentoo e derivados… ## Void Linux, novamente Resolvi procurar um pouco mais por lightweight distros e distros without systemd e acabei, novamente, chegando no Void Linux. Apesar de alguns “enroscos” anteriores com a distro, ela reunia muitos bons elementos: * Não usa systemd. * Não é “para iniciantes” e sequer tem um desktop environment default. * init é o runit (eu realmente gosto do OpenRC, mas pelo menos o runit é leve, fácil de gerenciar e bem "linuxy"). * Tem a opção de usar a musl como libc do sistema. * Não sofre, no geral, de falta de pacotes. * O gerenciador de pacotes é bem rápido. * Dá liberdade mas não precisa de tanto tweaking quanto Gentoo e derivados. E assim resolveu-se um primeiro problema: o boot do Void é rápido. Além disso, voltei a usar wicd para gerenciar rede. E consigo conectar em redes sem fio via wicd-client na linha de comando. Acho ótimo. Precisa logar como root? Precisa. Isso é arriscado? Sim. Mas o computador é meu, então deixa eu ser feliz, aqui, do meu jeito. ## O navegador: vilão ou incompreendido? ### Navegação vetorial E aqui começa, talvez, a parte mais interessante dessa história: a questão de usabilidade do navegador web. E para entender isso, vou falar um pouco sobre o que eu chamo de “navegação vetorial”. Meu desktop é organizado em áreas de trabalho e, como se já não bastasse eu usar várias delas, agora também as organizo hierarquicamente. Pois é. Benesses do Fluxbox, que permite keybindings estilo Emacs. Minhas áreas de trabalho virtuais estão divididas em cinco categorias principais: 1. Pessoal 1. Técnico 1. Trabalho/Pessoal 1. Trabalho/Consultoria 1. Sistema Sob cada uma dessas categorias há N áreas de trabalho virtuais. Sob “Pessoal”, por exemplo, eu tenho: 1. Comunicação 1. Social 1. Leitura 1. Cursos 1. Música 1. Vídeos 1. Séries 1. Extra E organizo minhas janelas e toda a “semântica” dessa maneira. Logo, ao invés de ficar procurando pela janela em que está o mplayer tocando música, eu simplesmente teclo Win+1, 5, ou seja: "Pessoal/Música" e lá está, devidamente "categorizado", o tocador de música. Se quero falar com alguém via Telegram, Win+1, 1, ou seja: "Pessoal/Comunicação", e lá estão as janelas de Telegram, WhatsApp, Discord e e-mails me esperando. E isso é muito bom. Eu consigo navegar muito bem pelas áreas de trabalho e isso facilita muito a minha organização. Se estou trabalhando para determinada empresa, eu deixo tudo o que é relacionado a ela num mesmo lugar e não misturo com as janelas relacionadas a outro projeto de outra empresa. Mas, veja, já temos um vetor tamanho 2. Considerando que algumas áreas de trabalho, como justamente as de “Trabalho”, geralmente tem N janelas, o que me obriga a “alt+tabear” um pouco, a navegação para chegar em uma janela específica já se faz por meio de um vetor de tamanho 3: (Categoria, Área de trabalho, Janela) ### Entra o navegador Como disse antes, meu Firefox vivia com ~ trocentas ~ abas abertas e meia centena de janelas. Eu tinha a mania de ir abrindo links para conteúdos que julgasse interessantes em novas abas e deixando por lá para ler depois. E raramente lia. De certa forma, eu era um “acumulador” (hoarder) de abas. E isso adicionava mais 1 ao tamanho do vetor de navegação. Se eu quisesse ver meus e-mails, o vetor seria: (Pessoal, Comunicação, Navegador, Primeira aba) Um vetor de tamanho 4! E numa máquina que já estava de língua de fora de tanto esforço que fazia. ## A mudança No começo do ano, enquanto estava usando o spectrwm como gerenciador de janelas, cheguei a migrar parte da minha navegaçao web para o elinks2, um navegador para terminal (ou seja: não gráfico). Mas, embora a ferramenta fosse diferente, o uso acabava sendo o mesmo e isso fazia com que a experiência continuasse muito falha. O Firefox salvava minhas abas se fosse terminado abruptamente, mas como fazer isso num navegador de terminal? E isso tornava-se crítico porque eu acabava com vinte abas abertas no elinks2 e queria mantê-las abertas entre reboots! E agora, rodando o Void, eu queria mudar de costume, ou seja: se mudasse de ferramenta, seria apenas isso: como uma forma de tornar um novo costume possível. Eu só não sabia que costume seria. Mas imaginava que, sim, deveria haver algum jeito melhor de lidar com a web. Comecei a testar navegadores leves, como o netsurf e o midori. Ambos são simplesmente inaceitáveis. No midori, por exemplo, eu focava na barra de endereços e, ao teclar backspace, visando digitar outra URL, acabava acionado o "voltar" do navegador. Isso e mais uma porção de detalhezinhos de usabilidade tornavam ambos impossíveis de usar sem passar raiva. Cheguei até a usar o lynx, outro navegador de terminal, para algumas coisas, mas percebi que não era o caminho. No fim das contas, lembrei que, enquanto buscava por outras distros, vi a tal “Peppermint”, que tinha uma ferramenta chamada ice que replicava aquele esquema de "app web numa janela" como era o antigo Prism, da Mozilla. E achei interessante. Tentei instalar na minha máquina, mas acabei vendo o código e descobrindo que rodar o ice com o Firefox como "backend" era meramente mexer no chrome do navegador (a carcaça). Acabei instalando o chromium e usando o "modo app" do mesmo. E o resultado foi impressionante. Nesse exato momento, por exemplo, eu absolutamente não tenho nenhuma janela “de navegador” aberta no meu desktop. Ou seja: em nenhum momento eu preciso chegar em algum conteúdo por meio de um vetor de tamanho 4. A maior parte da minha navegação entre janelas (e “coisas”) agora é via um vetor de apenas 3 posições. ## Web apps como… apps! Tenho usado como lançador o excelente dmenu, que é muito rápido e ainda me ajuda a criar alguns scripts bem espertalhões (como o meu lançador de aplicações FlatPak) e pensei: as "pessoas normais" enchem a área de trabalho de ícones para as aplicações que mais usam. Mas eu não tenho nem ícones na área de trabalho! Como chamarei as aplicações mais usadas rapidamente? Acabei criando um script que pode ser chamado assim: wapp.sh ᐸURLᐳ ᐸnameᐳ Um exemplo de uso é: wapp.sh https://linkedin.com linkedin Isso não somente abre o Chromium com o Linkedin em “modo app” (ou seja: sem a barra superior, sem “marcadores”, sem praticamente nada) como já cria um script linkedin.web.sh acessível via PATH. Dessa forma, da próxima vez eu simplesmente digito linke no dmenu e já abro o Linkedin. ### Rationale A ideia é a seguinte: considerar as apps web, como LinkedIn, GMail, Twitter, Telegram, WhatsApp web, Discord, et cetera como apps mesmo, não como websites a serem abertos em diversas abas de um navegador web. Quando eu usava abas, relutava em fechá-las, pois gostava de deixar tudo bem organizado: algumas deveriam ser as primeiras, outra deveriam ser as últimas. E as diversas janelas do navegador tinham, cada uma, um “tempo de vida esperado”: o GMail ficava numa janela “eterna”, enquanto pesquisas rápidas pela web ficavam em janelas “temporárias”. Veja como janelas+abas adicionava mais uma camada de metodologia de organização! Agora eu me sinto muito à vontade para fechar qualquer dessas aplicações porque sei que (1) abri-las novamente é rápido (meu laptop voltou a ter RAM sobrando) e (2) a organização delas se dá da mesma forma que organizo todas as outras janelas, e meu gerenciador de janelas é muito bom, me ajuda muito e eu sou bem versado nele. ### Novos costumes Além disso, foi importante estabelecer duas regras: * Ou lê agora ou vai pro Pocket. * Ou consome agora ou vai pra Pilha. Absolutamente não deixo mais “abas penduradas”. Na verdade, evito até deixar janelas “de navegador” (com barra de endereço e tudo o mais) de bobeira por aí. Fazia tempo que eu não conseguia trabalhar somente com o terminal visível e, ao fundo, somente o papel de parede. ## Em resumo É muito bom não ter aquela porqueira do systemd rodando, voltar a gerenciar serviços de maneira sã, ter um boot realmente rápido e, especialmente, conseguir entender o que está acontecendo no sistema em qualquer momento. (O Ubuntu tem até as combinações mágicas do sysreq desabilitadas...) Trazer as web apps para o desktop, equiparando todo mundo e gerenciando todos usando a ferramenta certa (o gerenciador de janelas, como o próprio nome denuncia) acabou transformando completamente a minha experiência de uso do desktop no geral, além de liberar muita memória (e I/O do disco) da máquina. Estabelecer regras para evitar acúmulos (ou, pelo menos, jogar os acúmulos em lugares nos quais não tornem-se um problema) foi vital, até para a manutenção da minha saúde mental. Ah, e ter terminais virtuais bonitos também é bem legal. :)

Curti

57 visitantes curtiram esse Item.

Anterior: O Medium e a Estrela da Morte | Próximo: Quick: O CTO desequilibrado