sway - что? где? по чём?

Было бы интересно узнать как работает sway по сравнению с иксами у счастливых обладателей видеокарт AMD.
redix
А ну марш на вайланд. )))
После известных событий и, возвращаясь к вопросу: "Есть ли жизнь на Марсе?", вновь щупаю сабж. Из плюсов:
стал ощутимо меньше грузить процессор;
нативно работает firefox.

В двух словах: ощущения куда приятнее, чем в прошлый раз.

Нюансы, конечно, тоже есть. Первое, что бросилось в глаза - не подхватываются настройки gtk3 из ~/.config/gtk-3.0/settings.ini: ни темы, ни шрифты... ничего. Причины и некоторые решения указаны тут.
Короче, gtk3 берет настройки из gsettings (dconf), а не из конфигурационных файлов. Больше всего меня интересует шрифт, а там по дефолту вот что:
$ gsettings get org.gnome.desktop.interface font-name
'Cantarell 11'
Меняем:
$ gsettings set org.gnome.desktop.interface font-name "Verdana 12"
$ gsettings get org.gnome.desktop.interface font-name
'Verdana 12'
Шрифт с размером поменялся, но с фонтконфигом такой вариант не прокатывает - отсутствует необходимая схема.
В гноме сим безобразием занимается gnome-settings-daemon. Устанавливать этот пакет я не стал, но вытянул и скомпилировал из него схемы, задал переменную окружения и вуаля - шрифты на месте! Проще говоря, так:
$ cd /tmp
$ curl -O https://ind.mirror.pkgbuild.com/extra/os/x86_64/gnome-settings-daemon-3.36.0-1-x86_64.pkg.tar.zst
$ mkdir gsd
$ tar -I zstd -C gsd/ -xvf gnome-settings-daemon-3.36.0-1-x86_64.pkg.tar.zst
$ mkdir ~/.config/gsettings/
$ glib-compile-schemas --strict gsd/usr/share/glib-2.0/schemas/ --targetdir=~/.config/gsettings/
~/.bash_profile
-----
export GSETTINGS_SCHEMA_DIR=$HOME/.config/gsettings/
$ source ~/.bash_profile
$ gsettings get org.gnome.settings-daemon.plugins.xsettings hinting
'slight'
PROFIT!
Разумеется, глобально для пользователя изменения вступят в силу после следующего входа в окружение.

ЗЫ. Всякое-разное буду выкладывать по мере прохождения квеста. )
Гы, из опциональных зависимостей:
alacritty: Terminal emulator used by the default config. Но: It uses xclip for copy paste on linux, makes it useless on wayland.

dmenu: Application launcher - без xwayland не запустится.

mako: Lightweight notification daemon. Тут как бы порядок.

В общем терминал - таки termite.

Вместо dmenu - bemenu:
# start your launcher ($mod+d)
bindcode $mod+40 exec bemenu-run --tb=#153b58 --tf=#d0d0d0 --hb=#153b58 --hf=#d0d0d0 --fn "Dejavu Sans Mono 10" -p ">"
Нюанс: не работают кнопки Home, End, но работают PageUp PageDown.

mako. Ну кто так строит... (с) Нет дефолтного конфига, т.е. только конструкция "сделай сам" по мотивам man 'mako(5)'. Кроме того, notify-send предусматривает три уровня ургентности: low, normal, critical, а mako принимает low, normal и high. Где совместимость?
Зато, в отличии от dunst, есть возможность перезагрузить конфиг:
$ makoctl reload
В общем такая простейшая конфигурация вышла:
~/.config/mako/config
-----
font=Dejavu Sans 12
height=300

[urgency=normal]
background-color=#153b58
text-color=#ffffff
default-timeout=7000

# 'critical' -> 'low'
[urgency=low]
background-color=#900000
text-color=#ffffff
border-color=#c00000
default-timeout=0
high (цвета, реакция) заменил на low. Все равно уведомления отсылаю через скрипт-посредник (звук и пр.), там и сделал подмену уровня.

Впрочем непосредственно sway это не касается... :-/
Aivar
dconf
"Не верной дорогой идёте Товарищи"
Долгой жизни иксам:)
Aivar
alacritty: Terminal emulator used by the default config. Но: It uses xclip for copy paste on linux, makes it useless on wayland.
комментарий довольно древний(Last updated January 21st, 2019), больше года назад, с тех пор много воды утекло
у них там щас своя библиотека copypasta для этого есть которая поддерживает и иксы и выйланд

Aivar
Вместо dmenu - bemenu:
тоже разные перепробовал, но в конечном итоге остановился на sway-launcher-desktop
добавлю, мож кому пригодится
информацию по конкретным(наводим мышкой) окнам удобно смотреть командой:
swaymsg -t subscribe "['window']"
мониторинг
swaymsg -t subscribe "['window']" -m
vs220
Долгой жизни иксам:)
Иксы маст дай. Иксы еще переживут всех своих хоронильщиков... )

red
в конечном итоге остановился на sway-launcher-desktop
Мне нужен не просто лаунчер. У меня в i3 на dmenu многое завязано. Адаптировал под bemenu - разницы практически никакой. Бурное одобрям. (с)

red
swaymsg -t subscribe "['window']" -m
Конечно пригодится. Почти аналог xprop. )
Если встает вопрос по индикатору раскладки, можно пойти по принципу:
$ swaymsg -rt get_inputs | jq -r '.[5].xkb_active_layout_name'
Russian
(индекс подставить свой). Однако JSON-processor, аки jq, в цикле несколько напрягает CPU, поэтому помимо правил упростил и накидал на коленке:
~/.config/sway/layout.sh
-----
#!/usr/bin/bash

i3status -c ~/.config/sway/i3status.conf | (read line && echo "$line" && read line && echo "$line" && read line && echo "$line" && while :
do
read line
echo ",[{\"full_text\":\"`swaymsg -t get_inputs | grep -m1 active_layout_name | cut -c 33,34`\",\"color\":\"#e3e300\",\"min_width\":22,\"separator_block_width\":20},${line#,\[}" || exit 1
done)
~/.config/sway/config
-----
bar {
...
status_command ~/.config/sway/layout.sh
...
}
Выглядит так:

---
Есть два пакета:
aur/sway-keyboard-layout 1.0.0-2 (0) (0,00)
    Show keyboard layout in the status bar.
aur/swaylay-git r8.df1fff2-1 (0) (0,00)
    Keyboard layouts monitoring utility for Sway WM
но что за звери не пробовал.
Aivar
Если встает вопрос по индикатору раскладки, можно пойти по принципу:
$ swaymsg -rt get_inputs | jq -r '.[5].xkb_active_layout_name'
Russian
(индекс подставить свой).
наверное лучше для этого будет использовать тот же идентификатор(подставляем свой), например:
$ swaymsg -rt get_inputs | jq -rc --unbuffered '.[] | select(.identifier == "5215:628:SIGMACHIP_Trust_Keyboard") | .xkb_active_layout_name'
Russian
мониторинг:
$ swaymsg -mrt subscribe '["input"]' | jq -rc --unbuffered 'select(.change == "xkb_layout") | .input | select(.identifier == "5215:628:SIGMACHIP_Trust_Keyboard") | .xkb_active_layout_name'

сами идентификаторы можно посмотреть командой:
$ swaymsg -rt get_inputs | jq -rc '.[] | select(.type == "keyboard") | .identifier' | awk '!/Control$/'
из которых выбрать нужный
также id можно легко найти с помощью мониторинга:
$ swaymsg -mrt subscribe '["input"]' | jq -rc  --unbuffered 'select(.change == "added") | .input | select(.type == "keyboard") | .identifier' | awk '!/Control$/'
после чего переподключить клавиатуру

теперь вместо, общего указания * или keyboard, пример:
input type:keyboard {
    xkb_layout "us,ru"
    xkb_options "grp:caps_toggle"
}

указываем конкретную привязку:
input "5215:628:SIGMACHIP_Trust_Keyboard" {
    xkb_layout "us,ru"
    xkb_options "grp:caps_toggle"
}

также идентификаторы позволяют при желании легко повесить разные языки на разные физические клавы , например:
input "5215:628:SIGMACHIP_Trust_Keyboard" xkb_layout "ru"
input "1:1:AT_Translated_Set_2_keyboard"  xkb_layout "us"
red
мониторинг:
Таки да, за это персональное спасибо! Обработка изменений - куда более цивилизованый путь, чем постоянный парсинг.
Теперь так:
~/.config/sway/layout.sh
-----
#!/usr/bin/bash

func () {
while :; do
read
echo "$REPLY" > /tmp/.swaylay.i3stat
killall i3status -SIGUSR1
done
}

echo En > /tmp/.swaylay.i3stat
swaymsg -mrt subscribe '["input"]' | jq -rc --unbuffered 'select(.change == "xkb_layout") | .input | select(.identifier == "1112:13137:Genius_SlimStar_335") | .xkb_active_layout_name' | func
~/.config/sway/i3status.conf
-----
order += "read_file layout"
---
read_file layout {
path = "/tmp/.swaylay.i3stat"
max_characters = 2
format = "%content"
format_bad = ""
color_good = "#e3e300"
min_width = 22
separator_block_width = 20
}
~/.config/sway/config
-----
exec --no-startup-id ~/.config/sway/layout.sh
---
bar {
---
status_command i3status -c ~/.config/sway/i3status.conf
---
}
 
Зарегистрироваться или войдите чтобы оставить сообщение.