Pull to refresh

Миссия «wayland на gentoo c nvidia» (провалена)

Level of difficultyMedium
Reading time4 min
Views3.8K

Вечером, в районе 8 часов, стукнуло в голову таки посмотрeть на wayland. Вообще такие мысли возникают переодически, но обычно идея быстро затухает после некоторого времени чтения мануалов, ибо нефига не понятно. Десктоп — gentoo с nvidia. Последннее время графическая часть на нем это: Xorg, проприетарные дрова nvidia, LightDM на входе, WM в виде awesomewm. До awesomewm были xfcei3wm. В целом все работает, устраивает, но иногда хочется нового. Надо ли говорить что KDE/Gnome терпеть ненавижу.

Включаю wayland в USE в /etc/portage/make.conf, пересобираю все что его умеет через emerge -avtN @world . Что интересно, пересобирается без ошибок. Насколько я помню, я уже пытался включать этот флаг с мыслью что потом попробую, но в итоге выключал, потому что были проблемы со сборкой некоторых пакетов. Параллельно ищу что там вообще с WM.

Натыкаюсь на sway. Выглядит вроде прикольно, собираю, пытаюсь запустить, сразу получаю сообщение похожее на — «Иди ты нафик со своими проприетарными дровами nvidia, мы уважаем тока nouveau, но если ты прям хочешь то можешь заюзать флаг --unsupported-gpu, но мы ничего не гарантируем.» Заюзал флаг, без проблем настроил работу с двумя мониторами, пытаюсь работать. Работать невозможно. При открытии/закрытии окон возникают какие‑то очень не красивые артифакты, которые тут же исчезают. Глаза режут. Идею перейти на nouveau, хотя бы на время, отвергаю. Надо пересобирать ядро, да и, кажется, что всякое AI типа Stable diffusion работать не будет.

Параллельно пытаюсь найти DM. Останавливаюсь на greetd. В итоге удается быстро запустить вариант tuigreet. Выглядит забавно, консольные окошки, логин в него, а потом стартует графика. Но тоже не без косяков, запускать что то сo своими опциями не умеет (типа `sway--unsupported-gpu ), приходится запуск оборачивать в bash скрипт и вызывать его.

Так как sway показал себя не очень, ищу что‑то еще. Натыкаюсь на пост на linux.org и иду пробовать hyprland. Тоже легко настраиваю два монитора, менюшки для запуска есть, консоль alacritty работает и даже со всеми красивостями и шрифтами из powerlevel10k. Натыкаюсь на проблему что копирование выделенного текстам между консолью и chrome не работает, нахожу какие‑то дикие рецепты с написанием конфигов hyprland и бинда клавиш с использованием wl-paste, но решение проще. Надо запускать хром с флагам --enable-features=useozoneplatform --ozone-platform=waylan. При этом сходить chrome://flags/ и там поставить "Preferred Ozone platform" в "Wayland" как написано в одном посте на реддите не помогает.

А так в целом менюшка запуска есть, консоль alacritty работает, программы запускаются, есть workspaceы. Можно пробовать работать. Остаётся только автолокер (критичная для меня вещь). Настраиваю связку hypridle и hyprlock. Досточно кривенько, почему-то один монитор затемняется фоном, а на втором все окошки видно со всем содержимым, только пароль и часы сверху появляетются. Время 4 утра, светает, пора и поспать. С утра бреду к компу и вижу странную картину, мониторы не погашены, на hyprlock настроены часы и они остановились на 5:05, при попытке залогинится все зависает, при попутке кильнуть hyprlock все мониторы заливаются красным фоном и работать нельзя, приходится рестартануть hyprland. В логах вижу ошибки:

июл 10 10:18:19 gals-home kernel: NVRM: GPU at PCI:0000:08:00: GPU-17723284-063f-bf90-53f3-3e750c75b1ca
июл 10 10:18:19 gals-home kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphics Exception: Shader Program Header 11 Error
июл 10 10:18:19 gals-home kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphics Exception: Shader Program Header 18 Error
июл 10 10:18:19 gals-home kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphics Exception: ESR 0x405840=0xa2040800
июл 10 10:18:19 gals-home kernel: NVRM: Xid (PCI:0000:08:00): 13, pid='<unknown>', name=<unknown>, Graphics Exception: ESR 0x405848=0x80000000
июл 10 10:18:19 gals-home kernel: NVRM: Xid (PCI:0000:08:00): 13, pid=2064923, name=hyprlock, Graphics Exception: ChID 0010, Class 0000c797, Offset 00000000, Data 00000000

Понимаю почему мониторы не вырубились, в конфиге написал exec-once = hypridl пропустив 'e' в конце и оно не запускалоcь, hyprland ничего об этом не сообщил.

Правлю конфиг, перезапускаю, прихожу через 20 минут и наблюдаю на экранах мониторов консоль с сообщением ядра что оно сходило поспать в S3 но тут же вернулось. При этом hyprland память и экран покинуло. В hypridle настроен запуск systemctl suspend , но почему машина тут же просыпается, не очень понятно, потому что запуск systemctl suspend ручками из консоли отрабатывает как надо.

Нахожу доку от hyprland по nvidia, делаю как в ней написано, перезапускаю, проблема сsystemctl suspend остаетcя, поэтому этот вызов из конфига пока выпиливаю. При вводе пароля hyprlock вроде не зависает. Правда тот экран что заливался заливкой при локе, после вывода мониторов из спяшего режима весь заливается красным, ввода пароля и часов почему-то нет. Ввести пароль можно на втором экране только. Ну и в итоге дока по nvidia не помогла, hyprlock завис после ввода пароля вот в таком состоянии. Часики остановились, и поле ввода повисло на вводе пароля. Если его кильнуть то оба монитора заливаются красным фоном и работать уже нельзя.

Итого

Кажется что запуск WM без root все ближе, но все это несколько сыровато. Хотя, может я и не прав, и для пользователей Gnome и KDE это будущее уже наступило. Но я пробовать не хочу и вернусь на Xorg. Опять же, судя по по этому тексту, обновленному 27.06.2024 в кедах все тоже не очень радужно.

Еще хотелось бы отметить удивительный мир конфигов hyprlock и sway. Казалось бы есть yaml, json или там toml но их конфиги не такие. Ну вот, например настройка мониторов в sway.

output DP-1 resolution 3440x1440 position 0,0
output HDMI-A-1 resolution 1920x1080 position 3440,0

Надо отметить что в sway пишут что это не конфиг, а команды (A sway configuration file is a list of sway commands that are executed by sway on startup.)

а вот конфиг мониторов в hyprlock

monitor=DP-1, 3440x1440, 0x0, 1
monitor=HDMI-A-1, 1920x1080, 3440x0, 1

Лично для меня после json, yaml или всяхки там ini все выглядит как-то очень странно.

P.S. попросил нарисовать chatpgpt линуксоида который ждет работающего wayland. Ответ превзошел все ожидания

Tags:
Hubs:
+19
Comments25

Articles