O lado escuro do mosaico (III): XMonad

Parece que tenho feito muita oração e é que até hoje não coloquei um milímetro de configurações. Como tenho prometido para um momento hoje vou rasgar meu xmonad.hs que preparei especialmente para esta ocasião. Este e outros arquivos de configuração estão no Colar, especificamente as cores do console, as configurações da janela y a barra superior.

Você pode baixá-los de lá e abri-los em seu editor de texto favorito.

Antes

Caso você esteja se perguntando, meu desktop era um pequeno Openbox no Debian estável. Ignorando o processo de instalação da distribuição por enquanto, você deve verificar se os pacotes necessários estão nos repositórios. Vamos fazer isso (lembrando que estou no Debian):

sudo aptitude instalar ghc xmonad xmobar gmrun dmenu

E pronto. Acabamos de instalar, em ordem de aparecimento; o Compilador Glasgow Haskell que é responsável pela compilação e interpretação de Haskell; XMonad, o gerenciador de janelas, XMobar é uma barra que apresenta informações sobre o sistema e alguns inicializadores de programas, dmenu e gmrun; que gentilmente já vêm configurados para que o XMonad os lance com Mod + P e Mod + Shift + P.

E essa é a aparência da minha área de trabalho. Eu coloquei de forma que tenhamos um ponto de comparação e emulemos algumas das coisas que eu já havia configurado em um ambiente mais minimalista.

Nada do outro mundo

Mas surpresa. XMonad nos acolhe assim. Na captura já abri o gmrun, para mostrar que não está quebrado:

Nada espetacular

E queremos que fique assim, já configurado e tudo:

Assim sim

A imagem mostra um terminal executando ncmpcpp, um cliente MPD para o terminal; e uma sessão GVim, ambas com as cores da paleta Luz Solarizada. Conseguir isso não foi realmente difícil e até o Vim e o urxvt já estavam prontos no meu sistema.

O xmonad.hs, que assustador!

Para nada. A configuração que você está prestes a ver é extremamente simples e básica. Ele deve funcionar em todos os sistemas com XMonad 0.9.1, embora o 0.10 já esteja disponível. Bem, tenha medo, muito medo:

- Configuração do Xmonad - Como você pode ver, é bastante simples importar XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "nitrogênio --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed" xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3 ", focusBorderColor =" # 002b26 ", workspaces = wrk}` additionalKeys` [((mod4Mask, xK_v), spawn "gvim"), ((mod4Mask, xK_c), spawn "mpc toggle"), ((mod4Mask, xK_a) , spawn "mpc prev"), ((mod4Mask, xK_s), spawn "mpc next")] - Fim da configuração. Simples, fácil e limpo.

O que aconteceu aqui?

Se já se recuperaram do susto, podemos ver que nossa configuração mal chega a 30 linhas de código. Vou explicar parte por parte, porque se você copiou e colou isso, o XMonad irá compilar o programa que acabamos de escrever. Pronto?

A seção de dependências

Perto do início do arquivo, existem três linhas que começam com a palavra-chave importar. Como em outras linguagens de programação, ele envia o compilador para encontrar o módulo que deseja e fornece as funções do módulo lucky. Vamos ver de novo:

import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run

Nosso programa usa três dependências. A primeira nos traz as próprias funções do XMonad, a segunda e a terceira nos ajudarão posteriormente a definir atalhos de teclado e executar programas. Vamos continuar.

Variáveis

Que coisa é trabalhar e para que serve? Vamos dar uma olhada no código:

wrk = ["A", "C", "G", "T"]

trabalhar é uma variável, que equivale a uma lista de quatro elementos, todos strings; porque as listas Haskell aceitam apenas um tipo de item. Se você está se perguntando por que escolhi essas quatro letras para meus desktops, lembrei-me do quatro bases nucleicas de DNA.
O nome é apenas uma abreviatura e poderíamos colocá-lo em myWorkspaces, pepitoRojo ou qualquer outra coisa, desde que comece com uma letra minúscula e especifiquemos na próxima seção.
Aqui começa a vantagem de ter uma linguagem de programação completa à nossa disposição, pois poderíamos definir a cor da janela a partir de uma variável:

windowColor = "#FFFFFF"

Ou até mesmo criar uma função que retorne uma cor em relação ao nosso humor:

moodColor m | m == "Sad" = "# b0c4f6" - Algo como azul | m == "Irritado" = "# ba3f3f" - Algo como vermelho | m == "Happy" = "# 8bff7e" --Algo como verde | caso contrário = "#FFFFFF" - Branco, para dias neutros

E muito mais. Você já sente o poder em seus dedos? Uma coisa. Se você não entendeu o que aconteceu, pense que esta é a própria estrutura de um Haskell que chamamos guarda e é basicamente como uma árvore if-then-else, mas mais organizada e bonita. E não se preocupe, o código foi escrito por mim e funciona bem.

A seção principal

Da linha que diz main = do começamos a especificar o comportamento do XMonad. Vamos ver com calma.

Dar o pontapé inicial

Isso pode ser feito de várias maneiras, mas para evitar dependências e tornar o código mais limpo, embora claramente mais homem das cavernas, optei por isso:

xmproc <- spawnPipe "xmobar" spawn "nitrogênio --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

A primeira linha inicia o XMobar, cujo arquivo de configuração veremos mais tarde.
Então começamos algumas coisas essenciais para mim, um belo papel de parede (igual ao da primeira imagem), um demônio que faz o urxvt correr como o vento, o demônio do mpd -que toca minha música desde o início e eu nunca fecho - e um controle de volume. Sim, é isso. A sintaxe é a mesma se você quiser iniciar o que precisa.

Ajustes finais

Aqui definimos algumas coisas que geralmente são apenas preferências pessoais. Por exemplo, gosto de usar a tecla Super normalmente inútil (na verdade, a tecla do Windows) em vez de Alt, mas essa é minha preferência. Se você quiser voltar ao Super, remova a primeira linha.

- ... xmonad $ defaultConfig {modMask = mod4Mask, terminal = "urxvtc", borderWidth = 2, normalBorderColor = "# fdf6e3", focusBorderColor = "# 002b26", workspaces = wrk} - ...

Então, definimos nosso terminal, urxvtc, porque isso é o que chamamos de cliente do demônio que executamos anteriormente. Outras coisas, como a lista de espaços de trabalho, que poderíamos ter colocado, como:

, espaços de trabalho = ["H", "O", "L", "A"], espaços de trabalho = ["A", "R", "C", "H", "L", "I", "N "," U "," X "], espaços de trabalho = [" 1: web "," 2: música "," 3: espaço não utilizado "," 4: Ufff "]

E outras coisas que o processamento da lista de strings de Haskell nos permite.
A espessura da borda é apenas um número inteiro e se quisermos mudar a cor da janela em foco pela função humorCor que acabamos de criar, porque deixamos a variável assim:

--..., focusBorderColor = moodColor "Happy" - ...

O $ na linha xmonad ... é apenas uma aplicação de funções associativas corretas, ou seja, salvamos alguns parênteses. 😀

Atalhos do teclado

No final do arquivo temos uma lista de tuplas que contém alguns atalhos, neste caso, eles iniciam o GVim, pausam ou tocam a música, e avançam ou atrasam. Isso é tudo. A função additionalKeys vem no segundo módulo que importamos e os acentos posteriores a tornam executada no estilo da função div (/) como 1/2 e não div 1 2, tornando-a mais fácil de ler. Então é:

- ...} `additionalKeys` [((mod4Mask, xK_v), spawn" gvim "), ((mod4Mask, xK_c), spawn" mpc toggle "), ((mod4Mask, xK_a), spawn" mpc prev ") , ((mod4Mask, xK_s), spawn "mpc next")]

The .xmobarrc

Config {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", posição = Topo , lowerOnStart = False, comandos = [Run Com "echo" ["$ USER"] "username" 864000, Run Com "hostname" ["-s"] "hostname" 864000, Run Com "mpc current" [""] "mpd" 10, Data de execução "% a% b% d" "date" 36000, Data de execução "% H:% M" "time" 10, execute StdinReader], sepChar = "'", alignSep = "} {" , template = "'nome de usuário' @ 'nome do host'} {'mpd' | 'data' - 'hora'"

Isso deve funcionar, e realmente funciona. A sintaxe é um pouco mais complexa e é melhor você mesmo analisá-la para entendê-la. Portanto, vou apenas me limitar a dizer que estamos descrevendo os comandos, suas opções e algumas configurações extras, que serão mostradas no XMobar.
A linha do modelo tem toda a ação e eu descobri um truque para exibir a música que estou ouvindo. Este truque e o de mudar a música por atalhos de teclado requerem mpc, um cliente mpd executável do terminal.

Conclusão

É isso, eu acho. Já revisamos o arquivo XMonad principal e começamos a aprender Haskell, gostemos ou não. Se você quiser continuar, há um guia muito bom para começar.
Na próxima edição, exploraremos gerenciadores não programáveis, especificamente Spectrwm / Scrotwm. Nos vemos.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Ivanovnegro dito

    !Fantástico!

    Spectrwm da próxima vez? !Sim senhor!

  2.   O Sandman86 dito

    Muito bom guia, parece muito interessante, estou querendo dar uma olhada, embora esteja mais do que confortável com meu Openbox.

  3.   anti dito

    Ops, esqueci de especificar para onde vão esses arquivos, mas quando edito a postagem, ele me envia uma mensagem de erro:
    Erro fatal: chamada para a função indefinida get_header () em /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php on-line
    Se alguém pode editá-lo, é assim:

    Arquivo de configuração principal: ~ / .xmonad / xmonad.hs
    Arquivo Xmobarrc: ~ / .xmobarrc
    Arquivo de configuração do console: ~ / .Xdefaults
    ????

    1.    anti dito

      Não consigo editar minhas próprias postagens. Também não consigo encontrar a opção em nenhum lugar da área de trabalho. Tenho alguns bugs, só isso, correções mínimas.

  4.   Nano dito

    Bem, acho muito interessante, pois é mais produtivo quando se trata de programação. Eu quero mexer com Awesome porque eu realmente quero aprender LUA.

    Existe para quem programa em Python Qtile, mas a verdade é que não consigo fazer funcionar, estou usando o Ubuntu e instalei via PPA e também de fontes, mas infelizmente não quer funcionar xD

    Enfim LUA é algo que PRECISO aprender e nada melhor do que ver a cara uns dos outros com este tipo de tiles.

    Sigue así anti, vas en camino a convertirte en Autor dentro de DesdeLinux

    1.    Nano dito

      E sim, estou na faculdade e nessa merda eles não têm Linux xD

      1.    anti dito

        Obrigado nano. Mas, você pode me ajudar a editar os artigos depois de publicados? Não posso.

        1.    nano dito

          Sim, acalme-se, deixe-os como se encaixam melhor do que eu conserto

  5.   xykyz dito

    Obrigado, anti, com certeza vou dar uma chance ao XMonad. Vejo que ele usa coisas básicas do Haskell sem a necessidade de muita complexidade, como guardas, o operador do aplicativo e, obviamente, o uso de listas (caso contrário, não seria Haskell xD).

    Vamos ver como fica! 🙂

  6.   Fernando dito

    Eu uso um gerenciador de janelas de ladrilho há muito tempo, incrível. Quando tiver tempo farei um tutorial no qual espero poder explicar todo o processo, desde a instalação incrível até a configuração de um conjunto de programas leves e a criação do nosso próprio tema.

    Se lhe parecer bem, quando o tiver poderei avisar para que publique aqui.

    Aliás e com sua permissão, faço um pouco de divulgação no meu pequeno site, se quiser dá uma olhada, caso tenha interesse em alguma publicação:

    http://niferniware.sytes.net

    Uma saudação!

    1.    msx dito

      Se for Awesome 3, estou definitivamente interessado nele.

  7.   Fernando dito

    Um detalhe, a seção da web onde hospedei o blog é:
    http://niferniware.sytes.net/blog/

    Sinto muito pelo erro.

    Uma alegria!

    1.    elav. dito

      Gostei muito do seu blog… ^^

      1.    Fernando dito

        Muito obrigado Elav, estamos em contato!

        La verdad es que en cierto modo DesdeLinux me incitó a crear mi propio blog. Tanto tiempo usando Linux hace que uno se plantee aportar algo a cambio ^^

        Uma saudação!

  8.   msx dito

    "Se você está se perguntando por que escolhi essas quatro letras para minhas mesas, lembrei-me das quatro bases nucleicas do DNA."
    Doce, +1

    1.    anti dito

      Bem, eu realmente gosto da ideia de colocar DNA nas minhas mesas.

  9.   Halonsov dito

    Excelente guia, graças a ela estou apenas experimentando o xmonad, e só posso dizer uma coisa sobre isso, me apaixonei pelo xmonad, ainda não coloquei minha mão nele e ainda parece excelente, muito obrigado

    1.    msx dito

      Excelente, esperamos ver seu progresso transformado em um post! =)

  10.   Victor Salmeron dito

    Uma pequena observação ao tutor, no momento eu uso o Debian estável (Squeeze), e para instalar o dmenu, não é feito com um aptitude install dmenu, mas com o pacote suckless-tools, caso contrário, excelente tutorial

    1.    anti dito

      A mesma aptidão o corrige. Além disso, a ordem é melhor entendida assim.

  11.   tarantônio dito

    Este guia assume que você tem x instalado.
    No meu caso, eu inicio apenas de um console debian, então tive que instalar o xorg. Estaria tudo bem, já que o que estamos procurando é um ambiente minimalista, começando de um debian sem ambientes gráficos, instalando xmonad em modo simples e adicionando ferramentas e programas de console, como mutt, irssi, etc.

    1.    anti dito

      Sim, os Xs já estavam ligados. O próprio post explica que comecei com um Debian mínimo já feito com Openbox.