Контакты

Допиливаем Linux-десктоп для гика. Доводка i3 и dmenu, менеджер паролей pass, браузер surf, блокировщик slock, переводчик по хоткею. Установка и настройка приложения i3 pro Установка i3

Как вы, должно быть, помните, моим первым тайловым оконным менеджером был Xmonad . Он вполне устраивает меня на стационарном компьютере, но, к сожалению, на EeePC с ним много возни — нужно допиливать индикатор батареи, выводить куда-то уровень сигнала Wi-Fi и тп. После небольшой консультации с народом в Twitter’е , я решил попробовать оконный менеджер i3.

Устанавливается i3 примерно так (ох уж эта Бубунта):

sudo apt-get install i3 i3status i3lock dmenu

Завершаем работу в текущем оконном менеджере, вводим имя пользователя и пароль, выбираем оконный менеджер i3. При первом запуске i3 спросит вас, создать ли дефолтный конфиг (да, само собой разумеется) и что использовать в качестве Mod-клавиши (Win, потому что она все равно ни для чего не нужна).

Все, мы работаем под i3. Основные сочетания клавиш следующее:

  • Mod + Enter — открыть новый терминал;
  • Mod + D — запустить любую программу через dmenu;
  • Mod + 0..9 — переключение между workspace’ами;
  • Mod + Shift + 0..9 — перемещение окон в заданный workspace;
  • Mod + Shift + Q — закрыть текущее окно;
  • Mod + Стрелочки — перемещение между окнами, вместо стрелочек также могут быть использованы клавиши «J» (влево), «K» (вниз), «L» (вверх) и «;» (вправо);
  • Mod + Shift + Стрелочки — перемещение окон в пределах workspace’а, вместо стрелочек также могут быть использованы буковки и точка с запятой;
  • Mod + V — использовать вертикальное разбиение;
  • Mod + H — использовать горизонтальное разбиение;
  • Mod + E — размещение окон по-умолчанию (default layout);
  • Mod + S — стековое размещение (stacking layout);
  • Mod + W — размещение с табами (tabbed layout);
  • Mod + F — раскрыть окно во весь экран или свернуть его обратно;
  • Mod + Shift + Пробел — разрешить свободное перемещение окна (floating mode) или вернуть его в мозаику;
  • Mod + Shift + R — рестартонуть i3 (например, после обновления конфига);
  • Mod + Shift + E — выйти из i3;

Изменить размеры окон можно перетягивая их границы с помощью мыши. Также можно перейти в режим изменения размера окна нажатием Mod + R. В этом режиме с помощью стрелочек или буковок вы выбираете границу окна, со стороны которой окно нужно уменьшить или, если нажат Shift, увеличить. Возврат в обычный режим осуществляется нажатием Enter или Escape.

Теперь рассмотрим следующий скриншот (кликабелен):

Чтобы добиться такого расположения окон, сначала я переключился на вертикальное разбиение (Mod + V) и создал три окна (Mod + Enter). Затем я по очереди выбрал каждое из трех окон (Mod + Стрелочки), для каждого из них переключился на горизонтальное разбиение (Mod + H) и создал еще по два окна. В верхнем ряду я оставил расположение по умолчанию, в среднем переключился на размещение с табами (Mod + W), а в нижнем — на стековое размещение (Mod + S).

Важным моментом здесь является то, что окна в i3 образуют древовидную структуру (с родителями и потомками). Изменение способа разбиения (Mod + H/V) создает новый контейнер (поддерево), а переключение layout’а действует только на текущий контейнер. За счет такого подхода i3 позволяет добиться куда более сложного расположения окон, чем Xmonad.

Основные конфигурационные файлы i3 — это ~/.i3/config и ~/.i3status.conf.

В ~/.i3/config я дописал:

bindsym $mod+t border toggle

Exec dropbox start
exec wicd-client -t
exec gxneur &

Bar {
position top
status_command i3status
}

Первой строчкой я повесил на сочетание Mod + T изменение border style. По-умолчанию окна в i3 имеют заголовки и границы, которые могут оказаться совершенно лишними, если у вас, например, во весь экран открыт Chrome.

Следующие три строчки добавляют на автозапуск некоторые программы. С Dropbox все понятно. Утилита wicd — это такая штука, которая висит в трее и позволяет управлять подключением к проводным и беспроводным сетям. Устанавливается она следующим образом:

sudo apt-get install wicd
sudo / etc/ init.d/ wicd start

Чтобы NetworkManager не мешал работе wicd, говорим:

sudo stop network-manager

Обратите также внимание на консольный аналог wicd, утилиту wicd-curses.

Дополнение: Все оказалось намного проще:

exec nm-applet &
exec blueman-applet &

Xneur, думаю, не нуждается в представлении. Его я использовал просто в качестве индикатора текущей раскладки клавиатуры (без которого, впрочем, вполне можно обойтись). Устанавливается xneur следующим образом:

sudo apt-get install xneur gxneur

В конце конифга (блок bar) я говорю отображать панельку с часами, треем и так далее вверху экрана, а не внизу, как это делается по-умолчанию.

За основу ~/.i3status.conf я взял файл /etc/i3status.conf. В нем я поправил формат отображения текущей даты, изменил имена сетевых интерфейсов, убрал лишнюю информацию об IPv6, DHCP и VPN . Не вижу смысла приводить здесь результат. Что радует в i3, так это интуитивно понятный формат конфигов и хорошая документация.

Ну и последним штрихом будет добавление в ~/.bashrc следующей строки:

alias lockscreen ="i3lock -c 000000"

Утилита i3lock предназначена для блокировки экрана. В отличие от многих аналогичных утилит она вообще ничего не показывает пользователю. То есть экран тупо остается черным (цвет можно изменить) до тех пор, пока не будет введен пароль текущего пользователя. Помимо определенного цвета также можно использовать картинку в формате PNG.

Window Manager (i3wm), not to be confused with the Intel processor or i386 architecture is a window manager that was built from scratch to circumvent some of the limitations of wmii. The i3 is popular with enthusiasts who value maximizing actual screen and keyboard operation.

To be specific, i3 is a dynamic window manager.

A window manager is less robust, but consumes much less resources than a typical desktop environment such as GNOME. The i3 specifically does not have current desktop functionality, so it has no icons, a taskbar / launcher, or a wallpaper of its own. I3bar adds desktop, status, and tray change icons instead of a traditional taskbar; The dmenu is usually used in place of a traditional launcher, and wallpapers can be added with an external utility such as feh or nitrogen. This all works towards the goal of full screen use. I3 supports gtk and qt applications and themes, but will do nothing to standardize them.

The i3 designs minimally decorated windows, usually forcing them to a size you determine, and allows them to be easily placed into many virtual workspaces, which can be organized independently with as many or as many windows as you wish.

Tiling means that windows by default are static and cannot be dragged across the workspace unless they are set to float. Although i3 supports floating windows as well as tabbed or stacked windows, tiling is usually the default and preferred setting. Tiling will ensure that at any time 100% of the available work area is being occupied and that windows never overlap.

Dynamic means you can change the arrangement of windows at any time. I3 will intelligently resize and position windows in equal parts as others are added and removed according to the mode in which it is currently set (split horizontally/vertically split). Once the windows are in place, they can also be moved, split differently and resized.

i3 in Debian

i3 not included in any official Debian installer, but it is available in major repositories.

Installation

i3 requires an X-server and is not supported by Wayland. It is available as a metapackage that includes i3-wm, i3lock, i3status, dunst, and suckless-tools.

# apt install i3

If you want to install i3 minimally without useful packages, such as i3lock and i3status, use:

# apt install i3 --no-install-recommends

Configuration

After the first login, each user will be prompted to have a configuration file generated for them such as ~ /.i3/config or ~ /.config/i3/config if this file still not exist. The prompt allows the user to select Alt or the Windows key (AKA Meta key, Start key) as the $Mod key for i3.

This key is the basis for all keybinds that the window manager will use. The Windows key is recommended because Alt is used by many other applications for other purposes. I3 will take precedence over other applications and other keybind-based functionality used by i3 will be lost.

Once the configuration file has been generated, all required configuration is complete, but most users will do a lot of editing in the configuration file to customize their i3 instance.

The most fundamental keybind in the default i3 configuration is the $Mod + d , which will launch the application startup dmenu. With dmenu, the first recommended application to run is an editor or terminal so you can read and modify the configuration file.

The configuration file is simple and quite intuitive. Keybinds can be added with:

bindsym $Mod+ bindsym $Mod+i exec firefox www.debian.org

This example launches debian.org in firefox when $mod and the "i" key are pressed.

Other configurable options include window management keybinds, window border and title bar configuration, workspace naming, application assignment to specific desktops by default, i3bar management (including autohide), startup applications and so on.

i3 must be restarted for the changes to take effect. This will not cause any applications to close, but may occasionally cause them to move.

i3 restart

Setting the restart command as a memorable keybind can save a lot of time during configuration.

Логотип 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 и больше ничего.

Окно выбора Mod клавиши

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

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

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


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

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

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

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

exec <команда>

  1. Пример
    exec compton
    При запуске i3 - запуститься и композитор compton
  2. Пример
    exec ~/script.sh
    При запуске i3 - запуститься скрипт который лежит в домашней папке под именем script.sh
  3. Пример
    exec nitrogen - -restore
    При запуске i3 - запуститься nitrogen с опцией restore

2) Установка переменных. В i3wm можно создать переменные, работает это все как define в C++. На место переменной встанет заданная ей строчка. Переменные можно задать с помощью set.

set $<имя переменной> <значение>

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

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

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

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 - окно требует внимания (всплывающее уведомление например)

Пример настройки цвета;

# class border backgr. text indicator child_border client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577 client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a client.unfocused #333333 #222222 #888888 #292d2e #222222 client.urgent #2f343a #900000 #ffffff #900000 #900000 client.background #ffffff

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

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

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

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

Bar { colors { background #000000 statusline #ffffff separator #666666 focused_workspace #4c7899 #285577 #ffffff active_workspace #333333 #5f676a #ffffff inactive_workspace #333333 #222222 #888888 urgent_workspace #2f343a #900000 #ffffff } }

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

Логотип Qt

Для настройки внешнего вида приложений надо будет попотеть.
Начнем с простого - настройки 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

Логотип CompizFusion

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

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

Обои

Интерфейс Nitrogen

Про обои мы тоже договорились что будем использовать 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 тред в комментариях будет не лишнем.
Спасибо за внимание!

Вот уже несколько месяцев прошло как Я перешел на "оконный менеджер" вместо "окружения рабочего стола". Более техническую и точную разницу между этими двумя понятиями можете нагуглить. С точки зрения обычного пользователя (по крайней мере с того, что мне почувствовалось) - WM (оконный менеджер) лишь управляет окнами, а значит:

1) меньше жрет ресурсов;

2) основная работа будет с клавиатурой, мышкой лишь в браузере тыкать и в Gimp;

3) настройки в большей части делать нужно через терминал и конфигурационные файлы, никакой общей панели управления, хотя это сделать можно.

Для обычного пользователя это всё может показаться сложным и ненужным - ну и что, что жрет меньше ресурсов, ведь у меня 100500 ГБ оперативки и чуть меньше ядер процессора. А вот мой старый ноутбук получил вторую жизнь, голая система (Ubuntu 16.04) без DE съедает лишь чуть более чем 200 МБ оперативки. Ну и тайловый оконный менеджер i3 (i3wm - improved windows manager), которому посвящен этот пост, предоставляет ещё одну чудесную возможность - настройка нескольких мониторов с разнымы разрешениями реально проще пареной репы.

Итак, знакомство можете начинать с официального сайта - https://i3wm.org/docs/userguide.html . Для начала можно поставить его дополнительно к обычному DE и выбирать сессию i3 при логине. А когда хватит сил пересесть полностью, можно поставить голый дистрибутив линукса без DE и тогда сразу ставить этот WM. Перед загрузкой сессии i3 обязательно выпишите себе пару комбинаций клавиш и команд, ибо так и застрянете с пустым чёрным экраном и будете делать хард ресет:)

При первом запуске i3 спросит клавишу-модификатор, Я себе выбрал клавишу "win" - хоть какая-то польза и не будет перебивать другие комбинации. Теперь Вы можете запустить терминал комбинацией "win+Enter", а если есть терминал - есть всё.

Кстати, насчёт эмулятора терминала, мой выбор в i3 - urxvt , а для полного счастья нужно ставить пакет rxvt-unicode-256color . Он не такой функциональный как, например, стандартный гномовский, зато быстрее и красиво выглядит в тайловых WM. Все настройки urxvt правите в ~/.Xresources, после редактирования файла - выполнить команду:

xrdb ~/.Xresources

Следующий важный для меня шаг - настройка статусной строки, особенно хотелось иметь рабочие иконки Dropbox и Skype. Конечно же, хотелось настроить имеющуюся с коробки строку статуса - i3bar, хоть она немного багнутая. Если не понравится, ставьте что-либо другое, i3wm не будет обижаться.

Как работает i3bar: утилита i3status читает конфиг файл /etc/i3status.conf и скармливает полученные статусы в виде строки утилите i3bar. Конечно же, адекватные статусы хочется получать за приемлемое время, не более секунды. Поэтому в конфиг файле в секции general, опции interval нужно задать значение 1. Ещё быстрее нет смысла, только лишняя нагрузка процессора. Но из-за того, что эти статусы то ли стают в очередь, то ли ещё чего, а мой старый нетбук до того тормозной, что не успевал каждую секунду обрабатывать всё и обрабатывал статус где-то за 1,1 секунды, они отображались не вовремя. Через час работы разница во времени (между настоящим и тем, что показывал в строке статуса) ставала очень велика, около 15-20 минут. Поэтому нужно было придумать что-то другое. К счастью, i3 позволяет написать свой скрипт для получения статусов и использовать его совместно со встроенным, либо даже без встроенного. Итак, первая версия скрипта:
#!/bin/sh # shell script to prepend i3status with more stuff i3status | while: do read line datetime = $(date +"%Y-%m-%d %H:%M:%S") echo "$datetime | $line" || exit 1 done

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

Чтобы этот скрипт запускался вместо стандартного i3status, нужно в ~/.config/i3/config править секцию bar:

Bar { status_command ~/i3status.sh tray_output primary position top } В опции status_command нужно указать полный путь к своему скрипту (ну или поместить его по одному из путей в переменной PATH).

Следующее, что мне страшно нехватало - отображение раскладки, языка. Опять-таки, i3wm не для новичков, придется потратить много времени и нервов. Но настроив единожды, можно легко переносить свои настройки на любую другую машину. Также можно заливать конфигурационные файлы и автоматические скрипты на GitHub и выполнять любую настройку с нуля за считанные минуты. Для управления раскладками (чтобы в каждом приложении была своя раскладка), нужно поставить kbdd. Сами же раскладки, метод переключения и запуск kbdd настраиваем в ~/.xinitrc:

Setxkbmap "us,ua,ru" ",winkeys" "grp:shift_caps_toggle" kbdd exec i3

Что это всё значит:

1) 3 раскладки - us, ua, ru, переключение комбинациией shift+caps lock (по аналогии можете себе настраивать всё, что угодно)

2) запуск kbdd после установления раскладок

3) запуск сесии i3

При этом это всё запустится при выполнении команды "startx". А startx придется выполнять, ибо компьютер будет грузиться в режиме без иксов и вместо окошечка с логином будет консоль с логином. Кстати, это тоже надо настроить правильно:

1) нужно поправить конфиг grub

ищем строку

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

и меняем на

GRUB_CMDLINE_LINUX_DEFAULT="text"

после чего обновить груб:

sudo update-grub

2) Для систем, которые используют systemd надо сделать дополнительные настройки:

Sudo systemctl enable multi-user.target --force sudo systemctl set-default multi-user.target

3) сам блокиратор экрана с логином тоже нужен консольный, для этого хорошо подойдет vlock, но надо ставить версию 2.2.2-3, никак не 2.2.2-5 (в этой более новой версии почему-то можно зайти без пароля с другого tty). Ну и потом надо будет сказать своему пакетному менеджеру, чтобы не обновлял vlock. Далее вешаем блокирование экрана на стандартную комбинацию (CTRL+ALT+L), для этого в ~/.config/i3/config добавляем строчку:
bindsym ctrl+Mod1+l exec vlock -an

Теперь надо настроить отображение раскладок в строке статуса, поэтому тот скрипт i3status.sh будет выглядеть примерно так:

#!/bin/sh # shell script to prepend i3status with more stuff i3status | while: do read line datetime = $(date +"%Y-%m-%d %H:%M:%S") layouts=$(setxkbmap -query | awk "/layout/{print $2}") current=$(dbus-send --print-reply=literal --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout | awk "{ print $2 }") index=$(($current+1)) lang=$(echo $layouts | cut -d, -f$index) echo "$lang | $datetime | $line" || exit 1 done

То есть, текущая раскладка будет показана перед датой/временем.

Если же Вы таки решились поставить на ноутбук i3wm, Вам скорее всего захочется в строке статуса отображать уровень заряда батареи и уровень сигнала wifi. Отображение уровня заряда батареи можно настроить стандартными средствами в файле /etc/i3status.conf (возможно, поменять надо будет индекс батареи с 0 на 1, или наоборот в зависимости от ноутбука):
battery 1 { format = "%status %percentage - %remaining" low_threshold = 30 threshold_type = time # toggle actual capacity/design capacity #last_full_capacity = true hide_seconds = true integer_battery_capacity = true } Аналогично, возможно надо будет поиграться с индексом звукового устройства для отображения громкости:
volume master { format = "♪: %volume" format_muted = "♪: muted (%volume)" device = "pulse:0" } Саму же громкось в данном случае регулирую через программу pavucontrol (если у вас тоже Pulse, то настройки по сути те же).

Ну а вот уровень сигнала wifi было "достать" не так просто. Лично мне удалось через CLI (Command Line Interface) Network Manager-а. Возможно, найдете лучший способ. Кстати, искать беспроводные сети и подключаться к ним можно через этот же nmcli. Итак, финальная версия скрипта i3status.sh для ноутбука:
#!/bin/sh # shell script to prepend i3status with more stuff i3status | while: do read line layouts=$(setxkbmap -query | awk "/layout/{print $2}") current=$(dbus-send --print-reply=literal --dest=ru.gentoo.KbddService /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout | awk "{ print $2 }") index=$(($current+1)) lang=$(echo $layouts | cut -d, -f$index) wifi=$(nmcli d wifi | grep "^\*" | grep -v "\*.*SSID" | awk "{ print $8 }") datetime=$(date +"%Y-%m-%d %H:%M:%S") echo "$lang | W: $wifi | $line | $datetime" || exit 1 done Ах, ну и ещё отключить "клик мышки" на тачпаде, это страшно бесит. Нужно добавить строчку (# - комментарий, не обязательно добавлять, но хорошо проясняет следующую строчку) в файл ~/.config/i3/config:
# Turn off tap click (single finger, two finger, and 3 finger) exec synclient TapButton1=0 TapButton2=0 TapButton3=0 Иконки. Почему-то именно иконка Dropbox не хочет нормально отображаться в i3bar. Оказывается, нужно запустить dbus перед стартом dropbox, но в какой только скрипт Я не пробовал это засунуть, а Dropbox по-прежнему запускался без иконки. Пока что решил эту проблему тем, что создал скрипт dropbox_fix.sh и прописал такую строчку:

Dropbox stop; dbus-launch; dropbox start & И теперь каждый раз когда вижу, что нет иконки, запускаю этот скрипт. Иногда бывают проблемы с отображением иконок Skype и даже Thunderbird. Это лечится проще - просто перезагрузкой i3 "на месте" (никак не влияет на все запущенные программы), обычно это комбинация mod+shift+r. Да, ещё раз напомню, что багов таких мелких хватает, но плюсов в i3wm Я увидел больше, да и рабочий компьютер у меня не выключается месяцами, а значит "стартовые багофиксы" выполняю очень редко.

Далее, что ещё нужно знать о настройках - в конфиг файле ~/.config/i3/config ваша выбранная клавиша-модификатор будет обозначаться как $mod, клавиша alt обозначается как Mod1, клавиша win - Mod4. Все остальные клавиши таких специальных обозначений не имеют. Настроить несколько мониторов можно в этом же файле используя команду xrandr.
И ещё одна важная вещь - скриншоты тоже надо настроить! Но и это не проблема. Сначала ставим утилиту scrot - легкая, быстрая и конфигурабельная. Обычний снимок (весь экран) вешаю на кнопку PrintScreen, а на Alt+PrintScreen - снимок текущего (активного) окна. Поскольку клавиша Alt сама является модификатором, то самый легкий способ привязать данную комбинацию - это указать альтернативное значение кнопки PrintScreen, то есть - SysRq. Итого в файл ~/.config/i3/config добавляем следующие строчки:

# Take screenshots bindsym Print exec scrot "%Y-%m-%d_%H:%M:%S.png" -e "mv $f ~/Pictures/" bindsym Mod1+Sys_Req exec scrot -u "%Y-%m-%d_%H:%M:%S.png" -e "mv $f ~/Pictures/" В результате все скриншоты будут попадать в папку ~/Pictures. При желани можно наконфигурить ещё больше гибкости. Вот пример скриншота с i3wm:

В отличие от awesome его настройки записываются в обычном текстовом файле.

Особенности i3wm для пользователя: корректная поддержка нескольких мониторов (смотрите скрин в конце), простой текстовый конфиг-файл, нет необходимости пересобирать wm после изменения настроек, три режима расположения окон, меню запуска приложений dmenu, создает рабочие столы по мере необходимости и удаляет пустые, из коробки имеет отличную информационную панель, показывающую уровень Wi-Fi сети, заряд батареи и много еще чего.

Демонстрация от автора i3

Установка

i3wm представлен в репозиториях Debian, Arch, Gentoo, Ubunto, FreeBSD, NetBSD, OpenBSD, OpenSUSE, Mageia, Fedora и Exerbo. Я буду рассказывать на примере Ubuntu 12.04.

Нужный пакет называется i3, поэтому:

# apt-get install i3

Теперь на экране ввода пользователя и пароля можно выбрать «i3» в качестве оконного менеджера.

Настройка

При первом запуске вам предложат выбрать клавишу-модификатор. Я выбрал win для совместимости с большинством приложений.

Добавим переключение на русскую раскладку по Alt+Shift, автозагрузку dropbox, переключение между рабочими столами по mod+Control+Left/Right, блокировку экрана по mod+Control+l и спящий режим с блокировкой экрана при выходе из него по mod+Control+s.

Переключение раскладки клавиатуры настроено с помощью setxkbmap. Для этого служит

$ setxkbmap "us,ru" ",winkeys" "grp:alt_shift_toggle"

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

#!/bin/sh exec setxkbmap "us,ru" ",winkeys" "grp:alt_shift_toggle"

Для автозагрузки Dropbox .xsessionrc будет выглядеть так:

#!/bin/sh exec setxkbmap "us,ru" ",winkeys" "grp:alt_shift_toggle" & dropbox start &

Теперь при следующем заходе в i3wm будут доступны русская и английская клавиатура.

Настройка i3 обычно производится с помощью пользовательского конфига. Создадим папку ~/.i3 и скопируем в нее шаблон конфигурации:

$ cp /etc/i3/config ~/.i3/config

Использование

Некоторые стандартные горячие клавиши, которые работают по умолчанию:

mod+Enter открывает терминал
mod+d запускает dmenu (меню сверху экрана, которое по мере ввода с клавиатуры названия приложения предлагает варианты для запуска)
mod+Shift+Q закрывает активное окно

mod+v включает режим вертикального тайлинга (экран будет делиться горизонтально)
mod+h включает режим горизонтального тайлинга (экран будет делиться вертикально)

mod+w включает режим вкладок (каждое окно на рабочем столе занимает весь экран, сверху видны вкладки)
mod+s включает стековый режим (заголовки окон один под другим, каждое окно занимает весь экран)
mod+e возвращает стандартный режим
mod+Shift+Space переключает окно в режим плавающего и обратно

mod+Left/Right/Up/Down перемещает фокус в пределах рабочего стола
mod+Shift+Left/Right/Up/Down перемещает текущее окно в пределах рабочего стола

mod+1 и т.д. переключает на рабочий стол с указанным номером

mod+Shift+C читает настройки из файла конфигурации
mod+Shift+E выходит из i3wm на экран ввода имени пользователя и пароля

Полные возможности по настройке и использованию i3wm описаны в документации .

Бонус

Если у вас два монитора, или встроенный экран нетбука и внешний монитор, как у меня, то i3wm отлично будет работать на них. Самое главное, что для этого не требуется никаких дополнительных настроек.

Cписок доступных мониторов:

$ xrandr -q

Настроем их работу в паре:

$ xrandr --output LVDS1 --mode 1366x768 --pos 0x0 --output VGA1 --mode 1280x1024 --pos 1366x0

где LVD1 - встроенный в нетбук монитор, его разрешение 1366x768 и он прижат к левому верхнему углу, VGA1 - внешний монитор, его разрешение 1280x1024 и он смещен на 1366 пикселей вправо относительно левого верхнего угла.

Понравилась статья? Поделитесь ей