Привет, Хабр! Сегодня я хотел бы рассказать вам о моём переезде на Linux под управлением оконного менеджера I3-wm. Попробую немного раскрыть тему настройки оконного менеджера и поделюсь своим опытом. Надеюсь кому-то будет полезно получить такого рода информацию. P.s если вы не новичок, то вряд ли узнаете много нового, но благодарю за внимание! Итак! Данная программа была разработана в целях бэкапа конфигурации системы, которую я использую каждый день - Manjaro I3. Я приготовил 3 конфигурации оконного менеджера I3-wm для систем: Manjaro, Solus и Fedora, так как они наиболее популярны на мой взгляд. Я использовал каждый из представленных дистрибутивов и временами меняю свой основной дистрибутив на один из них. Я пользуюсь Linux с 18 февраля 2019 года, но летом 2020 я начал использовать Linux как основную систему (на тот момент ещё Ubuntu 20.04 LTS). Как я уже писал выше, до 2019 года я использовал операционную систему Windows, но в один момент мне захотелось преобразить её и моя затея сильно затянулась, т.к оформление, которое я надумал, требовало большой работы над Windows 10 и некоторые нужные мне задачи реализовались не так удобно и практично, как могли бы. По этому, я решил попробовать что-то новое и открыл для себя Linux, а именно дистрибутив KDE Neon. Я быстро настроил внешний вид системы и решил попробовать использовать её для своих нужд (программирование, серфинг в интернете, игры). Немного разобравшись в теме Linux я открыл для себя терминал, и то как нужно его применять и был приятно удивлен его возможностями по сравнению с командной строкой Windows. Стало удобнее обращаться с системой, я мог быстрее реализовать нужные мне задачи. Да и в целом, система была чуть менее требовательна к ресурсам ПК, нежели Windows 10. Мне очень понравилось так взаимодействовать с системой, и с тех пор я использую Linux, как основную ОС на своем домашнем ПК. В процессе изучения, как и все, сменил много дистрибутивов и через время остановился на Manjaro. В августе 2021 года мне стали интересны тайловые оконные менеджеры, и почему некоторые люди предпочитают их стековым оконным менеджерам. Поразмыслив на эту тему, я решил посмотреть, что в них такого интересного и установил I3-wm на мой дистрибутив. С тех пор я заинтересовался возможными конфигурациями таких систем под управлением I3, так же мне очень понравилось то, что теперь системе нужно намного меньше ресурсов в отличие от Windows 10, которая требует 4гб ОЗУ для нормальной работы с ней. Оконные менеджеры бывают двух видов: Стековые - это оконные менеджеры, с плавающими окнами как на OS X или Windows. Самый простой случай, когда это просто обычные окна, которые можно расположить по оси Z (Окна перекрывают друг друга). Тайловые – разбивают оконное пространство. “Тайловые” в переводе “Мозаичные”, то есть приложения занимают экранное пространство так, как будто оно разбито на “мозаику” из неперекрывающихся областей, окон или фреймов. Главный плюс тайловых оконных менеджеров в скорости работы с ними, невероятной легковесности и гибкой настройке под нужды пользователя. Так я начал изучать тайловый оконный менеджер I3-wm. Я экспериментировал с его конфигурациями, собрав свою собственную. Через некоторое время я понял, что мне нужен бэкап моей системы, я сохранил мою конфигурацию и все нужные файлы на мой github, чтобы в случае сбоя системы, при очередных экспериментах, я мог быстро восстановить старую сборку. Ещё через некоторое время я понял, что не стоит ограничиваться одной системой, и написал конфигурации под все дистрибутивы, которые использовал или когда-нибудь буду использовать, чтобы если я решу перейти на тот или иной дистрибутив, я мог бы как всегда применить свой конфиг I3-wm. Таким образом, я написал все нужные мне конфигурации и решил обернуть их в небольшую утилиту, которая мне поможет их автоматически установить, опять же ради экономии времени (иначе пришлось бы вручную переносить все файлы в конфиг системы). Спустя некоторое время, методом проб и ошибок, я написал эту утилиту. Так же я надеюсь, что моя работа поможет новичкам, изучающим I3, быстрее и лучше разобраться в настройке своей системы. Клонировать репозиторий: git clone https://github.com/Avdushin/GOAPPLE Перейти в репозиторий: cd GOAPPLE Запустить утилиту: ./goapple или ./goapple -ru для запуска русифицированной версии При запуске программы вы видите главное меню: DISTROS - открывает меню выбора дистрибутивов В этом пункте нужно выбрать ваш дистрибутив, нажав нужную кнопку, и программа начнет устанавливать все необходимые компоненты и файлы на ваш ПК. После будет проведена перезагрузка системы. MYOS - выводит информацию о системе SETTINGS - открывает настройки утилиты (можно выбрать язык) Изначально, я решил писать проект на bash, так как подумал что было бы интересно реализовать на нем эту затею (первые версии программы были написаны на bash). Но потом, я решил поработать над интерфейсом, и тут мне на помощь пришёл Python, т.к я понимал как можно реализовать на нём поставленные мной задачи, но через время я решил что python не так эффективен для моей программы и переписал её на GO. Проект на python (неактуально) - https://github.com/Avdushin/PIN3APPLE Проект на GO (актуальная версия) - https://github.com/Avdushin/GOAPPLE Для реализации программы я использовал библиотеки GO: "os/exec" -  для запуска команд "github.com/mbndr/figlet4go" - для вывода логотипа "flag" - для запуска с помощью флагов (-ru, -h) Код проекта: GOAPPLE-CLI - консольная версия GOAPPLE-GUI - графическая версия Можно заметить, что код простой, но при этом он выполняет поставленную задачу. Конфигурация I3 настраивается с помощью всего одного конфигурационного файла, он находится в ~/.config/i3/config "~" - домашняя директория пользователя В начале конфига назначается клавиша $MOD - главная клавиша в системе, с помощью которой можно управлять окнами, запуском приложений и другими действиями в системе. Далее я настроил раскладку клавиатуры: exec --no-startup-id setxkbmap -model pc105 -layout us,ru -variant -option grp:alt_shift_toggle русский, английский языки и переключение раскладки на alt+shift Настройка мониторов (экрана) Настройка рабочих столов для нескольких мониторов: P.s если у вас один монитор, всё автоматически будет подстроено под него. Настройка перемещения окон и смены переключения на рабочее место Старт меню запуска программ Для меню запуска программ я использую приложение rofi Автостарт программ Таким образом можно настраивать автоматический старт программ # Polybar панель exec_always --no-startup-id ~/.config/polybar/launch.sh & Запуск программ по горячим клавишам Управление плавающими/статичными окнами Отступы между окнами Настройка цвета окна Polybar - это панель, которая расположена у меня в верхней части экрана, она позволяет использовать её встроенные модули или дописывать свои собственные, с помощью простого синтаксиса и программирования. Конфигурационный файл POLYBAR находится в ~/.config/polybar/config В конфиге панели я дописал пару тем оформления и несколько модулей (подробнее см. в моём GitHub) Настройка цветов панели Радиус и отступы radius = 12 padding-left = 5 padding-right = 5 РАСПОЛОЖЕНИЕ МОДУЛЕЙ Трей По умолчанию системный трей в polybar включен, но я не использую его. Чтобы его включить, вам нужно раскомментировать строки: ; комментарий выглядит так ";" Значки рабочих мест # ЗНАЧКИ РАБОЧИХ СТОЛОВ (Иконки используют шрифт Awesome) Модуль корзины Модуль даты и времени (По умолчанию я добавил 12-часовой формат, он меняется при клике на модуль на самой панели) Выше я продемонстрировал как выглядят модули панели изнутри, вы можете попробовать написать нужные вам модули сами, или поискать их в интернете. Приглашаю вас на GitHub репозиторий проекта - там вы можете ознакомиться с его кодом/скриптами и посмотреть интересующие вас настройки.  Благодарю за внимание! Надеюсь, я поделился чем-то новым и интересным для вас.  Web-developer, Go-dev, Reactjs