Pull to refresh

Comments 94

Классная статья, Спасибо. А вы перед тем как перейти на xmonad пробовали что-нибудь еще(как пример awesome или что-нибудь из аналогов), почему xmonad?
Пробовал dwm и awesome. XMonad понравился больше, да и конфигурации на Haskell показались очень гибкими. Ну и вообще специфика попробовать Haskell хоть где то, очень привлекала )
А попробуйте ещё i3-wm, ушёл на него с XMonad.
тоже слышал о i3 много хорошего, но у самого руки не дошли попробовать
Я пролистал в надежде посмотреть картинки, а их нет, только одна — для завлекалова, т.к. не в состоянии сейчас оценить всю прелесть текста. Но с другой стороны сам давно сижу на i3. Итак, тайловые менеджеры это очень здорово, но поскольку это менеджер окон хотелось бы увидеть скрины, т.е. хотя бы как-то ощутить пользоватеьский опыт, который сподвиг автора на написание этого поста.
Все скрины похожи друг на друга как две капли. Вот сейчас сижу в таком окружении тайтлов (два монитора, 3 тайтла):
image
А ты знал, что для хрома есть расширение ViRome, такой себе аналог Vimperator'a. Просто мне по душе больше пришелся vim, чем nano, и вот управелние от него в браузере — очень классная штука.
А можно вас попросить расшарить тему и плагины для vim, которые используются тут?
Очень долго использовал vim лишь с плагином для отображения структуры фс и подсветкой, хочется чего то большего)
Могу написать статью на хабр по моим плагинам и подобному добру в Vim.
Пишите ) Буду очень благодарен!
А чтоб вы пока не скучали, вот вам мой справочник по некоторым, используемым мной модулям для Vim.
Вот это вам спасибо, то что нужно!
Не вопрос, скажите какой функционал вас интересует? Я с радостью поделюсь скриншотами в любой интересующей вас конфигурации )
В i3 есть классная опция hide_edge_borders.
В awesome нет возможности её реализовать.
В xmonad можно?
да, там же есть в конфиге явно прописанный параметр ) И цвет, и ширина… А для Full Layout они убраны с помощью модификатора noBorder
Хорошо если они есть. Указать цвет, ширину, отступ и скрыть границы не проблема, но это не то.
Всё выше перечисленное можно настроить ) Причем цвет есть точно для разного типа окон, активные, не активные и ещё несколько каких то)
Я не сомневаюсь в том что всё вышеперечисленное можно настроить в xmonad (это вполне стандартный функционал).
Меня интересует только hide_edge_borders.
В awesome вот тоже есть что-то вроде «умных границ», но они ведут себя довольно примитивно. Хорошо если в xmonad поведение границ может быть аналогично i3wm.
К сожалению не знаю какое поведение в i3wm. Но тут есть различные варианты, в конце концов никто не запрещает закодить самому. Вот это помогает настроить borders, а с помощью этих хуков можно сделать приятный спейсинг.
Можно на пальцах, как работает hide_edge_borders? Или может видео с примером, заинтересовали эти «умные границы»
При hide_edge_borders both отображаются только те границы что примыкают к другим окнам.

Мелочь, но UX в корне меняет.
Круто, но Haskell и монады в конфигах — это перебор. А какие еще реально крутые проекты на Haskell знаете вы?
Почему перебор? Нормально. Так же нормально, как lua для awesome.
Потому что тем самым ограничивается количество потенциальных пользователей до тех, кто более-менее понимает Haskell.
Я не понимаю Haskell чуть менее чем совсем, но активно пользую xmonad как дома, так и на работе.
Что касается картинки с хоткеями, я бы порекомендовал вот эту:
image
Это божественно ) Спасибо!
А есть аналоги Unity Dash для XMonad? Т.е. omnibox для поиска всего на свете.
О, google уже умеет искать локально установленные приложения, индексирует локальные файлы, залазит в devhelp и даже имитирует написанные мной плагины для юнити. Почти как в 2010.
Я же вроде сказал — dmenu + google.
Извиняюсь, неправильно понял. Я в таких случаях пишу google://dmenu :)
Да, dmenu похож на более-менее приемлимую замену. Как минимум «плагины» для него писать точно проще.
Вот кстати в текущей конфигурации у меня не отображаются Табы при Tabbed layout. Не понимаю почему, когда то помню отображались. Может подскажет кто где косяк?
Да, всё по нему и делал. Но отображается как Full, табов не видно. Причем пробывал даже simpleTabbed
Много лет работаю в тайловых менеджерах. Были ion3, dwm, wmii, сейчас awesome. Есть ли существенные преимущества сабжа перед другими менеджерами? Насколько он интегрирован с современными подсистемами?

Например в awesome мне много проблем доставляет буфер обмена, мне кажется их много, этих буферов обмена, иногда скопируешь что-нибудь, а не вставляется. Приходится копировать в gedit и оттуда копировать куда надо. Например из chrome не копируется в rdesktop. Еще проблема, закроешь окно, откуда скопировал и все, буфер очистился.

Отдельная анальная боль от ibus. Обновишься до новой убунты, устанавливается IBus. Проблема с ним такая, если стоит русский язык, то awesome уже не реагирует на команды, на англ все хорошо. Если удалить, то снова становится все хорошо.

Тайловые менеджеры это основная вещь, которая меня держит на linux десктоп, потому что ничего подобного в плане личной продуктивности в других системах для себя не нашел.
Слишком простенький, плюс конфигурация прямо в исходниках. На awesome в lua я довольно увесистые конструкции для себя навернул, как мне удобно. В wmii я бы такое не осилил…
Попробуйте i3, он классный, перешёл на него с XMonad. Конечно, конфиг не на языке программирования ограничивает возможности, но зато почти всё, что надо для работы и так из коробки, и при необходимости можно командовать менеджером через dbus.
> можно командовать менеджером через dbus

В i3wm же нет dbus. У них свой вело-ipc которым они очень гордятся.
Да, на самом деле всё именно так, как вы и сказали, я ошибся. Однако собственный ipc не делает управление этим оконным менеджером извне сложнее, чем если бы это было через dbus.
Ну, просто скормить последовательность из нескольких команд не проблема, но для чего то большего хочется полноценный стандартизированный ipc или что-то более вменяемое чем их ipc.

Допустим использовать conky для генерации особого (заморочки i3) json-stream для i3bar это то ещё удовольствие.
С буфером никаких проблем не испытывал. Что касается клавиш, то тоже проблем не испытывал. Если с клавишами и возникают проблемы, то они легко решаются путем правки конфига.
С буфером решил вопрос, оказывается косяк rdesktop, решается ключом

-r clipboard:CLIPBOARD

С клавишами — это баг самого awesome, когда-нибудь починят. Лечится путем сноса IBus, или колдунством с xkbcomp.
Для буфера поставьте что-то вроде clipit
По умолчанию при закрытии приложение буфер стирается. clipit это дело сохраняет + хоткеи и история.
Чем вы пользуетесь для менеджмента сетевых соединений? Руками писать всю эту систему приоритетов wifi сетей, реконнекты как-то лениво, а уж тем более для каждого нового соединения редактировать какие-то файлы с конфигами. Когда пользовался awesome, использовал gnome-network-manager.
И тут им же можно пользоваться. На ноутбуке выводил в trayer. Но со временем перешёл на mac os x, а на него страшновато archlinux ставить ) Так и сижу на маке, порой выбешивает)
anmi, посмотрите в сторону wicd — есть GTK- консольная и оболочки этого network manager'a
GTK- и консольная оболочки… Извините.
UFO just landed and posted this here
Каждый волен выбирать сам, но для разработчика важна эффективность. Если палитра решает задачу контрастности элементов окружения и не вызывает отторжения, то всё ок ) Видимо это палитра не для вас, покажите свою? Может возьму на вооружение!
PS: Часто и красноглазиков искажённое чувство прекрасного, это да. Но мы прогрессируем, если нам укажут как)
UFO just landed and posted this here
Про борланд, прям за душу взяло)
Я за аскетичность, не очень люблю прозрачные консоли даже, только последнее время тестирую — пока неплохо)
UFO just landed and posted this here
XMobar уже не очень. Использую чуть меньге года taffybar и доволен как слон.
тот случай, когда комменты полезнее статьи (от которой несет manpages)
C чего то нужно же начинать ) Про taffybar согласен, отличная штука.
Ух у него и зависимостей 0_о
Повторное использование кода, конечно, хорошо, но уверен, что львиная доля установившегося функционала мне ни разу в жизни не понадобится.
Мне сложно сказать, что будет нужно, а что нет — еще даже не запускал, не говоря уж о конфигурации.
Но по зависимостям пришлось обновить/установить/пересобрать 108 пакетов. Из них 4 — сам taffybar, ghc, xmonad, xmonad-contrib, и все остальное — из dev-haskell/* Мягко говоря неожиданно для панельки =)
Ну да, возможно.
Правда, я использую NixOS и не особо волнуюсь об этом :)
А расскажите про впечатления от NixOS в качестве основной системы? Я сижу на Арче, но иногда тянет попробовать Никс. Оно стоит инвестированного времени? Какие лично для вас плюсы/минусы по сравнению с предыдущей системой (какая она была?) обнаружились?
UFO just landed and posted this here
Выбирай:
blogerator.ru/page/tajlovye-okonnye-menedzhery-windows
На деле не представляю как можно пользоваться подобным на Windows. В смысле так или иначе пользователи этой ОС довольно часто используют в работе мышку, от чего правая рука больше времени лежит на ней, чем в исходной позиции для печати слепым методом. Более того в Windows нет (по крайней мере до 10 версии) многоэкранности, а для тайловых менеджеров это крайне важно. При такой работе куда проще пользоваться alt+tab.
Про многоэкранность не согласен, я ниже уже жаловался на судьбу безрутового пользователя корпоративной машины на RHEL5. На борту nvidia, конфигурить два монитора у техподдержки нет инструкции (смешно, но это так).
Нашел выход — TwinView через nvidia-settings + dwm в варианте разбиения master/stack 50x50, получается этакая двухмониторность для убогих. На винде можно аналогично поступить. Не так удобно, как нативная многомониторность, конечно, floating приложения приходится вручную изменять. Если очень нужно можно и подпилить WM, чтобы он «эмулировал» два монитора из одного «широкого», ну то есть чтобы было два «sublayout».
Я не про многомониторность, а про многоэкранность (правильнее даже будет сказать — много рабочих областей (workspaces)). Это когда в xmonad нажимаешь super + 2 и переходишь в чистый рабочий стол без тайтлов, делаешь там что то, затем жмешь super + 1 и возвращаешься к предыдущему рабочему столу.
Там же ещё xinerma есть. super+e super+w свапает столы на мониторах. Очень удобно)
Не свапает, а переключается между экранами. Свапнуть — обменять.
Так ведь можно и свапнуть или отправить одно окно на соседний экран итд… Много вариантов )
За это отвечает super+shift+e/w
Нигде не встретил в комментариях, но ещё очень здорово работает связка bspwm+sxhkd+(dzen2 || bar), где можно делать вот такие вещи
Впечатляет!
А толковый мануал по допиливанию не подскажете?
Ну, в основном man и чужие конфиги :) Если интересно — могу написать пост немного позже.
Тоже голосую за мануал)
Выглядит очень приятно. А вы сами используете? С каким дистрибутивом?
Да, Arch Linux, раньше использовал dzen2 для бара но перешёл на b-a-r, dzen2 остался только для вот таких уведомлений
Использовал xmonad долгое время, потом перешел на dwm. Причины просты:
Надоело таскать штангу
Один С файл. dwm можно скомпилить и на работе, без рутовых прав, за суровой проксей, не качая ghc и пакет либ. Главное чтобы Xlib-devel и gcc были,.
После настройки dwm не шибко то отличается от xmonad. Ну разве что layout-ов поменьше из коробки, можно добить патчами (или написать). Многие фичи я не использую, конечно, но автор топика их и не описывает.
И так толстая статья получилась, тут главное вовремя остановится. Хотя и у меня не всё в XMonad работает, иногда сам задаюсь вопросом «почему? Почему это не работает?» :)
Последнее время пытаюсь немного попрактиковаться с haskell чтобы лучше понимать возможности конфигов XMonad )
Да, это понятно. Хорошая статья, и WM отличный. Плюса заслуживает.
Но «тяжеловат» он для моих нужд. gcc у меня есть на всех машинах, а ghc/haskell-библиотек и рантайма нет ни на одной. А вообще это дело вкуса, а фломастеры у всех разные.
Пользовал несколько месяцев Awesome, решил перейти на XMonad, т.к. заинтересовался Haskell. Вроде более-менее настроил, работает, и… Вы уж извините, но, как-то, не дотягивает он до Awesome.
Во-первых: там нет функции (achtung!)«пред. лэйаут». Да. Есть функция «след. лэйаут», есть сброс на некий дефолтный лэйаут; но функции возврата нет. Я задал об этом вопрос на IRC #xmonad, чем вызвал 15 бурное минутное обсуждение, из которого я понял, что α) Это невозможно реализовать в принципе ( geekosaur: (they're actually functions. ever tried to run a function backwards?)© ) β) Ядро XMonad реализовано ввиде некоего мат. концепта StackSet, который очень красивый, будучи представленным в вакууме, но был ужасной идеей для имплементации UI (geekosaur: and most of the problems people have with window behavior boil down to the StackSet being a lovely theoretical concept and a horrible UI implementation© )
Во-вторых: XMobar не показывает, элементарно, свернутые приложения. Я имею ввиду те, что сворачиваются в некий мини-значок, как правило это всякие чаты, торренты, и пр. Гугление по этому поводу мне выдало, что нужно запускать какое-то отдельное приложение, но лично мне его запуск ничего не дал. Так же, вроде бы как, это проблема XMobar, и якобы она отсутствует в TaffyBar. Попытки сконфигурировать и запустить последний, за пред. несколько вечеров еще не достигли успеха.
В-третьих: XMonad сдает мод клавишу VirtualBox'у. Как чинить это, я не имею ни малейшего понятия, Awesome WM из коробки не позволял VB перехватывать свои комбинации. Это очень болезненно, т.к. в VB у меня обычно запущена WinXP c Visual Studio. Я в IRC задавал вопрос на каналах обоих менеджеров, и нагуглил на stackexchange заданный кем-то вопрос — никто ничего об этом не знает.
В-четвертых: в SimpleFloat layout, который я обычно оставляю для некоторых приложений, окна каким-то чудесным образом просто не переключаются. Т.е. я жму кнопку «след. окно», вижу в XMobar'e, что я, вроде бы, переключился, но передо мной по прежнему продолжает висеть окно предыдущего приложения.

Конечно я очень надеюсь, что смогу его довести до более-менее работоспособного состояния, но, если кто-то впервые желает попробовать тайловый оконный менеджер лучше о XMonad даже и не думайте. Я все еще не сбежал с него исключительно из-за своего желания научиться и попрактиковать Haskell.
Я так же добавлю, что даже до нынешнего, до сих пор слабо-юзабельного, состояния, мне его пришлось настраивать вечерами недели полторы-две. При наличии конкуренции со стороны, к примеру, Awesome, который до всего мной перечисленного настраивается простым копированием откуда-то из /etc/ конфига по-умолчанию, который дальше уже без проблем можно подредактировать под себя, это делает XMonad просто ужасным менеджером.
Когда вы переключаетесь в SimpleFloat, все тайны остаются в том же положении что и были. Но их можно перетащить например. Сам я правда использовал лишь для конкретных тайлов
className =? "MPlayer"        --> doFloat 

В таком формате, когда выскакивает окошко, оно не будет обработано лейаутом и будет в подвешенном состоянии.

Не понял ваших рассуждений на тему «сворачивания в некий мини-значок». Я не пользуюсь TaffyBar, но для отображения списка окон у меня есть TabLayout, в котором тайны отображаются в виде табов. В крайнем случае могу выводить список в xmobar…

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

А в целом конечно да, XMonad не для слабонервных. В настройке бывает не очевиден и сложен.
Можно поподробнее про SimpleFloat? В каком смысле перетащить? Вот есть у меня, скажем, два окна в SimpleLayout, мне надо, чтобы при нажатии M-j, окно, на которое перешел фокус, всплыло выше предыдущего. Среди таких приложений я могу назвать pdf читалку и офис, т.к. их не имеет смысла делать меньше полного экрана (по-крайней мере на моем рабочем 1366×768 дисплее), но я бы не рискнул составлять полный список приложений по разным причинам. Мне просто надо, чтобы на SimpleFloat у меня работало переключение между приложениями, вне зависимости от того, какие это.

Про мини-значок — я имел ввиду трэй. Есть ряд приложений, которые при их «закрытии» просто уходят в этот трэй, и проблема, что я не могу видеть список этих приложений. Ну, или, у меня там стоит klipper, которым я пользуюсь довольно часто.
На самом деле я этим вечером наконец смог заставить работать taffybar. Я некоторые шаги напишу здесь, на случай, если кто пойдет по моим стопам: во-первых на сегодняшний день не стоит ставить с репозитория taffybar. Он там версии 0.2, а все примеры на гитхаб под версию 0.4, они просто не заработают. Во-вторых качать исходники тоже не надо. taffybar устанавливается в два шага: вначале используем команду «cabal install tafybar», затем скачиваем с гитхаб «taffybar.hs» (при желании редактируем, что надо), и компилируем командой «ghc taffybar.hs». Если все пройдет нормально, это выдаст исполняемый файл собственно панельки — исполняем его, и наслаждаемся. «taffybar.rc» с гитхаб должен находиться в директории «~/.config/taffybar/», так же не забываем глянуть в пример там же «xmonad.hs».
По непонятным причинам автор не счел нужным оставить доки на гитхаб, и все это пришлось либо угадывать самому, либо спрашивать на IRC, так что, думаю, кому-то это очень пригодиться.

Понятия не имею, как комментарий ушел в верхний уровень… Полагаю, причина в том, что я случайно закрыл окно, и хабр, к счастью, сохранил мой комментарий, но сдвинул его в самый низ, на что я даже не обратил внимания…
Taffybar хорош для тех кто любит haskell ) Можно много классных штучек сделать, но «взял, набросал конфиг, радуешься» это не про него )
SimpleFloat — при переключении на него, если у вас много тайлов, они будут перекрывать друг друга. Если они изначально не перекрывали — ничего и не будет. Можно например открыть приложение в новом тайме и оно всплывет по умолчанию по центру над другими. При свапе( у меня super+tab) между тайлами они выводились на передний фон. Когда я использовал его, у меня это так работало.

По поводу трея — я раньше использовал trayer, в котором свернутые приложения, типа чатов, отображаются корректно. Но за ненадобностью перешел на xmobar. Хотя ничто не мешает использовать xmobar и trayer вместе

Вы пробовали trayer?
Я думаю, я вернусь на Awesome. Я собачусь с XMonad уже около месяца, но до сих пор так и не получил нормальное рабочее окружение. На половину моих вопросов, заданных в IRC, я слышу либо ответ о том, как это непросто будет реализовать, либо вообще молчание, никто ничего не знает. Наверное можно было бы все это как-то перетерпеть, но я засел в специфичные для XMonad проблемы, и за весь месяц ничуть не выучил Хаскелл — мою главную цель миграции с Awesome на XMonad. Из прочитанных бесед в IRC у меня сложилось впечатление, что этот менеджер умирает, и держится исключительно на энтузиастах/разработчиках; но т.к. ядро/StackSet никто не станет переписывать, он обречен.
У меня, в общем-то, еще была идея заняться текстовым редактором yi, так что, на чем потренироваться в Haskell, у меня есть. За напрасно потраченное время только обидно, но надо уметь остановиться…
Развитие действительно какое то вялое. Можете попробовать еще bspwm. В комментариях советовали, выглядит приятно.
Но он не имеет отношения к Haskell :/ Меня ведь Awesome WM полностью устраивает — удобен, легок в понимании и настройке, много конфигов и туториалов на интернетах. Я пытался перейти на XMonad исключительно из материальных соображений изучения Haskell'а.
На мой взгляд, для изучения Haskell и XMonad, и Yi совершенно бесполезны. Скорее, вредны. Из комментариев вижу, что вы пришли к тому же выводу )

По настоящему действенный способ — попробовать написать на нём что-нибудь сиюминутно полезное. Например, автоматизировать какой-нибудь процесс на работе, написать какой-нибудь полезный конвертер или верификатор / миникомпилятор.
Я вот всё надеюсь найти время на парсер/форматтер/линт make-файлов.
Кажется так и появился pandoc :)
Для изучения возможно не подходит, но как стимул начать использовать Haskell — вполне.

Статья хорошая, но есть определённые пробелы, не позволяющие просто взять и "утащить" к себе минимально рабочий конфиг. В частности, отсутствует определение myTabConfig

Благодарю за замечание, как то так выглядит этот кусок:
myTabConfig = defaultTheme {
   activeColor         = "#6666cc"
  , activeBorderColor   = "#000000"
  , inactiveColor       = "#666666"
  , inactiveBorderColor = "#000000"
  , decoHeight          = 10
 }
Sign up to leave a comment.

Articles