Форум русскоязычного сообщества Ubuntu
Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
- Форум русскоязычного сообщества Ubuntu »
- Архив »
- Архив »
- Архив тем до 2018г »
- I3wm + i3-gaps. Установка.
Страницы: [1] Вниз
Автор Тема: I3wm + i3-gaps. Установка. (Прочитано 5850 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Страницы: [1] Вверх
- Форум русскоязычного сообщества Ubuntu »
- Архив »
- Архив »
- Архив тем до 2018г »
- I3wm + i3-gaps. Установка.
Страница сгенерирована за 0.11 секунд. Запросов: 23.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Установка и настройка i3wm на arch linux
Итак, мы установили arch, базово настроили систему, настало время установить графическое окружение.
А почему i3?
Ведь есть много других графических окружений рабочего стола (Desktop Environment, или коротко DE). И действительно, выбор на linux довольно велик, чего не скажешь конечно ни о Windows, ни о MacOs, где нет подобной гибкости в кастомизации. Я перепробовал разные окружения, и возможно в дальнейшем подробно расскажу о тех, с которыми имел дело. В целом у каждой оболочки есть свои плюсы, свои минусы. Своя история, философия, назначение, и целевая аудитория. А ставлю я все равно i3, и на это есть ряд причин.
Во — первых i3 — это не DE, а только оконный менеджер. Отличие в том, что в отличие от DE, оконный менеджер не имеет предустановленного ПО, программ по управлению и настройкой оболочки. Что отлично ложится в философию арча и под мои задачи, когда требуется по кирпичикам собрать минималистичную систему только с тем, что действительно нужно. i3 поддерживает возможности отрисовки окон, управления их расположением, работа с рабочими столами. Все остальное по кирпичиком собирается из других программ, которые можно заменить на аналоги, если что — то не устраивает.
Во — вторых, i3 относится к категории “тайлинговых” оконных менеджеров. Это означает, что окно по умолчанию разворачивается на весь экран, занимая все свободное пространство. Оболочка позволяет размещать несколько окон на экране, окна пропорционально делят пространство экрана. Тут проще показать, чем описать словами. В youtube или просто поиском по картинкам можно найти кучу видео и изображений с красиво настроенными и не очень окружениями i3. Я приведу скриншот своего экрана

Данный тип окружения с первого взгляда конечно может отпугнуть. Но на самом деле, используя все предоставляемые возможности, можно эффективно работать. Дело привычки и вкуса. К слову i3 не единственная в своем классе, есть и другие вроде awersome , sway , и т.д. Кстати любителям тайлинга советую обратить внимание на sway , который набирает популярность. Он содержит все фишки i3, только работает под графическим сервером wayland вместо стремительно устаревающего и уходящего xorg .
В-третьих, i3 создан для работы с клавиатурой, и в работе с ним волей не волей пользуешься горячими клавишами. Горячие клавиши тут имеют важную роль. И любителям все делать через клавиатуру должно понравиться.
В-четвертых, i3 благоволит минималистичности. Минимум UI нагроможденностей. Все настройки системы производятся из файловых конфигов. Можно использовать любые программы конечно же, но очень хорошо тут заходят именно минималистичные, консольные утилиты вроде ranger как файловый менеджер, и тому подобное.
В-пятых, это минимальные системные требования. Сам i3 легковесен и не прожорлив. Потребляет минимум оперативной памяти. Если у Вас слабое железо, то это несомненно большой плюс. У меня допустим в мак нет возможности добавить оперативной памяти, т.к. она распаяна. А сменить ноутбук пока не получается. Были попытки, но пока неудачные, возможно позже расскажу об этом в отдельной статье.
В-шестых это наверное уникальность. Из — за не большой распространенности как самого линукса, так и арча (по сравнению с убунто подобными), так и самой i3, выглядит оболочка довольно экзотично. И это не может не радовать) Когда вокруг у всех винда, маки, или “убунты на гномах”, i3 выделяется из толпы, как ни крути. И то, как быстро и удобно можно быстро укрощать с помощью нее свои задачи, поражает глаз случайных свидетелей. А это всегда повод завести беседу 🙂
Итак я насчитал шесть причин. Возможно что — то упустил, но суть такова, что стоит один раз попробовать самому, а там уже решить, стоит оно того, или нет) Ведь действительно тайлинг не каждому зайдет.
Установка
i3 работает на графическом сервере x-org, поэтому нам потребуется установить его. Также мы установим не сам оригинальный i3wm, а его немного модернизированный форк i3-gaps. Еще сразу нам понадобится программа i3status для отображения системного бара, и программа dmenu для запуска установленных программ (которую в последствии заменим на аналог, rofi).
sudo pacman -S xorg-server xorg-xinit i3-gaps i3status dmenu
После установки создадим и отредактируем файл ~/.xinitrc, записав в него текст “exec i3”
echo 'exec i3' >> ~/.xinitrc
Эта инструкция при запуске графического сервера xorg запустит наш i3wm
И наконец, впервые запустим наш i3!
startx

Настройка
После запуска i3 нас спросит о создании конфигурационного файла в домашней директории, согласимся, нажав Enter. Путь к файлу нам понадобится неоднократно для кастомизации. Далее i3 спросит о том, какую клавишу использовать по умолчанию для модификатора. Дело вкуса, я оставлю Win (на маке у меня Win — это Cmd)
Перед нами черный экран, т.к. не установлены обои, и пустота) На помощь придет официальная документация по i3 или любые другие ресурсы.
Горячие клавиши
Новичку потребуется выучить горячие клавиши для работы. Самое базовое, что нужно знать сейчас, это:
- mod + Enter — запустить терминал
- mod + d — запустить dmenu для запуска любой программы


- mod + Shift + q — закрыть активное окно программы
- mod + 1, mod + 2, mod + …n — переключение рабочих столов от 1 до 9
- mod + Shift + 1, mod + Shift + … n — перемещение активного окна на другой рабочий стол
- mod + Shift + … ←, →, ↑, ↓ — изменение положения окон в рамках рабочего стола
- mod + r — ресайз активного окна
- mod + Shift + c — перечитать конфиг
- mod + Shift + r — перезапуск i3
- mod + Shift + e — выход из i3 с подтверждением
- mod + Shift + space — перевод окна в плавающий режим
Это далеко не все хоткеи, все остальное можно увидеть на официальном сайте. Но на первых парах этого должно хватить.
mod — клавиша модификатора доступа, выбранная ранее. Это основная кнопка в i3, на ней завязано много горячих клавиш, как видно.
Любые биндинги горячих клавиш и остальные настройки i3 хранятся в ~./config/i3/config . У меня уже есть готовый конфиг с предыдущей системы. Никому не советую вслепую использовать чужие конфиги потому, что в люди подгоняют в любом случае все под себя. И Ваш конфиг у вас получится свой, уникальный. В сети куча конфигов разных людей. Есть также готовые темы оформления i3, стоит присмотреться к разным вариантам, в итоге собрав из всего понравившегося что — то свое, и потихоньку это подтачивать под свои нужды.
Немного о моем конфиге
При старте системы через программу setxkbmap устанавливается смена раскладки клавиатуры (установленная в /etc/vconsole.conf почему — то не задействована в i3)
sudo pacman -S setxkbmap vim ~/.config/i3/config
# раскладка клавиатуры exec --no-startup-id setxkbmap us,ru -option 'grp:alt_shift_toggle'
Также у меня есть отдельный материал по настройке раскладки клавиатуры в i3wm
Перед самой командой фигурирует ключевое слово exec , т.е. запуск, и параметр -no-startup-id , который нужен для того, чтобы курсор мыши не превращался в бесконечно крутящиеся часы. Похожим образом мы можем поставить любую программу или команду на автостарт i3.
Установим запуск firefox на сочетание горячих клавиш mod + F1 (файл ~/.config/i3/config )
bindsym $mod + F1 exec firefox
Все довольно просто, после ключевого слова bindsym следует сочетание клавиш, затем exec и имя программы.
Заменим dmenu на аналог rofi. Концептуально ничего нового, просто rofi мне больше нравится тем, что расположен не в баре, а плавающей строкой
sudo pacman -S rofi
Чтобы задействовать его вместо dmenu найдем в конфиге строку
bindsym $mod+d exec dmenu_run
и заменим ее на
bindsym $mod+d exec --no-startup-id rofi -show run

rofi имеет множество встроенных тем, посмотреть и выбрать подходящую для себя можно утилитой rofi-theme-selector , запустив ее в терминале. После выбранную тему установить как параметр -theme в строке запуска в конфиге. Также шрифт я выбрал hack 10, Вы же можете использовать подходящий Вам шрифт.
bindsym $mod+d exec --no-startup-id rofi -theme glue_pro_blue -font "hack 10" -show run

Также никто не мешает найти и установить стороннюю тему, или создать свою собственную.
Разрешение монитора, второй монитор
В i3 конечно же можно работать с несколькими мониторами. Нам понадобится программа xrandr
sudo pacman -S xorg-xrandr
Запустив ее мы увидим список мониторов, и список поддерживаемых ими разрешений экрана. Мой macbook с экраном retina поддерживает 2560×1600. Это довольно большое разрешение для 13 дюймового экрана, поэтому у меня сейчас все очень мелко. Масштабирование в линуксах работает не очень, за исключением некоторых тяжеловесных DE как GNOME 3, там из коробки все намного лучше. Поэтому я буду довольствоваться 1920×1200, чего мне с головой хватит. На второй монитор мне потребуется установить разрешение 1920×1080.
Пропишу в конфиге i3
exec xrandr --output eDP-1 --mode 1920x1200 --pos 0x0 exec xrandr --output HDMI-2 --mode 1920x1080 --pos 1920x0
где eDP-1 — имя нативного монитора ноутбука, HDMI-2 — имя внешнего монитора, —mode 1920×1200 — устанавливаемое разрешение для монитора, —pos 0x0 — координата верхней левой точки монитора в разрезе двух рядом стоящих мониторов.
И специфично под macbook, мне необходимо подправить конфиг xorg для более четкого изображения https://wiki.archlinux.org/index.php/HiDPI#X_Resources
Xft.dpi: 96 ! These might also be useful depending on your monitor and personal preference: Xft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintfull Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb
Вам не нужно, если у вас не HiDPI.
Установим обои на рабочий стол
куда ж без них. Нам поможет программа nitrogen, установим ее
sudo pacman -S nitrogen
Запустим nitrogen, настроим обои, и поставим ее на автозапуск
exec --no-startup-id nitrogen

Установим compton
compton — легкий композитный менеджер для графического сервера X. Нам он нужен в первую очередь для устранения тиринга, если таковой присутствует, а также для создания небольших эффектов плавности переключения рабочих столов, чтобы было повеселее.
К слову о тиринге: способы его устранения для разных производителей видеокарт разнятся, и гуглится это на раз два (пример запроса: tearfree Nvidia, или AMD, или Intel). Устраняется в основном путем конфигурирования xorg.
У меня видеокарта Intel, и тиринг изначально на i3wm есть. Но compton решает данную проблему, без необходимости правки конфигов xorg.
На момент написания статьи из pacman и aur исчез пакет compton . Глубоко не искал, но наткнулся на информацию, что compton теперь стал picom (в других источниках написано, что compton это форк picom ). Вообщем устанавливаем picom , а запускаем compton (может compton теперь лишь симлинк, проверим позже)
sudo pacman -S picom
В одном из конфигов он был установлен вместе с nitrogen в одну строку, так тому и быть
exec --no-startup-id nitrogen --restore; sleep 1; compton -b
Из моментально заметных изменений — это плавность переключения рабочих столов, а также поддержка прозрачности некоторых окон. Если тиринг не ушел, то можно попробовать переключить в конфиге backend на glx . По умолчанию шаблон конфига лежит в файле /etc/xdg/picom.conf.example . Для его кастомизации скопируйте его в домашнюю директорию следующей командой
mkdir -p ~/.config/picom && \ cp /etc/xdg/picom.conf.example ~/.config/picom/picom.conf
Свой же последний конфиг я наглухо скопировал с этого репозитория https://github.com/dikiaap/dotfiles. Все плавно и красиво.
О том, как сделать прозрачным терминал я расскажу в отдельной статье по настройкам alacritty. О более глубокой настройке compton можете погуглить.
Цветовая температура экрана
Регулировать автоматическое переключение цветовой гаммы в более теплые тона будем программой redshift . Подробнее о redshift на archwiki. Я же буду краток. Ставим на автозагрузку в конфиг i3wm команду:
exec --no-startup-id redshift -b 1.0:0.7 -t 6500:3200 -l 45:39
- -b 1.0:0.7 уровень яркости день:ночь
- -t 6500:3200 цветовая температура день:ночь
- -l 45:39 укороченные координаты местонахождения latitude:longitude (ширина:долгота). Узнать свои координаты
Звук
Если не установили на этапе первичной настройки arch linux, то установим сейчас графическую утилиту для настройки звука pavucontrol
sudo pacman -S pavucontrol

Bluetooth
Для того, чтобы работал bluetooth, необходимо установить ряд утилит
sudo pacman -S bluez bluez-utils pulseaudio-bluetooth blueman
из которых blueman — графическая утилита

Для ее запуска наберем в rofi или dmenu blueman-applet , после чего увидим в трее иконку bluetooth с выпадающим по клику контекстным меню.
А кому по душе больше настройка bluetooth из командной строки необходимо набрать команду bluetoothctl , и затем help .
Но прежде чем подключать устройства, проверим запущена ли у нас служба bluetooth.service , и запустим, если не запущена:
# проверка sudo systemctl status bluetooth.service # запуск sudo systemctl start bluetooth.service # включение службы для автозапуска sudo systemctl enable bluetooth.service
Ускорение подключения bluetooth девайсов
Если вы планируете пользоваться беспроводными мышью или клавиатурой, то для уменьшения задержки при bluetooth подключении рекомендую сразу выставить в конфиге /etc/bluetooth/main.conf параметр FastConnectable в значение true .
# /etc/bluetooth/main.conf FastConnectable = true
После внесения изменений нужно перезапустить службу bluetooth :
sudo systemctl restart bluetooth
Подключение bluetooth девайсов должно стать более быстрым после включения компьютера или же после выхода из сна. Но если разницу вы не заметили, или для вас разница не критична, то лучше вернуть обратно значение false , т.к. включение влияет на энергопотребление, что актуально для ноутбуков. Это работает только для адаптеров, которые поддерживают это.
Num Lock
Я привык, что в обычном состоянии на клавиатуре Num Lock включен. В i3 же он выключен. Исправить это поможет консольная программа numlockx . Установим ее:
sudo pacman -S numlockx
У нее всего 3 команды:
Остается поставить включение Num Lock на автозапуск i3wm:
# ~/.config/i3/config exec --no-startup-id numlockx on
Шрифт
# Устанавливайте те шрифты, которые нравятся и подходят Вам font pango:Ubuntu:style=Medium 10
Перенос бара наверх
В секцию bar добавим строку position top, и перезапустим i3 (mod+Shift+r)
Изучаем, пробуем
В одной статье невозможно описать абсолютно все. Я не затронул множество аспектов, таких как i3status (очень крутая штука, это кастомизируемый бар, который довольно страшненький по умолчанию), звук, подсветка клавиатуры, яркость экрана, и многое другое, чем не управляет i3 из коробки. Но он и не должен, и не позиционируется как DE. В нем мы должны настроить все сами. Кому не нравится — тому значит больше подходят полноценные DE, такие как GNOME, KDE, XCFE, и прочие (я лично переехал с Budgie). О некоторых из них поведаю в других статьях. Но основной посыл в том, что не стоит зацикливаться на первом попавшемся материале конкретного человека. Изучите дефолтный конфиг, документацию. Изучите множество мнений других людей. Берите лучшее из найденных конфигов, стройте свою уникальную систему. Не бойтесь гуглить, все скорее всего уже решено за Вас. А если нет — то есть уникальная возможность реализовать это у себя, и поведать об этом миру)
Эта публикация лицензируется в соответствии с Attribution-NonCommercial 4.0 International лицензией.
i3 (Русский)
Состояние перевода: На этой странице представлен перевод статьи i3. Дата последней синхронизации: 20 января 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
- Сравнение тайловых оконных менеджеров
- Оконный менеджер
i3 — это динамический тайловый оконный менеджер, вдохновлённый wmii и нацеленный на разработчиков и опытных пользователей.
Среди заявленных целей i3 — понятная документация, надлежащая поддержка нескольких мониторов, древовидная структура для окон и различные режимы, как в vim.
Установка
Также есть группа пакетов i3 . В её состав входят менеджер окон, блокировщик экрана и две программы, которые записывают строку статуса в i3bar через stdout.
Примечание: Изменения из форка i3-gaps были приняты в основную ветку i3 и теперь доступны в пакете i3-wm .
Запуск
Из консоли
Запустите i3 с помощью xinit.
Экранный менеджер
В состав i3-wm входят i3.desktop и Xsession, который запускает оконный менеджер. i3-with-shmlog.desktop включает журнал (полезно для отладки). i3-gnome AUR интегрирует i3 с GNOME.
Использование
Назначение клавиш
В i3 команды вызываются с помощью клавиши-модификатора, называющейся $mod . По умолчанию (Mod1) это Alt , но также популярна альтернатива (Mod4), которая известна как Super . Клавиша Super обычно изображается на клавиатуре со значком Windows, а на клавиатуре Apple она представлена в виде клавиши Command.
Сочетания клавиш, используемые по умолчанию, описаны в документации; смотрите справочную карту i3 и Использование i3. Смотрите назначение клавиш чтобы добавить новые сочетания/горячие клавиши.
Пользователи не-Qwerty раскладок могут захотеть обойтись без «мастера настройки», как описано ниже.
Если вы переключаетесь между несколькими оконными менеджерами или средами рабочего стола, можно использовать sxhkd или другую программу, не зависящую от среды, для управления сочетаниями клавиш. Дополнительную информацию можно найти в статье Горячие клавиши#Xorg.
Контейнеры
i3 управляет окнами в виде древовидной структуры, с контейнерами, как со строительными блоками. Эта структура разделяется по горизонтали и вертикали. Контейнеры по умолчанию тайловые (tiled), но могут быть установлены как стековые лэйауты (stacked layouts), так и плавающие (floating) (например для диалоговых окон). Плавающие окна всегда поверх.
Запуск приложений
i3 использует dmenu в качестве инструмента для запуска приложений, который по умолчанию вызывается нажатием $mod+d . Так как это опциональная зависимость, перед использованием нужно вручную установить пакет dmenu .
i3-wm содержит i3-dmenu-desktop, Perl оболочку для dmenu, которая использует ярлыки приложений для создания списка всех установленных приложений. Кроме того, можно использовать j4-dmenu-desktop-git AUR .
rofi — это популярная замена dmenu и других программ, которые могут отображать список ярлыков приложений.
Использование KRunner для запуска приложений в KDE Plasma/i3
При запуске Plasma с KDEWM=/usr/bin/i3 можно установить KRunner в качестве альтернативной программы запуска приложений с помощью $mod+d , добавив следующее в конфигурацию i3:
~/.config/i3/config
set $menu --no-startup-id qdbus org.kde.krunner /App display bindsym $mod+d exec $menu
Настройка
Для подробностей смотрите Настройку i3. Данная статья предполагает, что файл настроек i3 расположен в папке ~/.config .
Мастер настройки и альтернативные раскладки клавиатуры
При первом запуске i3 предлагает запустить мастер настройки i3-config-wizard. Этот инструмент создаёт файл ~/.config/i3/config , беря за основу шаблон /etc/i3/config.keycodes . Он вносит в шаблон два изменения:
- Он просит пользователя выбрать клавишу-модификатор по умолчанию, который он добавляет в шаблон в виде одной строки, например, set $mod Mod1 ; и
- заменяет все строки bindcode на строки bindsym, соответствующие текущей раскладке клавиатуры пользователя.
Шаг 2 предназначен для того, чтобы гарантировать, что четыре навигационных сочетания клавиш, j , k , l и ; на Qwerty-клавиатуре будут отображены на символы клавиш, которые имеют такое же расположение, например, h , t , n , s на клавиатуре Dvorak. Побочным эффектом этой магии является то, что до пятнадцати других клавиш могут быть переадресованы таким образом, что это нарушит мнемонику — так, для пользователя Dvorak «перезапуск» («restart») будет привязан к $mod1+p вместо $mod1+r , «разделение по горизонтали» («split horizontally») будет привязано к $mod1+d вместо $mod1+h , и так далее.
Поэтому пользователи альтернативных раскладок клавиатуры, которым нужны простые привязки клавиш, соответствующие привязкам, приведённым в руководствах, могут предпочесть обойтись без «мастера настройки». Это можно сделать, просто скопировав /etc/i3/config в ~/.config/i3/config (или ~/.i3/config ) и отредактировав этот файл.
Обратите внимание, что также возможна конфигурация на основе кодов клавиш, например, для пользователей, которые часто переключаются между раскладками клавиатуры, но хотят, чтобы привязки i3 оставались неизменными.
Автозапуск программ
Добавьте команду exec в файл ~/.config/i3/config . Например:
exec terminator
Если использовать exec_always , то команда будет запускаться каждый раз при перезапуске i3.
Также можно использовать XDG Autostart.
i3bar
В дополнение к показу информации рабочих пространств, i3bar может выступать в качестве входных данных для i3status или альтернативы, такие как те, которые упомянуты в следующем разделе. Например:
~/.config/i3/config
За дополнительной информацией обращайтесь в раздел Configuring i3bar официального руководства пользователя.
Альтернативы i3bar
Некоторые пользователи предпочитают панели, такие как те, которые предусмотрены обычными средами рабочего стола. Это может быть реализовано в i3 путём запуска приложения панели во время загрузки.
Например, для использования панели XFCE ( xfce4-panel ) добавьте следующую строку в любом месте файла ~/.config/i3/config :
exec --no-startup-id xfce4-panel --disable-wm-check
Можно отключить i3bar, закомментировав секцию bar < >в ~/.config/i3/config , или добавить сочетание клавиш для его переключения:
~/.config/i3/config
# bar toggle, hide or show bindsym $mod+m bar mode toggle
Альтернативы, не привязанные к среде рабочего стола:
- polybar — Быстрый и простой в использовании инструмент для создания панелей статуса.
- excalibar — Лёгкий, но настраиваемый статус-бар, написанный на языке C.
i3status
Скопируйте файлы настроек по умолчанию в домашний каталог:
$ cp /etc/i3status.conf ~/.config/i3status/config
Не все плагины определены в настройках по умолчанию, и некоторые значения настроек могут быть недействительными для вашей системы, поэтому должны быть внесены соответствующие изменения. Для подробностей смотрите i3status(1) .
Замены i3status
- conky — Высоко расширяемая система мониторинга. Для использования с i3bar смотрите этот учебник.
- i3blocks — Расширяется с помощью shell-скриптов. Может обрабатывать события мыши, прерывания, и определение интервалов регенерации на основе каждого блока.
- i3pystatus — Расширяемый Python 3 статус бар со множеством плагинов и опций настроек по умолчанию.
- j4status — Обеспечивает строку статуса, настраиваемую с помощью плагинов, написан на C. Пакет j4status-plugins-gitAUR предоставляет дополнительные плагины.
- goi3bar — Замена i3status, написанная на языке Go. Управляемый конфигурационным файлом, с несколькими плагинами, опциями параллелизма и богатой поддержкой плагинов.
- goblocks — Быстрая, лёгкая замена i3status, написанная на языке Go.
- bumblebee-status — Генератор строк состояния Python с возможностью оформления.
- ty3status — Замена i3status, написанная на языке Typescript. Построена с первоклассной поддержкой блоков javascript.
- i3status-rust — Высокоэффективная и многофункциональная замена, написанная на языке Rust. Может обрабатывать push-обновления, индивидуальные интервалы обновления, тематизацию и события нажатия.
- Barista — Замена i3status, написанная на языке Go.
Оболочки для i3status
- i3cat — Оболочка, написанная на Go, которая может объединить ввод данных из нескольких внешних источников. Может обрабатывать события мыши и перенаправление указаных пользователем сигналов для своих подпроцессов.
- py3status — Расширяемая оболочка i3status написанная на Python.
- YaGoStatus — Еще одна оболочка для i3status (и не только) написанная на Go.
Шрифты-иконки в строке состояния
Поддержка иконочных шрифтов встроена с i3 версии 4.20.
- ttf-font-awesome — Масштабируемые векторные иконки, которые могут быть настроены с помощью CSS. Шпаргалка, показывающая коды Unicode для каждого символа.
- ttf-font-icons — Непересекающаяся и последовательная смесь Awesome и Ionicons. Она также позволяет избежать дублирования между DejaVu Sans и Awesome.
- ttf-ionicons — Premium шрифт иконок для Ionic Framework.
Чтобы использовать несколько шрифтов, в файле настроек укажите резервные шрифты через запятую:
~/.config/i3/config
В соответствии с синтаксисом pango, размер шрифта задаётся только один раз, в конце списка шрифтов. Установка размера для каждого шрифта приведёт к тому, что все шрифты, кроме последнего, будут игнорироваться.
Добавьте иконки в формат строки в ~/.config/i3status/config , используя коды Unicode из приведённой выше шпаргалки. Метод ввода будет варьироваться между текстовыми редакторами. Например, чтобы вставить значок «heart» (код unicode f004):
- в различных текстовых редакторах графического интерфейса (например gedit, Leafpad) и терминалов (например GNOME Terminal, xfce4-terminal): ctrl+shift+u , f004 , Enter
- в Emacs: ctrl+x , 8 , Enter , f004 , Enter
- в vim (в режиме вставки): Ctrl+v , uf004
- в urxvt: удерживая Ctrl+Shift , наберите f004
Эмулятор терминала
По умолчанию при нажатии $mod+Enter запускается i3-sensible-terminal — скрипт, вызывающий терминал. Порядок терминалов, которые он пытается запустить, описан в i3-sensible-terminal(1) .
Чтобы вместо него запускался выбранный вами терминал, измените эту строку в ~/.config/i3/config :
bindsym $mod+Return exec i3-sensible-terminal
В качестве альтернативы можно установить переменную окружения $TERMINAL .
Отключение клика по заголовку
Добавьте bindsym button1 nop , чтобы не переключать фокус на окно, когда вы щёлкаете по его заголовку. Полезно, если ваша разметка по умолчанию имеет вкладки и вы часто промахиваетесь и попадаете по вкладкам i3 вместо приложения.
Советы и рекомендации
Быстрый переход к открытому окну
- quickswitch-i3 — Python-утилита для быстрого перехода к окнам и определения их местоположения в i3
- i3-wm-scripts — поиск и переход к окнам с поиском по регулярному выражению
- rofi — Search and jump to open and scratchpad window
- i3-easyfocus — Фокус и выбор окон в i3
- wmfocus — Фокус и выбор окон в i3 и других оконных менеджерах
- i3-cycle-focus — Функциональность Alt-Tab для i3
- i3-winmotion — Фокус и выбор видимых окон вi3
Быстро перейти к необходимому окну
Добавьте в ~/.config/i3/config : [1]
bindsym $mod+x [urgent=latest] focus
Сохранение и восстановление расположения окон
Начиная с версии 4.8, i3 может сохранить и восстановить рабочее пространство слоёв (лэйаутов). Чтобы это сделать, необходимы пакеты perl-anyevent-i3 и perl-json-xs .
Примечание: В этом разделе лишь вкратце описано, как сохранить текущую раскладку окон из одного рабочего пространства и как восстановить её для дальнейшего использования. Более подробная информация доступна в официальной документации.
Сохранение текущего расположения окон одного рабочего пространства
Чтобы сохранить текущее расположение окон, выполните следующие действия:
- Сначала выполните различные команды, чтобы открыть окна в предпочтительном рабочем пространстве, и измените их размер по необходимости. Запишите каждую выполненную команду для каждого окна.
- Теперь в новом рабочем пространстве откройте терминал и выполните следующее:
$ i3-save-tree --workspace N > ~/.config/i3/workspace_N.json
$ sed -i 's|^\(\s*\)// "|\1"|g; /^\s*\/\//d' ~/.config/i3/workspace_N.json
Восстановление расположения окон на рабочем пространстве
Есть два способа восстановить расположение окон на рабочем пространстве: написать скрипт или отредактировать ~/.config/i3/config для автоматической загрузки макета. В этом разделе будет рассмотрен только первый случай; обратитесь к официальной документации для второго случая.
Для восстановления сохранённого в предыдущем разделе макета создайте файл с именем load_layout.sh и следующим содержимым:
~/load_layout.sh
#!/bin/sh i3-msg "workspace M; append_layout ~/.config/i3/workspace_N.json"
где М — номер рабочего пространства, в которую вы хотели бы загрузить ранее сохранённый макет, а N — номер рабочего пространства, сохранённого в предыдущем разделе.
- И команды, которые использовались в предыдущем разделе для открытия нужных окон, но заключённые в круглые скобки и с амперсандом (&) перед закрывающими скобками.
Например, если сохранённый макет содержит три uxterm окна:
~/load_layout.sh
#!/bin/sh # Добавим сохранённый макет рабочего пространства N в рабочее пространство M i3-msg "workspace M; append_layout ~/.config/i3/workspace_N.json" # И заполним контейнеры программами (uxterm &) (uxterm &) (uxterm &)
Сделайте файл исполняемым. И, наконец, макет рабочего пространства N может быть загружен в рабочее пространство М путём запуска команды:
$ ~/load_layout.sh
Совет: Добавьте bindsym $mod+g exec ~/load_layout.sh в ~/.config/i3/config и перезапустите i3, после чего сочетание клавиш Mod+g будет запускать этот скрипт.
Примечание: Если скрипт, описанный выше, не работает как следует, обратитесь к официальной документации. Секции swallows в ~/.config/i3/workspace_N.json нужно редактировать вручную.
Контейнер для электронного блокнота
По умолчанию, scratchpads (блокноты) содержат только одно окно. Однако контейнеры также могут быть сделаны блокнотом.
Создайте новый контейнер (например, Mod+Enter ), разделите их ( Mod+v ) и создайте другой контейнер. Сфокусируйтесь на родительском ( Mod+a ), разделите в противоположном направлении ( Mod+h ), и создайте снова.
Фокус на первом контейнере (с акцентом родительского по мере необходимости), сделайте окно плавающим (floating) ( Mod+Shift+Space ), и переместите его в блокнот ( Mod+Shift+- ). Теперь вы можете разделить контейнеры по предпочтению.
Примечание: Контейнеры не могут быть изменены индивидуально в плавающих окнах. Измените размер контейнеров до создания плавающих окон.
Совет: При использовании только терминальных приложений подумайте об использовании мультиплексора вроде tmux.
Смотрите также [2] для нескольких scratchpads.
Хранитель экрана и управление питанием
С помощью xss-lock вы можете зарегистрировать экранный блокировщик для вашего сеанса i3. Кроме того, вы можете использовать xautolock для блокировки экрана после заданного периода времени:
xautolock -time 10 -locker "i3lock -i background_image.png" &
Можно использовать service-файл systemd для блокировки экрана перед уходом в ждущий или спящий режим; смотрите Управление питанием#Файлы служб. Обратите внимание, что i3lock требует, чтобы тип службы был forking .
Другой вариант — использовать xidlehook AUR с betterlockscreen AUR или любым другим хранителем экрана. xidlehook — это замена xautolock, написанная на Rust и имеющая дополнительные возможности. Сюда входит возможность отключения блокировки при воспроизведении звука или при полноэкранном режиме. Параметр —timer задаётся в секундах:
xidlehook --not-when-audio --not-when-fullscreen --timer 360 "betterlockscreen -l dim" "" &
Выключение, перезагрузка, блокировка экрана
Так как нет иконок на экране для Выключения, Перезагрузки и Блокировки Экрана, для удобства, мы можем задать комбинацию горячих клавиш. Ниже предпологается, что установлен polkit , чтобы позволять обычным (не привелигелированным) пользователям запускать команды управления питанием.
Добавьте следующие строки в ваш ~/.config/i3/config , по завершению вам будет предложен запрос, когда вы нажимаете $mod+pause .
set $Locker i3lock && sleep 1 set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown mode "$mode_system" < bindsym l exec --no-startup-id $Locker, mode "default" bindsym e exec --no-startup-id i3-msg exit, mode "default" bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default" bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default" bindsym r exec --no-startup-id systemctl reboot, mode "default" bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" # выход: Enter или Escape bindsym Return mode "default" bindsym Escape mode "default" >bindsym $mod+Pause mode "$mode_system"
Теперь при каждом нажатии $mod+pause будет появляться запрос. Для более сложного поведения используйте отдельный скрипт и ссылайтесь на него в режиме. [3]
- sleep 1 добавляет небольшую задержку, чтобы предотвратить возможное состояние гонки при уходе в ждущий режим [4]
- Аргумент -i команды systemctl poweroff позволяет выключить систему, даже если в неё вошли другие пользователи (для этого нужен polkit ) или когда logind (ошибочно) предполагает это. [5]
Список альтернативных блокировщиков экрана есть в статье Список приложений/Безопасность#Блокировка экрана.
Перекрытие окна терминала
Подобно dwm, в i3 можно «поглощать» (swallow) текущее окно терминала новым окном программы, запущенной через этот терминал. Это позволяет сделать пакет i3-swallow-git AUR .
Например, чтобы mpv при запуске перекрыл собой окно терминала:
$ swallow mpv video.mp4
Также можно сымитировать подобное поведение, используя tabbed или stacked контейнер, чтобы скрыть неиспользуемое окно терминала. Недостаток этого способа в том, что в верхней части контейнера всегда будет список окон.
Ручное управление внешними дисплеями
Благодаря xrandr есть много способов лёгкого управления дисплеями. Приведённый ниже пример ведёт себя подобно показанному ранее примеру управления питанием.
Пример меню для включения/выключения выходов VGA и HDMI на ноутбуке:
## Ручное управление внешними дисплеями # Сочетания клавиш и что они делают set $mode_display Ext Screen (v) VGA ON, (h) HDMI ON, (x) VGA OFF, (y) HDMI OFF mode "$mode_display" < bindsym v exec --no-startup-id xrandr --output VGA1 --auto --right-of LVDS1, mode "default" bindsym h exec --no-startup-id xrandr --output HDMI1 --auto --right-of LVDS1, mode "default" bindsym x exec --no-startup-id xrandr --output VGA1 --auto --off, mode "default" bindsym y exec --no-startup-id xrandr --output HDMI1 --auto --off, mode "default" # выход: Enter или Escape bindsym Return mode "default" bindsym Escape mode "default" ># Сочетание клавиш для вызова меню bindsym $mod+x mode "$mode_display"
Любое окно, которое всё ещё открыто на выключенном дисплее, автоматически возвращается на оставшийся активным дисплей.
Самый простой способ определить имена ваших устройств — подключить устройство, которое вы хотите использовать, и выполнить команду:
$ xrandr --query
которая выведет доступные распознанные устройства и их внутренние имена, которые можно использовать для настройки.
Список доступных опций есть в статье xrandr (Русский). Смотрите также i3 userguide и/или i3 FAQ на reddit.
Вкладки или стековый просмотр веб-страниц
Некоторые веб-браузеры намеренно не внедряют вкладки, управление вкладками считается задачей менеджера окон, не задачей браузера.
Чтобы i3 управлял вкладками веб-браузера (в этом примере для uzbl), добавьте следующую строку в ваш ~/.config/i3/config
for_window [class="Uzbl-core"] focus child, layout stacking, focus
Это для стекового просмотра веб-страниц, это означает, что окна будут показаны вертикально. Преимущество над вкладками является то, что названия окон полностью видны, даже если открыто много окон браузера.
Если вы предпочитаете вкладки, с окнами в горизонтальном направлении (‘tabs’), используйте:
for_window [class="Uzbl-core"] focus child, layout tabbed, focus
Переменные рабочих пространств
Так как рабочих пространств в i3 определено много, будет полезно присвоить переменные рабочим пространствам. Например:
set $WS1 term set $WS2 web set $WS3 misc set $WS4 media set $WS5 code
Затем замените имена рабочих пространств в соответствии с их переменной:
bindsym $mod+1 workspace $WS1 . bindsym $mod+Shift+1 move container to workspace $WS1
Правильное обращение с плавающими диалогами
Хотя диалоги должны открываться по умолчанию в плавающем режиме (floating) [6], многие до сих пор открываются в тайловом режиме (tiling). Чтобы изменить это поведение, проверьте WM_WINDOW_ROLE с помощью xorg-xprop и добавьте правильные правила в ~/.config/i3/config (используя pcre синтаксис):
for_window [window_role="pop-up"] floating enable for_window [window_role="task_dialog"] floating enable
Вы также можете использовать в качестве правила заголовок и регулярные выражения:
for_window [title="Preferences$"] floating enable
for_window [class="(?i)mplayer"] floating enable
Скорость Загрузки/Отдачи сети в statusbar
Можно адаптировать этот скрипт. Для этого:
- переименуйте обе ваши сетевые карты в соответствии с вашей системой (используйте ip addr )
- найдите их /sys/devices затем замените соответствующими:
$ find /sys/devices -name network_interface
Совет: Использование /sys/class/net/interface/statistics/ не зависит от расположения PCI.
Теперь просто сохраните скрипт в подходящем месте (например ~/.config/i3 ) и пропишите его в вашу программу статуса.
Автоматическое переключение горизонтальной / вертикальной ориентации
Пакет autotiling AUR позволяет автоматически переключаться между горизонтальной и вертикальной ориентациями окон, что приводит к поведению, похожему на спиральный тайлинг bspwm. После установки добавьте следующее в ~/.config/i3/config и перезагрузите i3.
exec_always --no-startup-id autotiling
Решение проблем
Общее
Часто ошибки уже исправлены в разрабатываемых версиях i3-git AUR и i3status-git AUR , и в апстриме попросят воспроизвести какие-либо ошибки в этих версиях. [7] Смотрите также Отладка/Трассировка#Параметры компиляции.
Искажённый текст
Кнопки в строке сообщений i3 не работают
Кнопки, такие как «Edit config» в i3-nagbar вызывают i3-sensible-terminal , поэтому убедитесь, что i3 распознаёт ваш #Эмулятор терминала.
Неисправная строка оболочки в тайловом терминале
i3 v4.3 и выше игнорирует размер инкремента подсказки для тайловых окон [8]. This may cause terminals to wrap lines prematurely, amongst other issues. As a workaround, make the offending window floating, before tiling it again.
Курсор мыши остаётся в режиме ожидания
При запуске приложения или скрипта, которое не поддерживает протокол startup notification, курсор мыши будет оставаться в режиме занят/часы/и т.п. в течение 60 секунд.
Чтобы решить эту проблему для конкретного приложения, используйте параметр —no-startup-id , например:
exec --no-startup-id ~/script bindsym $mod+d exec --no-startup-id dmenu_run
Не реагируют сочетания клавиш
Некоторые утилиты, такие как scrot, могут не работать при использовании обычных сочетаний клавиш (которые выполняются сразу в момент нажатия клавиш). В таких ситуациях выполняйте команду после отпускания нажатых клавиш, добавив аргумент —release [9]:
bindsym --release Print exec --no-startup-id scrot bindsym --release Shift+Print exec --no-startup-id scrot -s
Тиринг (разрыв картинки по горизонтали)
i3 не осуществляет двойную буферизацию должным образом [10] следовательно, может появится тиринг или мерцание. Чтобы предотвратить это, установите и настройте picom.
Значки трея не видны
Директива tray_output primary может потребовать установки первичного вывода с помощью xrandr, явного указания вывода или просто удаления этой директивы. [11] Подробности в статье xrandr (Русский). Конфигурация по умолчанию, которую создаёт i3-config-wizard, больше не добавляет эту директиву в конфигурацию, начиная с i3 версии 4.12.
Рабочее пространство по умолчанию для Spotify
Чтобы назначить рабочее пространство по умолчанию для окон Spotify, нельзя использовать стандартный путь с командой assign , а лучше использовать команду for_window , например
~/.config/i3/config
. for_window [class="Spotify"] move container to workspace $ws10
Чтобы for_window не перемещал окно, если оно уже находится в $ws10 , можно вместо этого использовать move —no-auto-back-and-forth .
Смотрите также
- Официальный сайт
- Funtoo:I3 Tiling Window Manager
- Исходный код
- i3-extras — Коллекция скриптов и патчей
- i3ipc-glib — Библиотека расширений i3
- i3ipc-ruby — Усовершенствованная библиотека расширений i3 на Ruby
- j4tools [устаревшая ссылка 2023-04-23 ⓘ] — неофициальные утилиты для работы с i3
Arch Linux Forums
- The i3 thread — A general discussion about i3
- i3 desktop screenshots and config sharing
Screencasts
- i3 window manager v4.1 screencast
- i3 window manager v4.1X screencasts
i3wm
i3 (i3wm) — тайлинговый оконный менеджер. Высокая производительность. Настройка через конфигурационные файлы. Широкие возможности управления горячими клавишами.

Основные особенности
- Позиционируется, как оконный менеджер для продвинутых пользователей и разработчиков.
- i3 был написан с нуля. При разработке уделяется внимание чистоте исходного кода и документированию. Каждая новая функция требует документирования.
- Вместо Xlib используется Xcb. Xcb имеет более чистый API и во многих ситуациях работает быстрее, чем Xlib.
- Поддерживается работа с несколькими мониторами. Также поддерживается «горячее» подключение новых устройств вывода и поворот дисплея.
- Используется древовидная система хранения данных, что позволяет создавать более гибкие макеты, по сравнению с другими оконными менеджерами.
- Поддерживаются различные режимы работы. Например, можно использовать разные сочетания клавиш в режиме «resize» и в режиме по умолчанию.
- Реализована поддержка межпроцессного взаимодействия (IPC). Приложения могут подписываться на различные события и принимать команды.
- Поддержка UTF-8.
- Разработчики стараются не усложнять i3 излишними функциями и сосредоточены в первую очередь на исправлении ошибок и поддержке стабильности. Добавление новых функций рассматривается только в том случае, если польза от них явно перевесит дополнительное усложнение «внутренностей» i3. Поэтому, когда это возможно, рекомендуется добавлять новые функции с помощью IPC.
Компоненты
В составе i3 можно выделить следующие компоненты:
- i3 — оконный менеджер.
- i3bar — панель (отображает рабочие столы и строку терминала).
- i3status — строка состояния.
- i3lock — экран блокировки.
- dmenu — меню для запуска программ (команд).
Размещение окон
i3 относится к тайлинговым оконным менеджерам. Также используются понятия — мозаичный, плиточный.
Окна при размещении не перекрываются и располагаются в «табличном» виде.
Для отдельных окон поддерживается «плавающий» режим (Floating mode). Использование данного режима нарушает парадигму тайлинга, но он полезен, например, для различных диалоговых окон или окон панелей инструментов (например, панелей в GIMP). Плавающие окна всегда располагаются поверх плиточных окон. Принудительно перевести окно в «плавающий» режим можно с помощью сочетания клавиш mod+Shift+Space.
Поддерживается создание нескольких рабочих пространств (workspaces). Пространства нумеруются цифрами от 0 до 9.
Поддерживается расположение окон в стек и вкладки.
По умолчанию i3 не использует композитор. Для поддержки размытия, прозрачности и различных визуальных эффектов необходимо установить сторонний композитор, например, Picom.
Конфигурация
Для конфигурации используются текстовые файлы.
Базовая конфигурация (шаблон) расположена в файле: /etc/i3/config
Для задания пользовательских настроек необходимо скопировать /etc/i3/config в ~/.i3/config или ~/.config/i3/config
При первом запуске оконного менеджера i3 открывается диалог с предложением сгенерировать файл конфигурации в ~/.config/i3/config и выбрать клавишу-модификатор mod (Alt или Win).
Горячие клавиши
i3 поддерживает управление с помощью горячих клавиш. Использование мыши необязательно.
Все сочетания горячих клавиш используют базовую клавишу, которая называется mod. По умолчанию mod соответствует клавише Alt. Многие пользователи в качестве базовой клавиши выбирают клавишу Win.
Переназначить горячие клавиши можно через файлы конфигурации.
Ниже приведены некоторые популярные горячие клавиши (mod по умолчанию соответствует клавише Alt):
| mod+Enter | Открыть новый Терминал. |
| mod+j | Перевести фокус влево. |
| mod+k | Перевести фокус вниз. |
| mod+l | Перевести фокус вверх. |
| mod+; | Перевести фокус вправо. |
| mod+a | Перевести фокус на родительскую область. |
| mod+Shift+j | Переместить окно влево. |
| mod+Shift+k | Переместить окно вниз. |
| mod+Shift+l | Переместить окно вверх. |
| mod+Shift+; | Переместить окно вправо. |
| mod+f | Переключить полноэкранный режим. |
| mod+v | Разделить окно по вертикали. |
| mod+h | Разделить окно по горизонтали. |
| mod+r | Режим изменения размера. |
| mod+e | Макет по умолчанию. |
| mod+s | Макет Стек. |
| mod+w | Макет Вкладки. |
| mod+d | Открыть dmenu. |
| mod+Shift+q | Закрыть окно (либо kill приложения, если оно не поддерживает события WM_DELETE). |
| mod+1, mod+2, . | Переключиться на рабочее пространство (workspace) 1, 2, . |
| mod+Shift+1, mod+Shift+2, . | Переместить окно на другой workspace. Если workspace не существует, он будет создан. |
| mod+Shift+Space | Перевести окно в Плавающий режим. |
| mod+Shift+c | Перезагрузить конфигурационный файл. |
| mod+Shift+r | Перезапустить i3. |
| mod+Shift+e | Корректно завершить i3. |
Установка
Установка в Ubuntu (LinuxMint)
sudo apt install i3
Установка в ArchLinux (Manjaro)
sudo pacman -S i3-wm
Установка в Fedora
sudo dnf install i3
Установка в openSuse
sudo zypper install i3
Установка в Gentoo
sudo emerge -a x11-wm/i3
Разработка

Open Source (открыт)