Меню Рубрики

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

Настройка i3WM

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

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

Введение

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

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

  • i3 — Собственно сам оконный менеджер
  • i3bar — «Родная» панель в i3wm все что умеет это отображение рабочих столов и строку терминала
  • i3status — Отображение некоторой информации строчкой терминала
  • i3lock — Экран разблокировки компьютера

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

Настройка i3WM

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

В качестве терминала по умолчанию используется xterm — запускается комбинацией Mod+Enter. Не будем пока зацикливаться на управлении, уясним лишь то, что бы закрыть окно нужно нажать Mod+Shift+q , а что бы перезапустить i3 — Mod+Shift+r.

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

  • Обои — Для этого будем использовать Nitrogen
  • Лаунчер приложений — Тут есть много вариантов, рассмотрим мы только самые популярные
  • Анимации и VSync — Для этого нам понадобится композитор, я предлагаю Compton потому что он легкий и стабильный

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

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

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

Вообще для того чтобы виртуозно работать с конфигом i3wm надо всего лишь знать что все что идет после # — комментарий, и еще три вещи :
1) Запуск программ происходит с помощью exec, для того чтобы наш оконный менеджер что то запустил используем следующий шаблон

  1. Пример
    exec compton
    При запуске i3 — запуститься и композитор compton
  2. Пример
    exec

/script.sh
При запуске i3 — запуститься скрипт который лежит в домашней папке под именем script.sh

  • Пример
    exec nitrogen — -restore
    При запуске i3 — запуститься nitrogen с опцией restore
  • 2) Установка переменных. В i3wm можно создать переменные, работает это все как define в C++. На место переменной встанет заданная ей строчка. Переменные можно задать с помощью set.

    1. Пример
      set $color #023537
      Переменной $color задано значение #023537
    2. Пример
      set $fileManager pcmanfm-qt
      Переменной $fileManager заданное значение pcmanfm-qt

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

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

    1. Пример
      bindsym $mod+1 workspace 1
      При нажатии mod клавиши и цифры 1 — мы перейдем на рабочий стол 1.
    2. Пример
      bindsym XF86Tools exec firefox
      При нажатии кнопки Tools — запустится FireFox
    3. Пример
      set $press XF86Search
      set $search dmenu
      bindsym $press $search
      При нажатии заданной в переменной кнопки — будет выполнена заданная в другой переменной программа.

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

    set $mod Mod4 # Установка mod клавиши

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

    Теперь давайте поглубже копнем в создание горячих клавиш.
    Скорей всего у вас на клавиатуре будет 6той ряд клавиш, который хочется использовать по полной. Что бы узнать имя клавиши я использую xev.
    Запустите xev , и наведя на белое окно нажимайте нужную клавишу что бы узнать ее имя. Для удобства анализа 6го ряда запускайте его так

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

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

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

    bindsym XF86AudioLowerVolume 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) Регулировка яркости. Вообще вряд-ли это будет проблемой, но для того что бы более менее избавить вас от гугления — я просто покажу как это делается

    bindsym XF86MonBrightnessUp exec xbacklight -inc 6
    bindsym XF86MonBrightnessDown exec xbacklight -dec 6

    Внешний вид

    Рамки окон

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

    Изменить размер рамок окна по умолчанию можно с помощью new_window pixel — я себе поставил 1, только чтобы видеть границы окон.

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

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

    Ну и думаю стоит привести пример настройки цветов i3bar — все по той же схеме, только немного другие теги.

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

    • focused_workspace — Рабочий стол в фокусе;
    • active_workspace — Активный рабочий стол;
    • inactive_workspace — Неактивный рабочий стол;
    • urgent_workspace — На рабочем столе есть приложение которое требует внимания;

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

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

    Для настройки внешнего вида приложений надо будет попотеть.
    Начнем с простого — настройки GTK+
    Все что нам надо, это лишь программа lxappearance,в ней можно настроить иконки , тему GTK и курсора.

    Теперь сложнее — настройка Qt.
    Для настройки Qt нам нужно будет всего два приложения qt4config и qt5ct.
    Запускаем qt4config — выбираем тему , шрифт и т. п. — все.
    Но вот если мы запустим qt5ct то увидим сообщение о отсутствии переменной среды. Чтобы исправить нам надо будет отредактировать файл Xsession, т.к я использую sddm — то у меня он находиться по адресу /usr/share/sddm/scripts/Xsession. В него нам надо добавить строчку export QT_QPA_PLATFORMTHEME=»qt5ct» — после чего перелогинимся и уже спокойно можем запустить qt5ct и там провести настройку

    По мимо стандартных тем для Qt можно выбрать движок тем. Советую обратить внимание на Kvantum — это SVG based движок для Qt. Простой в настройке, тем пока что мало, но то что есть выглядят очень круто и футуристично.

    Анимации и VSync

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

    Добавим в конфиг exec compton -f —vsync drm
    И после перезапуска получаем красивые переходы, прозрачность и главное вертикальную синхронизацию, все очень просто !

    Про обои мы тоже договорились что будем использовать nitrogen. Запускаем его, выбираем обоину и радуемся, все что остается, это только добавить в конфиг exec nitrogen —restore

    Conky

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

    Это необязательный пункт, но я подумал что стоит и его упомянуть, тут я просто покажу как надо запускать коньки в i3wm
    exec conky -c

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

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

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

    • Dmenu — каноничный лаунчер, по факту это выпадающая строка терминала с автодополнением. Минималистичный и легкий.
    • Xfce AppFinder — лаунчер приложений из окружения XFace, основан на GTK+ , не сказать что удобное решение, но он простой и понятный.
    • Rofi — Достаточно гибкий лаунчер, по мимо простого запуска приложений умеет навигацию по окнам и ssh клиент.

    Вывод

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

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

    Ну раз уж такое дело, то думаю ShowMyDesktop тред в комментариях будет не лишнем.
    Спасибо за внимание !

    источник

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

    В этой статье расписал, как я настроил под свои нужды i3wm. Конечно же тут можно многое еще что добавить и настроить. Можно поставить и полибар и разные плюшечки, можно поставить также и rofi для “более удобного” поиска установленных программ, но мне как-то и так хорошо. Вы если хотите можете все это себе поставить. Я даю тут все в упрощенном варианте и без особых наворотов. Далее уже вы сами подстраивате конфиги под свой вкус и цвет, под свои “фломастеры”.

    Простой вариант установки и настройки i3wm (минимализм)

    Ссылки

    Установка

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

    Нам понадобится:

    1. i3wm — оконный менеджер и его форк (ответвление) i3-gaps
    2. i3status — вывода строки статуса в i3bar
    3. dmenu — утилита для запуска программ
    4. ttf-font-awesome — шрифтовые иконки
    5. feh — установка обоины на рабочий стол
    6. lxappearance — установка тем для окон, иконок, курсора
    7. pcmanfm — файловый менеджер
    8. gvfs и udiskie — для авто монтирования внешних дисков
    9. xorg-xbacklight — для управлением яркостью экрана
    10. ristretto и tumbler — для просмотра фото
    11. compton — для прозрачности окон и для устранения тиринга

    Можно еще поставить sbxkb — индикатор раскладки и переключения клавиатуры, но можно и без этого! Когда вы последний раз смотрели на раскладку? Уверены, что это вам нужно? Еслитакой вариант переклюения клавиатуры вам не нравтся, а хотите тектовой, то есть другой вариант, но для этого вам уже нужно будет ставить polibar. Если нужно то пишите в комментах. Будет много желающих напишу как это делать.

    Ставим пакеты из pacman:

    Настройка конфига i3wm

    При первичной загрузке вы увидите примерно такое сообщение:

    Нажмите 2 раза на Enter — это создаст конфигурационный файл, который мы потом будем менять. Вы увидите просто черный экран и возможно курсор мыши :))) Не пугайтесь все нормально, система работает и вы сделали все правильно.

    Зачастую можно видеть символ загрузки, который постоянно вращается (до 60 сек.) — система пытается запустить какой-то процесс. Если вас это раздражает, то можно убрать прописав перед запуском программ код:

    источник

    LaurVas

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

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

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

    • Окна всегда занимают всю площадь экрана.
    • Окна не перекрывают друг друга.
    • В i3 я спокойно ориентируюсь в 20 открытых окнах. Раньше путался уже на 10.
    • Всё управление окнами осуществляется с клавиатуры.
    • Всё хорошо сразу, на дефолтном конфиге. Не возникает желания переделать дизайн по-своему.

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

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

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

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

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

    Установка i3

    В Archlinux ставим пакеты i3-wm , i3status , dmenu . Если вы тру-арчевод и не используете графических логин-менеджеров (slim, lightdm, gdm, kdm), то для запуска i3 допишите в конец файла

    /.xinitrc строчку exec i3 . Остальные exec надо закомментировать, иначе эффекта не будет.

    В Ubuntu и Debian ставим мета-пакет i3 , он подтянет за собой всё остальное.

    При первом запуске i3 предложит создать конфиг-файл и спросит какую клавишу использовать в качестве модификатора: Win или Alt . Выбирайте Win , чтобы хоткеи управления окнами не конфликтовали с хоткеями приложений.

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

    У i3 нет главного меню (aka “Пуск”). Кто бы что ни говорил, а я считаю что это правильно: надо привыкать запускать приложения с клавиатуры. В дефолтной конфигурации для запуска приложений используется лончер на базе dmenu, он вызывается по Win + D . Терминал запускается сочетанием Win + Enter — дико удобно. Технически это сделано так: вместе с i3 идёт скрипт i3-sensible-terminal , который ищет установленные терминалы в системе и запускает первый попавшийся. Поэтому если i3 не угадал ваш любимый терминал, пропишите его явно в конфиге i3.

    У i3 нет панели задач. Но она там и не нужна, т.к. все окна на виду — не потеряются. Зато доступно сразу 10 рабочих столов. В Awesome они называются тэгами, а в i3 — воркспэйсами (workspaces). Я же буду по-старинке называть их рабочими столами. Переключение между рабочими столами осуществляется комбинацией Win + цифра . Например, для переключения на третий надо нажать Win + 3 .

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

    1. разные рабочие терминалы, обычно подключенные к серверам,
    2. код в редакторе, один-два терминала для работы с этим кодом,
    3. браузер,
    4. VirtualBox,
    5. мессенджер, музыкальный плеер,
    6. один-два рутовых терминала.

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

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

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

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

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

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

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

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

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

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

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

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

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

    И Win + E , Win + W , Win + S будут менять компоновку внутреннего контейнера, а не внешнего:

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

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

    • Использовать мышь или Win + стрелка , чтобы переключиться на окно, принадлежащее первому контейнеру.
    • Выделить второй контейнер целиком сочетанием Win + A :

    Жмём Win + E , чтобы превратить стэковый контейнер в горизонтально разделённый:

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

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

    Для изменения размера активного окна надо нажать Win + R , затем стрелками подвигать правый нижний угол ( ↑ и ← уменьшают окно, ↓ и → увеличивают). При этом остальные окна того же рабочего стола будут пропорционально перерисовываться. Не забываем выйти из ресайза клавишей Enter или Esc . Также i3 позволяет двигать стыки между окнами мышью, но это не так интересно.

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

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

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

    Вместо стрелок можно использовать вимовские H J K L , но смещённые на одну клавишу вправо, чтобы Win + H было мнемоникой для горизонтального разделения. Мне это показалось неудобным, и я сделал каноничные H J K L , а горизонтальное разделение сместил на Win + G . И ещё переназначил Alt + F4 на закрытие окна по старой привычке. В остальном дефолтные сочетания клавиш подобраны очень удачно.

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

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

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

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

    /.config/i3/config . Не буду в деталях расписывать конфигурационный файл, потому что во-первых там всё просто, а во-вторых у i3 отличная документация. Расскажу преимущественно о своём опыте, а остальное вы всегда сможете подсмотреть в документации.

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

    Ресайз

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

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

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

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

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

    Для приложений, которые не поддерживают механизм startup-notification, надо делать exec с ключом —no-startup-id . Как правило это либо древние (xterm), либо консольные. Если приложение уже запустилось, а курсор ещё выглядит как часы, значит нужен ключ —no-startup-id .

    Если надо запустить процесс с аргументами, просто перечисляем их через пробел. i3 использует шелл для запуска, поэтому можно смело использовать возможности шелла (глоббинг, операторы). Если в команде нужны символы ; и , , то команду следует заключить в кавычки.

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

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

    Нам понадобится утилита xprop, чтобы узнать свойства окна. В Archlinux она устанавливается из пакета xorg-xprop , в Debian и Ubuntu из пакета x11-utils . Вот пример для chromium:

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

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

    i3-msg является консольной командой и не поддерживает startup-notification, поэтому её надо вызывать с ключом —no-startup-id . А вот внутреннюю команду обязательно запускать без —no-startup-id , иначе переключение рабочего стола не даст эффекта.

    Если вы пропишите в автозапуск несколько i3-msg , то возможно возникнет состояние гонки и все окна перепутаются. А может быть и нет, зависит от реализации i3-msg. Я бы засунул всё в один вызов, чтобы сократить накладные расходы.

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

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

    i3 поддерживает как растровые, так и векторные шрифты. Я поигрался с разными вариантами и остановился на растровом шрифте misc-fixed из пакета xorg-fonts-misc . По-моему он идеально вписывается в дизайн i3. Вы только взгляните на эти аккуратные циферки!

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

    У неё специфический интерфейс, но разобраться можно. Надо уточнять параметры шрифта до тех пор, пока они не станут однозначно идентифицировать шрифт (надпись “1 name matches” в правом верхнем углу). Нажимаем кнопку select, и название шрифта попадёт в буфер обмена, только не тот, который для Ctrl + C , Ctrl + V , а который вставляется нажатием на колёсико мыши или Shift + Insert . В конфиге i3 растровый шрифт указывается так:

    Для векторного шрифта нужно добавлять префикс pango: , например:

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

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

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

    Да, чтобы работающий i3 перечитал конфиг, надо нажать Win + Shift + C .

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

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

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

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

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

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

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

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

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

    Панель i3bar

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

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

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

    • IPv6 адрес,
    • свободное/занятое место на файловой системе,
    • состояние сервиса через pid-файл (работает/лежит),
    • наличие пути в файловой системе (есть/нет),
    • состояние проводного/беспроводного сетевого интерфейса,
    • состояние аккумулятора,
    • температуру процессора,
    • загрузку процессора в процентах и load average,
    • дату и время,
    • громкость канала PulseAudio или ALSA.

    Формат вывода довольно гибко настраивается, но остаётся текстовым. Подробнее см. man i3status .

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

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

    /.config/i3status/config . Результат можно смотреть прямо в консоли — удобно!

    Scratchpad

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

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

    Как я узнал что клавиша называется grave? С помощью утилиты xev . Запускаем её в терминале, нажимаем нужную клавишу и смотрим вывод после слова keysim :

    Чтобы изменения вступили в силу, заставим i3 перечитать конфиг комбинацией Win + Shift + C . Теперь Win + Shift + ` отправит активное окно в scratchpad, а Win + ` достанет его оттуда (и спрячет обратно по второму нажатию). Окно из scratchpad’а ведёт себя как обычное плавающее окно: его можно двигать мышкой с зажатой клавишей Win , а Win + пробел будет переключать фокус на плитку и обратно на плавающее окно.

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

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

    источник

    Читайте также:  Установка водостока на гараж

    Добавить комментарий