[Tutorial] Instalação do Qtile (Tiling Window Manager)

Fontes:

  • http://www.qtile.org/
  • http://docs.qtile.org/en/latest/
  • https://wiki.archlinux.org/index.php/Qtile
  • https://www.youtube.com/watch?v=4Zar4Z0MAAo
  • https://www.youtube.com/watch?v=DEoS49inzSw
  • https://www.youtube.com/watch?v=QESVJBEwBFA
  1. Para instalar o Qtile no Arch Linux, ou em uma distribuição baseada neste: sudo pacman -S qtile

    • Para que, ao reiniciar o Qtile através do comando restart(), o Qtile possa permanecer com o mesmo nome de processo: sudo pacman -S python-setproctitle (caso não instale esse pacote, o processo do Qtile ficará com um nome extenso)
    • Para que o Qtile respeite suas configurações de ícone para o cursor: sudo pacman -S xcb-util-cursor
  2. O arquivo de configurações do usuário é o ~/.config/qtile/config.py

    • Para criar o diretório: mkdir -p ~/.config/qtile/
  3. O Qtile possui um arquivo de configuração padrão para o sistema, que é utilizado pelo Qtile quando não há um arquivo de configuração no diretório do o usuário ou quando há um arquico com erro de sintaxe no diretório do usuário.

  4. Para testar o arquivo de configuração:

    • python ~/.config/qtile/config.py para buscar erros simples de sintaxe
    • Xephyr :5 & sleep 1 ; DISPLAY=:5 qtile para buscar outros tipos de erro, pois determinados erros podem não ser detectados pelo interpretador, o python, e quando isso acontece o Qtile pode simplesmente não sobir (nem com o arquivo de configuração padrão).
      • Para usar o Xephyr: sudo pacman -S xorg-server-xephyr

O Qtile é um gerenciador de janelas TWM dinâmico, o que significa que não é necessário, absolutamente, se preocupar com o modo de organização das janelas. O Qtile, portanto, usa esquemas (ou layouts na documentação) para ordenação do modo como as janelas se comportarão na tela.
O Qtile possui suporta configuração multi-monitor, barras, ícones indicadores e outras coisas mais (não possui tantos recursos quanto o AwesomeWM, creio, mas possui bons recursos).

Uma outra característica é que ele é totalmente escrito e cofigurado em python, e isso pode ser uma vantagem enorme, pois é possível usar a própria linguagem python para alterar o comportamento de algum recurso, ou para associar um comando próprio à um determinado atalho de teclado, ou qualquer outra coisa que a linguagem e o Qtile suporte. Também considerando a chamada “curva de aprendizado” da linguagem, que é diferente da linguagem Haskell, ou Lua (linguagens usadas nos gerenciadores de janelas Xmonad e AwesomeWMm, respectivamente).
Uma outra característica é que, para aqueles que conhecem python, o código fonte do Qtile não é tão complicado de ser lido.

O consumo de memória inicial dele pode variar conforme o arquivo de configuração, conforme são adicionados determinados recursos. Não recordo do consumo de memória com a configuração padrão, mas o consumo inicial de memória do Qtile (não do sistema, isso pode variar se forem adicionados serviços à inicialização) com a minha configuração atual fica abaixo dos 70MB. Não é um gerenciador de janelas tão ‘minimalista’. E o consumo pode aumentar conforme tu fores usando o computador, e abrindo programas.
Definitivamente existem gerenciadores de janelas mais econômicos sob esse ponto de vista. Iniciei o Xmonad com até que um número considerável de configurações, e o consumo de RAM inicial ficou na casa dos 30~40MB (mas como o Xmonad não suporta barra, o “montante” é um pouco maior ou menor, dependendo de qual programa é escolhido para barra).
Aqui levemos em consideração que o Qtile é escrito em python, então há também a carga do interepretador envolvida. O Xmonad é compilado com o GHC, o gerenciador de janelas é um binário portanto.

O Qtile, creio, não suporta os lançadores xdg. Não tenho certeza.
No meu diretório de configuração, e em tantos outros que vi, usa-se um arquivo autostart.sh:

#! /bin/bash 

/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
compton &
nitrogen --restore &
light-locker &

Aí se colocam os programas que devem ser inicializados com o gerenciador de janelas, e no arquivo config.py adiciona-se o seguite código:

##### STARTUP PROGRAMS #####

@hook.subscribe.startup_once
def start_once():
	home = os.path.expanduser("~")
	subprocess.call([home + "/.config/qtile/autostart.sh"])

Assim, evita-se que, caso o usuário reinicie o Qtile, os programas sejam duplicados.

Aproveitando para citar que podem ser desejáveis um agente de autenticação (v. https://wiki.archlinux.org/index.php/Polkit#Authentication_agents), um compositor (v. https://wiki.archlinux.org/index.php/Xorg#Composite), um seletor de papel de parede (nitrogen ou feh, vejo ambos) e um bloqueador de tela (v. https://wiki.archlinux.org/index.php/List_of_applications#Screen_lockers).

Parece que os mantenedores do Qtile estão realizando movimentos que podem facilitar, no futuro, o suporte ao Wayland no Qtile (v. Start refactoring to isolate core by cortesi · Pull Request #1265 · qtile/qtile · GitHub)

3 curtidas

Sabe dizer o consumo de memória inicial dele? Ele carrega os lançadores do xdg na inicialização?

@Dio, poderia ser uma proposta interessante para o produtor do Terminal Root.