Автор Тема: Установка hyprland  (Прочитано 4543 раз)

Оффлайн Александр Мытарев

  • Начинающий
  • *
  • Сообщений: 3
    • Email
Установка hyprland
« : 05.07.2023 22:02:32 »
Всем здравствуйте.

Некоторое время назад узнал про композитор 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 и настроить их под себя. Пока впечатления от композитора положительные.
Если что-то делал не так, что-то можно было сделать лучше, оптимальнее и т.д. - конструктивная критика приветствуется.
Если тема найдет отклик - попробую описать, что получилось дальше.
Спасибо всем, кто смог дочитать это до конца.
« Последнее редактирование: 07.07.2023 13:38:28 от Александр Мытарев »