Qtile: параметры и конфигурация. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Qtile: параметры и конфигурация

12

Qtile настройка

Материал написан пользователем сайта.

Особенности Qtile

Речь в данной статье пойдет о полнофункциональном тайловом оконном менеджере Qtile, написанном и конфигурируемом на языке программирования Python. Менеджер доступен практически для любых Linux систем и поддерживает архитектуры X11 или Wayland. Подробнее о способах установки и зависимостях можно прочитать в официальном Wiki.

Qtile — легкий, гибкий и простой оконный менеджер, к тому же очень функциональный. Используя встроенные возможности, можно создавать собственные макеты, виджеты и команды; настраивать индивидуальный вид и поведение графического окружения. В этом он, прежде всего, и привлекателен лично для меня.

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

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

Файл конфигурации

В ходе начальной загрузки создается файл конфигурации оконного менеджера в каталоге пользователя. Дальнейшая настройка Qtile осуществляется с помощью этого файла, который расположен по адресу: < $HOME/.config/qtile/config.py >. В варианте по-умолчанию предлагаемая структура конфигурации - смешанная, где внутри одного блока прописываются настройки другого. Но это легко поправить вызовом функций и назначением переменных. Мой файл конфигурации разбит на отдельные блоки, на которых остановимся подробней, для лучшего представления о назначении каждого из них.

Блок import

Отвечает за импорт встроенных библиотек и различных модулей Python в конфигурацию.

os-модуль - предоставляет функционал взаимодействия с операционной системой (например, чтение/запись файлов).

re-модуль - предоставляет функции поиска с использованием регулярных выражений (аналогично таковым в perl).

json-модуль - предоставляет функцию простого формата обмена данными (json -  обозначение объекта JavaScript).

psutil-модуль - предоставляет функционал кроссплатформенной библиотеки для получения информации о запущенных процессах и использовании ресурсов системы (процессор, память, дисковое пространство, сеть, различные датчики).

socket-модуль - предоставляет набор основных функций API, которые обычно реализуются в качестве системных вызовов.

subprocess-модуль - предоставляет возможность создавать новые процессы, подключаться к каналам ввода/вывода и получать от них данные.

Popen - класс модуля subprocess, который позволяет вызвать выполнение дочерней программы в новом процессе.

typing-модуль - обеспечивает поддержку выполнения аннотации типов.

List - класс модуля typing, который представляет собой встроенную версию списка; используется для аннотирования возвращаемых типов.

pathlib-модуль - предлагает различные классы, представляющие пути файловой системы с семантикой, подходящей для различных операционных систем.

Path - класс модуля pathlib, который позволяет получить путь текущего каталога/ каталога пользователя, сравнить и преобразовать путь в абсолютный.

libqtile-модуль - представляет из себя библиотеку python, в которой собраны различные классы и функции для создания и настройки оконного менеджера Qtile.

bar, layout, widget, hook - классы из модуля libqtile, добавляющие различные функциональные блоки оконному менеджеру. Bar - панель. Layout - макеты расположения окон. Widget - встроенные виджеты. Hook - встроенные скрипты.

Click, Drag, Group, Key, Match, Screen, Rule, DropDown и KeyChord - классы из модуля libqtile.config, которые используются для определения поведения менеджера Qtile в ответ на различные события (например, щелчки мышью или нажатия клавиш).

lazy - класс модуля libqtile.lazy использован в качестве функции обратного вызова, а так же функции привязки клавиш.

guess_terminal - класс модуля libqtile.utils, который обращается к системной переменной "TERMINAL" для определения эмулятора терминала, используемого по-умолчанию в среде оконного менеджера.

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

Блок variables

Отвечает за определение переменных среды, используемых в конфигурации оконного менеджера.

mod определяет клавишу-модификатор (mod4 = win), которая используется в настройке сочетаний клавиш оконного менеджера.

terminal определяет эмулятор терминала, который будет использован в среде Qtile по-умолчанию (можно напрямую указать путь к исполняемому файлу).

home определяет домашний каталог.

qconf - каталог файлов конфигурации Qtile.

astart - путь к скрипту автозапуска, используемому при старте системы.

colors - путь к файлу .json, в котором сгенерирована палитра, состоящая из 30 различных цветов в формате hex.

Как показано выше, пути файловой системы можно определить с помощью переменных, в качестве примера заданных по-разному. Методом Path.home() модуля pathlib или функцией expanduser() модуля os.path. Можно использовать любой из них или их комбинацию.

colordict загружает палитру из .json файла и преобразует ее в формат применяемый в конфигурации Qtile.

Палитру цветов также можно определить вызовом функции, например:

def set_color():
  return[
    ["#555555", "#555555"],
    ["#FFFFFF", "#FFFFFF"],
    ["#ae99ea", "#ae99ea"]
  ]
colors = set_color()

Дополнительно в этом блоке можно задать любые переменные (например browser, fileManager и т.д.)

Блок keys

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

Key - класс модуля libqtile.config, который принимает список ключей-модификаторов в качестве своего первого аргумента и ключ в качестве второго. Действие задается вызовом определенной функции или метода, которое в свою очередь передается в качестве третьего аргумента конструктору ключа.

Блок groups

Отвечает за установку списка групп оконного менеджера и расширяет его дополнительными привязками клавиш для изменения и перемещения окон между этими группами.

Список групп инициализируется списком его объектов, каждый из которых представляет собой рабочее пространство, управляемое оконным менеджером. Атрибут названия каждого объекта группы задает имя, которое используется для идентификации группы и ее отображения в пользовательском интерфейсе диспетчера окон.

Список ключей расширяется дополнительными привязками клавиш, которые позволяют пользователю переключаться между различными группами, перемещать окна из группы в группу и следовать за ними.

Блок layouts

Отвечает за определение списка макетов, которые менеджер Qtile использует для расположения окон на экране.

Каждый объект макета создается с инициализацией настроек темы, с помощью оператора **. Параметры, записанные в словаре layout_theme передаются конструктору макета в качестве аргументов ключевых слов.

В среду Qtile встроено множество различных макетов, каждый из которых найдет своего пользователя. Необходимо учитывать тот факт, что макет указанный первым в списке, будет использован по-умолчанию. Переключать макеты можно сочетанием клавиш или с помощью встроенного виджета CurrentLayoutIcon.

Блок decorations

Отвечает за определение параметров общего стиля, используемых для панелей и их виджетов в среде Qtile.

С помощью вызова функции init_widget_defaults создадим библиотеку стиля для виджетов панели Qtile. Заданные в ней значения будут использованы по-умолчанию для всех виджетов.

Словари decor_left и decor_right из дополнительного пакета qtile extras могут быть использованы в качестве расширения библиотеки стиля. В них поддерживаются различные переменные для оформления внешнего вида виджетов.

Блоки widget_list и screens

widget_list выполняет инициализацию списка виджетов (списков можно создать сколько угодно). Виджеты будут отображаться на панели в том порядке, в котором они заданы в списке.

screens отвечает за настройку экрана, куда будет выведена панель(и) со списком виджетов (для систем с несколькими мониторами можно задать какая панель с каким набором виджетов будет выведена на тот или иной экран).

В среде Qtile есть множество встроенных виджетов; qtile_extras этот список расширяет. Подробное описание каждого из них с параметрами настройки можно найти в официальной документации:

Для конфигурации экрана(ов) используем вызов функции init_screens. Задаем настройки панели (тип и положение на экране), список виджетов на ней и параметры оформления. Мне симпатизирует встроенная панель Qtile, но вполне допустимо использовать любую другую (polybar, waybar...etc).

Блок floating_rules

Отвечает за конфигурацию поведения и управления "плавающими" окнами, которые не подчиняются общим правилам макета и могут занимать любое место на экране (поверх или позади основных окон).

Для мыши настраиваются привязки клавиш и нажатий на выполнение заданных действий при определенном их сочетании (аналогично keys).

Параметр follow_mouse_focus определяет, - следует ли автоматически перемещать фокус вместе курсором мыши.

Настройка bring_front_click определяет, - должен ли щелчок мыши выводить окно поверх остальных.

Параметр cursor_warp определяет, - следует ли перемещать курсор мыши в центр окна при его фокусировке.

Переменная floating_layout задает макет, который будет использован для "плавающих" окон.

Список floating_types (у меня не используется) определяет типы окон, которые следует рассматривать как "плавающие", например можно задать следующие типы окон: floating_types = ["notification", "dialog", "splash"]

Блоки miscellaneous и hooks

В miscellaneous собраны все прочие настройки.

Блок hooks отвечает за вызов встроенных скриптов python.

Настройка auto_fullscreen определяет, - следует ли автоматически устанавливать полноэкранный режим для окна при запросе. Соответственно, auto_minimize - автоматически сворачивать.

Настройка focus_on_window_activation определяет поведение фокуса окна при его активации. Возможные варианты: "focus" и "smart". "Умная" настройка сфокусирует только неактивное окно.

В среде Qtile есть множество встроенных скриптов (хуков), qtile_extras этот список расширяет. Подробное описание каждого из них с правилами использования можно найти в официальной документации:

Финальный hook

В конфигурации параметров оконного менеджера Qtile абсолютно нет ничего сложного. Более того, сам файл настроек очень простой и понятный, структурированная разбивка которого позволяет без труда реализовать собственную конфигурацию любой сложности. Python - популярный и к тому же простой язык программирования, с хорошей базой документации к нему. Все вместе делает этот оконный менеджер привлекательным инструментом для организации своего рабочего пространства.

Удачной настройки вашего окружения и, - музыку в студию!

Лайков: +19
войдите, чтобы ставить лайки
12
  • Опубликовано: 21.05.2024
  • scorpii

Комментарии

choice
Активный пользователь
Активный
21.05.2024
09:20
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Чтобы нажать "Мне нравится", устал мотать вниз.
Minor748
Активный пользователь
Активный
21.05.2024
12:31
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
+1
войдите, чтобы ставить лайки
Кнопки Home, End, PgUp, PgDown
vantiki
Активный пользователь
Активный
21.05.2024
10:39
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
+ очень полезно. Если и буду пробовать Qtile, то отличный материал по настройке уже есть.
UlyssesJJ
Активный пользователь
Активный
21.05.2024
13:58
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+3
войдите, чтобы ставить лайки
Замечательная статья, не представляю сколько сил ушло на ее написание.
scorpii
Активный пользователь
Активный
21.05.2024
14:56
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUlyssesJJРодительский комментарий
+1
войдите, чтобы ставить лайки
Не поверите, не много. На редактирование уже готового материала потратил больше.
Rom
Активный пользователь
Активный
21.05.2024
17:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
За статью +. Хотя сам никогда подобными менеджерами не пользовался, но тем кто собирается начать думаю будет полезной.
scorpii
Активный пользователь
Активный
21.05.2024
21:03
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийRomРодительский комментарий
0
войдите, чтобы ставить лайки
Год назад тоже обходил их стороной, не понимал сути тайлинга, не хотел возиться с конфигами... Все как всегда, лень на первом месте. Интерес все таки заставил себя перебороть, и в тайлинге разглядел свою прелесть и конфиги оказались не так страшны, как их рисуют.
Minor748
Активный пользователь
Активный
21.05.2024
23:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
Тот образ КашкаОС, который я качал через браузер, выдавал ошибку (спасибо нашему "суверенному рунету"). Перекачал его же через uGet, и процесс тоже завершился ошибкой. Но на сей раз выдало лог с предложением его загрузить на сайт (наверно, донести до разработчиков). И ещё теперь скорее с Xfce буду ставить. Что-то не идёт KDE
https://termbin.com/6h4p
scorpii
Активный пользователь
Активный
21.05.2024
23:22
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
другой релиз не пробовали?
хотя, я бы забросил идею, ничего особого и ценного в этом дистрибутиве нет.
поиграться можно и на виртуалке, кстати не пробовали а на ней встает образ?
Minor748
Активный пользователь
Активный
21.05.2024
23:40
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
У меня образ 'cachyos-kde-linux-240512', уже почти две недели прошло с того дня, как я его впервые скачал. Сегодня заходил на сайт перед установкой и там с той же датой качается.
Поэтому да, пробовал. Но нет, это не помогло
Frenk
28.05.2024
20:24
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Слышал что в Qtile есть проблема с переключением языков, а Wayland как работает в Qtile? А что лучше Qtile или Awesome wm?
scorpii
Активный пользователь
Активный
28.05.2024
22:39
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийFrenkРодительский комментарий
0
войдите, чтобы ставить лайки
С переключением языков никаких проблем нет, да и откуда им взяться? Можете использовать настройки (сочетания клавиш и виджет панели) из моего конфига - все будет работать.
Вяленый поддерживается и менеджер работает в нем; такую связку не использую, поэтому есть ли в ней проблемы, сказать не могу. В Х11 работает в целом хорошо и стабильно; с polkit придется повозиться, но и эта задача решаема.
Что лучше? Каждый сам выбирает.
Мне из оконных менеджеров симпатизируют: qtile, hyprland.
Первый под Х11, второй, - естественно под вяленого.

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила