DWM é um tiling window manager, um de gerenciador de janelas, responsável por dispor as aplicações na tela. Ele possui a filosofia suckless, tornando seu código fonte o menor possível, normalmente aumentando o desempenho do programa.
Por que DWM?
- Pouco consumo de RAM, ótimo para notebooks mais fracos
- Você no comando, liberdade total de teclas de atalho
- Poucos recursos opcionais, a enfase no DWM é no MVP de um window manager
- Disposição de janelas com o conceito de área master, onde torna prevísivel a visualização de novos aplicativos
Dmenu
DWM vem com dmenu, que é um lançador de aplicativos (Super+d
).
Funcionamento
DWM trabalha com os conceitos de clientes, área master, tags e modos.
- Clientes são as janelas das aplicações abertas, como firefox por exemplo.
- Área master é o local onde novos clientes são enviados (podem ser trocados com
Super+Enter
), por padrão à esquerda. A cada novo cliente, o antigo é deslocado para a direita, e os que já estão a direita vão para baixo.
+---------------+ +-------+-------+ +-------+-------+ +-------+-------+
| | | | | | | 2 | | | 3 |
| | | | | | | | | +-------+
| 1 | -> | 2 | 1 | -> | 3 +-------+ -> | 4 | 2 |
| | | | | | | 1 | | +-------+
| | | | | | | | | | 1 |
+---------------+ +-------+-------+ +-------+-------+ +-------+-------+
- Tags são muito semelhantes a workspaces comuns, onde você como usuário delimita quais aplicações estão abertas. Porém é possível marcar clientes para aparecerem em mais de uma tag simultaneamente - caso queira que o player de musica lhe acompanhe por exemplo.
- Modos são as disposições das janelas, sendo por padrão 3 - Tiling (padrão), float (janelas flutuantes) e mono (uma janela aparece por vez, podendo acessar outras através de
Super+j
ouSuper+k
)
Meu uso comum
- Abro terminal (
Super+Shift+Enter
) em full screen ou ao lado de uma aplicação - Pesquiso algum programa com dmenu como o firefox por exemplo
- Pulo de uma janela para outra com
Super+j
ouSuper+k
- Movo alguma janela para a área master com
Super+Enter
- Troco de tag com
Super+NumeroDaTag
- Fecho janela com
Super+Shift+q
- Desligo o sistema com
Super+Shift+s
Instalação
Para instalar basta baixar o código fonte e compilar com o comando sudo make clean install
e colocar em seu ~/.xinitrc o trecho exec dwm
obs: Dependendo do seu display manager, responsável por iniciar o desktop, talvez seja necessário configurá-lo. Para o lightdm, basta criar um novo arquivo dwm.desktop
como abaixo e colocá-lo em /usr/share/xsession.
[Desktop Entry]
Name=DWM
Comment=DWM
Exec=/home/neni/.xinitrc
Type=Application
Ao fazer isso, antes de logar pode ser escolhido o perfil DWM.
Configuração
Escrevendo no config.h
As configurações mais simples como cores, atalhos, numero e simbolos de tags, bordas de janelas e font padrão é no arquivo config.h. A cada modificação é necessário recompilar o código e reiniciar a sessão.
Patches
DWM vem com o mínimo necessário, porém existem diversas outras features implementadas por outros programadores que podem ser implementadas. Elas são através de patches, que são "colagens" de código.
Como funciona:
- Pegar arquivo .diff do patch e analisar a diferença do código fonte do implementado
- Modificar arquivo correspondente apontado na área lida do diff
- Recompilar o código
- Reiniciar sessão
Personalizando status bar
É possível modificar a barra de status através do comando:
xsetroot -name "tudo que for colocado aqui | vai atualizar a barra de status"
xsetroot -name "$(echo 'tabém é possivel usar comandos bash')"
Um exemplo de script que atualiza sozinho a barra (para o relógio) é:
online(){
curl -w %{http_code} --silent -o /dev/null google.com | awk '{if($0=="000") {print "OFFLINE"} else { print "ONLINE"}}'
}
datetime(){
echo " $(date +%H:%M)"
}
while true; do
xsetroot -name "$(online) | $(datetime)"
sleep 5s
done
Para inicializar o script automaticamente ao entrar numa sessão, basta colocar no arquivo ~/.xinitrc.
# mata processo do script se existente
pkill -f ~/dev/scripts/dwm/status.sh
# modifica status
~/dev/scripts/dwm/status.sh&
# inicia dwm
exec dwm
Atualizações desse post
Pretendo atualizar este post com meu tempo de experiência do DWM. Na primeira versão (08/06/2019) possuo por volta de 1 mês de uso com o gerenciador.
2021-09-24
Estou gostando de utilizar a distro instantOS, ele possui um tiling window manager forkado do DWM.
2021-10-21
Não apoio a descrição cringe do DWM:
Because dwm is customized through editing its source code, it's pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.
O que me fez experimentar o Awesome no Ubuntu, cujo atende todas minhas necessidades de um twm.
Top comments (1)
Eu consegui um snippet para configurar os atalhos de volume com pulseaudio:
bitbucket.org/sergio/workspace/sni...
Tenho um post em Inglês aqui no dev.to (é recente), quem sabe alguma idéia nova?
dev.to/voyeg3r/i-cannot-leave-tili...