Всем здравствуйте.
Некоторое время назад узнал про композитор hyprland и, обнаружив соответствующий пакет в Сизифе, решил его попробовать.
Хочу поделиться опытом установки, возможно написанное мной кому-то поможет или послужит основой для статьи о пакете на alt linux wiki.
Насколько я понял, hyprland - проект молодной и активно развивающийся, информации по нему не так уж и много, особенно на русском языке. Сразу скажу, что ранее имел дело только с Gnome и KDE, никогда не занимался сборкой из git. На установку, настройку и поиск решения возникших проблем ушел один вечер.
Далее распишу по каждому пакету, будет много букв, поэтому большую часть прячу под спойлеры.
За основу взял regular-сборку на lxde, поскольку встречал информацию о том, что это окружение никак не конфликтует с hyprland.
Итак, установка:
Спойлер
Для начала установил сам композитор, рекомендуемый по-умолчанию эмулятор терминала, лаунчер wofi, а также пакеты, не являющиеся к нему зависимостями, но отмеченные на
hyprland-wiki как важные и влияющие на пользовательский опыт.
apt-get install hyprland \
kitty \
wofi \
pipewire \
wireplumber \
mako \
qt5-wayland \
qt6-wayland \
xdg-desktop-portal \
xorg-xwayland
Сразу включил службы pipewire, но не уверен, нужно ли было это делать. После установки у меня они были выключены, возможно включились бы после перезагрузки.
systemctl --user enable pipewire.service
systemctl --user enabe pipewire-pulse.service
systemctl --user enable wireplumber.service
Запуск композитора командой Hyprland переключившись на другой tty, при первом запуске создается конфиг в ~/.config/hypr/hyprland.conf
Настройки подробно расписаны на wiki проекта.
В конфиге сразу внес в автозапуск агент аутентификации (взял из lxde, он работает, проверил, запустив gparted) и демон уведомлений mako
exec-once = /usr/bin/lxpolkit
exec-once = mako
Для управления обоями рабочего стола решил использовать утилиту
hyprpaper. В Сизифе ее нет, собирал из git.
Спойлер
Установил сам git, cmake и зависимости для сборки.
apt-get install git \
cmake \
libwayland-client-devel \
libwayland-server-devel \
libwlroots-devel \
gcc-c++ \
wayland-protocols \
ninja-build \
libcairo-devel \
libpango-devel \
libjpeg-devel \
libwayland-cursor-devel \
libGLES-devel \
libmagic-devel
Сборка полностью по инструкции из git:
git clone https://github.com/hyprwm/hyprpaper
cd hyprpaper
make all
Собранный бинарник лежит в ./build/, под su - скопировал его в /usr/bin
Добавил конфиг hyppaper.conf в ~/.config/hypr.
Содержимое конфига, где путь нужно заменить на путь до нужного изображения, а monitor1 на имя используемого монитора. Имя монитора можно узнать в консоли через hyprctl monitors
preload = /path/to/image.png
wallpaper = monitor1,/path/to/image.png
Для запуска нужно добавить в hyprland.conf строку для запуска hyprpaper
exec-once = hyprpaper
Следующим на очереди был
xdg-desktop-portal-hyprland, также собирал его из git.
Спойлер
Для сборки, помимо уже установленного, потребовалось доустановить еще пакеты:
apt-get install meson \
pipewire-libs-devel \
libinih-devel \
libgbm-devel \
libdrm-devel \
libuuid-devel \
libsystemd-devel \
qt6-wayland-devel
Сборка:
git clone https://github.com/hyprwm/xdg-desktop-portal-hyprland
cd xdg-desktop-portal-hyprland
meson build --prefix=/usr
cd hyprland-share-picker && make all && cd ..
Установка от суперпользователя из каталога xdg-desktop-portal-hyprland:
ninja -C build install
cp ./hyprland-share-picker/build/hyprland-share-picker /usr/bin
Далее с ним ничего делать не нужно, при установленном xdg-desktop-portal должен работать автоматически.
Проверить работу, например возможность расшарть экран, можно на
https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/ и подобных.
В качестве бара решил попробовать
waybar. В Сизифе он есть, однако в нем отсутствовал индикатор рабочих мест "wlr/workspaces". Путем долгого и нудного поиска выяснил, что для его работы необходимо собирать бар с параметром expeimental=true, поэтому дорога снова на git.
Спойлер
Снова зависимости:
apt-get install libdbusmenu-gtk3-devel \
libfmt-devel \
jsoncpp-devel \
libevdev-devel \
libinput-devel \
libmpdclient-devel \
libnl-devel \
libpulseaudio-devel \
scdoc \
libspdlog-devel \
libupower-devel \
rpm-build-xdg \
libstdc++-devel-static
Шрифт для отображения картинок в баре:
apt-get install fonts-otf-fontawesome
Сборка:
git clone https://github.com/Alexays/Waybar
cd Waybar
meson build -Dexperimental=true
Установка, от суперпользователя из каталога Waybar
ninja -C build install
Добавил в hyprland.conf строку для запуска waybar
exec-once = waybar
Пользовательские конфиги для waybar хранятся в ~/.config/waybar
Примеры можно взять из /usr/local/etc/xdg/waybar
Остальное время потратил на небольшие настройки hyprland и бара:
Спойлер
Для себя пока включил максимально простой индикатор рабочих мест.
В ~/.config/waybar/config добавил индикатор:
"wlr/workspaces": {
"format": "{name}",
"on-click": "activate"
}
Вывел его в левую секцию, модули по-умолчанию оттуда убрал, большинство относилось к композитору sway и не выводилось
"modules-left": ["wlr/workspaces"]
По инструкции с hyprland wiki внес изменения в ~/.config/waybar/style.css
Вместо #workspaces button.focused сделал #workspaces button.active
В hyprland.conf включил русскую раскладку и переключение по Alt+Shift
input {
kb_layout = us,ru
...
kb_options = grp:alt_shift_toggle
...
}
Вывел индикатор языка на waybar
В ~/.config/waybar/config
"hyprland/language": {
"format": "{}",
"format-en": "EN",
"format-ru": "RU",
"keyboard-name": "at-translated-set-2-keyboard"
}
keyboard-name можно посмотреть в выводе hyprctl devices
Искомая клавиатура - та, которая меняет active keymap по Alt+Shift
Добавил стиль для индикатора в ~/.config/waybar/style.css. Без него имя раскладки отображалось как ...
#language {
background-color: #ffffff;
color: #000000;
min-width: 40px;
}
На этом у меня пока все. Дальше в планах внимательно изучить документацию к hyprland и waybar и настроить их под себя. Пока впечатления от композитора положительные.
Если что-то делал не так, что-то можно было сделать лучше, оптимальнее и т.д. - конструктивная критика приветствуется.
Если тема найдет отклик - попробую описать, что получилось дальше.
Спасибо всем, кто смог дочитать это до конца.