Меню

Установка и настройка i3wm

LaurVas

Иногда в Openbox’е мне не хватало тайлинга: чтобы окна не перекрывали друг друга, а стыковались. Типа такого:

Разумеется, при должном усердии можно аккуратно расставить окна руками. Но стоит открыть лишь ещё один терминал, и весь порядок рушится. Да, в типовых ситуациях выручали горячие клавиши. Но на все комбинации окон не напасёшься горячих клавиш. А ещё я перфекционист и заморачиваюсь по поводу рационального использования площади монитора. Я отключал заголовки окон и радовался выигранному пространству:

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

К тайловому оконному менеджеру (сокращённо WM) надо привыкнуть. Это нормально. Linux тоже поначалу был непривычен, верно? Запаситесь терпением, и оно окупится.

Другие популярные тайловые WM

DWM. Аскетичный оконный менеджер от Suckless. Настраивается прямо в исходниках, в заголовочном файле. Маленький, быстрый и простой. Возможности тайлинга у него небогатые: конфигурация как на картинке выше ему уже не по зубам.

Xmonad. Написан на Haskell. Хаскеллисты гордятся и прокачивают свой скилл, допиливая этот WM. Интересен ли он остальным людям? Я не нашёл в нём ничего особенного.

Awesome. Нескромное название… Свой путь в тайлинг я начал с него. Не проникся, хотя на ЛОРе многие хвалят. Мне он показался излишне усложнённым. Имеет аж 12 вариантов компоновки окон (layouts), из которых реально нужных 2-3. Не понравилось, что при открытии нового окна всё перестраивается и какой-то он страшный по дефолту. Нашёл для вас неплохое демо на Youtube.

Установка i3

Организация работы в i3

Чтобы не путаться в рабочих столах, вы должны выработать стратегию что где запускать. Тут всё сильно зависит от ваших привычек и специфики работы. Могу дать только один очевидный совет: выделяйте отдельный рабочий стол приложению, которому нужен весь экран (IDE, браузер). Вот моё разделение:

Остальные рабочие столы я использую редко и без какой-либо системы. На индикаторе в левом нижнем углу экрана отображаются только те рабочие столы, на которых есть открытые окна. Нет рабочего стола на индикаторе — значит и нет на нём ничего, пустой. Вроде бы мелочь, но фишка кайфовая!

Если очень хочется, можно дать рабочим столам имена вместо номеров. Не спрашивайте зачем. Я не знаю.

Как рулить окнами в i3

По своему опыту могу сказать, что главное при работе в i3 — понять как он представляет набор окон в виде дерева. Слева будет скриншот, справа — как i3 видит данную конфигурацию.

Итак, i3 группирует окна в контейнеры. Всего есть 4 типа контейнеров:

Горизонтально разделённый контейнер (horizontal-split):

Вертикально разделённый контейнер (vertical-split):

Контейнер с табами (tabbed):

Стэковый контейнер (stacked):

Win + E переводит горизонтальный контейнер в вертикальный и наоборот,
Win + W переводит контейнер в табовый,
Win + S переводит контейнер в стэковый.

А теперь самое интересное: мы можем создать новый контейнер на месте активного окна:

Win + V создаёт вертикальный контейнер,
Win + H создаёт горизонтальный контейнер:

Новые окна будут открываться внутри нового контейнера:

Вы сейчас спросите: а на кой чёрт засовывать один стэковый контейнер в другой? Сам не знаю. Я так и не делаю никогда. Сейчас исправим.

Поменять компоновку второго контейнера легко, а как поменять компоновку первого? Для этого надо подняться на уровень выше. Есть два способа:

Благодаря рекурсивным контейнерам в i3 можно создавать сколь угодно сложную мозайку вообще без напряга. Вот пример рабочей компоновки для большого монитора:

Таких богатых возможностей я не встречал ни в одном оконном менеджере. Это же конструктор своих собственных IDE под любые задачи!

Можно оторвать любое окно от плитки и сделать его плавающим (floating). Такое окно будет находиться поверх плитки в отдельном слое. Не знаю зачем это может понадобиться и не пользуюсь этой фичей. Диалоговые окна всегда плавающие, что логично.

Остальные комбинации клавиш:

Win + Shift + стрелка перемещает активное окно по плитке,
Win + Shift + цифра отправит окно на указанный рабочий стол,
Win + F разворачивает окно на весь экран и обратно,
Win + Shift + Q закрывает активное окно,
Win + Shift + пробел делает окно плавающим и возвращает обратно,
Win + пробел переводит фокус с тайлового окна на плавающее и обратно,
Win + мышь перемешает плавающее окно.

Читайте также:  Flexgain fom16 настройка lan

Чтобы быстрее запомнить горячие клавиши, можете распечатать шпаргалку.

Настройка под себя

Чтобы работа была в удовольствие, а инструмент приносил радость, важно не только изучить как он работает, но и настроить под себя. С этим у i3 всё хорошо.

Я не нашёл графических утилит для настройки i3 и надеюсь что их действительно нет: править конфиг руками совсем не сложно. Все пользовательские настройки хранятся в

Как и Openbox, i3 не любит выполнять чужую работу. Обои, индикатор раскладки клавиатуры, блокировка экрана реализуются сторонними приложениями. Подходящие для этих целей утилиты я подробно описал в статье про Openbox. В i3 я по-прежнему сижу без обоев, использую sbxkb для индикации раскладки и slock для блокировки экрана.

Ресайз

i3 ресайзит тайловые окна в процентах относительно родительского контейнера и мне это не нравится: получается грубый ресайз в больших контейнерах и тонкий в маленьких. Вообще идея относительного ресайза концептуально интересна, вот только привязываться надо не к размеру контейнера, а к размеру окна. Но так i3 пока не умеет.

А может быть клавиатура в принципе плохо подходит для ресайза? Получается либо быстро, но грубо, либо точно, но медленно. У мышки такой проблемы нет. В i3 можно двигать стыки окон мышкой, но во-первых до неё слишком далеко тянуться, а во-вторых предварительно надо попасть курсором в стык, что тоже отнимает время.

К счастью, недавно разработчики запилили ресайз тайловых окон на фиксированную величину и 4 ноября эта фича попала в релиз (версия 4.16). По-моему так лучше. Я поигрался с настройками и в конце концов остановился на двух группах клавиш для изменения размеров окон: H J K L двигают грубо, а стрелочки — тонко:

Возможно со временем найдутся более удобные числа, а пока так. Кстати, никто не запрещает делать ресайз на разную величину по высоте и ширине или в разных направлениях (в плюс больше чем в минус или наоборот).

Автозапуск приложений

Привязка приложений к рабочим столам

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

Нам нужно второе значение. Обернём его крышкой и баксом для точного соответствия:

Таким образом приложение будет всегда открываться на строго определённом рабочем столе, в том числе при запуске через лончер или из терминала. В некоторых случаях это может быть нежелательным — когда я запускаю приложение через лончер, я ожидаю увидеть его здесь, а не где-то на пятом десктопе. Можно сделать привязку только для автозапуска. Немного костыльно, но работает:

Цвета, шрифт, рамки

Я пробовал менять цветовую палитру i3, но получалось только хуже. Стандартные цвета действительно удачно подобраны. Расскажу лучше про шрифты.

Чтобы узнать какие растровые шрифты есть в вашей системе и выбрать подходящий, используйте утилиту xfontsel (пакет xorg-xfontsel в Archlinux и x11-utils в Debian и Ubuntu).

Можно настроить разные шрифты для заголовков окон и панели, если очень хочется.

Конечно же я отключил заголовки окон:

В i3 они нужны ещё меньше, чем в Openbox’е. Заголовки табового и стэкового контейнеров при этом не пропали — удобно.

Выделение активного окна

Когда отключены заголовки окон, то все окна выглядят одинаково и сходу непонятно какое из них сейчас активно. Есть лишь пара малозаметных признаков, по которым можно вычислить активное окно: мигающий курсор и тонкая однопиксельная рамка вокруг окна. Эффективно работать в таких условиях не получается. Вообще это проблема любого оконного менеджера, а не только i3. Я стал искать как сделать активное окно заметным.

Самое простое решение — увеличить толщину рамки:

Стало лучше, но хочется большего. А что если затемнять неактивные окна? Вот так:

Для этих целей хорошо подходит композитный менеджер picom. Помимо затемнения он умеет полупрозрачность, тени и вертикальную синхронизацию (vsync). К сожалению picom вяло развивается начиная с 2016 года, и, в зависимости от видеокарты, может давать побочные эффекты вроде просадки частоты кадров (fps) или мерцания. У меня вообще в какой-то момент стал подвисать скролл в браузере. Но сейчас всё работает нормально, так что попробовать стоит.

Читайте также:  Настройка антенного усилителя своими силами

Ставим пакет picom и сперва тестируем в консоли:

—inactive-dim 0.2 — степень затемнения неактивных окон (0…1), подбирается опытным путём.
—inactive-dim-fixed — не вычислять степень затемнения с учётом полупрозрачности. Возможно этот ключ лишний, если полупрозрачность не используется, но я его на всякий случай добавил.
—config /dev/null — не читать системный конфиг-файл. Без этого ключа picom рисует тени, а мне нужно только затемнение окон.

Если всё нравится и работает без нареканий, добавляем вызов этой команды в автозапуск i3. Если же возникли проблемы, надо разбираться. У picom’а куча низкоуровневых настроек, в которых я ничего не понимаю.

Почему-то picom меняет цвет заливки фона с чёрного на серый. В принципе можно оставить и так: фон виден только на пустых рабочих столах, а рабочие столы редко бывают пустыми. Но я настолько привык к чёрному фону, что захотел его вернуть. Для этого понадобится утилита yawa (ранее hsetroot ). В Archlinux она находится в AUR, в Debian и Ubuntu в официальных репозиториях.

Панель i3bar

Панель i3bar — это неотъемлемая часть i3. В принципе можно заменить её на что-то другое или даже отключить, но зачем?

В левой части панели расположены индикаторы рабочих столов, а остальное место отведено под статусную строку и трей. Тонкой настройки, как у Tint2, здесь нет. Здесь вообще настроек — раз-два и обчёлся: можно перенести панель наверх, если вы любите сверху, да отключить трей.

Самая интересная часть панели с точки зрения настройки под себя — это статусная строка. По сути это такая сильно упрощённая система мониторинга. Её формирует утилита i3status и вот что она умеет показывать:

i3status специально сделана маленькой и простой, чтобы не тупила под высокой нагрузкой. В ней не предусмотрен запуск дочерних процессов, поэтому, например, выводить результат пинга на панель не получится. Для этих целей придётся мастерить свою обёртку или подбирать более мощный аналог, которых предостаточно.

Настраивается i3status через свой конфигурационный файл

Scratchpad

Scratchpad — это такая нычка, куда можно спрятать окно, чтобы оно не мешалось, но в то же время было всегда под рукой. Если вам нравятся quake-like терминалы, то scratchpad скорее всего вам тоже понравится — по сути это то же самое.

В дефолтном конфиге нет горячих клавиш для scratchpad’а. Документация i3 рекомендует назначить его на − (минус); мне же больше понравилось, когда я перенёс его на кавычку слева от 1 — сюда обычно назначают quake-like терминал и до неё ближе тянуться. Итак, добавим пару строк в конфиге:

i3 позволяет прятать в scratchpad несколько окон. Когда их там больше одного, Win + ` будет доставать и убирать окна по очереди. В реальной работе это неудобно уже на двух окнах, хочется иметь по отдельному хоткею на каждый scratchpad. В отличие от рабочих столов, у scratchpad’ов нет идентификаторов, поэтому нельзя дать команду вроде “спрятать это окно в первый scratchpad” или “показать второй scratchpad”. Но можно использовать свойства окон аналогично тому, как это делается для привязки к рабочим столам. Со временем я пришёл к такой конфигурации:

Win + F1 отвечает за Telegram, а Win + F2 за менеджер паролей KeePassX. Получилось удобно. Если мне когда-нибудь захочется держать в scratchpad’е ещё одно приложение, я добавлю третью привязку. Не хватает только индикатора scratchpad’а на панели i3bar.

Источник

Настройка i3WM

В современных графических оболочках концепция тайлига очень сильно недооценивается, примитивный тайлинг есть и в Windows и в таких оболочках как KDE, Gnome, XFce. Но все это лишь частичная поддержка тайлинга. По настоящему тайлинг отлично реализован в таких оконных менеджерах как Awesome, DWM, i3WM. И сегодня как раз поговорим о последнем.

Читайте также:  Ace stream web extension настройка

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

Введение

Думаю многие читатели этого поста уже знают что такое динамический оконный менеджер — коим и является i3WM. А те кто не знает — сообщаю, оконные менеджеры (составная часть любого DE) делятся на два типа, стековые (плавающие окна) и фреймовые (окна располагаются мозаикой). А если все это смешать, то получиться гибрид в виде динамических оконных менеджеров, в которых окна могут переключаться из плавающего режима в фреймовый.

Не важно почему вы выбрали именно i3wm среди многих других динамичных оконных менеджеров… Будто простота настройки (в чем вы убедитесь ниже), его легкость по сравнению с другими или же просто по совету более опытного линуксойда. Для начала я предлагаю рассмотреть что мы будем иметь из коробки после установки i3wm:

Теперь давайте разберемся со всем по порядку.

Настройка i3WM

После запуска нас встретит окно выбора mod клавиши. Будет два варианта Meta (windows кнопка) и Alt. После запуска перед собой мы будем видеть только i3bar с запущенным в ней i3status и больше ничего.

Окно выбора Mod клавиши

Теперь давайте проясним для себя то что нам надо

Памятка стандартных хоткеев i3WM

Устройство конфига в i3WM

По умолчанию конфиг i3WM находится в папке

2) Установка переменных. В i3wm можно создать переменные, работает это все как define в C++. На место переменной встанет заданная ей строчка. Переменные можно задать с помощью set.

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

3) Комбинации клавиш задаются с помощью bindsym, синтаксис предельно прост

В начале конфига стоит поправить пару строчек на свой вкус :

font pango:xos4 Terminus 8 # Установка шрифта для рамок окна

Этого было бы достаточно если бы не пару проблем с которыми я столкнулся когда пытался настроить некоторые клавиши.

1) Регулировка громкости. Я использую pactl для этих целей, и для работы кнопок +\- и переключения состояния микрофона и звука я использую вот такие бинды

bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +5%

bindsym XF86AudioMute exec pactl set-sink-mute 0 toggle

bindsym XF86AudioMicMute exec pactl set-source-mute alsa_input.pci-0000_00_1b.0.analog-stereo toggle

2) Регулировка яркости. Вообще вряд-ли это будет проблемой, но для того что бы более менее избавить вас от гугления — я просто покажу как это делается

Внешний вид

Рамки окон

Кнопки управления окном в i3wm заменены хоткеями

Цвет рамок окна можно задать по шаблону

Классы окон:
client.focused — окно в фокусе
client.unfocused — окно вне фокуса
client.focused_inactive — окно в фокусе но не активно
client.urgent — окно требует внимания (всплывающее уведомление например)

Пример настройки цвета;

Классы индикаторов рабочих столов:

Примернастройки цветов для i3bar:

Внешний вид приложений

Анимации и VSync

Мы с вами уже условились что для обеспечения красивой анимации будем использовать композитор compton, сейчас я не буду писать про то как надо настраивать его, т.к пост про i3WM а не про compton, просто покажу с чего стоит начать.

Conky

Conky достаточно популярный виджет в мире Linux

/.config/i3/conky_c
Информации по настройке коньков в интернете уйма, от себя добавлю лишь то — что стоит исключить их из обработки теней в compton.

Лаунчер Приложений

Вообще под Linux есть уйма различный лаунчеров, рассмотрим самые популярные.

Вывод

Прочитав этот гайд вы точно сможете настроить оконный менеджер i3WM под себя, и иметь неповторимую среду рабочего стола. Лично от себя могу добавить что именно благодаря знакомству с i3WM я осознал насколько гибок Linux, и что можно работать именно с теми инструментами которые тебе удобны. В этом плане i3WM тебя не ограничивает, надо лишь только посидеть за конфигом.

Настоятельно рекомендую прочесть Официальный гайд

Источник

Adblock
detector