06.08.2023 18:22
OlegON
 
Уже с разных сторон стало все больше и больше прилетать намеков, что пора уже с Х переходить на Wayland.
Мне, если честно, было очень лень возиться, поскольку все же я сторонник "работает - не трогай", и вопросы решал по мере необходимости что-то решать, а не собственной инициативе. Но, при угрозе необходимости это решать как-то совсем не в свободное время решил сделать рывок.
Забегая вперед могу сказать сразу, что сломалось очень многое. Каких-то особенных преимуществ не вижу, хотя, субъективно как-то полегче работает, но объем новых знаний просто громадный.

Итак, для понимания. У меня Fedora и i3. Задача перейти с Xorg на Wayland и, поскольку i3 не работает под Wayland, перейти на sway.

Для начала поясню, как многие не поняли, sway не для i3, а вместо. То есть вместо i3 создали sway. Собственно, конфиг я просто скопировал
Код:
cp /home/olegon/.config/i3/config /home/olegon/.config/i3/sway
после этого я выкинул из нового конфига неподдерживаемую директиву
Код:
font -misc-fixed-medium-r-normal-*-15-*-*-*-*-*-iso10646-*
и, чтобы не путаться
Код:
exec --no-startup-id dex-autostart --autostart --environment i3
поскольку slim не поддерживает sway, от него пришлось отказаться, мне нужен просто автозапуск с автологином, потому я выбрал greetd. Вариант с прописыванием распознования tty в .profile мне не понравился какой-то костыльностью и тратой ресурсов на каждом запуске консоли :) То есть
Код:
systemctl disable slim
systemctl enable greetd
Конфиг greetd самый простейший в /etc/greetd/config.toml
Код:
[terminal]
vt = 1
[default_session]
command = "sway"
user = "olegon"
[initial_session]
command = "sway"
user = "olegon"
перегрузился и ... тишина, выяснилось, что sway выдает ошибку [ERROR] [../sway/server.c:73] Unable to create backend и не запускается. Поправил, перезапуск и... Я в sway, в котором сейчас и пишу. Собственно, сначала русского языка и не было, так что пришлось добавить в конфиг sway
Код:
input "type:keyboard" {
    xkb_layout us,ru
    xkb_options grp:win_space_toggle
}
потом выяснилось, что мониторы попутаны местами (право-лево), добавил еще в конфиг sway
Код:
output HDMI-A-3 pos 0,0 res 1280x1024
output HDMI-A-1 pos 1280,0 res 1920x1200
обратите внимание, что имена совсем на такие, как в xrandr, поэтому их надо подсмотреть командой
Код:
swaymsg -t get_outputs
06.08.2023 18:24
Капитан О.
 
Пришло время перейти с X11 на Wayland. В качестве примера рассмотрим переход с i3 на sway. Вот пошаговая инструкция по переходу:

1. Установите sway на вашу систему. В Fedora вы можете использовать следующую команду:

Код:
   sudo dnf install sway
2. Скопируйте свой текущий конфигурационный файл i3 в новое место для sway:

Код:
   cp ~/.config/i3/config ~/.config/sway/config
3. Откройте новый конфигурационный файл sway и удалите неподдерживаемые директивы. Некоторые из них могут быть похожи на следующие:

- `bindsym $mod+Return exec gnome-terminal` - замените на `bindsym $mod+Return exec alacritty`
- `bindsym $mod+d exec dmenu_run` - замените на `bindsym $mod+d exec swaynag -t "Applications" -m exec -p dmenu`

4. Сохраните изменения в конфигурационном файле sway.

5. Выходите из текущей сессии и войдите в sway. В Fedora вы можете сделать это с помощью следующей команды:

Код:
   gnome-session-quit --logout --no-prompt
Затем выберите "sway" в меню входа.

6. После перезагрузки вашей системы вы должны увидеть sway вместо i3.

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

Удачи в вашем переходе на Wayland!
06.08.2023 20:20
OlegON
 
Всем юзерским юнитам systemd пришлось прописать
Environment=WAYLAND_DISPLAY=wayland-1 в разделе [Service]
Если задать глобально - падает сам Wayland, если не задать - все сервисы.
Впрочем, из выживших немного...

systemctl disable --user --now solaar
иконка в трее появляется, но не кликается и статус не меняет...

systemctl disable --user --now volumeicon
даже иконка в трее не появляется, при попытке поменять звук - в журнале ошибка изменения иконки и все...

systemctl disable --now --user gxkb
Пока мучаюсь одной раскладкой на все окна, утилитка ожидаемо не работает

systemctl disable --now --user clipit
Ожидаемо древность сломалась

systemctl disable --now --user audacious.service
Вот это я как-то не очень понял. Но на данный момент у меня почему-то audacious не запускается сервисом, сразу падая в корку. Пока забил, поскольку запускается клавишами управления.
06.08.2023 21:28
OlegON
 
i3status переписал на bash-скрипт
Код:
bar {
        status_command /home/oleg/scripts/get_status.sh
}
get_status.sh
Код:
#!/bin/bash
while true; do
    read -r line </proc/loadavg
    echo "${line%% *} $(date '+%a %d/%m %H:%M:%S')"
    sleep 1
done
07.08.2023 09:34
OlegON
 
Кстати, вместо arandr, который почил вместе с X (отображает, но не работает), более прикольная утилитка wdisplays.
В глобальные переменные окружения (/etc/environment) добавил
SDL_VIDEODRIVER=wayland
_JAVA_AWT_WM_NONREPARENTING=1
QT_QPA_PLATFORM=wayland
XDG_CURRENT_DESKTOP=sway
XDG_SESSION_DESKTOP=sway
без этого уведомления, например, показывались полноразмерными окошками, что сильно напрягало.

В эти же переменные добавил
XCURSOR_THEME=DMZ-White
Чтобы sway подхватил привычную тему курсора мыши.
Кстати, на что еще обратил внимание, из сна мониторы стали сильно быстрее выходить. Прямо шевельнул и включились. На Х секунд 15 с какого-то обновления включались...
07.08.2023 12:46
OlegON
 
Привык к тому, что в разных приложениях разная раскладка. К своему огорчению обнаружил, что в пакетах Fedora нет.
Поскольку утилитка мелкая, то просто собрал ее, скачав с гита по ссылке выше исходники
Код:
dnf in ninja-build meson json-c-devel
перешел в директорию, полученную с git
Код:
meson build
ninja -C build
полученный файлик положил себе в хомяк и прописал соответствующий exec swaykbdd в конфиг, а потом подчистил
Код:
dnf remove ninja-build meson json-c-devel
07.08.2023 15:14
OlegON
 
Я использую автологин в винде, соответственно, xdotool поломалось, понадобилось найти решение для Wayland.
Выяснилось, что wtype почему-то напрочь не хочет вводить буквы в окно wlfreerdp, вводила вместо них какие-то абстрактные цифры.
ydotool по каким-то непонятным координатам кидала мышку, соответственно, пришлось сделать солянку, мышку двигать swaymsg, а буквы вводить ydotool.
Код:
sudo systemctl enable --now ydotool
sleep 1
swaymsg seat seat0 cursor set 2345 615
swaymsg seat seat0 cursor press button1
swaymsg seat seat0 cursor release button1
sleep 1
swaymsg seat seat0 cursor set 2100 585
swaymsg seat seat0 cursor press button1
swaymsg seat seat0 cursor release button1
sudo ydotool type 'worker.name'
sudo ydotool key 15:1 15:0
sudo ydotool type "$pw"
sudo ydotool key 28:1 28:0
sleep 1
swaymsg seat seat0 cursor set 2100 590
swaymsg seat seat0 cursor press button1
swaymsg seat seat0 cursor release button1
sudo ydotool type "$otp"
sudo ydotool key 28:1 28:0
sudo systemctl disable --now ydotool
09.08.2023 14:14
OlegON
 
На всякий случай оставлю здесь информацию про то, как заводить Flameshot на sway/Wayland https://olegon.ru/showthread.php?t=38316
10.08.2023 17:07
OlegON
 
Так и не нашел ничего, что нормально бы отображало в трее уровень звука, а, главное - включен или выключен звук, потому поручил это get_status.sh, переписав его следующим образом (заодно и решил, что для секунд у меня часы на хоткее, а обновлять чаще раза в 5 секунд нет смысла.
Код:
#!/bin/bash
nn=$(date '+%S')
while (( $nn % 5 != 0 )); do
    echo "Loading..."
    sleep 0.5
    nn=$(date '+%S')
done
while true; do
    read -r line </proc/loadavg
    echo "${line%% *} | $(date '+%a %d/%m %H:%M') | $(pamixer --get-volume-human) |"
    sleep 5
done
11.08.2023 12:28
OlegON
 
Обратите внимание, что в i3 и sway разный подход к bindsym
В i3 работает клавиша, а в sway - символ. Соответственно, в sway, если переключились на русский, то все хоткеи с буквами отвалились.
Чтобы это не произошло, все символьные хоткеи надо сопроводить опцией --to-code, например,
Код:
bindsym --to-code $mod+l exec --no-startup-id mousepad --disable-server -o window /mnt/e/$(date +%s)
Особо ленивые могут воспользоваться командой
Код:
sed 's/bindsym/bindsym --to-code/' ~/.config/sway/config
Можно воспользоваться групповым назначением
Код:
bindsym --to-code {
$mod+a ...
$mod+b ...
$mod+c ...
$mod+d ...
...
}
но, у меня бинды раскиданы по всему конфигу, не очень удобно. Я просто пробежался и поправил каждую символьную клавишу руками.
Часовой пояс GMT +3, время: 21:29.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.