Как установить i3wm ubuntu
Перейти к содержимому

Как установить i3wm ubuntu

  • автор:

Установка i3 в Ubuntu 18.10

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

i3wm доступен в основных репозиториях Ubuntu, поэтому вы легко сможете его установить. Для установки, как и перед любой установкой пакетов, обновим список доступных пакетов:

sudo apt update

Затем можно приступать к установке i3wm:

sudo apt install i3

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

Если вы не использовали отличные от gnome рабочие столы, то при первом заходе в i3 вы удивитесь какое все не красивое и минималистичное. Не стоит пугаться, так как он гибкий, то не имеет большого числа настроек по умолчанию. Придется все настраивать самим. При первом запуске вы увидите окно, с предложение создать файл конфигурации, нажмите enter, для согласия на его создание.

Затем будет предложено задать, так называемую «Mod» клавишу. ЕЁ можно назначить на клавишу windows.

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

Для открытия терминала, используется сочетание клавиш «Mod»+enter. Допустим вы открыли 4 терминала и вам требуется между ними переключаться. Для переключения между открытыми терминалами можно использовать сочетания клавиш «Mod»+j для перемещения влево, «Mod»+; для перемещения вправо, «Mod»+k для перемещения вниз, «Mod»+l для перемещения вверх. Данные сочетания похожи на vim, если вы привыкли работать с vim, то путем изменения горячих клавиш, вы легко сможете сделать большее сходство с vim. Для перемещения окон используются эти же сочетания, но за одним исключением, к ним добавляется shift. Например требуется сместить окно вниз, то сочетание будет «Mod»+shift+k. Для закрытия окна сочетание клавиш будет «Mod»+shift+q.

i3wm представлен в виде 10 рабочих столов, каждый из которых не зависим друг от друга. Для переключения между рабочими столами используется комбинация «Mod»+3, где вместо 3 задается нмоер рабочего стола.

У графического рабочего стола достаточно много настроек, про них можно говорить вечно. Давайте рассмотрим пару основных.

Настройки

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

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

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

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

Ссылки

Установка

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

  • i3wm — оконный менеджер и его форк (ответвление) i3-gaps
  • i3status — вывода строки статуса в i3bar
  • dmenu — утилита для запуска программ
  • ttf-font-awesome — шрифтовые иконки
  • feh — установка обоины на рабочий стол
  • lxappearance — установка тем для окон, иконок, курсора
  • pcmanfm — файловый менеджер
  • gvfs и udiskie — для авто монтирования внешних дисков
  • xorg-xbacklight — для управлением яркостью экрана
  • ristretto, viewnior или tumbler — для просмотра фото
  • picom — для прозрачности окон и для устранения тиринга (вместо compton)

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

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

pacman -S i3-wm i3-gaps i3status sbxkb dmenu pcmanfm ttf-font-awesome feh lxappearance thunar gvfs udiskie xorg-xbacklight ristretto tumbler picom

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

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

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

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

--no-startup-id

Обои на рабочий стол

Устанавливаем обои на рабочий стол

exec --no-startup-id feh --bg-scale /usr/share/backgrounds/xfce/bg.jpg

Автозагрузка программ

Прописываем автозагрузку программ кодом

exec --no-startup-id flameshot

Отключение заголовков окон

Я предпочел отключить заголовки окон. Освободив дополнительное пространство на рабочем столе.

default_border pixel

Настройка толщины рамки i3wm

Для увеличение толщины рамки, чтобы было лучше видно активное окно используем следующий код:

for_window [tiling] border pixel 3

Назначаем свои горячие клавиши
Прописываем запуск программ на определенных горячих клавишах:

bindsym $mod+F1 exec firefox
bindsym $mod+F3 exec subl
bindsym $mod+F4 exec cherrytree
bindsym $mod+F5 exec galculator

Я, к примеру, использую консольный вариант проигрывателя VLC, запуская его горячими клавишами. При этом, радио начинает играть автоматом. Авто подключение радио потока прописано в настройках vlc.

bindsym $mod+Home exec cvlc

Убить процесс

И т.к. программа запускается без GUI, ее удобнее выключать горячими клавишами, которые просто убивают процесс vlc.Для того, чтобы убить процесс использую команду killall -s 6.

bindsym $mod+Prior exec killall -s 6 vlc

Как найти название клавиш

Тут возникает вопрос, что за клавиша такая “Prior”, которую мы использовали выше и как вообще найти название клавиш, которые нам хотелось бы использовать. Клавиша “Prior” — на моей клавиатуре это клавиша Pg Up/■ . Используется для управлением проигрывателя (старт, стоп, пауза, перемотка и т.д.) Для того, чтобы найти название клавиш используем утилиту xev, вбив в консоли команду:

После запуска, вы увидите белый экран с квадратом вверху.

Подведите курсор мышки к квадрату и не уводя с него, нажмите на нужную клавишу. В терминале увидите ее название.

Или же используйте вот эту команду, которая покажет только то что нужно, урезая все лишнее.

xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.keycode ([0-9]).* (., (.)).*$/\1 \2/p'

Думаю тут все понятно не вызовет никаких трудностей. Идем дальше.

Открытие программ в плавающем окне

Если определенную программу нужно открыть не в тайлинге, а в плавающем окне используйте код

for_window [class="Xfce4-terminal"] floating enable

Где “Xfce4-terminal” это название программы.

Открытие программ в нужном рабочем столе

В i3wm есть фишка, которую я не встречал в других DE/WM — это запуск программ на определенном рабочем столе. Удобно, когда вы знаете, какая программа и на каком рабочем столе она запускается.

Данный код запустит Firefox на 3-м рабочем столе

for_window [class="Firefox"] move to workspace $ws3

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

Регулировка яркости экрана

Управление яркостью экрана, нужно установить xbacklight. Он у вас уже должен стоять, если вы следуете этому ману.

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

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

Копирование конфига

Прежде чем вносить изменения, нужно скопировать настройки для i3status.

Для этого сначала создадим папку i3status (если у вас ее нет).

$ mkdir ~/.config/i3status

Далее копируем конфиг в домашнюю директорию, выполнив следующий код:

$ cp /etc/i3status.conf ~/.config/i3status/config

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

Все иконки можете брать с сайта fontawesome и вставлять в конфиг

Индикатор звука

Для того, чтобы у вас был индикатор звука используйте код:

olume master

Тут особо расписывать нечего. Смотрите мои настройки конфиг i3status

Дополнительные настройки смотрите в документации по i3status

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 . Он вносит в шаблон два изменения:

  1. Он просит пользователя выбрать клавишу-модификатор по умолчанию, который он добавляет в шаблон в виде одной строки, например, set $mod Mod1 ; и
  2. заменяет все строки 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 .

Примечание: В этом разделе лишь вкратце описано, как сохранить текущую раскладку окон из одного рабочего пространства и как восстановить её для дальнейшего использования. Более подробная информация доступна в официальной документации.

Сохранение текущего расположения окон одного рабочего пространства

Чтобы сохранить текущее расположение окон, выполните следующие действия:

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

$ 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

Ubuntu 20.04 + i3wm

Минималистичный, не самый красивый конфиг, но довольно функциональный.

Приложения делятся по рабочим столам:
1 — браузер
2 — ide, терминал и т.д для работы
3 — мессенжеры
4 и дальше — остальные приложения

Такое разделение позволяет с любого открытого окна перейти в нужное окно одним нажатием шортката (super + номер рабочего стола).

Вторая концепция навигации, которую я пробовал — это window меню для rofi. Что-то типа спотлайта на макоси, вводишь пару букв с названия окна, жмешь Enter и попадаешь к этому же окну. Но от такого решения решил отказаться, так как при тайлинговом wm удобнее и быстрее первое.

Комбинации клавиш немного упрощены, по сравнению с дефолтной в i3wm.

Навигация по принципу vim сделана, через hjkl (по умолчанию смещено на одну клвишу вправо).

Как альтернатива i3 рассматривался bspwm, но отсутствие таббирования окон с коробки оттолкнуло. Да и в целом i3 показался удобнее и понятнее.

Статус-бар — polybar. От него почти ничего не требуется, долго вообще на i3bar сидел. Решил сменить потому что polybar предоставляет больше возможностей, правда на текущий момент мной не востребованный.

Файловый менеджер — ranger (основной и единственный).
Для запуска приложений rofi с настройками из репы на git adi1090x/rofi.
Скриншотилка — flameshot (хотелось бы что-то на scrot, но требуется редактирование скринов минимальное, поэтому решил остановиться на flameshot). Из репозитория работала не корректно, собрал с исходников.

Пользуюсь ide от jetbrains (pycharm, phpstorm) с distraction free mod, material ui, а так же vim плагином. С этим очень выручает i3, потому что все ide нужны мне на втором рабочем столе, а их запуск довольно длительный по времени. Возникает ситуация, когда начал запуск на втором рабочем столе, переключился на другой и уже там появилось окно.
Но wm позволяет запускать окна с определенным классом на определенном воркспейсе:
for_window [instance=»jetbrains-*»] move container to workspace $ws2;
Получается, что как бы я не запускал приложения от jetbrains они окажутся на втором рабочем столе.

Для клавиатуры использую переключения языка по capslock:
setxkbmap -layout «us,ru» -option «grp:caps_toggle»

Когда была потребность в 3-х разных раскладках (англ, ру и укр) использовал модифицированные раскладки таким образом, чтобы caps переключал ру -> англ и наоборот, а scroll lock англ -> укр и наоборот.
Задумка в том, чтобы переключать языки одной кнопкой и иметь возможность в одно нажатие с текущего языка переключиться на любой другой.

Для буфера обмена использую copyq. Он предоставляет множество возможностей с разными скриптами и т.д. К примеру выгрузка картинок с буфера обмена на какой-то сервер и замена картинки в буфере на ее ссылку. Но мне от него нужна только история и поиском и управлением в vim-раскладке. Есть возможность забиндить открытие меню трея на шорткат (при этом оно рисуется рядом с курсором), что очень удобно. Сам шорткат у меня Ctrl+Shift+Z — сложилось исторически, на старой клавиатуре с высокими кейкапами было удобно нажимать одним пальцем. Сейчас на низкопрофильной клавиатуре ноутбука одним пальцем это не нажать, но все равно устраивает.

Сетевой менеджер network-manager с nm-applet с гнома, за неимением альтернативы получше. (буду рад, если подскажете, что лучше). Второй вариант — сделать сетевое меню через rofi и nmcli, но я пока не уверен, что это покроет все сценарии. Хотя возможно с vpn конекшенами справится.
Bluethooth через blueman, тоже за неимением альтернативы получше.

Для управления яркостью подсветки пришлось пользоваться софтиной c гитхаб репы multiplexd/brightlight. Она по сути просто меняет значение в /sys/class/backlight/amdgpu_bl0/brightness. Такое решение используется потому, что остальные да в моем случае не работали.

Для перехода по папкам проектов используется множество алиасов, сделанных по принципу cd + первая буква-две названия проекта.
Также есть несколько решений сделанных на junegunn/fzf (тоже репа гита). Это скприпт для очень удобного поиска, который возвращает в stdin путь к наденому файлу. На основе этого сделаны следующие алиасы:
1. alias rs=»ranger «$(find. -type d | fzf)»»
2. alias cds=»cd «$(find. -type d | fzf)»»
3. alias vs=»vim «$(find. -type f | fzf)»»
1 — Ищет по папкам и открывает нужную в ranger
2 — То же но для cd
3 — Ищет по файлам и открывает в vim
Большой плюс fzf в том, что он может превратить coni3co в .config/i3/config, что очень ускоряет навигацию по файлам и папкам.
Живой пример: ввожу rs, печатаю pflasflat, попадаю в папку ./Projects/flask_app/flaskr/templates открытую в ranger

По опыту использования линукса в целом — перешел на него пару лет назад скорее по работе. Мой стек технологий на лиунуксе куда лучше работает, к тому же в итоге все хостится на linux серверах, так чего бы на и не разрабатывать на нем?
В итоге это оказалось настолько удобно и лучше чем винда, что я втянулся польностью и сейчас у меня вообще нету компьютера с виндой, даже в качестве второй системы.

Большинство вещей предпочитаю делать через термнал. У меня даже нету файлового мененджера или тедактора текста (помимо ide) c графическим интерфейсом.

Когда нужно было часто и активно работать с файлами на серверах, пользовался Mightnight commander. Так как он позволял удобно довольно работать с сетевыми протоколами (ftp, sftp и т.д.), а так же с архивами. Но от него оказался сначала за ненадобностью, а потом еще и потому, что он немного наружает концепцию, к которой я стремлюсь — маленький софт для узких задач, отказ от комбайнов и тяжелого софта, ну и vim-style раскладка. Сейчас предпочитаю rsync, scp и curlftpfs.

Есть еще кое-какие скрипты и уловки, но они уже довольно специализированные.

На этом все, спасибо за внимание!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *