Как установить i3wm debian
Тайловый оконный менеджер i3
Я хотел бы продолжить начатую вчера JagaJaga тему тайловых оконных менеджеров рассказом об еще одном их представителе — i3wm. В отличие от awesome его настройки записываются в обычном текстовом файле.
Особенности i3wm для пользователя: корректная поддержка нескольких мониторов (смотрите скрин в конце), простой текстовый конфиг-файл, нет необходимости пересобирать wm после изменения настроек, три режима расположения окон, меню запуска приложений dmenu, создает рабочие столы по мере необходимости и удаляет пустые, из коробки имеет отличную информационную панель, показывающую уровень Wi-Fi сети, заряд батареи и много еще чего.
Демонстрация от автора i3
Установка
i3wm представлен в репозиториях Debian, Arch, Gentoo, Ubunto, FreeBSD, NetBSD, OpenBSD, OpenSUSE, Mageia, Fedora и Exerbo. Я буду рассказывать на примере Ubuntu 12.04.
Нужный пакет называется i3, поэтому:
Теперь на экране ввода пользователя и пароля можно выбрать «i3» в качестве оконного менеджера.
Настройка
При первом запуске вам предложат выбрать клавишу-модификатор. Я выбрал win для совместимости с большинством приложений.
Добавим переключение на русскую раскладку по Alt+Shift, автозагрузку dropbox, переключение между рабочими столами по mod+Control+Left/Right, блокировку экрана по mod+Control+l и спящий режим с блокировкой экрана при выходе из него по mod+Control+s.
Переключение раскладки клавиатуры настроено с помощью setxkbmap. Для этого служит
Теперь при следующем заходе в i3wm будут доступны русская и английская клавиатура.
Настройка i3 обычно производится с помощью пользовательского конфига. Создадим папку
/.i3 и скопируем в нее шаблон конфигурации:
Теперь вы можете на основе документации выбрать настройки для себя. Я добавил следующие строки:
Использование
Некоторые стандартные горячие клавиши, которые работают по умолчанию:
mod+Enter открывает терминал
mod+d запускает dmenu (меню сверху экрана, которое по мере ввода с клавиатуры названия приложения предлагает варианты для запуска)
mod+Shift+Q закрывает активное окно
mod+v включает режим вертикального тайлинга (экран будет делиться горизонтально)
mod+h включает режим горизонтального тайлинга (экран будет делиться вертикально)
mod+w включает режим вкладок (каждое окно на рабочем столе занимает весь экран, сверху видны вкладки)
mod+s включает стековый режим (заголовки окон один под другим, каждое окно занимает весь экран)
mod+e возвращает стандартный режим
mod+Shift+Space переключает окно в режим плавающего и обратно
mod+Left/Right/Up/Down перемещает фокус в пределах рабочего стола
mod+Shift+Left/Right/Up/Down перемещает текущее окно в пределах рабочего стола
mod+1 и т.д. переключает на рабочий стол с указанным номером
mod+Shift+C читает настройки из файла конфигурации
mod+Shift+E выходит из i3wm на экран ввода имени пользователя и пароля
Полные возможности по настройке и использованию i3wm описаны в документации.
Cheatsheet с горячими клавишами, удобные картинки-подсказки с сайта автора:
Бонус
Если у вас два монитора, или встроенный экран нетбука и внешний монитор, как у меня, то i3wm отлично будет работать на них. Самое главное, что для этого не требуется никаких дополнительных настроек.
Cписок доступных мониторов:
Настроим их работу в паре:
где LVD1 — встроенный в нетбук монитор, его разрешение 1366×768 и он прижат к левому верхнему углу, VGA1 — внешний монитор, его разрешение 1280×1024 и он смещен на 1366 пикселей вправо относительно левого верхнего угла.
Есть результат! Слева встроенный экран нетбука, справа внешний монитор:
Хабражитель burjui поделился ссылкой на видео про i3 с GoogleTechTalks.
Как установить i3wm debian
The i3 Window Manager (i3wm) (not to be confused with the Intel processor or i386 architecture) is a window manager that was built from scratch to circumvent some of the limitations of wmii. The i3 is popular with enthusiasts who value maximizing actual screen and keyboard operation.
To be specific, i3 is a dynamic window manager.
A window manager is less robust, but consumes much less resources than a typical desktop environment such as GNOME. The i3 specifically does not have current desktop functionality, so it has no icons, a taskbar / launcher, or a wallpaper of its own. i3bar adds desktop, status, and tray change icons instead of a traditional taskbar; The dmenu is usually used in place of a traditional launcher, and wallpapers can be added with an external utility such as feh or nitrogen. This all works towards the goal of full screen use. I3 supports gtk and qt applications and themes, but will do nothing to standardize them.
The i3 designs minimally decorated windows, usually forcing them to a size you determine, and allows them to be easily placed into many virtual workspaces, which can be organized independently with as many or as many windows as you wish.
Tiling means that windows by default are static and cannot be dragged across the workspace unless they are set to float. Although i3 supports floating windows as well as tabbed or stacked windows, tiling is usually the default and preferred setting. Tiling will ensure that at any time 100% of the available work area is being occupied and that windows never overlap.
Dynamic means you can change the arrangement of windows at any time. I3 will intelligently resize and position windows in equal parts as others are added and removed according to the mode in which it is currently set (split horizontally/vertically split). Once the windows are in place, they can also be moved, split differently and resized.
i3 in Debian
i3 not included in any official Debian installer, but it is available in major repositories.
Installation
i3 requires an X-server and is not supported by Wayland. It is available as a metapackage that includes i3-wm, i3lock, i3status, dunst, and suckless-tools.
If you want to install i3 minimally without useful packages, such as i3lock and i3status, use:
Configuration
After the first login, each user will be prompted to have a configuration file generated for them such as
This key is the basis for all keybinds that the window manager will use. The Windows key is recommended because Alt is used by many other applications for other purposes. I3 will take precedence over other applications and other keybind-based functionality used by i3 will be lost.
Once the configuration file has been generated, all required configuration is complete, but most users will do a lot of editing in the configuration file to customize their i3 instance.
The most fundamental keybind in the default i3 configuration is the $Mod + d, which will launch the application startup dmenu. With dmenu, the first recommended application to run is an editor or terminal so you can read and modify the configuration file.
The configuration file is simple and quite intuitive. Keybinds can be added with:
Other configurable options include window management keybinds, window border and title bar configuration, workspace naming, application assignment to specific desktops by default, i3bar management (including autohide), startup applications and so on.
i3 must be restarted for the changes to take effect. This will not cause any applications to close, but may occasionally cause them to move.
Setting the restart command as a memorable keybind can save a lot of time during configuration.
For more information about setting up your i3, see theDocumentation.
Useful Scripts
Setting Wallpapers
There is no default way to set wallpapers in i3 and this is a feature many users switching from a desktop environment will miss. You can install programs like nitrogen that provide you a way to set wallpapers. Another way to do this is to use feh. A nifty trick is create a script that will set a random wallpaper from a folder and bind it to a keybinding, so whenever you press the keybinding the script will set a new wallpaper. The script given below does exactly that.
i3-gaps Support
I3-gaps is an i3 fork that has additional features on top of i3, especially the ability to add spaces between windows. Currently, i3-gap is not supported on Debian, however a bug report has been submitted about this.
It is still possible to get i3-gaps from Debian. It is not fully supported by Debian, so do not expect appropriate support for it. To make it work in Debian, it can be compiled from source and installed with make install.
See too
SwayWM: i3 Wayland compatible composer
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 + мышь перемешает плавающее окно.
Чтобы быстрее запомнить горячие клавиши, можете распечатать шпаргалку.
Настройка под себя
Чтобы работа была в удовольствие, а инструмент приносил радость, важно не только изучить как он работает, но и настроить под себя. С этим у 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 на arch linux
Итак, мы установили arch, базово настроили систему, настало время установить графическое окружение.
А почему i3?
Ведь есть много других графических окружений рабочего стола (Desktop Environment, или коротко DE). И действительно, выбор на linux довольно велик, чего не скажешь конечно ни о Windows, ни о MacOs, где нет подобной гибкости в кастомизации. Я перепробовал разные окружения, и возможно в дальнейшем подробно расскажу о тех, с которыми имел дело. В целом у каждой оболочки есть свои плюсы, свои минусы. Своя история, философия, назначение, и целевая аудитория. А ставлю я все равно i3, и на это есть ряд причин.
В-третьих, i3 создан для работы с клавиатурой, и в работе с ним волей не волей пользуешься горячими клавишами. Горячие клавиши тут имеют важную роль. И любителям все делать через клавиатуру должно понравиться.
В-четвертых, i3 благоволит минималистичности. Минимум UI нагроможденностей. Все настройки системы производятся из файловых конфигов. Можно использовать любые программы конечно же, но очень хорошо тут заходят именно минималистичные, консольные утилиты вроде ranger как файловый менеджер, и тому подобное.
Установка
i3 работает на графическом сервере x-org, поэтому нам потребуется установить его. Также мы установим не сам оригинальный i3wm, а его немного модернизированный форк i3-gaps. Еще сразу нам понадобится программа i3status для отображения системного бара, и программа dmenu для запуска установленных программ (которую в последствии заменим на аналог, rofi).
После установки создадим и отредактируем файл