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

На відміну від 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 відмінно буде працювати на них. Найголовніше, що для цього не потрібно ніяких додаткових налаштувань.

Список доступних моніторів:

$ Xrandr -q

Настроєм їх роботу в парі:

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

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

Як ви, мабуть, пам'ятаєте, моїм першим тайловим віконним менеджером був 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 \u003d "i3lock -c 000000"

Утиліта i3lock призначена для блокування екрану. На відміну від багатьох аналогічних утиліт вона зовсім нічого не вказує користувачу. Тобто екран тупо залишається чорним (колір можна змінити) до тих пір, поки не буде введений пароль поточного користувача. Крім певного кольору також можна використовувати картинку у форматі PNG.

Нещодавно ми зробили базову настройку гик-десктопа на базі i3, але за кадром залишилося безліч дрібніших і не зовсім очевидних речей. Сьогодні ми закінчимо доведення робочого столу до стану ідеалу: навчимо dmenu управляти яскравістю, гучністю і SSH-підключеннями, встановимо правильний менеджер паролів, впровадимо в десктоп перекладач будь-яких обраних слів і фраз, додамо в статусну панель інформацію про погоду, встановимо блокувальник екрану і швидкий, керований хоткеямі браузер.

Нагадаю, що в даний момент у тебе вже повинна бути базова інсталяція i3 з вікном логіна slim, терміналом lilyterm, демоном автомонтірованіе devmon, системою показу повідомлень twmnd, апплетом перемикання розкладки gxkb і композитним менеджером compton. Це цілком самодостатній десктоп, яким можна без проблем користуватися. Але є безліч більш дрібних речей, які ми не торкнулися в попередній статті. Наприклад, у нас до сих пір немає блокувальника екрану, тієї самої штуки, яка вимагає пароль після простою або пробудження компа від сплячки.

Блокувальник екрану slock

Slock - надзвичайно простий блокувальник екрану. Настільки простий, що в ньому немає навіть поля введення для пароля. Він просто показує чорний екран, колір якого змінюється на синій, коли ти вводиш пароль, і на червоний, якщо пароль є невірним.

Slock доступний в багатьох дистрибутивах в формі звичайного пакета. У Arch Linux його можна встановити так:

$ Sudo pacman -S slock

Після цього виконай команду slock, щоб заблокувати екран. Щоб екран блокувався перед відходом компа в сон, слід створити юніт systemd такого змісту:

Description \u003d Lock X session using slock for user% i Before \u003d sleep.target User \u003d% i Environment \u003d DISPLAY \u003d: 0 ExecStartPre \u003d / usr / bin / xset dpms force suspend ExecStart \u003d / usr / bin / slock WantedBy \u003d sleep.target

Поклади ці рядки в файл / etc / systemd / system / [Email protected] , А потім активуй юніт для поточного користувача:

$ Sudo systemctl enable [Email protected]ІМЯ_ЮЗЕРА.service

Тепер slock буде автоматично активований при переході ноутбука в сон.

Налаштування рядка стану

Багато користувачів i3 рекомендують міняти стандартний рядок стану i3status на щось більш прогресивне, функціональне, красиве і чудове. У цьому є певний сенс, але варто враховувати, що, на відміну від простого i3status, багато інших реалізації написані на мовах bash і Python, що робить їх менш ефективними і більш вимогливими до ресурсів.

Тому я рекомендую використовувати i3status, але дещо розширити його функціональність. Перше, що варто зробити, - це розмістити в рядку не тільки час, але і поточну дату і день тижня. Для цього треба всього лише виправити директиву tztime local в файлі ~ / .i3status.conf так, щоб вона виглядала наступним чином:

Tztime local (format \u003d "% a% Y-% m-% d% H:% M:% S")

Також ти можеш відключити непотрібні тобі розділи рядки стану, просто закоментувавши рядки, що починаються з order:

#order + \u003d "run_watch DHCP"

Цей рядок відключає показ інформації про статус DHCP. Змінюючи місцями рядки order, можна поміняти розташування елементів в рядку.

Ти можеш зіткнутися з тим, що рядок не відображає інформацію про стан мережі. Зазвичай проблема полягає в невірних іменах мережевих пристроїв в конфіги. Варто запустити команду ifconfig, щоб дізнатися правильні імена, а потім прописати їх в конфіг i3status. Пристрої, що починаються на en, - це Ethernet-адаптери, wl - Wi-Fi.

Ось приклад налаштувань i3status для мого ноутбука:

Wireless wlp3s0 (format_up \u003d "W: (% quality at% essid)% ip" format_down \u003d "W: down") ethernet enp0s25 (format_up \u003d "E:% ip (% speed)" format_down \u003d "E: down")

Крім статусу мережі, батареї, часу, тобі також може знадобитися інфа про поточний рівень гучності. Її легко додати за допомогою такого блоку:

Volume master (format \u003d "♪% volume" format_muted \u003d "♪ muted (% volume)" device \u003d "default" mixer \u003d "Master" mixer_idx \u003d 0)

і відповідного рядка на початку конфіга:

Order + \u003d "volume master"

Погода в рядку стану

Рядок може відображати величезна кількість різної інформації. Але чого в ній немає, так це коштів для виведення інформації про погоду. На щастя, проблему можна вирішити за допомогою скриптів.

Для початку скачайте скрипт weather.py:

$ Mkdir ~ / bin $ cd ~ / bin $ wget https://raw.githubusercontent.com/calzoneman/i3-weather/master/weather.py $ chmod + x weather.py

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «сайт», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score!

Ось уже кілька місяців пройшло як Я перейшов на "віконний менеджер" замість "оточення робочого столу". Більш технічну і точну різницю між цими двома поняттями можете нагугліть. З точки зору звичайного користувача (принаймні з того, що мені почулося) - 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 \u003d $ (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 \u003d "quiet splash"

і міняємо на

GRUB_CMDLINE_LINUX_DEFAULT \u003d "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 \u003d $ (date + "% Y-% m-% d% H:% M:% S") layouts \u003d $ (setxkbmap -query | awk "/ layout / (print $ 2)") current \u003d $ (dbus-send --print-reply \u003d literal --dest \u003d ru.gentoo.KbddService / ru / gentoo / KbddService ru.gentoo.kbdd.getCurrentLayout | awk "(print $ 2)") index \u003d $ (($ current + 1)) lang \u003d $ (echo $ layouts | cut -d, -f $ index) echo "$ lang | $ datetime | $ line" || exit 1 done

Тобто, поточна розкладка буде показана перед датою / часом.

Якщо ж Ви таки зважилися поставити на ноутбук i3wm, Вам швидше за все захочеться в рядку статусу відображати рівень заряду батареї і рівень сигналу wifi. Відображення рівня заряду батареї можна налаштувати стандартними засобами в файлі /etc/i3status.conf (можливо, поміняти треба буде індекс батареї з 0 на 1, або навпаки в залежності від ноутбука):
battery 1 (format \u003d "% status% percentage -% remaining" low_threshold \u003d 30 threshold_type \u003d time # toggle actual capacity / design capacity #last_full_capacity \u003d true hide_seconds \u003d true integer_battery_capacity \u003d true) Аналогічно, можливо треба буде погратися з індексом звукового пристрою для відображення гучності:
volume master (format \u003d "♪:% volume" format_muted \u003d "♪: muted (% volume)" device \u003d "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 \u003d $ (setxkbmap -query | awk "/ layout / (print $ 2)") current \u003d $ (dbus-send --print-reply \u003d literal --dest \u003d ru.gentoo.KbddService / ru / gentoo / KbddService ru.gentoo.kbdd.getCurrentLayout | awk "(print $ 2)") index \u003d $ (($ current + 1)) lang \u003d $ (echo $ layouts | cut -d, -f $ index) wifi \u003d $ (nmcli d wifi | grep "^ \\ *" | grep -v "\\ *. * SSID" | awk "(print $ 8)") datetime \u003d $ (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 \u003d 0 TapButton2 \u003d 0 TapButton3 \u003d 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:

Логотип 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 \u003d "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 тред в коментарях буде не зайвим.
Дякую за увагу!