i3 (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
i3
. Дата последней синхронизации: 20 января 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Сравнение тайловых оконных менеджеров
Оконный менеджер
i3
— это динамический
тайловый оконный менеджер
, вдохновлённый wmii и нацеленный на разработчиков и опытных пользователей.
Среди заявленных целей
i3
— понятная документация, надлежащая поддержка нескольких мониторов, древовидная структура для окон и различные режимы, как в
vim
.
Установка
Установите
пакет
i3-wm
.
Также есть группа пакетов
i3
. В её состав входят менеджер окон, блокировщик экрана и две программы, которые записывают строку статуса в i3bar через
stdout
.
Примечание
Изменения из форка
i3-gaps
были приняты в основную ветку
i3
и теперь доступны в пакете
i3-wm
.
Запуск
Из консоли
Запустите
i3
с помощью
xinit
.
Экранный менеджер
В состав
i3-wm
входят
i3.desktop
и
Xsession
, который запускает оконный менеджер.
i3-with-shmlog.desktop
включает журнал (полезно для отладки).
i3-gnome
AUR
[
ссылка недействительна
: package not found]
интегрирует
i3
с
GNOME
.
Использование
Для большей информации смотрите
официальную документацию
, а именно
i3 Пользовательское Руководство
.
Назначение клавиш
В
i3
команды вызываются с помощью клавиши-модификатора, называющейся
$mod
. По умолчанию (Mod1) это
Alt
, но также популярна альтернатива (Mod4), которая известна как
Super
.
Клавиша Super обычно изображается на клавиатуре со значком Windows, а на клавиатуре Apple она представлена в виде клавиши Command.
Сочетания клавиш, используемые по умолчанию, описаны в документации; смотрите
справочную карту i3
и
Использование i3
. Смотрите
назначение клавиш
чтобы добавить новые сочетания/горячие клавиши.
Пользователи не-Qwerty раскладок могут захотеть обойтись без «мастера настройки», как описано
ниже
.
Если вы переключаетесь между несколькими оконными менеджерами или средами рабочего стола, можно использовать
sxhkd
или другую программу, не зависящую от среды, для управления сочетаниями клавиш. Дополнительную информацию можно найти в статье
Горячие клавиши#Xorg
.
Контейнеры
i3
управляет окнами в виде древовидной структуры, с контейнерами, как со строительными блоками. Эта структура разделяется по горизонтали и вертикали. Контейнеры по умолчанию тайловые (tiled), но могут быть установлены как стековые лэйауты (stacked layouts), так и плавающие (floating) (например для диалоговых окон). Плавающие окна всегда поверх.
Для подробностей смотрите
Дерево i3
и
Данные древовидной структуры и контейнеров
.
Запуск приложений
i3 использует
dmenu
в качестве инструмента для запуска приложений, который по умолчанию вызывается нажатием
$mod+d
. Так как это опциональная зависимость, перед использованием нужно вручную установить пакет
dmenu
.
i3-wm
содержит
i3-dmenu-desktop
,
Perl
оболочку для
dmenu
, которая использует
ярлыки приложений
для создания списка всех установленных приложений. Кроме того, можно использовать
j4-dmenu-desktop-git
AUR
.
rofi
— это популярная замена
dmenu
и других программ, которые могут отображать список ярлыков приложений.
Использование KRunner для запуска приложений в KDE Plasma/i3
Можно запустить i3 вместе с KDE Plasma, как описано здесь:
KDE (Русский)#Использование альтернативного оконного менеджера
При запуске 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
bar {
    output            LVDS1
    status_command    i3status
    position          top
    mode              hide
    workspace_buttons yes
    tray_output       none

    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1

    colors {
        background #000000
        statusline #ffffff

        focused_workspace  #ffffff #285577
        active_workspace   #ffffff #333333
        inactive_workspace #888888 #222222
        urgent_workspace   #ffffff #900000
    }
}
За дополнительной информацией обращайтесь в раздел
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
— Быстрый и простой в использовании инструмент для создания панелей статуса.
https://github.com/jaagr/polybar
||
polybar
excalibar
— Лёгкий, но настраиваемый статус-бар, написанный на языке C.
https://github.com/cylgom/excalibar
||
excalibar-git
AUR
i3status
Скопируйте файлы настроек по умолчанию в домашний каталог:
$ cp /etc/i3status.conf ~/.config/i3status/config
Не все плагины определены в настройках по умолчанию, и некоторые значения настроек могут быть недействительными для вашей системы, поэтому должны быть внесены соответствующие изменения. Для подробностей смотрите
i3status(1)
.
Замены i3status
conky
—  Высоко расширяемая система мониторинга. Для использования с i3bar смотрите
этот учебник
.
https://github.com/brndnmtthws/conky
||
conky
i3blocks
— Расширяется с помощью shell-скриптов. Может обрабатывать события мыши, прерывания, и определение интервалов регенерации на основе каждого блока.
https://github.com/vivien/i3blocks
||
i3blocks
i3pystatus
— Расширяемый Python 3 статус бар со множеством плагинов и опций настроек по умолчанию.
https://github.com/enkore/i3pystatus
i3pystatus ||
i3pystatus-git
AUR
j4status
— Обеспечивает строку статуса, настраиваемую с помощью плагинов, написан на C.
https://sardemff7.github.io/j4status/
||
j4status-git
AUR
goi3bar
— Замена i3status, написанная на языке Go. Управляемый конфигурационным файлом, с несколькими плагинами, опциями параллелизма и богатой поддержкой плагинов.
https://github.com/denbeigh2000/goi3bar/
||
goi3bar-git
AUR
goblocks
— Быстрая, лёгкая замена i3status, написанная на языке Go.
https://github.com/davidscholberg/goblocks
||
goblocks
AUR
bumblebee-status
— Генератор строк состояния Python с возможностью оформления.
https://github.com/tobi-wan-kenobi/bumblebee-status
||
bumblebee-status
AUR
ty3status
— Замена i3status, написанная на языке Typescript. Построена с первоклассной поддержкой блоков javascript.
https://github.com/mrkmg/ty3status
||
ty3status-git
AUR
i3status-rust
— Высокоэффективная и многофункциональная замена, написанная на языке Rust. Может обрабатывать push-обновления, индивидуальные интервалы обновления, тематизацию и события нажатия.
https://github.com/greshake/i3status-rust
||
i3status-rust
Barista
— Замена i3status, написанная на языке Go.
https://github.com/soumya92/barista
||
not packaged?
search in AUR
Оболочки для i3status
i3cat
— Оболочка, написанная на
Go
, которая может объединить ввод данных из нескольких внешних источников. Может обрабатывать события мыши и перенаправление указаных пользователем сигналов для своих подпроцессов.
https://vincent-petithory.github.io/i3cat/
||
i3cat-git
AUR
py3status
— Расширяемая оболочка i3status написанная на Python.
https://github.com/ultrabug/py3status
||
py3status
YaGoStatus
— Еще одна оболочка для i3status (и не только) написанная на Go.
https://github.com/burik666/yagostatus
||
yagostatus-git
AUR
Шрифты-иконки в строке состояния
Поддержка иконочных шрифтов встроена с
i3 версии 4.20
.
ttf-font-awesome
— Масштабируемые векторные иконки, которые могут быть настроены с помощью CSS.
Шпаргалка
, показывающая коды Unicode для каждого символа.
https://fontawesome.com/
||
ttf-font-awesome
[
ссылка недействительна
: replaced by
woff2-font-awesome
]
ttf-font-icons
— Непересекающаяся и последовательная смесь Awesome и Ionicons. Она также позволяет избежать дублирования между DejaVu Sans и Awesome.
https://kageurufu.net/icons.pdf
||
ttf-font-icons
AUR
.
ttf-ionicons
— Premium шрифт иконок для Ionic Framework.
https://ionicframework.com/docs/ionicons/
||
ttf-ionicons
AUR
.
См. также
Fonts#Emoji and symbols
.
Чтобы использовать несколько шрифтов, в файле настроек укажите резервные шрифты через запятую:
~/.config/i3/config
bar {
  ...
  font pango:DejaVu Sans Mono, Icons 8
  ...
}
В соответствии с
синтаксисом 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
https://github.com/OliverUv/quickswitch-for-i3/
||
quickswitch-i3
AUR
i3-wm-scripts
— поиск и переход к окнам с поиском по регулярному выражению
https://github.com/yiuin/i3-wm-scripts
||
not packaged?
search in AUR
rofi
— Search and jump to open and scratchpad window
https://github.com/davatorium/rofi
||
rofi
i3-easyfocus
— Фокус и выбор окон в
i3
https://github.com/cornerman/i3-easyfocus
||
i3-easyfocus-git
AUR
[
ссылка недействительна
: package not found]
wmfocus
— Фокус и выбор окон в
i3
и других оконных менеджерах
https://github.com/svenstaro/wmfocus
||
wmfocus
i3-cycle-focus
— Функциональность Alt-Tab для
i3
https://github.com/acrisci/i3ipc-python/blob/master/examples/i3-cycle-focus.py
||
not packaged?
search in AUR
i3-winmotion
— Фокус и выбор видимых окон в
i3
https://github.com/iiKoe/i3-winmotion
||
not packaged?
search in AUR
Быстро перейти к необходимому окну
Добавьте в
~/.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
где N — это номер предпочтительного рабочего пространства. Это позволит сохранить текущую структуру рабочего пространства 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
AUR
для блокировки экрана после заданного периода времени:
xautolock -time 10 -locker "i3lock -i
background_image.png
" &
Можно использовать service-файл
systemd
для блокировки экрана перед уходом в ждущий или спящий режим; смотрите
Управление питанием#Файлы служб
. Обратите внимание, что i3lock требует, чтобы тип службы был
forking
.
Смотрите также
DPMS
.
Другой вариант — использовать
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
Подробнее в официальной документации:
Changing (named) workspaces/moving to workspaces
.
Правильное обращение с плавающими диалогами
Хотя диалоги должны открываться по умолчанию в плавающем режиме (floating)
[6]
, многие до сих пор открываются в тайловом режиме (tiling). Чтобы изменить это поведение, проверьте
WM_WINDOW_ROLE
с помощью
xorg-xprop
и добавьте правильные правила в
~/.config/i3/config
(используя
pcre
синтаксис):
for_window [window_role="About"] floating enable
for_window [window_role="Organizer"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_role="bubble"] floating enable
for_window [window_role="page-info"] floating enable
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="toolbox"] floating enable
for_window [window_role="webconsole"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
Вы также можете использовать в качестве правила заголовок и регулярные выражения:
for_window [title="Preferences$"] floating enable
или
WM_CLASS
:
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
позволяет автоматически переключаться между горизонтальной и вертикальной ориентациями окон, что приводит к поведению, похожему на спиральный тайлинг bspwm. После установки добавьте следующее в
~/.config/i3/config
и перезагрузите i3.
exec_always --no-startup-id
autotiling
Решение проблем
Общее
Часто ошибки уже исправлены в разрабатываемых версиях
i3-git
AUR
и
i3status-git
AUR
, и в апстриме попросят воспроизвести какие-либо ошибки в этих версиях.
[7]
Смотрите также
Отладка/Трассировка#Параметры компиляции
.
Искажённый текст
Установите какие-нибудь
шрифты TrueType
.
Кнопки в строке сообщений 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
или
опцию TearFree
драйвера настройки режима.
Значки трея не видны
Директива
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
- неофициальные утилиты для работы с
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