Темная сторона мозаики (III): XMonad

Вроде много помолился и так до сегодняшнего дня ни миллиметра настроек не ставлю. Как я обещал какое-то время сегодня порву свой xmonad.hs, который я приготовил специально для этого случая. Этот и другие файлы конфигурации находятся в Вставке, в частности цвета консоли, настройки окна y верхняя панель.

Вы можете скачать их оттуда и открыть в своем любимом текстовом редакторе.

До

Если вам интересно, моим рабочим столом был небольшой Openbox в стабильной версии Debian. Пропуская на данный момент процесс установки дистрибутива, вы должны убедиться, что необходимые пакеты находятся в репозиториях. Давайте сделаем это (помня, что я на Debian):

sudo aptitude установить ghc xmonad xmobar gmrun dmenu

И готово. Мы только что установили, в порядке появления; компилятор Glasgow Haskell, отвечающий за компиляцию и интерпретацию Haskell; XMonad, оконный менеджер, XMobar - это панель, которая представляет информацию о системе и некоторых средствах запуска программ, dmenu и gmrun; которые уже были настроены так, что XMonad запускает их с помощью Mod + P и Mod + Shift + P.

А вот так выглядел мой рабочий стол. Я сказал это так, чтобы у нас была точка сравнения и подражание некоторым вещам, которые я уже настроил в более минималистичной среде.

Ничего особенного

Но сюрприз. XMonad приветствует нас такими. В захвате я уже открыл gmrun, чтобы показать, что он не сломан:

Ничего особенного

И мы хотим, чтобы это выглядело так, уже настроено и все:

Так что да

На снимке экрана показан терминал, на котором запущен ncmpcpp, клиент MPD для терминала; и сеанс GVim, оба с цветами палитры Соляризованный свет. Получить это было несложно, и даже Vim и urxvt уже были готовы в моей системе.

The xmonad.hs, как страшно!

Не за что. Конфигурация, которую вы собираетесь увидеть, чрезвычайно проста и проста. Он должен работать во всех системах с XMonad 0.9.1, даже если 0.10 уже доступна. Ну бойтесь, очень бойтесь:

- Конфигурация Xmonad - Как видите, это довольно просто import XMonad import XMonad.Util.EZConfig import XMonad.Util.Run wrk = ["A", "C", "G", "T"] main = do xmproc <- spawnPipe "xmobar" spawn "азота --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»)] - Конец конфигурации. Просто, легко и чисто.

Что здесь произошло?

Если они уже оправились от паники, мы видим, что наша конфигурация едва достигает 30 строк кода. Я собираюсь объяснить по частям, почему, если вы скопируете и вставите это, XMonad скомпилирует программу, которую мы только что написали. Готов?

Раздел зависимостей

В начале файла есть три строки, начинающиеся с ключевого слова Импортировать. Как и в других языках программирования, он отправляет компилятору найти нужный модуль и дает ему функции счастливого модуля. Посмотрим еще раз:

импортировать XMonad импортировать XMonad.Util.EZConfig импортировать XMonad.Util.Run

Наша программа использует три зависимости. Первый приносит нам собственные функции XMonad, второй и третий помогут нам позже определять сочетания клавиш и запускать программы. Давайте продолжим.

переменные

Эта вещь работа И для чего это? Оцените код повнимательнее:

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

работа это переменная, которая эквивалентна списку из четырех элементов, все строки; потому что списки Haskell принимают только один тип элементов. Если вам интересно, почему я выбрал эти четыре буквы для своих рабочих столов, я вспомнил четыре нуклеиновых основания ДНК.
Имя - это просто сокращение, и мы могли бы указать его myWorkspaces, pepitoRojo или что-то еще, если оно начинается с нижнего регистра и мы указываем его в следующем разделе.
Здесь начинается самое хорошее в том, что в нашем распоряжении есть полный язык программирования, потому что мы можем определять цвет окна из переменной:

windowColor = "#FFFFFF"

Или даже создайте функцию, которая возвращает цвет в зависимости от нашего настроения:

moodColor m | m == "Sad" = "# b0c4f6" - Что-то вроде синего | m == "Angry" = "# ba3f3f" - Что-то вроде красного | m == "Happy" = "# 8bff7e" - Что-то вроде зеленого | в противном случае = "#FFFFFF" - белый, для нейтральных дней.

И многое другое. Вы уже чувствуете силу на пальцах? Одна вещь. Если вы не понимаете, что произошло, подумайте, что это собственная структура Haskell, которую мы называем охрана и это в основном похоже на дерево if-then-else, но более организованное и красивое. И не волнуйтесь, код написал я и работает нормально.

Основной раздел

Из строки, в которой говорится main = делать мы начали уточнять поведение XMonad. Посмотрим спокойно.

С самого начала

Этого можно достичь разными способами, но чтобы избежать зависимостей и сделать код более чистым, хотя и явно более пещерным, я выбрал следующее:

xmproc <- spawnPipe "xmobar" spawn "азота --restore" spawn "urxvtd" spawn "mpd" spawn "xfce4-volumed"

Первая строка запускает XMobar, конфигурационный файл которого мы увидим позже.
Затем мы запустили несколько важных вещей для меня: красивые обои (такие же, как на первом скриншоте), демон, который заставляет urxvt бегать как ветер, демон mpd, который играет мою музыку с самого начала, и я никогда не закрываю - и регулятор громкости. Ага, вот и все. Синтаксис такой же, если вы хотите начать то, что вам нужно.

Окончательные корректировки

Здесь мы определяем некоторые вещи, которые обычно являются просто личными предпочтениями. Например, мне нравится использовать обычно бесполезную клавишу Super (фактически, клавишу Windows) вместо Alt, но это мое предпочтение. Если вы хотите вернуться в Super, удалите первую строку.

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

Затем мы определяем наш терминал, urxvtc, потому что это то, что мы называем клиентом демона, с которым мы работали ранее. Другие вещи, такие как список рабочих пространств, которые мы могли бы добавить, например:

, workspaces = [«H», «O», «L», «A»], workspaces = [«A», «R», «C», «H», «L», «I», «N» "," U "," X "], workspaces = [" 1: Интернет "," 2: музыка "," 3: неиспользуемое пространство "," 4: Ufff "]

И другие вещи, которые позволяет нам делать обработка списков строк Haskell.
Толщина границы - это целое число, и если мы хотим изменить цвет окна, сфокусированного функцией настроениеЦвет которую мы только что создали, потому что мы оставляем переменную вот так:

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

$ На линии хмонад ... es sólo una aplicación de funciones asociativa a derechas, o sea, nos ahorramos unos paréntesis. 

Горячие клавиши

В конце файла у нас есть список кортежей, которые содержат некоторые ярлыки, в этом случае они запускают GVim, приостанавливают или воспроизводят музыку, а также ускоряют или задерживают ее. Вот и все. Функция additionalKeys входит во второй модуль, который мы импортируем, и обратные акценты заставляют ее выполняться в стиле функции div (/), например 1/2, а не div 1 2, что упрощает чтение. Так что, это:

- ...} `additionalKeys` [((mod4Mask, xK_v), создать« gvim »), ((mod4Mask, xK_c), создать« mpc toggle »), ((mod4Mask, xK_a), spawn« mpc prev ») , ((mod4Mask, xK_s), создать "mpc next")]

.Xmobarrc

Конфиг {font = "- * - monospace-9 - * - * - * - * - * - * - * - * - * - *", bgColor = "# fdf6e3", fgColor = "# 657b83", position = Top , lowerOnStart = False, commands = [Run Com "echo" ["$ USER"] "имя пользователя" 864000, Run Com "hostname" ["-s"] "hostname" 864000, Run Com "mpc current" [""] "mpd" 10, дата выполнения "% a% b% d" "date" 36000, дата выполнения "% H:% M" "время" 10, запуск StdinReader], sepChar = "'", alignSep = "} {" , template = "'username' @ 'hostname'} {'mpd' | 'date' - 'time'"

Это должно сработать, и это действительно так. Синтаксис немного сложнее, и лучше всего проанализировать его самостоятельно, чтобы понять. Поэтому я просто ограничусь тем, что скажу вам, что мы описываем команды, их параметры и некоторые дополнительные настройки, которые будут показаны в XMobar.
В строке шаблона есть все действия, и я придумал трюк, чтобы показать песню, которую я слушаю. Этот трюк и тот, который позволяет изменить песню для сочетаний клавиш, требует mpc, исполняемого файла клиента mpd из терминала.

Выводы

Думаю, все. Мы уже просмотрели основной файл XMonad и начали изучать Haskell, нравится нам это или нет. Если вы хотите продолжить, есть очень хорошее руководство для начала.
В следующей части мы рассмотрим непрограммируемые менеджеры, в частности Spectrwm / Scrotwm. Увидимся.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

      ивановнегро сказал

    !Фантастика!

    Spectrwm в следующий раз? !Да сэр!

      Песчаный человек86 сказал

    Очень хорошее руководство, выглядит очень интересно, я хочу взглянуть, хотя мне более чем комфортно с моим Openbox.

      анти сказал

    К сожалению, я не указал, куда идут эти файлы, но когда я редактирую сообщение, мне приходит сообщение об ошибке:
    Неустранимая ошибка: вызов неопределенной функции get_header () в /home/desdelin/public_html/blog/wp-content/themes/dlinux/index.php в режиме онлайн
    Если кто-то может его отредактировать, они будут такими:

    Основной файл конфигурации: ~ / .xmonad / xmonad.hs
    Xmobarrc файл: ~ / .xmobarrc
    Файл конфигурации консоли: ~ / .Xdefaults
    ????

         анти сказал

      Кажется, я не могу редактировать свои собственные сообщения. Я тоже нигде не могу найти эту опцию на рабочем столе. У меня пара багов, все, исправления минимальные.

      Нано-бамбуковое волокно сказал

    Что ж, мне это очень интересно, потому что это более продуктивно, когда дело касается программирования. Я хочу возиться с Awesome, потому что очень хочу изучить LUA.

    Он существует для тех из нас, кто программирует на Python Qtile, но правда в том, что я не могу его запустить, я использую Ubuntu, и я установил его через PPA, а также из источников, но, к сожалению, не хочет работать xD

    В любом случае LUA - это то, что я ДОЛЖЕН изучить, и нет ничего лучше, чем видеть лица друг друга с этими типами плиток.

    Продолжайте в том же духе, вы на пути к тому, чтобы стать автором в DesdeLinux

         Нано-бамбуковое волокно сказал

      И да, я учусь в колледже и в этом дерьме у них нет Linux xD

           анти сказал

        Спасибо, нано. Но можете ли вы помочь мне отредактировать статьи после их публикации? Я не могу.

             карликовый сказал

          Да успокойся, оставь их такими, как они подходят лучше, чем я их исправлю

      Хыкыз сказал

    Спасибо, анти, я обязательно попробую XMonad. Я вижу, что он использует базовые вещи Haskell без необходимости в большой сложности, такой как охрана, оператор приложения и, очевидно, использование списков (иначе это не был бы Haskell xD).

    Посмотрим, как это выглядит! 🙂

      Фернандо сказал

    Давно пользуюсь тайловым менеджером окон, Awesome. Когда у меня будет время, я сделаю руководство, в котором я надеюсь объяснить весь процесс, от установки awesome до настройки набора легких программ и создания нашей собственной темы.

    Если вам это кажется хорошим, я могу сообщить вам, чтобы вы могли опубликовать его здесь.

    Кстати, с вашего разрешения, я немного рекламирую на своем маленьком веб-сайте, если хотите, можете взглянуть, если вас интересует какая-либо публикация:

    http://niferniware.sytes.net

    Приветик!

         MSX сказал

      Если это Awesome 3, мне определенно интересно.

      Фернандо сказал

    Одна деталь, раздел Интернета, в котором я разместил блог:
    http://niferniware.sytes.net/blog/

    Прошу прощения за ошибку.

    Ура!

         Elav сказал

      Мне очень понравился твой блог… ^^

           Фернандо сказал

        Большое спасибо Elav, мы на связи!

        Правда в том, что DesdeLinux каким-то образом побудил меня создать собственный блог. Столько времени на использование Linux заставляет задуматься о том, чтобы внести что-то взамен ^^

        Приветик!

      MSX сказал

    «Если вам интересно, почему я выбрал эти четыре буквы для своего стола, я вспомнил четыре нуклеиновых основания ДНК».
    Сладкий, +1

         анти сказал

      Что ж, мне очень нравится идея положить ДНК на мой стол.

      Халонсов сказал

    Отличный гид, благодаря ей я просто пробую xmonad, и я могу сказать об этом только одно, я влюбился в xmonad, я до сих пор не прикладываю к нему руку и все равно кажется превосходным, большое спасибо

         MSX сказал

      Отлично, мы надеемся, что ваш прогресс превратится в пост! знак равно

      Виктор Салмерон сказал

    Небольшое замечание репетитору, на данный момент я использую стабильную версию Debian (Squeeze), и для установки dmenu это делается не с помощью aptitude install dmenu, а с помощью пакета suckless-tools, в противном случае отличное руководство

         анти сказал

      Та же способность исправляет это. Кроме того, порядок лучше понимать так.

      тарантонио сказал

    В этом руководстве предполагается, что у вас установлены x.
    В моем случае я начинаю только с консоли debian, с которой мне пришлось установить xorg. Это было бы хорошо, поскольку то, что мы ищем, - это минималистичная среда, начиная с debian без графических сред, устанавливая xmonad в простом режиме и добавляя инструменты и консольные программы, такие как mutt, irssi и т. Д.

         анти сказал

      Да, крестики уже были. В самой публикации объясняется, что я начал с минимального Debian, уже сделанного с Openbox.