Задумывался ли ты, какой десктоп используют прожженные линуксоиды, которые большую часть времени сидят в терминале, а о таких вещах, как иконки на рабочем столе и drag’n’drop, либо уже забыли, либо никогда не узнавали? Те самые странные люди, которые на каждый чих пишут shell-скрипт и с отвращением смотрят на KDE и GNOME. Что ж, сегодня мы покажем, как настроить настоящий гиковский десктоп с тайлами, строками состояния и терминалами.

Начнем с выбора дистрибутива. Ubuntu, Mint, Debian и Fedora не годятся на роль дистрибутива для истинного гика. В них нет ничего плохого, но если ты обратишь внимание, что же юзают любители ковырять систему, то, скорее всего, увидишь Arch Linux, Gentoo или Slackware. Это простые как сапог дистрибутивы, позволяющие тонко контролировать систему.

Остановимся на Arch Linux, наиболее популярном сегодня дистрибутиве для гиков. Свежеустановленный Arch Linux представляет собой простенький консольный дистрибутив, который ничего не умеет. Наиболее консервативным товарищам, освоившим UNIX еще в восьмидесятых, хватит и этого, но все-таки нужен хоть какой-то графический интерфейс и графический браузер (да, есть и текстовые, например Lynx, w3m, Links, ELinks).

В UNIX-подобных системах (к которым, конечно же, относится и Linux) за формирование графического интерфейса в первую очередь отвечает так называемый менеджер окон (Window Manager, WM). Это особое приложение, основная задача которого — управлять окнами, создавать для них рамки с кнопками, корректно обрабатывать ситуации наложения окон друг на друга, а в отдельных случаях создавать панельки и менюшки для запуска приложений и управления ими; хотя эта задача обычно ложится на плечи других приложений, которые вместе с менеджером окон формируют полноценный рабочий стол (Desktop Environment, DE), такой как GNOME, KDE или Xfce.

Нам никакой DE не нужен, это изобретение шайтанов, пришедших в мир UNIX из Windows. Более того, нам не нужен классический менеджер окон, ибо двигать окна мышкой и накладывать их друг на друга контрпродуктивно. Вместо этого мы установим так называемый тайловый менеджер окон, который не разрешает таскать окна по экрану, а вместо этого либо всегда открывает все окна на полный экран, либо делит экран между окнами пропорционально (или непропорционально), не позволяя им накладываться друг на друга.

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

$ sudo pacman -S i3-wm

Не отходя от кассы, сразу поставим i3status (он будет выводить статусную строку с различной полезной информацией и треем в нижней части экрана), а также крохотное приложение dmenu, позволяющее быстро запускать приложения, и, конечно же, эмулятор терминала:

$ sudo pacman -S i3status dmenu xterm

Если это действительно чистая установка Arch Linux, то также понадобится сервер Xorg, драйвер видеокарты и драйвер тачпада (если это ноутбук):

$ sudo pacman -S xorg-server xf86-video-intel xf86-input-synaptics

Пакет xf86-video-intel меняем на нужный в зависимости от производителя видеочипа:

  • Nvidia: xf86-video-nouveau;
  • ATI/AMD: xf86-video-ati.
Один из вариантов компоновки окон в i3
Один из вариантов компоновки окон в i3

Нам понадобится также менеджер логина — то самое графическое окно с полями для ввода имени пользователя и пароля, которое ты видишь при загрузке системы. Никто не запрещает использовать менеджер логина KDE, GNOME, Xfce или любой другой графической среды, но это весьма тяжеловесные приложения, которые тащат за собой массу совершенно не нужных зависимостей. Поэтому мы остановимся на простом и быстром менеджере логина SLiM:

$ sudo pacman -S slim

Сперва подправим его конфиг /etc/slim.conf, добавив в него такую строчку:

current_theme archlinux

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

# Укажем предпочтительный язык для интерфейса системы и приложений
# Удали эти строки, если предпочитаешь английский язык
export LANG=ru_RU.utf8
export LC_ALL=ru_RU.utf8

# Настроим переключатель раскладки между русским и английским по клавише Caps Lock
setxkbmap "us,ru" ",winkeys" "grp:caps_toggle,grp_led:caps"

# Отключим раздражающий бибикающий звук
xset b off

# Запустим i3
exec i3

Это все, теперь можно запустить графический интерфейс:

$ sudo systemctl start slim

На экране должно появиться окно логина SLiM.

Окно логина SLiM
Окно логина SLiM
 

i3 и dmenu

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

i3 полностью управляется с клавиатуры. Win + Enter запускает терминал (сейчас это убогий xterm, но мы его заменим). По умолчанию окна занимают всю площадь экрана, деля его на две, три, четыре и более части по вертикали. Такое поведение можно отключить, нажав Win + w, тогда каждое окно будет открыто на полный экран — это практически идеальный вариант для ноутбуков с диагональю экрана 10–13".

Переключение между окнами — Win + стрелки; Win + 1...0 — переключение между рабочими столами, которые здесь называются воркспейсами (Workspace). Чтобы закрыть окно, нажимаем Win + Shift + Q. На данном этапе этих комбинаций будет вполне достаточно.

Win + d — особая комбинация. Она открывает dmenu — строку ввода вверху экрана, позволяющую быстро запускать нужные приложения. По своей сути dmenu сильно напоминает универсальную строку поиска типа Spotlight в macOS: ты просто начинаешь вбивать имя приложения, и он подсказывает тебе варианты. Автодополнение также работает. В i3 dmenu можно назвать аналогом меню приложений в классических рабочих столах.

i3 поддерживает массу вариантов деления экрана на рабочие области, так, чтобы в них можно было расположить различные приложения. Доступен и режим классических плавающих окон. Перевести текущее приложение в этот режим можно с помощью комбинации Win + Shift + пробел. Перетаскивать окно можно мышкой, зажав клавишу Win, изменять размер — правой кнопкой мыши, опять же с зажатой кнопкой Win.

 

Шрифты, терминал и scratchpad

По умолчанию i3 использует довольно унылый стандартный шрифт Xorg, а в качестве эмулятора терминала мы установили дурной xterm, который давно желают закопать не только пользователи, но и сами разработчики (я не шучу). Это необходимо исправить.

Начнем со шрифта. О выборе консольного моноширинного шрифта (а именно такой нам нужен, в том числе и для i3) много спорят, но я предлагаю остановиться на Terminus. Это четкий шрифт без засечек с минимумом округлых форм, он очень хорошо читается и отлично подходит для не Retina-дисплеев (да и для Retina тоже). Устанавливаем:

$ sudo pacman -S terminus-font

С эмулятором терминала тоже не все однозначно. Эталоном уже на протяжении многих лет считается urxvt (rxvt-unicode). Он легкий, быстрый и хорошо настраиваемый. Но так как в рамках этой статьи мы не можем вдаваться в детали глубокой настройки каждого компонента (а без такой настройки urxvt ужасен), то остановимся на LilyTerm. Он быстрый, имеет минимум зависимостей и все преимущества urxvt, а настроить его можно с помощью контекстного меню:

$ sudo pacman -S lilyterm

Теперь необходимо внести изменения в файл настроек i3, чтобы он подхватил наш шрифт и использовал LilyTerm вместо стандартного терминала. Открываем файл ~/.config/i3/config, находим опцию font и меняем ее значение:

font pango:xos4 Terminus 8

Чтобы запускать LilyTerm по Win + Enter, добавляем такую опцию:

bindsym $mod+Return exec lilyterm

Ну и опция для запуска dmenu с нашим шрифтом:

bindsym $mod+d exec dmenu_run -fn 'xos4 Terminus-8'

Плюс парочка строк для включения так называемого scratchpad:

bindsym $mod+Shift+minus move scratchpad
bindsym $mod+minus scratchpad show

Scratchpad в терминологии i3 — это доступное по хоткею небольшое окно посередине экрана. Он хорошо подходит для приложений, которые нужны часто, но отвлекают, постоянно находясь на экране (да, для мессенджеров). Win + минус показывает scratchpad, повторное нажатие скрывает его. Win + Shift + минус отправляет текущее окно в scratchpad.

Когда все изменения будут сделаны, сохраняем файл и нажимаем Win + Shift + R, чтобы перезапустить i3.

Scratchpad
Scratchpad

 

Уведомления, раскладка и эффекты

В отличие от полноценных окружений рабочего стола (KDE, GNOME, Xfce) i3 не имеет собственной системы вывода уведомлений. Это значит, что приложения либо будут молчать, когда на экране должно появиться сообщение от них, либо покажут уведомление собственными средствами, а это куча разных окошек в самых разных стилях.

К счастью, эту проблему легко решить с помощью внешнего «уведомлятора». Я предлагаю установить минималистичный twmn, который отлично вписывается в интерфейс i3 и почти не потребляет ресурсов. В стандартном репозитории пакетов его нет, поэтому нам придется установить twmn из AUR (для этого в системе должен быть установлен yaourt):

$ yaourt -S twmn-git

После установки создаем файл ~/.config/twmn/twmn.conf и пишем в него следующее:

[gui]
absolute_position=
always_on_top=true
background_color=#000000
bounce=true
bounce_duration=500
font=xos4 Terminus 8
font_variant=medium
foreground_color=#00ffff
in_animation=38
in_animation_duration=1000
opacity=100
out_animation=13
out_animation_duration=1000
position=bottom_right
screen=

[icons]
critical_icon=
info_icon=
warning_icon=

[main]
activate_command=
duration=6000
enable_shortcuts=true
host=127.0.0.1
port=9797
sound_command=

В такой конфигурации уведомления будут появляться в нижней правой части экрана поверх строки состояния. Цвет — cyan, шрифт — Terminus.

Так будет выглядеть уведомление
Так будет выглядеть уведомление

Еще одна особенность i3 в том, что это не композитный менеджер окон. Другими словами, он не умеет привлекать возможности графического процессора, чтобы создавать эффекты прозрачности, тени, плавно переключать окна с затуханием и тому подобное. Плюс ты будешь сталкиваться со стандартными проблемами 2D-отрисовки, такими как, например, черные квадраты на месте окон при их передвижении.

Эту проблему тоже можно решить. Для этого понадобится внешний композитный менеджер compton. Все, что необходимо сделать, — просто установить его:

$ sudo pacman -S compton

Индикатора переключения раскладки у i3 тоже нет. Установим простой и легкий индикатор gxkb:

$ yaourt -S gxkb

Настраивать его не нужно, он автоматически подхватит настройки переключения, которые мы указали в ~/.xsession, и, как приятный бонус, позволит переключать раскладку индивидуально для каждого окна.

Закончив установку всего этого дела, добавим наши приложения в автозапуск. Для этого вставим следующие строки в ~/.xsession прямо перед строкой exec i3:

twmnd &
gxkb &
compton -b &

Лайфхак: по умолчанию compton имеет слишком длинный промежуток затухания при переключении между окнами (10 мс), который мешает работе. Исправить ситуацию можно через конфиг ~/.config/compton.conf с заменой строки

fade-delta = 10;

на

fade-delta = 1;

Конфиг будет создан после первого запуска compton.

Редактируем конфиг compton
Редактируем конфиг compton
 

Сеть и автомонтирование

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

Начнем с сети. В Arch Linux стандартный метод настройки сетевых подключений, как проводных, так и беспроводных, — это netctl, набор небольших скриптов, которые позволяют поднять и настроить сетевой интерфейс, основываясь на конфигурационных файлах. В целом netctl удобен, однако он статичен, а это значит, что, как только ты зайдешь с ноутбуком в гости, тебе придется создавать новый конфиг с новым паролем от Wi-Fi и переключать netctl на него, надеясь, что ты правильно написал SSID сети.

Поэтому мы воспользуемся старым добрым NetworkManager, он достаточно тяжеловесен и в целом не очень вписывается в наш аскетичный рабочий стол, но он работает, и работает хорошо. Устанавливаем:

$ sudo pacman -S networkmanager

Также поставим networkmanager-openvpn, чтобы получить поддержку OpenVPN, и network-manager-applet для управления подключениями через иконку в трее:

$ sudo pacman -S networkmanager-openvpn network-manager-applet

Активируем и запустим NetworkManager:

$ sudo systemctl enable NetworkManager
$ sudo systemctl start NetworkManager

Чтобы апплет NetworkManager (та самая иконка в трее) запускался при запуске рабочего стола, добавим в ~/.xsession такую строку:

nm-applet &

Теперь автомонтирование. Здесь еще проще, достаточно поставить демон devmon:

$ sudo pacman -S devmon

И прописать его в ~/.xsession:

devmon &

Флешки и разного рода USB-диски будут появляться в каталоге /media.

Интерфейс nm-applet
Интерфейс nm-applet
 

Последние штрихи

Мы уже получили полностью рабочий и вполне гиковский десктоп, но можно пойти еще немного дальше и сделать жизнь чуть более комфортной. Начнем с внешнего вида графического софта. По умолчанию он выглядит скверно, но стандартную тему очень легко сменить с помощью приложения gtk-theme-switch2:

$ sudo pacman -S gtk-theme-switch2

Просто запусти приложение, выбери нужную тему и нажми кнопку Apply. Так ты изменишь графическое оформление приложений, написанных с помощью тулкита GTK+ (LilyTerm, GIMP), но Qt-приложения (например, qBittorrent) останутся страшными, а Java-софт в своем стандартном виде вообще отвратителен.

gtk-theme-switch2
gtk-theme-switch2

Это тоже можно исправить — просто добавь эти строки в ~/.xsession, и после следующего логина все приложения будут выглядеть одинаково:

export QT_STYLE_OVERRIDE=gtk
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"

Кроме того, нам неплохо бы поберечь глаза и вообще сделать работу за компом в вечернее время более комфортной. Тут может помочь приложение для автоматической цветовой калибровки экрана. На эту роль отлично подходит redshift (аналог f.lux для Windows и macOS). Он регулирует цветовую температуру экрана, вечером делая изображение более желтым, что благоприятно сказывается на комфорте чтения с экрана и снижает напряжение глаз.

$ sudo pacman -S redshift

Как обычно, добавляем в ~/.xsession:

redshift &

 

Софт

  • surf — минималистичный браузер на базе WebKit;
  • zathura — простой, удобный и очень быстрый PDF/DJVU-ридер;
  • worker — простой, быстрый и очень функциональный двухпанельный файловый менеджер;
  • vim — редактор, тут все просто: либо ты его любишь, либо ненавидишь;
  • mpv — консольный медиаплеер, способный переварить буквально все;
  • moc — консольный аудиопроигрыватель, функциональность и ничего лишнего;
  • rtorrent — надежный консольный torrent-клиент.

 

Выводы

Вот, собственно, и все. Осталось только обучиться управлять i3, подтянуть навыки работы в консоли, привыкнув всегда держать открытыми несколько терминалов, и можно считать себя тру-гиком. А можно пойти дальше, освоить vim и начать пользоваться консольным браузером ELinks. Но это путь не для всех.

12 комментария

  1. Ilya Rusanen

    Илья Русанен

    22.03.2017 в 13:53

    Для PDF могу еще порекоммендовать evince (https://wiki.gnome.org/Apps/Evince), спасибо @afiskon за наводку.

  2. Аватар

    Mr_ArbyZ

    22.03.2017 в 14:11

    Прекрасная статья от чудесного автора! Лет *цать назад была аналогичная под ярким названием «Максимальный минимум». Именно с той статьи я познакомился с Awesome и аскетичным окружением. С тех пор всё рабочее окружение завязано с тайловыми wm. В сущности, мой сегодняшний work flow — эволюция материала той статьи. Спасибо Жене за прекрасный материал. Всегда интересно и есть чего почерпнуть для себя.

    • Аватар

      Nistix

      23.03.2017 в 17:25

      Да! Была такая статья про Awesome, которая и меня вдохновила на верный путь ))
      Присоединяюсь к благодарности за текущий материал, как всегда кстати и актуально.

  3. Аватар

    crabovwik

    30.03.2017 в 18:34

    Ого, круто! Теперь не страшно переезжать на Arch.

  4. Аватар

    Themistocles

    11.04.2017 в 20:34

    Отличная статья, надо будет попробовать, как раз системник стоит без дела ) на пеньке четвертом.

  5. Аватар

    Roma Baron

    20.04.2017 в 16:32

    Пользуюсь гномом с подвеской хоткеев на все часто используемые приложения, разворачиваю терминал на весь экран на ервом рабочем столе и запускаю tmux c кучей кастомизаций.
    При этом всегда можно переключаться из режима гика в режим нормального человека просто перейдя на другой рабочий стол =)
    А вот i3 как раз не зашел, потому что чудовищно неудобен для мультиоконных приложений — графических редакторов и IDE.

  6. Аватар

    blackfin

    22.04.2017 в 08:59

    Slim вроде как не развивается — The SliM project has been abandoned (the project homepage is down, leaving a github mirror), and is not fully compatible with systemd, including logind sessions. Consider using a different Display manager or Xinitrc.

  7. Аватар

    rare_beard

    10.05.2017 в 22:34

    Ещё можно вместо dmenu использовать rofi (https://davedavenport.github.io/rofi/).

  8. Аватар

    NermaN

    08.06.2017 в 09:33

    В статье есть ошибка, SLIM по умолчанию исполняет ~/.xinitrc а не ~/.xsession.

    Так же, указанная тема не идет в комплекте со SLIM, ее надо ставить отдельно.

  9. Аватар

    maxlevs1

    26.06.2017 в 01:45

    Свое знакомство с linux начал не так давно, но уже сайчас плавно перетекаю в консоль. Отличная статья, спасибо, очень заинтересовала.

  10. Аватар

    Nelex

    24.07.2017 в 22:49

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

  11. Аватар

    Enter your serial №:

    03.03.2019 в 10:31

    случайно наткнулся на статью… i3 крут, давно пользуюсь(awesome не для всех, мне лично совсем не вкатывает lua 😉 , при верном направлении рук i3 ни чем не уступает) . а вот в качестве фаил менеджера я бы посоветовал SpaceFM. легковесный, имеет расширяемость за счет плагинов(их мало, но вполне годные, опять же можно и самому написать) , при этом отпадает к нему прикручивается и автомонтирование. Незнаю почему этот фаил менеджер потерял полпулярность(хотя популярности особо то и не было). когда то давно был по умолчани в archbang, заменен на pacmanfm(более прожорливый, и имещий болшее количество свистелок софт)
    … не смотря на время, думаю статья и описаный в ней(а так же в коментариях) софт попрежнему находит свою публику…

Оставить мнение