LINUX.ORG.RU

XMonad, Haskell глазами начинающего: что?

 ,


1

3

Добрый вечер.

http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-Spacing.html

layoutHook = spacing 2 $ Tall 1 (3/100) (1/2)

Я честно попытался разобраться, что здесь что значит, но понял чуть больше, чем ничего. Пожалуйста, помогите понять.

layoutHook = spacing

Ну, вроде, всё окей

2

Из текста ниже по странице понял, что это как раз кол-во пикселей

$ Tall

Для layout под названием Tall?

1 (3/100) (1/2)

Что символизируют эти числа?

И ещё -

  • Почему после применения этой шайтан-магии у меня поменялось имя layout, отображаемое на xmobar?
  • Я добавил эти строки в первый раз, mod+Q - появились отступы. Поменял 2 на 20, сохранил конфиг, mod+Q - ничего не изменилось, xmonad --restart - ничего не изменилось. Завершил сессию, зашёл заново - настройки применились, отступы стали по 20. Почему ни mod+Q, ни xmonad --restart не сработали, как надо?

Заранее огромное спасибо.

★★

Последнее исправление: Norong (всего исправлений: 4)

Ответ на: комментарий от pol01

Большое спасибо, прочитал. Что-то понял, но некоторые моменты остались неясными. Вот этой строкой

layoutHook

Я создал новый лэйаут или изменил настройки старого?

Правильно ли я понимаю, что StdinReader в xmobar покажет ту информацию, которую сообщит xmonad, подав ее на stdin?

Ну и вопрос с перезапуском всё ещё не ясен.

Norong ★★
() автор топика

Насколько я помню, что такое xmonad, без хотя бы базового знания хаскеля я бы туда вообще не лез.

ovk48 ★★★
()

всё остальное тебе вроде как пояснили, поэтому

Почему после применения этой шайтан-магии у меня поменялось имя layout, отображаемое на xmobar?

вестимо, потому что ты сменил лайаут.

Я добавил эти строки в первый раз, mod+Q - появились отступы. Поменял 2 на 20, сохранил конфиг, mod+Q - ничего не изменилось, xmonad --restart - ничего не изменилось. Завершил сессию, зашёл заново - настройки применились, отступы стали по 20. Почему ни mod+Q, ни xmonad --restart не сработали, как надо?

xmonad создаёт executable в директории с xmonad.hs. при xmonad --restart он передаёт текущий layout в виде аргументов командной строки. можно ресетнуть лайаут на тот, что у тебя в конфиге(по дефолту mod-shift-space)

f1u77y ★★★★
()
Ответ на: комментарий от Norong

Я создал новый лэйаут или изменил настройки старого?

это новый лайаут. «изменить настройки старого»(видимо, имеется в виду дефолтный), можно чем-нибудь типа someModifer p1 p2 p3 $ anotherModifier $ layoutHook defaultConfig

f1u77y ★★★★
()
Ответ на: комментарий от f1u77y

Т.е я правильно понимаю, что после изменения той строчки с LayoutHook и mod+Q (пересборка и рестарт?) у меня создался новый лэйаут, соответствующий измененной строчке, но я остался на старом, т.к. он был активен (а тот факт, что его в конфиге уже как бы нет, не мешает?), но я мог бы переключиться на новый штатными средствами смены лэйаутов?

Norong ★★
() автор топика
Ответ на: комментарий от Norong

правильно

да

т.к. он был активен

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

а тот факт, что его в конфиге уже как бы нет, не мешает?

он передаётся старым процессом xmonad новому в виде аргментов командной строки. и при этом точно такого же лайаута уже могло не быть в конфиге, потому что вызов sendMessage иногда меняет лайаут.

f1u77y ★★★★
()

что?

>>= через плечо.

anonymous
()
Ответ на: комментарий от f1u77y

Понял, спасибо! У меня тут появилось ещё несколько вопросов. xmonad.hs: https://gist.github.com/anonymous/e9ffa0ef8ccf8d9991db, xmobarrc: https://gist.github.com/anonymous/0b1342e50f2b919fff49

  • Почему-то на первом рабочем столе у меня в режиме тайлинга окна перекрывают панель, т.е. как если бы её не было. На остальных рабочих столах панель всегда над окнами, и даже есть отступ между нею и окнами (gaps), как и должно быть. Так было и до добавления layoutHook, т.е. и тогда на первом столе панель перекрывалась. Чем это может быть вызвано?
  • `additionalKeysP` не работают. При попытке пересборки получаю parse error на 15 строке. Это, вроде, ошибка синтаксиса. Кажется, с ним у меня всё в порядке.
  • Какой вообще метод назначения дополнительных сочетаний клавиш считается лучшим, официальным и нотариально заверенным?
  • После добавления layoutHook у меня атрофировалась возможность переключать layouts. mod+space, mod+shift+space не работают, лишь один layout - Spacing 5 Tall. Как вылечить?

Заранее очень-очень большое спасибо!

Norong ★★
() автор топика
Последнее исправление: Norong (всего исправлений: 2)
Ответ на: комментарий от Norong
  • баг 0.12. ставь 0.11, либо собирай с git(рекомендую последнее). хотя, если ты используешь xmobar, а не любой другой статусбар, то можно попробовать добавить docksEventHook в handleEventHook — по некоторым причинам это помогает.
  • у тебя перед `additionalKeysP` нет пробелов, потому ghc считает его top-level определением и ломается. ставь пробелы перед всем кроме top-level
  • такого нет. выбирай самый удобный для себя. я выбрал тот, что из XMonad.Util.EZConfig, и тебе советую
  • правильно, ведь у тебя нет выбора лайаутов. выбор выглядит примерно так:
     Tall 1 (1/100) (1/2) ||| Full ||| etc
    
    применять модификатор точно так же как и к любому другому лайауту
f1u77y ★★★★
()
Последнее исправление: f1u77y (всего исправлений: 2)
Ответ на: комментарий от f1u77y

1.) Понял, спасибо.

2.) А что у нас относится к top-level к контексте конфига?

3.) Ну вот и меня сходу привлёк additionalKeysP :)

4.) А, догнал. Т.е layoutHook должен быть каким-то таким:

layoutHook = spacing 5 $ Tall 2 (3/100) (1/2) ||| Tall 1 (1/100) (1/2) ||| Full

и тогда будет выбор между следующими лэйаутами: Tall с spacing 5 и такими-то параметрами; Tall с другими параметрами; Full? И ещё вопрос - вот мой лэйаут новый теперь называется Spacing 5, его можно переименовать? И почему имя лэйаута взялось из его опций?

Norong ★★
() автор топика
Ответ на: комментарий от Norong

А что у нас относится к top-level к контексте конфига?

всё что ты определяешь глобально, а не локально(например, всё, что определяется в let или where — локальные определения).

layoutHook = spacing 5 $ Tall 2 (3/100) (1/2) ||| Tall 1 (1/100) (1/2) ||| Full

Tall с spacing 5 и такими-то параметрами; Tall с другими параметрами; Full? И ещё вопрос - вот мой лэйаут новый теперь называется Spacing 5, его можно переименовать?

нет. у оператора $ наименьший приоритет, поэтому это модификатор spacing 5, применённый к выбору из Tall с разными параметрами и Full. вообще, expr1 $ expr2 — по сути то же самое, что expr1 (expr2). а для того, что ты описал, нужно сделать так:

(spacing 5 $ Tall 2 (3/100) (1/2)) ||| Tall 1 (1/100) (1/2) ||| Full

его можно переименовать?

да, в параметрах лога для xmobar. только у тебя в конфиге неконфигурируемый модификатор для вывода в xmobar. надо сделать другой(ЕМНИП, в документации к XMonad.Hooks.DynamicLog или а арчевики есть информация по этому поводу)

И почему имя лэйаута взялось из его опций?

для каждого лайаута определена функция description, в которой обычно как раз выводят имя лайаута(или модификатора) с некоторыми его опциями.

f1u77y ★★★★
()
Последнее исправление: f1u77y (всего исправлений: 2)

Те делать нечего что ль? Поставь i3wm и забудь про этот унылый хаскелевский выхлоп с его идиотскими конфигами навсегда!

anonymous
()
Ответ на: комментарий от f1u77y

Всё тобою написанное я понял, ещё раз спасибо за помощь. Но, похоже, я пока не готов для XMonad.

Norong ★★
() автор топика
Ответ на: комментарий от anonymous

делать нечего

видимо, да

унылый

ящитаю, другие динамические тайловые wm ещё более унылы

идиотскими конфигами

с этим согласен на 100%, синтаксис конфига — хуже не придумаешь

f1u77y ★★★★
()
Ответ на: комментарий от loz

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

f1u77y ★★★★
()
Последнее исправление: f1u77y (всего исправлений: 1)

Xmonad настолько суров, что вопрос по настройке конфига постится в development и вызывает бурное обсуждение.

Myau ★★★★
()
Ответ на: комментарий от Myau

Xmonad настолько суров, что вопрос по настройке конфига постится в development и вызывает бурное обсуждение.

Не льсти себе. Haskell и аниме для дрыщей-имбецилов. Ничего сурового в этом нет.

anonymous
()
Ответ на: комментарий от anonymous

Не, Haskell суров, причем степень суровости легко масштабируется вверх. Суровее наверное только агды/идрисы и т.п.

Ivana
()
Ответ на: комментарий от Ivana

Ну нагородили школяры говна за две тысячи лет и копаются там, «исследуют». Теория жидоящеров с планеты Наебиру тоже тогда охрененно какая суровая.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.